diff --git a/.gitattributes b/.gitattributes index af87956d7b..a95d167d0d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3357,6 +3357,7 @@ examples/anchordocking/minide/unit1.lfm svneol=native#text/plain examples/anchordocking/minide/unit1.pas svneol=native#text/plain examples/androidlcl/android/AndroidManifest.xml svneol=native#text/plain examples/androidlcl/android/build.properties svneol=native#text/plain +examples/androidlcl/android/build.sh svneol=native#text/plain examples/androidlcl/android/build.xml svneol=native#text/plain examples/androidlcl/android/default.properties svneol=native#text/plain examples/androidlcl/android/local.properties svneol=native#text/plain diff --git a/examples/androidlcl/android/build.sh b/examples/androidlcl/android/build.sh new file mode 100755 index 0000000000..73b48eb95e --- /dev/null +++ b/examples/androidlcl/android/build.sh @@ -0,0 +1,4 @@ +ant debug +~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.lcltest +~/Programas/android-sdk-linux/platform-tools/adb install bin/LCLExample-debug.apk +~/Programas/android-sdk-linux/platform-tools/adb logcat diff --git a/examples/androidlcl/mainform.lfm b/examples/androidlcl/mainform.lfm index c5a0d48b08..e8106c6e6b 100644 --- a/examples/androidlcl/mainform.lfm +++ b/examples/androidlcl/mainform.lfm @@ -8,6 +8,7 @@ object Form1: TForm1 ClientWidth = 220 OnClick = FormClick OnCreate = FormCreate + OnKeyDown = Button1KeyDown OnMouseMove = FormMouseMove OnPaint = FormPaint LCLVersion = '0.9.31' @@ -28,6 +29,7 @@ object Form1: TForm1 Width = 116 Caption = 'Move Progress' OnClick = Button1Click + OnKeyDown = Button1KeyDown TabOrder = 1 end object ProgressBar1: TProgressBar diff --git a/examples/androidlcl/mainform.pas b/examples/androidlcl/mainform.pas index bbe9114044..2b8c37a1cd 100644 --- a/examples/androidlcl/mainform.pas +++ b/examples/androidlcl/mainform.pas @@ -30,6 +30,8 @@ type procedure Arrow1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); + procedure Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState + ); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormClick(Sender: TObject); @@ -140,6 +142,13 @@ begin ProgressBar1.Position := ProgressBar1.Position + 10; end; +procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + DebugLn('[TForm1.Button1KeyDown] '+ LCLProc.DbgsVKCode(Key)); + Caption := LCLProc.DbgsVKCode(Key); +end; + procedure TForm1.Button2Click(Sender: TObject); begin Application.OnMessageDialogFinished := @HandleMessageDialogFinished; diff --git a/examples/androidlcl/nonandroidtest.lpi b/examples/androidlcl/nonandroidtest.lpi index 78c5108325..c978fb4be0 100644 --- a/examples/androidlcl/nonandroidtest.lpi +++ b/examples/androidlcl/nonandroidtest.lpi @@ -49,9 +49,6 @@ - - - diff --git a/examples/androidlcl/secondform.lfm b/examples/androidlcl/secondform.lfm index 101ceeb095..cda9e7dd07 100644 --- a/examples/androidlcl/secondform.lfm +++ b/examples/androidlcl/secondform.lfm @@ -24,4 +24,1759 @@ object Form2: TForm2 TabOrder = 1 Text = 'Edit1' end + object Image1: TImage + Left = 32 + Height = 138 + Top = 96 + Width = 274 + Picture.Data = { + 07545069786D617044DA00002F2A2058504D202A2F0A73746174696320636861 + 72202A206C617A617275735F61626F75745F6C6F676F5F78706D5B5D203D207B + 0A2232303020313238203235362032222C0A2220200963204E6F6E65222C0A22 + 2E2009632023303230323032222C0A222B2009632023413839383544222C0A22 + 402009632023323031453142222C0A22232009632023383931463032222C0A22 + 242009632023324334353634222C0A22252009632023464346334243222C0A22 + 262009632023364434343137222C0A222A2009632023383734413137222C0A22 + 3D2009632023464544363644222C0A222D2009632023383438343945222C0A22 + 3B2009632023364534373332222C0A223E2009632023424630343143222C0A22 + 2C2009632023354534383233222C0A22272009632023453039393136222C0A22 + 292009632023383736363235222C0A22212009632023374136333332222C0A22 + 7E2009632023374131333032222C0A227B2009632023413739423732222C0A22 + 5D2009632023384537353246222C0A225E2009632023344334343146222C0A22 + 2F2009632023343731323036222C0A22282009632023364536303638222C0A22 + 5F2009632023434543303932222C0A223A2009632023334532303042222C0A22 + 3C2009632023354234423431222C0A225B2009632023383737413645222C0A22 + 7D2009632023443739463539222C0A227C2009632023364137423938222C0A22 + 312009632023324335413933222C0A22322009632023433241323743222C0A22 + 332009632023464334323037222C0A22342009632023354236353639222C0A22 + 352009632023334231313036222C0A22362009632023463144423934222C0A22 + 372009632023433738373137222C0A22382009632023324133394145222C0A22 + 392009632023394339393839222C0A22302009632023373332313044222C0A22 + 612009632023334235433841222C0A22622009632023394538363331222C0A22 + 632009632023454334323043222C0A22642009632023453741384233222C0A22 + 652009632023454433393034222C0A22662009632023324530453035222C0A22 + 672009632023423442333938222C0A22682009632023353437333944222C0A22 + 692009632023444642393644222C0A226A2009632023344236343841222C0A22 + 6B2009632023304531323143222C0A226C2009632023343433393244222C0A22 + 6D2009632023414541323834222C0A226E2009632023454244424233222C0A22 + 6F2009632023373136333742222C0A22702009632023374238424136222C0A22 + 712009632023374237453742222C0A22722009632023313431463737222C0A22 + 732009632023333134413645222C0A22742009632023424139433530222C0A22 + 752009632023333836363939222C0A22762009632023443434383243222C0A22 + 772009632023384238343730222C0A22782009632023434138463942222C0A22 + 792009632023383834343544222C0A227A2009632023414237373235222C0A22 + 412009632023353535444233222C0A22422009632023433633313230222C0A22 + 432009632023364535343438222C0A22442009632023383736413630222C0A22 + 452009632023424442314241222C0A22462009632023414238383336222C0A22 + 472009632023344236463944222C0A22482009632023373537443942222C0A22 + 492009632023343935433836222C0A224A2009632023353436353941222C0A22 + 4B2009632023354332333041222C0A224C2009632023334435333745222C0A22 + 4D2009632023443844414441222C0A224E2009632023384537383345222C0A22 + 4F2009632023434343334141222C0A22502009632023374135453234222C0A22 + 512009632023453943383734222C0A22522009632023383232313037222C0A22 + 532009632023363737354132222C0A22542009632023384139384234222C0A22 + 552009632023394139304133222C0A22562009632023384434373531222C0A22 + 572009632023344433303134222C0A22582009632023394441434243222C0A22 + 592009632023413238463645222C0A225A2009632023413336413239222C0A22 + 602009632023463345384338222C0A22202E09632023414239463932222C0A22 + 2E2E09632023354637323930222C0A222B2E09632023394132433345222C0A22 + 402E09632023383238424136222C0A22232E09632023393439394146222C0A22 + 242E09632023354335343542222C0A22252E09632023384238343536222C0A22 + 262E09632023343236303846222C0A222A2E09632023373438344133222C0A22 + 3D2E09632023384136413344222C0A222D2E09632023333036363944222C0A22 + 3B2E09632023434442303545222C0A223E2E09632023323430363032222C0A22 + 2C2E09632023464341463044222C0A22272E09632023374135363144222C0A22 + 292E09632023373031333033222C0A22212E09632023333635333837222C0A22 + 7E2E09632023433134393243222C0A227B2E09632023373634393639222C0A22 + 5D2E09632023363137464137222C0A225E2E09632023364133303134222C0A22 + 2F2E09632023444542344242222C0A22282E09632023453143383846222C0A22 + 5F2E09632023333736313938222C0A223A2E09632023384538433838222C0A22 + 3C2E09632023373137303741222C0A225B2E09632023433038393330222C0A22 + 7D2E09632023433942303732222C0A227C2E09632023434536413738222C0A22 + 312E09632023333135463931222C0A22322E09632023343836323933222C0A22 + 332E09632023334534394238222C0A22342E09632023394639323537222C0A22 + 352E09632023433537343746222C0A22362E09632023354636453936222C0A22 + 372E09632023434239423335222C0A22382E09632023323833373438222C0A22 + 392E09632023453845334343222C0A22302E09632023343236393939222C0A22 + 612E09632023323330453036222C0A22622E09632023364338364139222C0A22 + 632E09632023384235383041222C0A22642E09632023363736453845222C0A22 + 652E09632023364235363732222C0A22662E09632023374531333032222C0A22 + 672E09632023463246324546222C0A22682E09632023344331433038222C0A22 + 692E09632023423241423939222C0A226A2E09632023394541364236222C0A22 + 6B2E09632023423943324343222C0A226C2E09632023344633413142222C0A22 + 6D2E09632023423032443346222C0A226E2E09632023433642353932222C0A22 + 6F2E09632023384338423735222C0A22702E09632023363836443643222C0A22 + 712E09632023453241413343222C0A22722E09632023323833393535222C0A22 + 732E09632023413037383431222C0A22742E09632023383735393234222C0A22 + 752E09632023393238464135222C0A22762E09632023374337363530222C0A22 + 772E09632023463546364634222C0A22782E09632023394138373432222C0A22 + 792E09632023364234443145222C0A227A2E09632023343935334243222C0A22 + 412E09632023314530353033222C0A22422E09632023363137363938222C0A22 + 432E09632023364137434131222C0A22442E09632023353636383841222C0A22 + 452E09632023383639314237222C0A22462E09632023414238443533222C0A22 + 472E09632023373938344334222C0A22482E09632023323435353930222C0A22 + 492E09632023314332393941222C0A224A2E09632023433534353535222C0A22 + 4B2E09632023374338344130222C0A224C2E09632023434341383539222C0A22 + 4D2E09632023363236433837222C0A224E2E09632023344432363044222C0A22 + 4F2E09632023444442443844222C0A22502E09632023343836383938222C0A22 + 512E09632023393636353039222C0A22522E09632023353436433936222C0A22 + 532E09632023373337444336222C0A22542E09632023384333413534222C0A22 + 552E09632023394241324237222C0A22562E09632023354136453843222C0A22 + 572E09632023333332313135222C0A22582E09632023424435323632222C0A22 + 592E09632023444643434236222C0A225A2E09632023463143443842222C0A22 + 602E09632023414442354333222C0A22202B09632023323935463943222C0A22 + 2E2B09632023364433423131222C0A222B2B09632023434143394345222C0A22 + 402B09632023383937393534222C0A22232B09632023444141383838222C0A22 + 242B09632023313731363138222C0A22252B09632023424538443441222C0A22 + 262B09632023393638353531222C0A222A2B09632023373536323441222C0A22 + 3D2B09632023394337373239222C0A222D2B09632023414241324231222C0A22 + 3B2B09632023344135323545222C0A223E2B09632023353033433342222C0A22 + 2C2B09632023373837343839222C0A22272B09632023364338324135222C0A22 + 292B09632023363236414332222C0A22212B09632023434139453533222C0A22 + 7E2B09632023393336373233222C0A227B2B09632023394439414144222C0A22 + 5D2B09632023383938454135222C0A225E2B09632023334536313934222C0A22 + 2F2B09632023333936374133222C0A22282B09632023423031313236222C0A22 + 5F2B09632023344536393936222C0A223A2B09632023333235313834222C0A22 + 3C2B09632023373834453141222C0A225B2B09632023414237443642222C0A22 + 7D2B09632023363136384245222C0A227C2B09632023414239323346222C0A22 + 312B09632023464442443245222C0A22322B09632023413531463331222C0A22 + 332B09632023424536433641222C0A22342B09632023314130343033222C0A22 + 352B09632023333634334235222C0A22362B09632023374236423445222C0A22 + 372B09632023354136443936222C0A22382B09632023374138444232222C0A22 + 392B09632023333035453942222C0A22302B09632023334534434138222C0A22 + 612B09632023373035353335222C0A22622B09632023323233313845222C0A22 + 632B09632023354435423739222C0A22642B09632023363937353934222C0A22 + 652B09632023354637384131222C0A22662B09632023354532453130222C0A22 + 672B09632023454144304437222C0A22682B09632023393538453646222C0A22 + 692B09632023373736433636222C0A226A2B09632023463745414233222C0A22 + 6B2B09632023463645384539222C0A226C2B09632023364237324332222C0A22 + 6D2B09632023464446454644222C0A226E2B09632023334536383938222C0A22 + 6F2B09632023384633363443222C0A22702B09632023334134383543222C0A22 + 712B09632023374334353134222C0A22722B09632023464143453636222C0A22 + 732B09632023454442423636222C0A22742B09632023373233423433222C0A22 + 752B09632023414237413342222C0A22762B09632023333036323943222C0A22 + 772B09632023354537323941222C0A22782B09632023453245384542222C0A22 + 792B09632023334236323844222C0A227A2B09632023393735443235222C0A22 + 412B09632023383537423843222C0A22422B09632023394238433535222C0A22 + 432B09632023343935344145222C0A22442B09632023423041434237222C0A22 + 452B09632023444241443546222C0A22462B09632023374137363636222C0A22 + 472B09632023354433413136222C0A222E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 222C0A222E202E206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B202E206B206B206B202E206B206B202E206B206B202E206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B202E20 + 6B202E206B202E206B206B202E206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B20242B6B20 + 242B6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B202E206B206B202E206B206B202E206B202E206B202E206B202E20 + 6B202E206B202E206B206B202E206B202E202E20222C0A222E206B20642B642B + 642B7C207C2048204820482048204820642B642E362E4D2E362E442E442E4A20 + 442E6A206A20442E6A206A206A206A206A2049206A206A20492049204920262E + 262E6120612061204C2061204C2061204C2061204C20212E212E4C20212E6120 + 4C2061204C204C204C2049204C204C204C20612061203120212E3A2B212E3A2B + 3A2B212E3A2B3A2B3A2B3A2B3A2B3A2B212E212E212E212E3A2B3A2B3A2B212E + 212E6120212E612061206120262E322E262E262E262E262E262E322E322E322E + 262E4920492049206A2049206A206A206A206A20522E522E562E6820562E522E + 442E6A206A206A20322E262E262E212E6120312031203A2B31203A2B3A2B3120 + 3120212E3120212E212E212E6120262E5F2B562E562E362E362E772B53205320 + 5320642B53207C207C20432E272B272B622E622E622E272B7C205320772B4A20 + 49204920262E6A20522E522E4A20322E262E212E212E3A2B482E482E482E482E + 482E482E482E482E3120482E3120482E482E482E3120482E482E482E482E482E + 482E482E6B202E20222C0A222E206B20772B422E7C20642B7C207C20432E4820 + 2A2E432E7C20642B7C20652B2E2E772B522E522E522E522E522E4A20522E442E + 4A204A206A205F2B6A206A205F2B6A206A206A206A206A20322E322E262E262E + 262E262E5E2B262E792B6120612061206120262E262E262E262E5E2B6120262E + 6120612061206120612061203120212E212E212E3A2B212E6120212E212E212E + 212E212E212E212E612061206120612061206120612061205E2B262E5E2B5E2B + 5E2B5E2B5E2B6E2B262E262E262E262E262E262E322E6E2B6A20322E6A206A20 + 4920322E6A20442E322E6A205F2B372B522E522E522E772B4A20522E5F2B502E + 5E2B5E2B612061206120212E312073203A2B3A2B3120312E3120312E61206120 + 262E5F2B68206820772B772B772B4D2E372B372B372B372B372B772B772B422E + 422E7C20622E272B622E272B272B2A2E432E372B6A20262E322E502E6A204A20 + 5F2B6A20502E5E2B312E3A2B482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E482E482E482E3A2B6B202E20222C0A22 + 2E206B20422E422E7C20432E642B48207C204820482048204820642B642B642B + 422E422E772B6820562E522E522E522E522E522E522E6820442E522E522E6A20 + 5F2B6A206A20502E5F2B502E502E502E322E6E2B262E262E262E322E262E6120 + 612061206120262E6E2B502E502E792B6120262E262E61206120612061203120 + 312E212E212E6120212E212E212E6120212E212E6120612061206120212E212E + 6120612061206120612061205E2B5E2B61205E2B262E6120262E792B5E2B792B + 262E262E6A20262E322E262E322E262E4920262E492049206A206A20322E6A20 + 502E5F2B522E522E772B772B522E4A20522E4A20322E502E322E5E2B262E6120 + 61203A2B482E3A2B312031206120212E6120212E792B502E4720522E522E522E + 522E372B4A20522E372B372B362E53205320652B652B652B5D2E422E622E272B + 432E772B5320372B4A20322E322E322E322E6A20522E5F2B5F2B5E2B61203120 + 482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E482E482E6B202E20222C0A222E20242B2E2E422E53205320 + 4820532048204820482048204820482048207C20422E772B422E772B522E522E + 522E522E522E562E6820562E6820562E5F2B442E522E562E522E6A205F2B5F2B + 5F2B6A206A206A206A20322E262E262E6A2061206120612049206E2B6A20502E + 6A20502E262E61204C2049204C20612061206120312E792B312E6120312E6120 + 312061203120212E212E212E212E212E312E6120612061206120612061206120 + 6120262E262E6120212E61206120612061204920792B792B262E262E792B262E + 262E49206A2049206A20562E562E562E49206A206A206A206A205F2B6A20522E + 422E422E522E5F2B322E322E502E502E262E262E612061204C203A2B31206120 + 312031203A2B61206120322E6A206A206A20442E372B362E772B5320772B772B + 432E432E422E422E422E6820562E6820652B652B522E7D2B322E4A205F2B6A20 + 322E502E6A20522E6820522E4720322E6120212E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E + 6B202E20222C0A222E206B20642B422E5D2E7C20432E642B4820482048204B2E + 4B2E2A2E2A2E7C20432E5320422E422E772B652B6820772B6820772B522E772B + 772B772B68206820562E522E562E522E5F2B5F2B5F2B522E442E522E5F2B442E + 6A206A20492049206A20492049206A206A20522E522E522E6A206A20262E792B + 6120262E262E61206120612061206120212E6120612061206120612061206120 + 61206120612061205E2B5E2B5E2B5E2B61206120612061206120792B312E212E + 612061206120612061206120792B262E6E2B262E6A20702E7020342E67205F20 + 692E2B202B2077202E2E6A206A20502E5F2B6820772B6820522E47205F2B502E + 5F2B4720502E6A20502E502E792B61206120612061206120262E262E322E6A20 + 6A204A204A20442E522E372B5320432E432E53205320772B522E6A20502E322E + 322E262E502E47205F2B5F2B322E262E322E262E502E5F2B522E522E68205F2B + 4720262E6120312E3120482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E482E482E6B202E20222C0A222E206B20 + 562E652B642B7C20432E4820642B48204B2E48204B2E482048204820432E432E + 7C205320422E2E2E2E2E562E562E562E772B562E422E422E422E422E2E2E6820 + 562E562E562E442E562E562E562E442E562E442E442E6A206A20442E442E442E + 442E4A20372B372B5320372B4A206A20322E322E6A20262E792B6A20262E262E + 262E6120792B6120612061206120612061206120262E262E262E6120262E262E + 262E49206A2049206120212E61206120612061206120792B61206120792B792B + 4920792B562E71203920342E5F207D2E3B2E69206220752B4C2E5120262B402B + 7120562E522E5F2B4720502E502E502E502E47204720502E5F2B472047204720 + 6A20502E322E49204920262E322E5F2B6A204A20442E442E4A20362E4A20372B + 362E53205320772B372B4A204A206A206A206A20262E262E322E322E502E502E + 5F2B322E262E322E502E302E68206820682047206A20262E612061203120482E + 482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E73206B202E20222C0A222E20242B2E2E422E652B7C207C20642B + 4820642B482048204B2E48202A2E48202A2E48202A2E48207C20432E7C207C20 + 652B2E2E2E2E772B422E2E2E422E422E642B422E422E2E2E422E2E2E2E2E422E + 2E2E562E2E2E422E2E2E562E562E562E562E562E372B442E362E362E53205320 + 372B4A205F2B502E6A206A206A206E2B6A206A206A206A206A206A206A206A20 + 6A206A206A206A206A203420442E3420462B70206F2E3920692E71206F2E6F2E + 6F2E70206F2E54203A2E54206F2E54207020712034203B2B252E342E4E20792E + 3B2E252B5B2E5120722B46205B2E252B252B252B4C2E32206F2E2E2E522E5F2B + 262E262E262E262E322E6A20502E4720522E6820502E502E5F2B502E4A20502E + 4A205F2B522E362E372B772B362E772B362E772B5320772B772B372B372B442E + 372B4A205F2B5F2B322E4920262E262E4920502E5F2B472047205F2B68206820 + 6820682047205F2B792B6120262E262E7520312E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E482E482E482E482E482E482E6B202E20 + 222C0A222E206B20642B7C207C207C2048204820482048204820482048204820 + 48204B2E4B2E4B2E482048204820432E4820432E432E432E7C207C207C207C20 + 7C207C207C207C20422E422E422E652B652B652B432E7C20652B7C207C20422E + 2E2E2E2E422E2E2E772B772B772B772B772B772B642B442E2E2E422E422E7C20 + 71207120462B682B6F2E682B342E342E252E682B7B20252E762E342E262B782E + 6D202B207C2B7C2B7420282E4C2E5D203220692074202B205F20422B5F205F20 + 5F203B2E6D2029205D205D205020272E3D2B472B372E452B7D20752B51207D20 + 452B5120722B4C2E452B452B4F2E67206F2E422E47206A20262E262E792B792B + 502E6A20502E5F2B5F2B522E5F2B522E4A20522E5F2B522E372B372B362E362E + 772B53205320432E53205320642E372B4D2E372B442E562E68206820522E5F2B + 6A206A206A206120262E322E502E47204720522E68206820682047206A206A20 + 6A20302E5F2E3120482E482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E6B202E20222C0A222E20242B642B642B + 642B7C2048204820482048204B2E48204B2E4B2E482048204B2E4B2E4B2E4820 + 4B2E2A2E2A2E2A2E2A2E2A2E7C202A2E7C2048202A2E7C207C20482048202A2E + 272B2A2E2A2E272B272B7C20432E432E7C20652B7C20652B7C20432E5320772B + 5320532048202A2E2A2E6F2E3920282E6E2E74206E2E6E2E7C2B3B2E3B2E7C2B + 3B2E7C2B7A204C2E7C2B62207A20452B4620252B212B4C2E732B252B452B3620 + 3B2E6920282E4C2E5A2E6D20212B4F2E362051207420512074205D207E2B2C20 + 4E2E5E20512E272E4620712E732B69205A2E2920252B742051207A20712E712E + 732B3B2E692067206F2E6820442E6A20262E262E6E2B6A206E2B502E502E5F2B + 5F2B522E522E522E772B772B772B772B772B362E772B372B362E772B772B772B + 772B772B362E772B772B772B422E422E422E422E2E2E372B522E5F2B502E502E + 6A20502E302E302E502E502E5F2B4720472047204720502E5F2E312E3120482E + 482E482E482E482E482E482E482E482E3820482E482E482E482E482E482E482E + 482E482E2E202E20222C0A222E206B207C207C207C2048204820412B48204B2E + 48204B2E482048204B2E4B2E4B2E4B2E4B2E2D202D2070204B2E4B2E2A2E2A2E + 4B2E4B2E2A2E71204B2E4B2E702070204B2E4B2E2A2E2A2E2A2E2A2E432E7C20 + 7C20652B422E652B7C20422E772B362E2E2E642B2A2E682B6B2E5F205F203B2E + 3D2B4C2E3B2E372E4C2E5B2E4C2E7A204C2E252B212B7A2B372E752B7A205120 + 4620732B452B692051206220752B36205A2E692046204F2E512074203D206920 + 5F203D203D2B692069203B2E7420452B7420472B3C2B4E2E472B3C2B3A204620 + 7E2B272E5120252B252B512051202920732B732B3720372E712E692069207D2E + 672067206F2E71207C202E2E6A20262E5E2B492049204A20522E362E772B652B + 772B532053205320772B772B772B5320772B53205320772B53205320432E7C20 + 7C20432E432E2A2E272B432E772B68206820522E4720502E322E322E792B6120 + 6A206A2047206820682068206E2B202B482E482E482E482E482E482E482E482E + 482E482E482E482E482E3820482E482E482E482E482E482E6B202E20222C0A22 + 2E206B202C2B642B482048202A2E482048202D202D202D20402E2D202D204B2E + 2D202D207020402E2D20402E402E2D204B2E70204B2E4B2E70204B2E2D202D20 + 7020402E7020402E2A2E2A2E7C20272B7C205D2E7C20652B7C202E2E422E562E + 2E2E422E70206D2067202B205D2029207C2B512E5B2E7A207C2B5B2E3D2B252B + 4C2E7A2B69203D2B7A2069207A20732B452B252B3C2B452B752B4C2E732B4C2E + 69205A2E732E4F2E5A2E692074207D206920692074203D2B3B2E3D2B212B3B2E + 4620252B5020262066205E2E632E7E2B2E2B752B5B2E5B2E7D20452B512E5B2E + 5120252B6920732B27202720712E372E372E452B512051204C2E282E5F207D2E + 54202E2E6A20492049204A20562E362E772B5320652B5320652B432E432E532E + 432E2A2E432E432E432E432E2A2E2A2E4B2E2A2E2A2E2A2E2A2E2A2E70202A2E + 7C2068206820522E5F2B502E502E322E502E6A206E2B6A204720682068206820 + 6820302E2D2E202B482E482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E482E482E6B202E20222C0A222E206B204820482048204820 + 48204B2E4B2E4B2E4B2E70204B2E7020402E5D2B402E402E5D2B2D2070202D20 + 2D204B2E402E2D207020402E2D20402E402E402E2D204B2E402E702070202A2E + 2A2E7C20622E432E7C20432E422E422E422E422E7C20682B7B203B2E74207C2B + 6220272E372E69205B2E5A207E2B2E2B252B7A205B2E372E372E7E2B452B252B + 5A20732B7E2B4C2E5A2E51205F204F2E752B212B692069206920282E3D2E632E + 732B69207C2B472B512E372E7D205B2E452B36205A2E4F2E252B5A202E2B2620 + 2620472B5720272E752B512E69204C2E5B2E7D205A20452B51204C2E452B2720 + 37207A20712E712E372E452B712E732B712E3B2E51206D206F2E702E562E522E + 522E772B772B652B772B432E5320432E432E432E4820532E482048204820472E + 402E402E402E402E402E70204B2E4B2E4B2E7020272B5D2E652B68204720502E + 262E6E2B6E2B792B6E2B502E5F2B6820652B652B47204720302E202B202B482E + 482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E482E + 6B202E20222C0A222E206B2048202C2B48204B2E48204B2E4B2E4B2E2D20402E + 2D20382B402E402E402E402E402E402E4B2E402E402E2D20402E2D202D20402E + 2D202D202D20402E402E4B2E70202A2E2A2E2A2E2A2E2A2E272B272B7C207C20 + 422E2E2E642B7120692E2B20252E5D20632E7A205B2E5B2E752B6920712E7D20 + 732E7A2B462057202A20252B742E5A206920792E252B6920452B36202B20732E + 632E46202E2B4620212B2C203D2B6220632E4C2E7420472B2E2B752B452B4620 + 62205B2E3B2E7E2B7D205A2E2B20292029204E2E2E2B792E4E2E26205A20752B + 732B252B5A20722B69205A2E6920512E27207A20712E7D20712E5A207A20732B + 7D20712E712E712E722B51204C2E2B2059204B2E7C20642B642B422E652B432E + 432E432E2A2E2A2E702070204B2E402E5D2B752E5D2B452E452E5D2B5D2B5D2B + 402E70204B2E4B2E2A2E622E5D2E652B6820502E6120792B6E2B792B792B502E + 6E2B5F2B682068206820682047205F2E3120482E482E482E482E482E482E482E + 482E482E482E482E482E482E482E482E482E482E6B202E20222C0A222E20242B + 642B432E482048204B2E48204B2E4B2E4B2E4B2E70202D20402E402E402E2D20 + 402E2D20402E5D2B5D2B5D2B5D2B402E402E2D202D204B2E4B2E4B2E4B2E2A2E + 2A2E272B7C207C207C20422E7C20432E432E422E422E422E252E342E5D20272E + 7C2B26207E2B5A207D205B2B212B252B212B36207D20212B26203C2B2E2B3C2B + 3D2E26203D2E5E2E212B3B207A2B732B26205A202F2E4F2E6920732E29205A20 + 252B5A205A207E2B7E2B3C2B7A2B7A20752B662B712B5A207D20252B4C2E4C2E + 7C2B752B742E742E50207E2B262057205A205A20372E732B452B512074207420 + 212B732B732B712E7E2B502037203D2B7A20712E372E4C2E372E7C2B46203B2E + 712E37204C2E74203D2B4E2028203C2E642B432E48202A2E7020382B7020382B + 452E402E402E402E2D20752E752E5420752E5D2B5D2B402E2A2E382B4B2E622E + 5D2E5D2E502E7520792B61205E2B6E2B302E6A205F2B68206820652B522E262E + 262E6120212E482E482E482E482E482E482E482E482E482E482E482E482E482E + 482E482E482E482E6B202E20222C0A222E20242B7C207C207C20482048204820 + 2D204B2E4B2E4B2E4B2E4B2E2D20402E7020402E402E4B2E472E4B2E532E532E + 402E2D20402E402E402E4B2E4B2E48207C207C207C207C205D2E422E422E422E + 7C20272B7C207C207C20762E362B2620512E2620512E252B452B7A20452B7D20 + 5A2E69204F2E69203D2B232B5720472B66203C2B6C2E3520272E3D2E732E3C2B + 732E7D20252B732B5120622074203D2E662B452B7C2B252B462026206920372E + 7D207D20752B452B452B7D207E2B452B5A2069203B2E3D2B3C2B2E2B3520742E + 752B3A20682E712B752B5A20732B722B46204C2E452B51206920372E57204E2E + 7A2B632E2E2B252B372E472B662B66202E2B632E3720712E37203720752B512E + 7A2B3C2B362B6F2E402E4B2E382B382B402E452E452E452E752E452E7020452E + 452E452E452E5D2B402E472E2A2E272B272B272B6820502E61203120312E312E + 312E5E2B4720302E47205D2E68205F2B322E262E322E5E2B61203120482E482E + 482E482E482E482E482E482E482E482E482E482E482E202B482E482E6B202E20 + 222C0A222E206B20642B5320432E7C202A2E4B2E48204820482048204B2E4B2E + 4B2E4B2E2D20482053207D2B432B7A2E352B332E7A2E4120292B532E4B2E4B2E + 4B2E7C207C207C20422E652B7C20422E642B422E422E652B7C206F2E252E572E + 3A20662B5D20752B682E5B2E212B742E452B252B272E282E282E7A20282E6A2B + 452B742E4B20662B35204B203D2B3A202E2B7420272E472B372E232B29205A20 + 732E5A2E4F2E3220472B7A2B7D20232B5A205E2E6920732E712B4620452B452B + 212B69205B2E372E452B742E4B20712B7A2B452B36205A202E2B37207D205A2E + 752B252B51206920452B7A203C2B662B5E2E7E2B512E632E7A2B712B752B7E2B + 682E66204E2E2E2B30205A203720732B712E5A2037203720372E212B4C2E7B20 + 7020702070207020402E402E402E402E402E5D2B452E232E5420452E70202A2E + 652B772B772B4720502E6E2B75206120312031203120312E61205E2B502E522E + 6820522E502E41205E2B5E2B5E2B6120482E482E482E482E482E482E482E482E + 482E482E482E482E202B482E3120482E6B202E20222C0A222E206B20652B642B + 422E7C20432E482048204820482048204B2E2A2E4B2E2A2E53207A2E352B302B + 7A2E412041207D2B41207A2E332E432B642E2A2E2A2E272B5D2E7C205D2E422E + 7C20422E422E422E422E422E6F2E5E20792E472B4B204B203D2B732E3D2B7420 + 782E662B452B4F2E7A2B5A2E5120212B36205A2E4620462E682E682E2E2B3C2B + 272E3A204E2E7A20662B2A20452B252B3C2B4F2E5120232B282E2E2B252B232B + 46202C20252B212B4C2E5B2E252B372E3D2E212B69203B2E752B372E74205A20 + 2A202E2B2E2B27205A207A203A20472B4B20712E212B212B4C2E7A2B7A20712E + 5B2E7A2B2F20662B3A202E2B632E2E2B5A206220662B342B612E6C2E682E2A20 + 2720312B712E372037202720712E2720712E4C2E74205D2B2A2E2A2E272B432E + 2A2E2A2E2A2E7020402E452E232E402E2A2E362E772B522E4A205E2B5E2B792B + 5F2E5F2E312E312E6120312E61206E2B5F2B522E6820522E5F2B322E322E5E2B + 5E2B392B3120202B482E482E482E202B482E482E482E202B482E482E202B482E + 3120482E6B202E20222C0A222E20242B7C205D2E432E432E432E2C2B642B4820 + 4820482048204B2E48204D2E352B352B302B41207D2B6C2B6C2B6C2B6C2B292B + 41207A2E302B4A20642B7C20422E5D2E2E2E652B422E422E422E422E68203420 + 362B5E204E2E4B2026207A2B5020262029206C2E732E252B74205A20712E6920 + 3D2B282E7D2E4F2E282E6E207E2B272E352026202C20662B742E2E2B742E3220 + 50205B2B732B7D2E7E2B252B5A2E462E4F2E4C2E732E2A20252B512E2E2B4620 + 46203D2B662B7A2B272E252B212B372E37204C2E232B7A2B5A207D205B2E452B + 21202E2B2E2B252B712E7A205B2E732B712E512E742E742E682E4E2E682E3520 + 4B202E2B2E2B4E2E3520612E342B3E2E2F207A2B2720712E272037202720712E + 732B7D20712E2C2E452B7D2E5D2B272B7C202A2E432E4820432E48202A2E7020 + 70202A2E5320372B522E322E6120312E61203120312E3120312031203120312E + 5E2B502E472068206820522E5F2B5F2B47205F2B5E2B6120392B202B202B482E + 482E482E202B202B482E482E202B202B482E3120482E482E6B202E20222C0A22 + 2E206B20422E422E7C20432E432E48204820482048202D20482048206C2B352B + 38207A2E4120292B6C2B532E472E532E472E532E6C2B7D2B7A2E352B372B7C20 + 422E422E422E68202E2E422E422E7C2071203B2B382E792E472B3C2B4E2E742E + 3C2B4E2E742E4E2E5020792E3C2B742B5B2E7D207A2B4F2E3B2E4F2E5F205A2E + 7420272E2F20712B472B3520272E35202E2B46202E2B5A205A2E32205E2E252B + 232B5D206920272E252B5A2E32202A20742E7E2B4E2E5A207A207A2026207A20 + 732E3D2B5A205A20632E5A202A20452B6920732E472B5E2E632E2E2B5B2E7D20 + 372E742E3720742E2920662B682E682E2620352066204B20712B4B202F206620 + 342B342B66202A207A2B512E5A207A2037205B2E3B2E372E372E712E27205120 + 692E2A2E7C207C20642B642B2E2E2E2E642B432E2A2E272B272B652B522E262E + 212E61203120312031203120312031203120792B792B6E2B302E502E502E4720 + 4720502E682047202F2B392B31203120202B202B482E482E482E482E202B482E + 482E202B482E202B202B31206B202E20222C0A222E206B202E2E7C20652B652B + 4820642B482048204B2E4B2E4B2E7120302B3820352B7A2E7D2B6C2B472E472E + 452E452E472E472E472E6C2B4120302B302B2E2E2E2E422E422E422E422E422E + 2E2E422E252E6C2E572E66202C202C20662B3D2E742E232B32205A207E2B3520 + 742E232B2E2B752B5120282E51203620262B32205A2E4620792E7E2B742E3B20 + 272E472B2E2B5A20322074204C2E252B4F2E5A2E74205B2B452B232B4C2E3220 + 5020712B752B752B742E3D2B2920272E272E7E2B272E472B29207A2B372E4620 + 5A20742E472B2E2B2E2B5E2E2A205E2E7D205A205A205A20732B46204E2E2E2B + 662B3520682E66203E2E4B205E2E292E2F203E2E342B3E2E3E2E4B20682E5E2E + 30205E2E662B57203A20682E7A2B27202720452B67202A2E5320362E362E362E + 362E362E362E5320422E432E272B5D2E68205E2B262E212E212E212E31203120 + 3120202B3120312E392B312E5F2E75202F2B5F2E2F2B2F2B2F2B5F2E5F2E392B + 392B31203120202B202B482E202B202B482E202B202B3120202B3120482E3120 + 6B202E20222C0A222E206B20562E2E2E642B2E2E642B642B4820482048204B2E + 48207D2B622B3820332E41206C2B6C2B452E5820602E552E5420452E472E532E + 292B432B352B522E2E2E422E2E2E2E2E2E2E422E2E2E762E5D2021205020572E + 4E2E682E7A2B7A207A2B732B29203C2B212B732E212B452B752B7D20232B5B2E + 212B4C2E6A2B6A2B5A2E7D2E57204E2E3D2B2E2B2F20742E662B26207E2B682E + 252B4F2E2920732E512050207E2B6920252B46207D20232B452B7D204C2E2620 + 3A206620682E4E2E3C2B2F20712B2A203D2B57204E2E2E2B26205A202A20712B + 752B7A20732B632E7A207D20372E612B662066204B20712B662B342B3E2E412E + 3E2E3E2E2F203E2E35202F202F202F202F202E2B4E2E2F202A20742E4E2E2F20 + 3720732B452B362045207C207C20532053205320532053205320432E2A2E272B + 2A2E432E652B5F2B6E2B6120392B3120312E312E312E312E3120312E312E762B + 312E392B5F2E312E5F2E5F2E2F2B5E2B5F2E392B31203120392B31203120202B + 482E202B482E202B202B482E202B3120312031206B202E20222C0A222E206B20 + 362E362E362E2E2E5320532048207C202A2E48202A2E432B622B38207A2E4120 + 6C2B472E54204D20782B6B2E5420452E472E532E292B4120352B432B772B562E + 2E2E2E2E2E2E562E3B2B572057205020742E3A20662B5E2E5B2B252B5E2E232B + 252B782069203B2E742E2620452B372E46205A2E7420282E6A2B74203B2E212B + 5920472B3C2B7E2B742E29204E2E742E5B2B252B3B2E232B742E252B282E732E + 232B7D2E5A206920742E752B732E2A204620792E742B662B4B206620712B742E + 712B662B662B682E2E2B632E472B3C2B3D2B252B252B5B2E5A20372E712E212B + 212B2A202E2B35203520572035202F204B20662B4B204B20292E2F204B203020 + 2F206620682E6620352035202A20712E4F2E7A2B352E722B732B3620442B432E + 432E2A2E48202A2E4B2E2A2E432E4B2E2A2E70207020432E652B68205F2B6E2B + 6120312E6120312E202B3120312E312E762B792B5F2E5F2E3120312031203120 + 3120392B5F2E392B31203120312031203120312031203120202B482E202B202B + 31203120312031206B202E20222C0A222E206B20442E562E562E362E2E2E422E + 642B7C20432E48207C202420492E38207A2E41206C2B532E54206B2E4D20602E + 5420452E472E472E6C2B4120352B212E772B68202E2E68202E2E34202C202C20 + 2C2026205720682E472B2E2B662B452B46205A20272E732B50207E2B752B752B + 452B7E2B752B732B7E2B74203620252B7D20362069202C203A2029207A2B3B20 + 35202E2B3C2B2920272E232B4F2E6E2E4C2E26204C2E422B662B6920212B452B + 6920212B5A20272E472B35204E2E2E2B682E3A206620682E3C2B5E2E7A2B2E2B + 682E5A20472B742E732B69207D20452B7A2B212B212B7A2B272E742B682E4B20 + 4B20742E742E662B2E2B5E2E2F202F202F202F2066203E2E662035204B20662B + 2E2B7A20512074207A2B712E722B36206A2E7C20652B272B622E622E4B2E472E + 70207020472E452E5420452E622E432E5F2B6E2B5E2B5F2E792B312E312E202B + 202B312E312E312E312E312E3120312031203120482E3120392B392B392B3120 + 3120482E31203120312031203120202B482E482E482E482E482E31206B202E20 + 222C0A222E206B20442E442E372B442E2E2E642B652B7C20432E5D2E2C2B622B + 492E3820332E4120292B532E472E452E552E54205420552E472E532E6C2B4120 + 332E302B372B2E2E562E2E2E562E3B2B6C2050204E2E3B205720682E5720472B + 5A20212B742E3D2B3D2E46203C2B272E752B3C2B7E2B3A203B204C2E452B6A2B + 6E203620512069204C2E4C2E3E2B4E2E5A20662B5E2E742E26202E2B2E2B212B + 29206C2E252B252B7C2B7D2E232B4F2E2620462E252B46202920472B4E2E472B + 4E2E662B66202F20682E2E2B712B712B252B69207E2B5E2E5A20252B7A20212B + 252B452B46207A20612B26203A20662B4B20742E4E2E2E2B272E5E2E712B632E + 2F202F203E2E2F2035202F20682E682E5E2E682E662B632E46205A205A202720 + 712E36205F207C20432E432E4820432E272B7020382B7020452E542054205420 + 382B272B522E5F2B302E6E2B75202D2E312E312E312E31203120312E312E3120 + 31203120312031203120482E3120762B3120392B392B312031203120392B482E + 482E482E3120482E482E482E482E3A2B6B202E20222C0A222E206B20442E442E + 562E442E562E2E2E422E7C207C20432E432E622B492E3820332E7A2E7D2B292B + 532E532E472E5420602E602E452E6C2B292B7A2E352B302B522E772B562E2E2E + 34206C2035205720472B57204E2E682E3A20742E732E4E2E612B3220682E2620 + 462E4E2057204E2E732E7A2B212B212B29205A2E362B2B205A2E4F2E51203220 + 792E4B20742E4E2E2620272E4E2E3D2E3D2B7420792E472B212B462E3A204620 + 50203D2B7E2B4C2E452B4C2E742E7A2B472B472B2F203E2E2F203E2E2F20682E + 3520742E252B262B3D2E662B272E372E452B74203C2B5A207D207A203C2B2A20 + 2620272E2F20712B682E682E712B682E2E2B2E2B3E2E2F202F205E2E682E2F20 + 682E682E712B2E2B2E2B2E2B5720662B5B2E5B2E712E722B2B2B272B652B652B + 652B652B5D2E272B432E2A2E4B2E452E54205420452E472E652B47207520792B + 792B2D2E312E2D2E312E792B6E2B47204720302E762B202B3120202B3120482E + 3120202B202B392B392B392B392B2F2B4720762B202B482E482E202B3120202B + 392B31206B202E20222C0A222E206B202E2E372B562E772B562E6820422E652B + 422E5D2E642B382072203820352B7A2E4120292B6C2B532E532E452E5820602E + 472E6C2B7D2B7A2E3820302B372B562E562E562E3C20612B4E204E2E742B3A20 + 3A203520472B612B792E472B742E252B5B2B7D2029203C2B6C2E662B742E792E + 742E4C2E46207D2074204F2E25205F204F2E7D2E4C2E7A2B512E4E2E712B272E + 662B6220292029207A2B252B74203D2E2E2B752B462046202920742E252B3B2E + 272E742E3B20472B4B20682E2620662B4E2E2E2B4B20712B472B6620272E2E2B + 4B20752B5020752B7A2B742E46203C2B472B2E2B26203C2B352079203C2B4E2E + 742B4E2E572057204E2E4B203C2B712B2E2B2F205E2E2E2B632E632E2E2B2E2B + 572E352026204E2E2C20422B6D202E2E4720502E522E6820772B68206820772B + 642E4820472E382B7020622E422E522E792B7520792B312E792B75202D2E6820 + 5D2E5D2E5D2E68206E2B3120202B202B3120202B392B202B3120392B392B392B + 202B47205D2E68202F2B392B31203120392B392B2F2B31206B202E20222C0A22 + 2E206B20642B772B2E2E772B2E2E2E2E422E422E422E7C20642B702B72207220 + 3820332E7A2E7D2B7D2B292B6C2B532E472E472E6C2B7D2B4120332E352B212E + 372B772B2E2E492057203A202620732E792E6F20652E572E682E6620682E3D2B + 29203A202620212B5B2B6C2E3C2B512E26204E2E7A2B7A204E2E7A2B51205A2E + 7D2E74203620602036202C204E2E2A207A20272E7A203D2B4E2E4E2E3C2B3D2B + 5020682E3D2E62206C2E2E2B2A202E2B632E752B3C2B7E2B3A20662B472B682E + 26204E2E662B4B20682E272E3C2B4E2E3A2026203D2B5A20472B632E232B4C2E + 5D205A207E2B3D2B5E2E5E2E43206F202820652E632B41204920432B302B3B2B + 652E26207E2B712B7A2B512E512E512E272E4E2E662066202620472B6620792E + 3A2E502E792B792B792B792B262E792B502E502E372B532048202D20402E382B + 272B6820502E6E2B792B792B312E312E6E2B5D2E5D2E622E5D2E4720302E6120 + 31203120482E392B502E5F2E5F2E6120392B2F2B5F2E47205D2E47204720202B + 392B31205F2E5E2B302E5E2B6B202E20222C0A222E206B20422E2E2E422E422E + 642B422E422E422E2E2E422E772B4C207220492E492E3820332E7A2E41207D2B + 7D2B292B7D2B7D2B41207A2E332E382038204A20422E422E2E2E3B2B57204E2E + 792E622040202C2B6C2B242E572E662B3C2B5020612B472B272E212B3D2B3520 + 662B7A2B4E2E3E2E26203D2B512E7A203C2B732E282E32206A2B32204F2E402B + 35202E2B742E4B20742E29202E2B272E3D2E66202E2B4E203D2E3B2066202E2B + 29205A20792E3C2B4E2E632E29203B203C2B57202C20682E4B20662B4B206620 + 4E2E272E4B203520472B212B212B252B3B2E5D2026205D202920662B3C2B4420 + 2C2B772B372B68204720502E6E2B5F2E612061204A207720462E4620752B7A20 + 5A207E2B5720342B342B35202A207A205B2B692E7020792B312E312E312E6120 + 792B262E5F2B372B432E472E4820472E452E452E622E68206A20792B312E312E + 312E202B2D2E472047205D2E652B502E262E302E47205F2E322E47205D2E432E + 432E322E502E502E2D2E2D2E472047202F2B392B5F2E392B392B31202F2B5E2B + 6B202E20222C0A222E206B207C20652B652B7C20652B7C20422E422E2E2E422E + 422E442E72207220722038203820352B7A2E7A2E7A2E7A2E412041207A2E332E + 352B3820302B6820652B652B442E6C2021203D2E5D20462043202C2B432E362E + 722E6620662066206620742E3A2026206220732E252B7E2B212050202920272E + 29205A203D2B252B722B6A2B602036204F2E282E472B662B682E732E4E2E2620 + 732E272E792E3A202620792E6620742E7E2B5A20472B4E2E3A20662B2F20662B + 272E792E3A205A206C2E662B57204E2E5E2E572066206620712B5E2E272E7420 + 7420612B472B4620752B472B26202E2B732E2C2B432E272B272B422E652B6820 + 6820302E61206120262E372B642B7B2B59205920262B44205E20342B572E612B + 732E462032206A2E6E2B312E312E312E312E312E6120792B5F2B522E2A2E4B2E + 402E452E452E7020622E652B4720792B6120312E3120312E3120762B2F2B6820 + 5D2E6820502E6820622E5D2E5D2E452E5420542058205420622E652B68204720 + 2F2B47202F2B392B6120392B5F2E212E392B61206B202E20222C0A222E206B20 + 422E7C207C207C207C207C20652B422E422E422E422E642B3B2B72207220492E + 492E38203820352B352B332E332E332E352B38203820352B5F2B422E7C207C20 + 3B2B4020662B4E2E3A20732E762E48204820412B4A20382E66204E2E4E2E272E + 792E742E742E662B462029203520742E252B5020732E7420792E472B74203220 + 74204F2E5A2E592E3C203E2E472B7A204E2E472B3C2B2C207E2B29205A20272E + 26205D20292050203A20662066204E2E2E2B26202E2B7E2B792E612B272E472B + 3A20412E682E4E2E3520682E2E2B2E2B682E792E3C2B792E3C2B3D2B3D2B2620 + 5A20752B5B202D202A2E70202A2E432E5D2E652B5D2E47206E2B262E322E322E + 502E522E362E442E4D2E492049203C2035203A2057203A2E5D2B6A203120312E + 312031203120312061206E2B68205D2E272B452E452E402E7020432E6820302E + 6A206E2B792B3120312E482E482E762B2F2B2F2B682047205F2B652B382B382B + 2A2E382B54205820602E58205420432E372B5F2B652B652B502E5F2E302E302E + 302E392B392B392B6B202E20222C0A222E206B20422E652B7C20432E432E7C20 + 7C207C202E2E422E2E2E422E772B302B72207220492E492E38203820352B3820 + 352B382038203820352B5E2B6C2B652B432E7C20242E2C205D20752B612B792E + 2C2B4820482048204820642E3E2B682E35204B20742E662B212B732B3B2E462E + 752B74205A2E392E36206A2B462E732E7D207A207A206E204F2E4C2E77203520 + 712B742E632E742E682E26203A20792E7E2B472B6C2E5E203A2050202620472B + 472B472B712B2C202C20272E572E612E682E4B202E2B4E2E2E2B472B4E2E2A20 + 2E2B5E2E662B26203C2B472B472B29203D2B7E2B5D20592048204B2E4B2E7020 + 432E272B272B652B5F2B5F2B502E502E502E6A20502E502E502E262E61206120 + 3120522E6F206F20412B48206A20312E6120312E612031206120312E262E502E + 6820622E5D2E2A2E452E452E2A2E422E68206E2B75207520792B312E762B762B + 31203120392B392B2F2B502E302E4720652B382B382B452E54206A2E602E552E + 552E58205420232E552E452E362E322E5F2B47204720392B3120212E6B202E20 + 222C0A222E206B20422E7C20422E5D2E272B432E432E432E7C205320422E772B + 422E422E4120622B7220492E492E492E38203820382038203820332E4A20772B + 7C207C20432E702E3C2066205720732E782E3A20652E48204B2E2D202D204820 + 632B6C204E2E472B6C2E3520252B3620462050204C2E4C2E5A2E732E3D2B3620 + 6A2B5A2E212B692051206E2E7D2E732E6E2E662B5E2E4B202E2B272E662B2E2B + 3E2E4E2E512E5720662035206620272E3A2035205720632E632E682E3E2E2E2B + 2E2B35203B203A2066204E2E682E3E2E662B2A202A202A204E2E3C2B7A20512E + 3D2B3D2B29203B205B202D2048204820382B402E70202A2E432E522E322E502E + 522E5F2B522E6820682068206820502E6120212E3120312E322E4A20522E5E2B + 392B3120312031203120312E312061205F2E502E68205D2E622E652B2A2E452E + 432E5F2B502E7520312E792B392B392B392B392B202B392B31205F2E5E2B5E2B + 5E2B262E5F2B432E472E382B54205420552E6A2E552E602E442B2B2B6B2E2D2B + 402E402E432E5F2B5D2E5F2B5E2B61206B202E20222C0A222E20242B422E7C20 + 7C20652B7C205D2E7C20432E652B7C207C20422E7C20422E5320372B332E3820 + 3820382038203820352B332E392B292B6820532053207C20432E702E29203C2B + 4E2E6620362B692B3C2E2A2E2A2E472E2D202D20472E652E572E3A204E2E3A20 + 272E752B3B2E3B2E7C2B4E2E6220232B7D2E6E20362B62205A2E212B69203620 + 6B2B282E742026202E2B682E6620662B632E7A2B662B712B632E272E2E2B2A20 + 2E2B2A20682E352066203C2B632E2A20472B272E7E2B4E2E35203A203E2E4E2E + 682E682E2E2B712B2A207A2B5A20462062205B2E3D2B3C2B3B20412B2D20402E + 402E5D2B452E452E402E4B2E7C20772B652B6820522E6820522E522E522E522E + 502E47206E2B792B792B762B762B312E3120392B312E392B392B392B3120392B + 312061205F2E502E682068206820522E372B422E652B68206E2B612031203120 + 312031203120202B3120392B392B392B392B2F2B5E2B302E502E6820652B272B + 382B542054207B2B552E442B45202B2B2F2E4520442B602E552E7C207020622E + 6820322E6B202E20222C0A222E206B20422E422E642B7C207C207C207C20432E + 432E7C205320642B532053207C205320422E292B4A20292B292B502E292B652B + 652B652B652B422E652B7C205D2E3B2B3E2B5A20732E5E2E612B412B4B2E4820 + 2D2048204B2E4B2E4B2E4B2E302B572E35202F20662B742E212B212B4C2E372E + 252B692036206A2B32207D2E6E2E3A2029205A2E6A2B592E3C2B712B712B4B20 + 2F20682E4B20632E2E2B712B272E3A20472B792E682E5E2E2E2B472B2F203520 + 4E2E2A203A206620712B4B205E2E7A2B712B5E2E5E2E712B2A20632E5A207A20 + 37205B2E46204620752B7720412B4B2E4B2E70205D2B452E552E232E5420402E + 4B2E70202A2E7C20522E372B372B522E522E47205F2B302E302E6E2B792B792B + 3120212E312061203120312E312E392B392B31205F2E392B392B2F2B302E302E + 68206820522E47205F2B5F2B502E5F2E3120312031203120202B3120202B482E + 392B392B392B392B5F2E5E2B502E682068205D2E452E452E5420232E7B2B2D2B + 442B2B2B2B2B2B2B2B2B4F206B2E552E70205420382B652B6B202E20222C0A22 + 2E20242B422E422E652B7C207C207C2048207C207C204820432E7C207C20642B + 7C207C207C207C205320652B652B652B652B652B652B652B7C205D2E422E7C20 + 422E6C20572E2E2B252B742044205B202D204B2E4B2E4B2E48202D204B2E2D20 + 2A2E4D2E6C2066202E2B2A203C2B46202E2B752B372E7E2B212B3B2E36202520 + 6E203220592E462E282E25204F2E662B662B2F20682E682E2F20272E662B4B20 + 712B352035202E2B3A20682E612E612E3520662B5E2E512E4B20662B5A205A20 + 7A20742E4B20302030205E2E2A202A20512E3D2B7C2B422B422B772071202D20 + 70202A2E432E432E2A2E402E5420552E552E7B2B752E5D2B402E2A2E432E432E + 2A2E432E7C20432E652B47206E2B5E2B61205F2E5E2B5E2B5F2E6120392B312E + 312E762B312E312E5F2E6E2B61202F2B302E302E472068204720472047204720 + 472047202D2E312E202B312031203120202B202B3120392B392B392B392B5E2B + 6E2B47206820652B622E382B452E5420552E552E442B45206B2E2F2E2B2B2B2B + 2F2E602E552E452E7020622E6B202E20222C0A222E206B202E2E422E642B642B + 7C20642B642B642B4820642B48207C207C207C2053207C207C20432E4820432E + 5D2E652B422E5D2E432E7C20422E642B7C20422E702E3D2E212B5020472B5B2B + 5B20412B4B2E4B2E4B2E2D204B2E4B2E2D20452E2D20472E642B7B2E742B742E + 252B5A2E232B4C2E3D203620282E7E2B46204F2E5F2025206A2B392E6E206E20 + 6D202F202F202F203E2E2F20682E3C2B4E2E66203A20682E35204E2E6620342B + 2E20342B3E2E742E2920272E5020472B792E572050203C2B4B205E2E2E2B2E2B + 2A20742E2920762E77202D204820432E2A2E2A2E4B2E2A2E7C207C202A2E7020 + 452E232E232E552E232E232E402E4B2E432E2A2E2A2E7020402E382B622E772B + 5F2B6E2B6E2B5E2B302E5E2B5E2B5F2E61205F2E762B762B312E312E392B762B + 392B2F2B2F2B302E2F2B6E2B2F2B302E6E2B2F2B4720302E47202D2E31203120 + 312031203120202B3120392B2F2B61205F2E5E2B5E2B502E302E47205D2E622E + 382B5420452E5420552E442B452045202B2B2B2B6B2E442B6A2E5420452E7020 + 242B2E20222C0A222E206B202E2E422E422E2E2E5320642B5320642B48205320 + 642B48205320482048207C207C20432E4820432E2A2E7C207C20432E7C207C20 + 652B7C20422E422E34204620732B44203E2E472B77204820472E48204B2E4B2E + 4B2E402E2D205D2B402E752E402E6D206E20322032203620742050203B2E3620 + 5A2E282E6E2036207D2E782E2B206A2B4E202B20612B4B204B20292E2F202F20 + 2F205E2E3A203E2E3E2E3520292E662B3520342B342B3E2E3520682E5720612E + 3A203E2E682E682E412E612E3E2E2F204B204B20262044205B20482048202A2E + 2A2E432E272B622E2A2E272B432E7C20432E4B2E2A2E452E452E232E232E5520 + 4420412B2D204B2E70205420232E5420382B772B4A20262E262E5E2B5E2B322E + 5E2B2F2B792B5F2E792B312E312E312E312E762B762B762B2D2E2F2B302E2F2B + 752047202F2B75206E2B2F2B302E2F2B392B31203120482E202B202B392B392B + 2D2E762B7520302E302E4720302E502E6820652B532E5D2E382B452E232E232E + 6A2E442B442B45204520602E602E5820232E5420242B2E20222C0A222E206B20 + 4D2E562E362E2E2E642B5320642B53205320642B48207C207C207C207C204820 + 48202A2E48202A2E432E432E7C207C207C207C207C207C207C202E2E6C204E2E + 732E7D207E2B7B2E412B4B2E4B2E4B2E4B2E402E402E402E402E402E5D2B4B2E + 28203D2E36207B204E2E212B74203B205B2E5A2E212057207D2E25206E2E4E2E + 462E6020342E6C2E612E4B20712B4320742B4E2E4B202E2B4B202F204B20682E + 662B3B20472B6620682E472B612B4E2E6620412E2E2B472B3C2B3D2E66202E20 + 412E3E2E35202F203C20642B5320642B652B272B432E70207020702070202A2E + 272B2A2E432E53205320532E452E5D2B752E44206F2B332B5520752E452E5420 + 552E552E552E7020772B5F2B322E502E502E262E5E2B322E6120792B792B7520 + 312E312E312E312E5F2E312E312E392B2F2B2F2B392B75202F2B2F2B2F2B2F2B + 2F2B2F2B762B392B392B3120202B202B3120202B392B392B2F2B302E68206820 + 4720302E302E4720652B532E382B472E472E452E232E2D2B2D2B2D2B442B602E + 4520602E6A2E232E242B2E20222C0A222E206B20562E372B2E2E362E362E642E + 642E642E53205320642B4820532048207C202A2E48202A2E4B2E2A2E48204820 + 4820482048204820482048207C20252E43203C2B252B5A2E2F2E402B412B4820 + 4B2E4B2E4B2E2D202D20452E402E752E692E5F206D20452B6A2B51207A20372E + 5A2E5120692036203B2E752B3B2E2520362032205120252067206B20342B2F20 + 7B2E2C2B2C2B4D2E282044207A2B742E7B2E28203C2E642E692B652E652E692B + 77203D2E2E2B412E662B3D2B5D20732E4E2E35204E2E352066203B203C2E652B + 422E422E2E2E7C20432E2A2E382B702070202A2E2A2E70205D2E772B772B642B + 4820472E5520542E2B2E63207C2E5520232E5420232E552E54202A2E5320432E + 372B322E522E522E5E2B6E2B6E2B5E2B6E2B792B792B762B312E312E792B312E + 312E762B31202F2B2F2B75202F2B2F2B2D2E6E2B2D2E5F2E5F2E392B392B392B + 202B202B392B3120392B392B5F2E302E682068202F2B5E2B2F2B302E68205D2E + 652B272B532E472E452E452E232E5420552E6A2E602E442B442B6A2E242B2E20 + 222C0A222E206B20362E562E362E772B772B362E362E642E642B5320642B5320 + 48207C20482048204B2E4B2E4B2E48204B2E4B2E4B2E4B2E2A2E4B2E2A2E2A2E + 7C20762E752B69203B2E6E2E7D2E3A2E2D202D204B2E2D202D20402E402E402E + 462B6D203620362051203B2E74204E205B2E46207C2B5720472B4C2E5A2E4C2E + 792E3B2E3B2E2C2074206E205E203E2E35205E2E692B48207C2048202C2B6C2B + 482071202C2B2C2B4B2E472E2A2E482053202C2B77203D2B272E2F20662B3C2B + 4E2E682E682E2E2B632E272E3A203C20432E432E7C20432E432E432E272B7020 + 702070207020382B382B70202A2E432E5320432E4820472E692B302023206320 + 6320332B5520232E54205420402E4B2E4B2E472E53205320532E772B322E262E + 262E6E2B792B792B312E6120312E762B312E5F2E312E312E392B762B762B392B + 762B2D2E2D2E75202F2B762B2F2B5F2E3120392B202B3120202B392B392B392B + 2F2B2D2E2F2B47204720302E502E472068205D2E5D2E432E2A2E472E452E452E + 452E452E7B2B232E752E2D2B602E452040202E20222C0A222E206B20562E772B + 772B2E2E362E362E772B362E642E642E53205320482048202A2E48204B2E4B2E + 70204B2E4B2E4B2E4B2E2D204B2E2D204B2E2D20762E29202E2B46202920572E + 692B4B2E402E2D20452E402E452E5D2B692E692E5E20512E74202C205E204620 + 74206C2E662B372E4C2E3C2B4B203D2B742074203D2B3D2B622029204E20702E + 3A20682E5E2E6F202C2B432E432E432E432E48204820432E2A2E432E2A2E2A2E + 272B4820432E432E412B362B4E2E2A207A20512E2920712B4B20632E5A202920 + 4E2E632B432E272B2A2E2A2E70202A2E2A2E2A2E2A2E2A2E7020382B7020452E + 7020432E652B5320432E2C2B3B20292E7E20632063207620352E7B2B232E452E + 472E4B2E4B2E2A2E272B272B2A2E5D2E522E5F2B322E792B792B792B762B312E + 312E762B762B312E392B3120392B3120202B762B2D2E762B762B5F2E5F2E762B + 392B392B392B392B202B392B202B392B392B762B2F2B47202F2B2F2B202B5F2E + 6E2B472068205D2E622E622E382B382B532E532E452E452E452E452E5D2B5520 + 442B6A2E242B2E20222C0A222E206B20562E522E522E522E772B772B2E2E5320 + 772B5320642B642B642B48204B2E4B2E4B2E4B2E2D204B2E4B2E402E402E7020 + 402E402E402E2A2E43205B2B232B7D2E592E2A2B6F20402E402E5D2B5D2B5D2B + 3920422B282E3B2E5B2E212B742026205A20452B4C2E2C206620512E74207420 + 3D2B3A20682E3C2B472B66204020242B6B20612E35203520472B2C2B4B2E432E + 4820432E7C2053207C20272B432E432E7C20432E432E432E7C207C20642B5E20 + 612E4E2E3D2B3D2E462E272E4E2E29205D207E2B5B2B2C2B2A2E482048207020 + 702070204B2E2A2E70207020382B70207020382B382B5D2E372B652B432E6F20 + 3020292E7E20762033203320582E5B2B5520232E2A2E5320272B2A2E4B2E2A2E + 7020622E272B272B5D2E4720792B792B612061203120202B202B762B3120392B + 202B202B392B762B762B762B762B312E392B5F2E5F2E392B392B392B392B3120 + 3120392B3120482E2D2E2F2B2D2E47202F2B2F2B392B5F2E302E68205D2E5D2E + 532E432E432E362E4B2E532E472E452E5420452E232E5420242B2E20222C0A22 + 2E206B20522E562E522E522E772B2E2E772B642B2E2E642B642B2C2B48204820 + 48204B2E4B2E4B2E402E4B2E4B2E402E2D20402E5D2B402E5D2B702E4E2E272E + 282E2520672E67205D2B5D2B5D2B5D2B5D2B3920282E732E452B7A207D205A2E + 51203B2E3620452B212B50204E2E2E2B2620272E742E472B26202C2066206620 + 342B342B342B66204E2E66203E2B642B4820272B2A2E432E5D2E422E642B7C20 + 432E7C20432E432E432E432E7C20652B562E572E682E262026203E2E612B572E + 35203C2B5720472B692E412B7C20772B642B48204B2E4B2E7020472E70207020 + 402E702070202A2E2A2E272B652B772B432E742B3020292E7E20422033203320 + 6320582E5B2B452E382B2A2E2A2E702070202A2E622E5D2E432E622E622E652B + 262E6120612031203120202B202B762B31203120392B392B392B392B75202F2B + 5F2E61205E2B5F2E5F2E5F2E762B762B762B392B3120392B5F2E392B392B2D2E + 2D2E2F2B2F2B2F2B2F2B2F2B5F2E2F2B502E47206820652B5320522E5320432E + 4B2E452E382B472E452E452E6B202E20222C0A222E206B20522E522E522E6820 + 6820372B422E2E2E53205320432E4820642B642B482048204B2E4B2E4B2E4B2E + 2D202D20402E402E402E5D2B3A2E252E3B205E2E742E6E2E392E5820752E752E + 452E452E5D2B7B205A2E5120722B752B252B6A2B462E272E51207C2B732E252B + 262043205A204420692B412B6C2066206620412E66203A20662B2620472B7B2E + 632B642B432E432E432E432E7C205320652B422E432E432E432E7C20432E272B + 272B432E432E5E2057202920632E2E2B2920612E612E26202E2B26206E2E7C20 + 362E5320532053205320432E432E2A2E2A2E2A2E70207020472E432E2A2E272B + 652B772B632B5E2E292E7E207E20232033206520652063207E2E412B2A2E7020 + 382B382B382B7020432E362E772B652B652B68206E2B6120212E6120312E202B + 202B202B392B312031203120392B392B5F2E75205F2E312E5F2E5E2B2F2B5F2E + 762B762B5F2E392B392B392B392B392B762B202B2F2B2D2E2F2B2F2B2F2B2F2B + 2F2B502E4720502E4A20502E262E4A20522E432E452E452E402E382B7020472E + 242B2E20222C0A222E206B206A20522E522E442E422E68202E2E5320642B642B + 532048204820642B482048202A2E48204B2E4B2E70202D202D205D2B402E3A2E + 202E74204F2E232B26205B2B6E2E232E232E232E232E752E3A2E262B282E5120 + 4620452B282E6A2B6E2E3C2B452B462E3D2E59206F20692B2D20412B2D202C2B + 572E342B342B342B35204B2057204E2E4E2E2820362E422E422E422E422E772B + 422E422E5D2E622E272B432E272B272B272B272B2A2E432E5D2E702E2C203A20 + 2620742046203A202E2B752B462E7B2055207C20372B362E772B652B422E5320 + 422E53207C20432E4820272B2A2E432E2A2E272B652B372B742B3020292E292E + 7E202320332033206520632065205620412B402E452E5420382B2A2E7C20642B + 432E2A2E7C205320522E6120212E3120312E202B202B202B392B212E392B5E2B + 6E2B502E302E5F2E5E2B5E2B5F2E6E2B2F2B2F2B5F2E762B2F2B392B6120392B + 31203120762B762B202B2D2E202B392B392B5F2E392B5E2B502E5E2B522E6C2B + 68206C2B432E432E2A2E382B452E272B70202A2E242B2E20222C0A222E206B20 + 442E522E5F2B522E562E362E2E2E772B5320642B642B48204820482048204820 + 48204B2E4B2E4B2E4B2E70207020402E4B2E772069204F2E36202520692E202E + 7B2B232E232E232E7B2B7B2B452E252E4C2E722B5B2E452B6A2B3B2E4620612B + 4E20692E32207B2B2D205D2B752E752E402E2E2E572E342B2E203E2E682E662B + 35205720652E4D2E422E562E772B68206820522E652B622E2A2E652B5D2E272B + 272B622E272B272B622E622E432E702E3A20272E3D2E752B6220472B632E5B2E + 51202B207720642B772B772B6820772B772B652B422E652B422E5320432E7C20 + 7C20432E2A2E432E652B632B5E2E662E7E207E20292E662E6320332033206520 + 65204220582E2D20452E5420382B2A2E7C204820402E7020452E382B2A2E772B + 262E5E2B3120202B202B202B3120312061205F2B4720502E322E322E502E502E + 472047202F2B762B5F2E762B762B392B392B392B392B392B392B762B202B202B + 762B392B5F2E302E4720502E47206820652B5D2E5320522E432E432E772B432E + 622E2A2E472E382B242B2E20222C0A222E206B206A20522E5F2B522E68202E2E + 772B562E5320642B642B48202C2B482048202D2048204B2E70202D202D20402E + 2D205D2B702E2C2062204C2E5F202520672E45205420232E7B2B7B2B7B2B7B2B + 7B2B77202B203D204620372E732B6220282E6E2E412B55207B2B7B2B7B2B232E + 232E5520452E3420402066203E2E35203A20472B272E4420642B2E2E6820522E + 562E4720472047205F2B652B5D2E5D2E68206820652B5D2E272B5D2E5D2E5D2E + 7C2034203A20272E50203A2057203C2B3C2B4620452B7D2E4F202A2E5D2E652B + 522E522E522E6820652B432E422E422E5320642B7C20432E432E432E53203B20 + 302023202320292E7E207E206320332033206520332065206D2E7A2B412B452E + 2A2E2A2E2A2E452E752E452E232E5420452E432E522E6E2B31203120202B3120 + 31205F2E502E6C2B682068206820522E502E4720682047205F2E392B762B392B + 392B392B392B392B392B392B392B762B762B762B392B392B762B2F2B47204720 + 47206820652B5D2E652B532E622E432E5F2B4A20522E5D2E432E2A2E242B2E20 + 222C0A222E206B20442E522E522E522E562E562E562E362E772B642B53204820 + 48204820482048204B2E4B2E4B2E4B2E70204B2E5D2B67205B204E2E662B472B + 612B592E392E5820752E232E7B2B2D2B7B2B7B2B7B2B3A2E21204C2E732B452B + 452B2620462E4F202D2B7B2B7B2B552E7B2B7B2B232E232E402E3E2B3A20682E + 3520342B342B682E742E2C2B422E562E522E47206A20522E5F2B502E5F2B502E + 68206820502E47204720302E502E502E502E6A205F2B702E6C2E3C2B3A207E2B + 632E3C2B512E5A20752B46202D2B2A2E432E772B522E5F2B5F2B522E652B432E + 5320772B422E432E7C207C20432E652B642E5E2E2320232023207E20292E292E + 7E2E33203320652065206320422042207A2B4820432E2A2E5D2B232E232E752E + 452E5D2B472E472E652B312E202B202B3120202B762B502E522E5D2E272B532E + 68204720652B68202F2B392B3120392B392B392B3120392B392B392B392B392B + 392B392B202B202B392B392B5F2E2F2B2F2B2F2B302E502E472068205D2E622E + 532E652B5F2B47205F2B522E652B53206B202E20222C0A222E206B206A204A20 + 522E522E522E372B362E362E2E2E53205320642B642B48204820482048204B2E + 4B2E4B2E402E70207B206E206020592E4F2E5B2B612B592E6B2E232E232E232E + 55207B2B7B2B7B2B7B2B7B2B28205A20722B732B3620282E4F2E442B552E7B2B + 7B2B232E7B2B7B2B552E232E3C2E40203E2E682E4E2E3A202F20472B2820642B + 652B422E422E422E6820522E6A20322E322E262E322E262E612031206120392B + 392B312E202B3120262E702E40206C2E742E252B732E712B632E372E5120672B + 2D2B7C20652B68205F2B502E502E522E652B652B432E5320422E432E432E422E + 652B362E7B2E3020232023202320292E7E207E20422033203320332033206520 + 63207E2E582E71204B2E402E452E5D2B452E452E472E402E5320422E5F2B392B + 312E202B202B762B2F2B47206C2B272B622E652B292B652B502E5E2B5F2E5F2E + 762B202B202B202B202B392B392B392B392B762B762B392B392B392B392B392B + 392B392B5E2B2F2B302E302E502E47206820652B68204720522E682047204720 + 5D2E622E6B202E20222C0A222E206B206A205F2B5F2B522E442E442E562E442E + 362E772B642B5320642B642B642B48204820482048204B2E7120702E3C20422B + 282E282E6A2B6B2B4F20452055205520552055207B2B7B2B7B2B232E2D2B7B2B + 412B3B20212B732B6A2B4F2E32207B2B2D2B7B2B552E7B2B7B2B552E7B2B752E + 632B66206620352066203C2B742E212071202A2E5D2E432E272B652B562E442E + 6A206A206A20262E262E6120792B312E392B3120392B312031203120792B762E + 57202C20612B50205D202E2B632E212B5A2E282E542068206820522E5F2B322E + 322E5F2B522E772B522E772B652B652B652B652B652B4A205E2E522052202320 + 23207E20292E292E322B3320652033206520652042207E2E5B202D207020402E + 5D2B452E452E2A2E2A2E432E4A2049205E2B792B312E5F2E6120762B47206820 + 622E472E5320772B6820522E47206E2B762B31203120202B2D2E2D2E202B762B + 392B392B202B392B202B762B392B392B392B392B3120392B5F2E2F2B2F2B2F2B + 4720652B5D2E5F2B4720652B502E502E302E47204720272B242B2E20222C0A22 + 2E206B206A206A206A204720442E522E562E442E362E772B422E5320642B5320 + 642B642B642B7C2048202A2E462B6C20572046204C2E2C206E20782B602E232E + 752E752E232E552055207B2B7B2B7B2B7B2B7B2B55203C203C2B5B2E36206E20 + 6E2E7B2B2D2B2D2B2D2B2D2B2D2B552E2D2B702E382E412E682E4E2E6620792E + 5D20402B402E4B2E2A2E2A2E70205D2E772B442E442E442E522E322E262E6120 + 312E6120312E392B31203120482E482E6A20612B792E50203D2E792E3D2E792E + 472B742E4C2E6E204B2E422E652B4720322E262E262E5E2B4720652B522E522E + 522E522E772B652B772B652E30205220522023205220292E292E292E322B6520 + 33203320652065207E2E7A2B472E452E452E452E452E5420452E2A2E652B4A20 + 5E2B5E2B5E2B5F2E5F2E75207520752068205D2E622E432E652B652B68205F2B + 4720302E2F2B762B202B202B202B202B202B202B2D2E392B202B392B202B392B + 392B392B392B392B212E392B2F2B68204720762B47205D2E5D2E652B532E652B + 47205F2B502E4720302E68206B202E20222C0A222E206B206A20522E562E522E + 562E372B362E2E2E362E2E2E2E2E5320772B642B53205320642B7C20402E442B + 6D20572E712B282E6020402B4520442B752E452E752E752E552055207B2B5520 + 7B2B7B2B7B2B2D2B2D2B692B4E2E512E732B6A2B6E202D2B6A2E442B2D2B6A2E + 2D2B2D2B54203B2B342B612E66203A203A202C206C2E242E6F2E452E70207020 + 272B432E432E432E642B652B652B772B522E5F2B262E312E312031203120482E + 482E312034202120512E4E2E3D2E74202B20572E612E3520742E4F207C206820 + 652B4720792B262E5E2B212E61205F2B47204A20502E322E4720772B4A205E2E + 522023202320232023207E20292E7E20662E6520332065204220762056207C20 + 7020382B452E452E452E382B472E652B652B502E4A205E2B5F2E262E6E2B302E + 302E472068206820272B5D2E682068206820302E502E5F2E392B202B202B202B + 202B2D2E202B762B392B202B762B202B392B392B392B3120392B392B3120392B + 2F2B2F2B47202F2B2F2B5D2E652B5D2E382B5D2E652B4720302E302E6E2B502E + 6B202E20222C0A222E206B206A205F2B522E5F2B522E442E372B562E362E2E2E + 362E2E2E772B2E2E2E2E422E4D2E7C207B20392E282E462E5B2B6E20672E2B2B + 552E402E2D20402E232E752E232E7B2B7B2B7B2B7B2B2D2B7B2B552E7B2B2D20 + 4E2E2A207D203D20592E67202D2B442B2D2B2D2B2D2B2D2B2D206C2040203E2E + 612E57202920792E3A206C204B2E5420702070202A2E2A2E2A2E2A2E70207020 + 7020272B422E68205F2B6120212E3120312E312E3120312E342050205D20742E + 7E2B792E77206620472B712B212B592E272B68205D2E4720302E61205E2B6120 + 212E502E502E502E502E4A20502E6820632B5E2E522052202320232023207E20 + 292E7E20662E42206520652065207E2E3C2E272B382B382B382B382B622E5D2E + 68205F2B502E302E5E2B5E2B5E2B5E2B6E2B6E2B6820682047205D2E272B5320 + 68205F2B502E502E5F2E392B392B762B2D2E2D2E202B202B202B202B762B202B + 762B202B762B392B392B392B392B392B392B3120392B762B2F2B2F2B2F2B4720 + 472047206820652B652B652B68206E2B6E2B302E6B202E20222C0A222E206B20 + 442E562E522E652B562E772B362E2E2E772B772B772B362E772B2E2E562E562E + 3B2B4020572074206D2050206E20672E4D20232E4B2E402E452E752E452E232E + 552055207B2B7B2B7B2B2D2B7B2B2D2B2D2B2D2B28202620752B51206A2B592E + 442B2D2B442B442B442B442B7120572E3A20662035202620792E21203C2B762E + 772054205420402E70202A2E4B2E70205420232E5420382B7020272B68204720 + 6E2B61203120312E312E61205E2029207E2B57205A2059207B203A20742E252B + 5A2E4D20622E6820652B682047205E2B2F2B5E2B392B5E2B5E2B5E2B5F2E502E + 302E502E502E34207B2E5E2E52205220662E7E20292E7E20662E422065206520 + 42206F20432E622E382B382B622E5D2E772B4720502E302E5E2B302E2F2B2F2B + 302E502E502E68205D2E682068206820652B652B652B502E5E2B392B5F2E5F2E + 762B202B202B2D2E202B2D2E202B202B202B762B762B762B392B392B392B3120 + 392B392B392B392B5F2E392B5F2E5E2B302E302E68204720522E502E68206820 + 682047206E2B792B6B202E20222C0A222E206B20522E6820522E652B772B562E + 562E372B442E442E372B562E562E2E2E7C2039205E2066205E2E2F2E6E202A2B + 672B2B2B552E2A2E4B2E2D20452E752E55205520232E7B2B7B2B7B2B2D2B2D2B + 2D2B2D2B2D2B2D2B5520612B512E692036206E204D20442B442B442B442B2D2B + 552057203520682E572057203A20792E472B612B402B232E5420402E70204B2E + 4B2E5D2B232E54205420452E382B2A2E652B522E302E792B792B312E312E312E + 6120612B742E742E4320462E202E3B207A2B5B2E282E4D20622E5D2E68204720 + 4720302E5E2B5E2B5E2B5F2E612061205E2B5F2E262E502E502E472068203420 + 7B2E5E2E52202320292E292E7E20322B6520422056205320652B272B5D2E652B + 472047206A20262E262E392B392B5E2B5E2B5E2B5E2B5E2B502E682047204720 + 68205D2E622E6820302E5E2B432B392B392B312E762B762B2D2E2D2E202B202B + 202B202B202B202B202B202B392B392B392B392B392B392B392B392B392B2F2B + 2F2B2F2B302E472068204720292B302E472047206E2B7520792B6E2B6B202E20 + 222C0A222E206B20562E562E772B772B772B372B372B442E442E442E442E442E + 562E7C206720392E6E2E4E2E712B6020772E692E692E752E4B2E4B2E472E2D20 + 5D2B452E232E752E55207B2B2D2B7B2B2D2B2D2B2D2B442B2D2B442B442B5B20 + 742E5B2E36206A2B392E452045202D2B442B442B2D2B55203E2B3A20472B2620 + 472B50202620272E422B252E3A2E54205D2B5D2B542054205420452E54205420 + 452E7020652B68204720502E792B792B312E312E312E3420502026205E2E5B2B + 782E272E5A20632E7A206A2E68206820682047204720502E2F2B5E2B392B5E2B + 5E2B61205F2E61205F2E5F2E302E302E302E502E6A204120242E742B3020292E + 292E2320762056204D2E302E4720302E302E6E2B752061207520612031206120 + 392B392B762B2F2B2F2B2F2B682068204720682068204720502E2F2B5F2E392B + 5F2E5E2B392B392B392B202B202B202B2D2E202B202B202B762B392B762B392B + 392B392B392B392B5F2E5F2E2F2B2F2B5F2E4720682047204720472047204720 + 47204720502E6E2B312E792B792B322E6B202E20222C0A222E206B20772B2E2E + 772B772B2E2E362E2E2E772B562E372B562E3420702B5E206F2E60206D2B4520 + 5B2B6B2B392E602E5D2B48204B2E2D205D2B2D20752E752E55207B2B7B2B7B2B + 2D2B2D2B2D2B2D2B442B442B442B2D2B442B55202A2B632E452B3620672E4520 + 4520452045204520442B45202D2B3C20572E472B26206C2E272E3D2E3D2B362B + 762E252E5D2B382B7020702070207020452E542054207020432E652B6820302E + 7520392B202B312E392B61206C2E662B782E21202620272E5A205B2E5A2E6A2E + 302E472047206820502E522E502E5E2B5F2E5F2E5F2E392B392B5E2B2F2B5F2E + 2F2B502E302E302E5E2B5E2B5E2B4920242E3E2B5E2E292E5620652E4A202F2B + 2F2B2F2B792B312E312E312E762B392B392B3120392B5F2E5F2E2F2B47204720 + 47202F2B472047202F2B762B392B5F2E392B5F2E5F2E5F2E5F2E762B2D2E202B + 2D2E202B202B2D2E202B392B202B392B202B202B392B392B392B5E2B2F2B2F2B + 5F2E302E2F2B472047204720682047202F2B2F2B2F2B2F2B2F2B2F2B5F2E5F2E + 762B792B6B202E20222C0A222E206B20422E422E422E422E772B2E2E362E562E + 362E562E48202D205E20612E3E2E262B2520672E6E204D205820402E2A2E4B2E + 4B2E2D202D202D20752E752E232E7B2B7B2B7B2B2D2B2D2B2D2B2D2B2D2B2D2B + 4520442B4520692E5B2029205B2E512025204D20442B2D2B4520452045204520 + 442B7B2B5E2040203A2057202C20792E292029202920402B6D2039205D2B5D2B + 70205D2B5420542054205D2B622E5D2E68206E2B6120762B392B392B31206120 + 3C20272E29203A20632E712B272E212B282E6720302E302E6820682047204720 + 302E302E5F2E5F2E2F2B5E2B2F2B2F2B302E302E2F2B5F2E5E2B302E302E302E + 2F2B2F2B5E2B262E432B3B2B3B2B5E2B5F2E5F2E5F2E5F2E5F2E61205F2E6120 + 392B5F2E392B5F2E392B2F2B302E2F2B47202F2B2F2B2D2E2F2B762B392B5F2E + 392B2F2B2F2B5F2E2F2B2F2B762B762B762B762B202B202B202B202B762B202B + 762B202B762B392B392B392B392B392B392B2F2B2F2B2D2E47202F2B47204720 + 47202F2B6E2B2F2B5F2E2D2E2F2B2F2B2D2E2F2B762B5F2E6B202E20222C0A22 + 2E206B202E2E422E422E422E772B422E772B2E2E362E7C2039204F204F205B20 + 35203B2060206B2B6B2E3920702070207120402E402E5D2B752E752E752E5520 + 232E7B2B552E2D2B2D2B2D2B442B2D2B45202D2B45204520442B452055202920 + 7E2B4C2E51206A2B592E2F2E452045202D2B2D2B2D2B7B2B55203C2E3E2B5720 + 2C202C205E20792E272E2120252E7B20682B5420752E5420232E232E54204B2E + 5D2E4720502E5F2E392B392B762B762B3120312E3B2B792E272E7A2B5A207A2B + 2A203B2E36205820302E6E2B47206820502E502E302E302E2F2B5F2E6E2B302E + 47206E2B47204720302E2F2B5F2E2F2B47204720302E5E2B762B392B5F2E6120 + 392B5F2E5F2E5F2E392B392B762B5F2E762B5F2E392B5F2E5F2E5F2E5F2E2F2B + 2F2B2F2B2F2B2F2B2F2B2D2E2F2B2F2B5F2E2F2B392B5F2E2F2B762B2F2B2F2B + 2F2B762B762B2F2B202B202B762B202B762B762B762B762B762B202B762B392B + 2F2B392B392B392B762B762B2F2B47202F2B2F2B47202D2E2D2E2D2E5F2E762B + 2D2E762B2D2E2D2E2D2E75206B202E20222C0A222E206B20422E422E2E2E2E2E + 772B562E2E2E2E2E6820702E702B3C207B20392E7720472B4F206A2E70204B2E + 70202D20402E2D202D202D20452E55205520232E7B2B7B2B7B2B2D2B2D2B2D2B + 2D2B2D2B45202D2B32204520452045206A2E50202C20512E4620692025202520 + 392E592E2D2B7B2B2D2B2D2B7B2B232E752E2D2071207120462B762E702E612B + 702E682B77203A2E5420752E232E5D2B472E432E322E5E2B312E5F2E312E392B + 392B3120312E31203C2026203C2B472B272E7A2046204C2E36206B2E68207520 + 5E2B68206820472047206E2B5F2E2F2B6E2B2F2B302E47204720472075202F2B + 302E302E2F2B2F2B5F2E2F2B5F2E392B392B392B392B392B392B392B392B392B + 392B392B5F2E392B762B5F2E392B392B392B2F2B762B2F2B2F2B2D2E392B5F2E + 2D2E2F2B2F2B2F2B2F2B2F2B762B2F2B2F2B2F2B762B392B202B762B762B762B + 202B762B202B762B202B762B762B762B762B762B762B5F2E392B392B762B2F2B + 2D2E2D2E2F2B2D2E2F2B2F2B752075202D2E202B762B2D2E2D2E2D2E2D2E7520 + 6B202E20222C0A222E206B202E2E772B772B362E2E2E362E562E2E2E562E382E + 2E206B2035205920672B44207B2B2D204B2E71204B2E2D202D205D2B2D205520 + 752E55207B2B55207B2B552E2D2B2D2B2D2B2D2B45202D2B4520452045204520 + 2D2B4520692E4420662035203C2B372E36203620592E25206E2E44204F20782B + 6B2E3A2E682B6D206F2E67207B2B39203920392058206A2E67202D2B2D2B602E + 2D2B442B232E4820382B382B652B6820562E5F2B47205F2B6A205F2B702B6620 + 3A20662B472B792E57203C2B62207B207020302E61206E2B4720472047202F2B + 5F2E762B5F2E7520302E47202F2B2F2B5F2E752075202F2B202B2D2E302E2F2B + 762B3120392B392B392B392B392B392B762B762B202B202B762B762B762B5F2E + 392B392B392B5F2E392B392B392B762B762B762B392B762B392B392B762B5F2E + 2F2B5F2E762B392B392B202B392B762B762B762B202B762B202B762B762B202B + 762B392B392B392B5F2E762B5F2E2F2B392B762B2D2E2D2E2D2E2D2E2D2E2F2B + 2D2E2D2E2D2E2D2E2D2E202B202B2D2E202B762B6B202E20222C0A222E206B20 + 642B422E422E2E2E772B2E2E562E562E49204020612E342B612E2C206E20602E + 71204B2E702070204B2E2D202D202D20752E5520452E5520232E7B2B7B2B2D2B + 552E2D2B45202D2B452045202D2B442B4520452045204520692E55204020342B + 4E2E212B51203B2E212B36203620732E762E422B422B2A2B762E2120402B342E + 402B422B402B782E7B20422B7B20402B262B5920262B6D20682B402B5F203920 + 682B362B6F2E67207B206A2E77206F2E39203C20402B362B662B2F203A203A20 + 572E5720252E5D2B68205F2E2F2B2F2B472047202F2B5F2E5F2E2D2E2F2B7520 + 762B312E762B312E202B312E5F2E2F2B2D2E2D2E392B392B392B392B392B392B + 202B202B392B202B392B392B202B392B762B392B5F2E392B392B392B392B392B + 762B2D2E202B762B762B202B762B762B392B392B392B392B392B392B392B392B + 202B762B202B202B762B762B762B762B762B2D2E762B762B762B762B392B5F2E + 392B5F2E392B392B2D2E2D2E2D2E2D2E2D2E2D2E2D2E202B2D2E2D2E2D2E2D2E + 2D2E2D2E2D2E2D2E6B202E20222C0A222E206B20642B2E2E422E772B5320422E + 562E442E5E20612E3B203B2035203B204520552E272B48204B2E70202D20402E + 2D202D20752E752E55207B2B7B2B552E7B2B2D2B2D2B2D2B2D2B452045204520 + 45204520452045202D2B442B3220442B412B6C20402066204E2E2620372E6920 + 7420632E4320792E5E202C20612B212021202120362B2120762E5D202120362B + 212029202120502029203D2E612B272E612B2C2026206C2E5020612B3D2E3D2E + 502029202120262B6D206E2E3220262B262B682B402B21204E205F204D206820 + 2D2E47202F2B47202F2B2D2E392B5F2E3120312E312E312E762B2D2E762B202B + 2D2E2D2E762B202B392B392B392B392B392B392B392B762B762B202B202B202B + 202B392B762B5F2E392B392B392B392B3120392B392B2D2E762B762B762B392B + 392B392B392B3120392B392B392B392B392B392B392B762B392B202B392B762B + 762B762B392B762B762B762B762B2F2B392B5F2E392B5F2E5F2E5F2E762B2D2E + 2D2E2D2E2D2E2D2E2D2E202B2D2E2D2E2D2E2D2E2D2E2D2E2D2E762B6B202E20 + 222C0A222E20242B53205320642B642B2E2E362E2E2E562E242E572E742E5A20 + 29203B206F2E2A2E7C20482048204B2E4B2E402E402E5D2B452E452E232E452E + 232E7B2B7B2B7B2B2D2B2D2B2D2B45202D2B45202D2B45202D2B45204520442B + 2D2B2D2B3A2E462B692B5E2057204E2E2E2B29205020612B3C20472B5E20792E + 2A2B362B2120362B21202120362B362B212021202A2B792E612B2C20612B2C20 + 6C2E57204E2E472B3E2B4E2E4E2E4E2E2E2B612B2620472B472B2620612B3B20 + 792E612B4420402B5D20402B782E782B672E5D2E2F2B2F2B2F2B2F2B762B312E + 392B392B392B6120392B312E792B762B202B2D2E202B762B762B2D2E47204720 + 292B652B652B502E392B392B202B202B202B3120202B202B762B762B2F2B5F2E + 392B392B392B392B392B392B762B5F2E5F2E762B762B5F2E5F2E5F2E5F2E392B + 392B2F2B392B392B392B2F2B2F2B392B762B392B392B392B762B392B392B392B + 392B392B5F2E5F2E5F2E5F2E392B5F2E392B762B762B762B762B392B392B202B + 2D2E2D2E2D2E202B762B2D2E762B5F2E6B202E20222C0A222E206B20642B362E + 642E362E362E362E2E2E2E2E7120572E682E742B3D2E5B20412B642B48204820 + 4820482048202D202D20402E5D2B452E752E452E552055207B2B7B2B7B2B2D2B + 442B2D2B452045204520452045202D2B2D2B78202D2B5520692B762E71202A2B + 43203C20612B272E5020612B612B4320362B43202A2B362B762E362B402B762E + 402B402B5B20762E762E692B762E362B612B2C206C203E2B57203B20612B6C2E + 572E572E4E2E3B20792E3C202C203B202C202C20472B432050202A2B2A2B2A2B + 402B6E2E602E2D2E752075202D2E5F2E61203120312E392B31203120392B392B + 392B762B762B2D2E762B202B2D2E472047202F2B5D2E472E382B68205E2B392B + 392B392B202B392B392B392B762B762B2D2E2D2E5F2E762B762B392B392B392B + 392B762B5F2E2F2B762B762B762B5F2E5F2E392B392B392B392B392B392B392B + 392B392B392B2F2B392B392B2F2B392B2F2B392B5F2E5F2E392B392B432B392B + 5F2E5F2E5F2E5F2E5F2E762B762B2F2B2F2B762B762B2D2E2D2E2D2E762B7520 + 7520792B6B202E20222C0A222E206B20362E4D2E362E362E2E2E372B562E362E + 642E4E2E7A2B232B232B202E2D207C207C207C204820482048204820472E2D20 + 472E2D20472E452E232E452E7B2B7B2B7B2B7B2B2D2B2D2B2D2B2D2B2D2B2D2B + 4520442B2D2B2D2B202E762E792E762E402B762E362B362B362B4420362B5020 + 2A2B612B21202A2B362B362B362B362B402B402B402B252E252E7720252E252E + 252E762E2A2B2A2B2A2B43205E203B20612B3C205720572E572E792E44202A2B + 43202A2B2A2B43207B2E2A2B442044205B2044205B206E2E452E5F2E762B5F2E + 5F2E312E392B392B612031205F2E392B312E312E2D2E202B312E762B202B2D2E + 2D2E2D2E2F2B2F2B6820472E622E47202F2B392B392B392B392B392B3120392B + 762B392B762B762B762B762B392B762B762B392B392B392B762B762B2D2E392B + 762B2F2B2F2B392B2F2B392B392B2F2B202B7A2E2F2B392B392B392B392B392B + 392B5F2E392B392B392B5E2B5F2E392B762B5E2B392B61205F2E762B5F2E392B + 5F2E762B5F2E5F2E2F2B5F2E5F2E5F2E7520762B2D2E5F2E6B202E20222C0A22 + 2E206B204D2E4D2E372B4D2E362E362E372B362E4D2E4420232B602025204D20 + 4B2E642B642B642B482048204B2E4B2E2D202D202D202D202D20752E452E5520 + 552055207B2B7B2B7B2B7B2B2D2B2D2B2D2B2D2B2D2B442B442B55205B20612B + 792E792E362B762E362B2A2B612B2A2B432043202A2B2A2B762E362B762E462B + 402B5B205B20252E712077207720772077202D207720772077207120252E762E + 692B362B402B762E28205E2057203E2B4420402B362B3D2E3D2E362B612B3D2E + 262B402B402B402B402B59202B2B622E312E5F2E792B5F2E312E312E392B312E + 312E312E6120312E5F2E2D2E312E2D2E762B762B2D2E2D2E392B5F2E2F2B502E + 502E5E2B392B392B392B392B392B392B392B392B392B202B312E202B762B762B + 392B762B2F2B762B762B202B762B762B762B75202D2E2F2B2F2B762B392B7A2E + 202B392B392B392B392B392B392B392B392B5F2E392B392B5F2E5F2E392B5F2E + 5F2E5F2E392B5F2E392B5F2E5F2E762B5F2E762B5F2E762B5F2E762B2F2B2D2E + 2D2E5F2E75205F2E2F2B312E6B202E20222C0A222E206B207D2B4D2E442E4D2E + 362E562E2E2E362E562E2D206D206E2025204D202A2E5320642B432E2C2B4820 + 48204B2E4B2E4B2E402E2D20472E472E452E452E452E752E752E552055205520 + 7B2B7B2B2D2B2D2B442B2D2B3A2E43206C2E2C202A2B612B2C20252E462B692B + 2A2B2A2B432043204320432043202A2B2820362B692B692B462B5B205B205B20 + 772077202D203A2E6F2E402E6F2E6F2E7720772077205B205B205B205B20692B + 3C206C2E362B402B5B20402B762E362B3B20442044204E2044204420402B422B + 6D205420792B5F2E312E5F2E5F2E5F2E5F2E5F2E5F2E5F2E762B792B312E312E + 312E312E762B5F2E762B5F2E5F2E5F2E61205E2B2F2B5E2B2F2B762B5F2E392B + 392B392B392B392B762B312E762B2D2E392B762B392B392B392B762B5F2E392B + 75206E2B2D2E6E2B47202F2B2F2B392B762B762B392B392B2F2B392B392B7A2E + 2F2B392B5F2E392B5F2E392B2F2B5F2E2F2B2F2B5F2E5F2E5F2E5F2E5F2E5F2E + 5F2E5F2E2F2B2F2B2F2B5F2E762B5F2E762B5F2E5F2E2F2B762B2F2B5F2E5F2E + 6B202E20222C0A222E206B204D2E4D2E372B4D2E372B442E562E362E562E2E2E + 7120682B692E6A2E71207C2053207C20642B48204B2E4B2E4B2E2D20402E402E + 402E2D20472E2D20472E2D202D20752E752E55205520232E7B2B2D2B2D2B5520 + 3C20572E572E792E762E2A2B2820762E462B692B362B692B2A2B2A2B2A2B4320 + 4320432028203C203C202C203C20432028202A2B412B772077202D2077207120 + 412B77202C2B5B205B20762E5B20362B2A2B242E6C2E57203E2B612B612B4320 + 612B43202C20612B44204420362B2A2B4420682B39202A2E792B792B792B5F2E + 5F2E2D2E2D2E2D2E2D2E2D2E2D2E2D2E2D2E6E2B752061207520792B5F2E5F2E + 762B392B5E2B61206120392B2F2B762B5E2B5F2E5F2E392B5F2E312E312E762B + 762B2D2E762B762B392B392B5E2B5F2E2F2B502E472068206820682047202F2B + 2D2E392B392B392B7A2E202B2F2B2F2B2F2B762B392B5F2E392B2F2B5F2E2F2B + 392B2F2B392B5F2E392B2F2B5F2E5F2E2F2B2F2B302E762B762B5F2E2F2B5F2E + 5F2E5F2E2F2B2D2E762B7520762B2D2E2F2B792B6B202E20222C0A222E206B20 + 642E362E4D2E372B642E2E2E562E442E562E562E562E562E2E2E652B7C205320 + 642B642B482048204B2E2D20402E402E402E2D204B2E4B2E482048202D202D20 + 2D20452E752E452E232E452E5520232E752E242E572E612E572E762E252E7120 + 5B20462B692B692B6F20282028202A2B652E2A2B43202A2B2A2B2A2B43202A2B + 2A2B4320432028202A2B692B762E702E2A2B2820242E3C203C202C205E203E2B + 6C206C2E6C203E2B6C2057203E2B2A2B2A2B44202A2B432043202A2B402B5B20 + 772077206D20682B6A2E502E7520752075207520752075207520792B7520792B + 792B75206E2B68204720792B5F2E5F2E5F2E5F2E5F2E392B392B432B6120392B + 2F2B2F2B302E502E5E2B6120262E6120312E792B762B2D2E762B762B762B392B + 5E2B6120502E6820472068205D2E682047202F2B2F2B5F2E392B392B392B2F2B + 2F2B2F2B2F2B2F2B2F2B5F2E392B2F2B2F2B2F2B2F2B2F2B2F2B2F2B762B2F2B + 762B2F2B762B2F2B2F2B2F2B2F2B2F2B5F2E5F2E762B762B5F2E5F2E2F2B5F2E + 75205F2E762B5F2E6B202E20222C0A222E206B20642E642E642E372B53202E2E + 562E6A20442E522E6820562E68202E2E642B5320432E482048204B2E2A2E2A2E + 2A2E702070202A2E4820432E2C2B48204820472E2D202D20472E2D20402E402E + 402E452E4B2E5E20572E612E6C205B205B20252E77205B2077203A2E6F2E412B + 2C2B282043207B2E652E2A2B44202C2B4420692B692B692B28202A2B28202A2B + 692B362B2A2B612B3C203C203E2B3E2B6C2E3E2B3E2B3C203C203E2B3E2B3E2B + 3C204320692B692B4420462B5B202C2B5B20412B5520202E392E6B2B4D206820 + 7520752075207520792B792B75207520792B2D2E752075207520472068206E2B + 752075207520792B5F2E392B5F2E6120392B432B392B5E2B4720652B5D2E652B + 68205E2B6E2B792B5F2E5F2E5F2E762B762B762B5E2B322E522E272B382B272B + 652B47204720762B5F2E2F2B762B392B392B2F2B2F2B472047202F2B2F2B2F2B + 2F2B2F2B2F2B2F2B2F2B392B5F2E762B2F2B5F2E2F2B392B2F2B2F2B2F2B762B + 5F2E762B2D2E5F2E5F2E762B2F2B392B2D2E5F2E2F2B5F2E5F2E5E2B6B202E20 + 222C0A222E206B20642E4D2E4D2E4D2E442E442E562E522E6A20472068206820 + 372B362E432E2A2E532E652B422E7C20642B642B7C20272B272B272B432E5320 + 432E48204820532E4B2E472E452E402E382B472E2A2E272B652B3B2B572E6C20 + 2C20462B462B77203A2E3A2E77205B207120252E5B205B20692B3C20652E6F20 + 692B692B2C2B692B692B6F20692B692B3C2E5B20462B6F20242E652E43203C20 + 3C203E2B3E2B3C203C20242E3C20652E28202C2B2C2B7120462B5B20412B692B + 692B44207B2045202D2B4F206B2B782B772E602E6E2B792B792B792B2D2E792B + 792B75207520792B6E2B6E2B75206E2B47204720502E502E5E2B5E2B5E2B6120 + 612061205E2B302E5E2B5E2B2F2B6820432E272B5D2E5D2E68204720302E2F2B + 5F2E762B392B2F2B302E502E5D2E382B54207020272B682047202F2B2F2B5F2E + 2F2B2F2B762B2F2B4720682047206820502E2F2B5F2E502E2F2B5F2E2F2B2F2B + 5E2B2F2B392B5F2E762B5F2E762B2F2B2F2B5F2E762B5F2E762B5F2E2F2B5F2E + 392B2F2B5F2E762B5F2E762B2F2B2F2B6B202E20222C0A222E206B202C2B362E + 642E4D2E772B562E6820562E562E47204720442E6A204A20372B362E772B362E + 372B772B5320432E2A2E2A2E2A2E622E622E432E432E652B652B772B772B772B + 772B772B772B372B4A206A206A206A20572E6C20242E462B7120772071207720 + 7120462B762E402B402B252E7720462B6F20652E6F206F206F20652E6F206F20 + 6F202C2B2C2B2C2B48202C2B692B692B2820652E28206F2028203C2E412B412B + 412B4B2E2D207720412B462B692B2820282043206F205B2059205920262B262B + 692E5F20592E782B5420312E752075207520792B312E7520792B752075207520 + 75206E2B382B2B2B2B2B552E2F2B5E2B5E2B262E5E2B322E502E502E5E2B5E2B + 5E2B5F2B532058204D204D2058206820502E6E2B5F2E5F2E392B5E2B302E502E + 652B452E5420452E5420382B652B47204720602E602E2F2B2F2B652B68205D2E + 47202F2B302E2F2B5E2B47204720302E302E2F2B2F2B2F2B5F2E2F2B2F2B5F2E + 762B2F2B2F2B762B2F2B392B762B5F2E2F2B5F2E5F2E2F2B2F2B2F2B2F2B762B + 5F2E5F2E6B202E20222C0A222E206B20482053202C2B642B642B2E2E442E562E + 6A206A206A206A206A206A204A204A20362E772B5320642B7C20272B2A2E652B + 652B6820682068206E2B262E6120612061206120262E262E6A206A20322E4920 + 5F2B322E402040202C20462B4B2E7120712071205B205B20402B402B402B402B + 262B402B462B642E6F20652E652E652E6F206F206F20692B3C2E6F206F206F20 + 6F206F206F206F202C2B412B2C2B702E412B71202C2B462B2C2B34202820242E + 242E28205B206F2E77205B204420462B362B5D20402B252E422B7B202B2B452E + 6E2B7520752075207520792B7520752075206E2B7520752058206D2B782B602E + 552E452E472E362E58205820372B472054205820452E522E6C2B602E6D2B782B + 6D2B452E272B5820552E502E682058205820652B5D2E602E2B2B552E402E552E + 6B2E552E4720782B782B472047205D2E6820292B302E502E5E2B322E2F2B2F2B + 4720472047204720302E5E2B2F2B5F2E5F2E2F2B2F2B2F2B302E392B2F2B5F2E + 5F2E5F2E762B5F2E2D2E2F2B5F2E2F2B2F2B5F2E392B5F2E6B202E20222C0A22 + 2E206B204820482048204820642B642B562E442E442E442E68206A2049204A20 + 442E372B772B53205320772B562E522E522E322E262E612061206120312E6120 + 312E792B792B61206120262E502E502E502E6A206A203B2B572E572E3420252E + 71207120712071203C2E692B692B692B402B402B402B262B262B462B3C2E6F20 + 6F20652E652E3C207B2E242E652E652E6F206F206F202820692B2C2B2C2B7120 + 2C2B28202820632B242E3C20242E28205B20752E6F2E28205B205B205B20402B + 402B402B692B44205B20402B402B262B6D204D2054206E2B792B792B75207520 + 6E2B6E2B792B792B75206E2B602E6D2B5420652B772E772E4D204D20772E772E + 2B2B58206D2B772E772E5420432E6B2E772E6B2E6D2B5420782B782B6D2B5820 + 4D20672E772E4D20602E6D2B672E782B6A2E772E782B6D2B5820782B782B2F2B + 392B4720472047202F2B41202F2B4120302E302E302E302E302E302E302E2F2B + 2F2B2F2B762B2F2B5F2E2F2B2F2B5F2E5F2E762B762B392B5F2E5F2E5F2E2D2E + 5F2E5F2E2F2B2F2B5F2E5E2B6B202E20222C0A222E20242B4820482048204820 + 2C2B642B642E562E442E562E362E372B372B4A20372B372B362E372B522E6A20 + 6A20322E262E61206120312E6120312E6120312E312E792B312E792B312E792B + 6120792B792B3B2B382E40206C206C2E2A2B762E7120462B692B692B692B2C2B + 2C2B7120692B242E5D203D2E4E20402B2C2B282028206F206F20642E6F202820 + 34206F20242E652E3B2B3C20242E632B242E632B28203420652E2820412B5520 + 7B2B2D2B7B2B71202820412B6F2E5B20402B2A2B44205B203A2E7720462B462B + 362B402B262B7D2E782B5820302E7520792B792B75205E2B5F2E752075202F2B + 58206D2B782B552E672E672E452E772E772E772E782B6B2E6D2B672E6D2B402E + 4120602E6D2B782B6D2B452E4D20602E6D2B602E4D20782B6B2E54206B2E6D2B + 602E4D20232E782B2B2B6D2B5820782B4D204C20352B5F2E47207D2B4720502E + 522E472047204720302E502E302E502E502E5E2B2D2E2D2E7520762B2F2B2F2B + 2F2B2F2B762B5F2E2F2B762B2D2E2F2B2F2B2F2B2F2B2D2E5F2E5F2E2F2B5F2E + 6B202E20222C0A222E20242B402E2D204B2E4B2E642B642B642B4D2E362E372B + 522E522E372B372B772B772B362E372B4A20442E6A206A205F2B502E322E792B + 792B792B792B6120792B792B312E6120312E762B312E492034206C2057205720 + 6C206C205E20362B462B34202820462B3C2E462B7120712048203C202A2B762E + 5D205B205B20692B6F2044206F20692B6F206F206F206F206F202C2B2C2B2C2B + 2C2B55205520202E442B442B39202D2B45206B2E58203A2E71202A2B462B6D20 + 412B5B203C2043205B2077205B2B5B205B2071202820762E3D2E59206E20772E + 58202D2E6E2B792B6E2B75205E2B75206E2B6E2B602E6D2B6B2E652B782B6B2E + 3A2B772E672E6B2E6A2E54206D2B4D202B2B4D2E702B552E6D2B2B2B2A2E3B2B + 5820782B6D2B582068204D20672E542058206D2B4820642E632B2B2B782B6D2B + 232E4D204D204C20722E61204720292B502E502E4A207D2B302E502E502E5E2B + 322E2F2B262E5E2B75202D2E6E2B2D2E75202F2B2F2B2F2B5F2E2F2B2F2B5F2E + 762B2F2B762B762B5F2E2F2B2D2E762B2F2B5F2E6B202E20222C0A222E20242B + 5D2B402E2D2048204820482048207C20642B53204D2E362E772B532053205320 + 652B362E522E522E522E562E6820522E5F2B5F2B5F2B262E262E792B792B6120 + 61206120792B792B792B34205E206C20572E242E3C205E20612B362B462B462B + 762E7120252E252E7720772071203C2E6F202A2B3D2E4E207720462B652E652E + 2820282044202D2039202D20202E442B2D2B45202D2B6E2E602E672B2B2B4F20 + 2B2B592E782B4D202B2B452E2C2B2A2B5520682B77205B20442077205B205B20 + 77207720712077207720692B462B402B5F20772E782B68205F2E75206E2B6E2B + 752075202F2B6E2B58206D2B5D2B6120672E6B2E2420672E4D206B2E2B2B232E + 6D2B602E772E48206C20232E6D2B232E24203420772E6B2E6D2B602E602E6B2E + 4D20782B602E672E7B2B782B232E6D2B6B2E6D2B232E4D204D20702B24204C20 + 322E47202F2B5E2B2F2B2F2B322E2F2B5E2B5E2B5E2B5E2B5E2B752075207520 + 2D2E75202D2E2F2B2F2B2F2B5E2B2F2B2F2B2F2B2F2B2F2B2F2B2F2B2F2B5F2E + 2F2B2F2B5F2E6E2B6B202E20222C0A222E20242B402E402E402E4B2E4B2E4B2E + 4B2E7C204820482048204820432E4820432E422E652B2E2E6820562E6820772B + 652B562E6A205F2B5F2B5F2B6A20322E262E262E262E61207520792B49202A2B + 3B2B6C2E3C203C20612B2C20242E252E462B252E7120252E252E252E252E7720 + 762E7720462B2820362B362B262B5B2028202A2B6F203920462B202E692E3A2E + 6E2E202E4F20692E4F202B2B2B2B4D202B2B4D202B2B6B2B4D206B2B782B4D20 + 602E7720442B772077205B20202E55205B205B20682B442B4520772077207720 + 462B402B7B20592E672E5D2E752075206E2B6E2B6E2B75206E2B6E2B58206D2B + 382B3B2B672E6B2E722E6B2E6D2B772E602E7C20772E672E672E442E702B552E + 6D2B752E2420632B672E672E6D2B602E6B2E6D2B672E2B2B4B2E6D2B782B4D20 + 452E772E672E6D2B54204D204D203A2B722E61206E2B302E302E2F2B2F2B2F2B + 2F2B5F2E5F2E5F2E2F2B5F2E5F2E792B792B792B792B7520792B2D2E5E2B5E2B + 322E5E2B5E2B5E2B5E2B5E2B5E2B5E2B6E2B5E2B302E6E2B2F2B5E2B6B202E20 + 222C0A222E20242B4B2E2A2E48202A2E2A2E482048207C204820482048204820 + 4820432E2E2E772B422E6820562E522E562E6820772B522E562E522E47205F2B + 47205F2B472047204720522E6A206A205020362B3C206C20362B5E20792E3C20 + 2120762E6F2E7120252E7720252E252E252E682B252E252E5B2028202A2B362B + 402B462B2A2B2A2B742E2A2B4320362B362B44204420692B5B205B20202E7720 + 692E3A2E7B202D2B6D202D2B6D20692E45206E2E452039206A2E6F2E7720262B + 692E5B20402B5B20412B772055202D2B4420552044204420262B4D206B2E302E + 6E2B75206E2B7520752075202F2B6E2B622E5420502E24202E2E432E702B632B + 5820232E632B3B2B4D2E232E34203B2B3B2B7C20552E702E722E3B2B452E232E + 70204D2E4920452E232E6A20702B702E70206A20492070207C20642B61206A20 + 442E24202420212E5E2B6E2B2F2B2F2B2F2B2F2B5F2E5E2B5E2B6E2B5E2B6E2B + 6E2B75205F2E5F2E5F2E5F2E75206E2B2F2B502E502E502E41205F2B502E502E + 322E322E5E2B5E2B6E2B6E2B6E2B6E2B6B202E20222C0A222E20242B272B7C20 + 4820642B7C20642B642B432E432E5320532053205320772B362E772B68206820 + 522E522E522E4720522E5F2B5F2B5F2B47205F2B4720522E522E682068206820 + 562E34202120252E792E5E2021205E20612B242E2120762E252E712071207120 + 7120252E252E6F2E252E6F2E402B702E2A2B4420402B5B2044204320742E2A2B + 3C2B4420692B762E362B362B692B462B402B5B205B207B20772039202B206D20 + 682B3220692E692E3920682B3A2E77207120422B3920402B402B772055203A2E + 77203920402B5920412B462B7B204D20682075206E2B75206E2B5F2E75207520 + 752047204720472061202420702B6A203B2B492070204820632B242E632B4D2E + 3B2B3B2B4920642E70204D2E702B4C202E2E2E2E4920702B702B4C2049202420 + 242024203B2B702B702B702B4C202420722E722E242024202420212E5E2B5E2B + 5E2B2F2B2F2B2F2B2F2B302E322E5E2B5E2B262E262E6E2B75206E2B6E2B302E + 6E2B302E302E502E302E502E502E4720322E502E522E4720502E5E2B6E2B5F2E + 6E2B6E2B6B202E20222C0A222E20242B7C207C20422E642B7C207C207C207C20 + 5320772B362E362E4A20522E522E652B422E47204720502E6A206A20792B6120 + 6120262E262E6A2047204720472047206820682034203B2B5020252E612B2C20 + 5E205E20362B2120762E402B252E252E252E252E252E252E252E252E682B252E + 252E692B2A2B44205B20402B2A2B742E742E2920272E29203D2E3D2E50205020 + 5020612B502050205020612B2C202C202A2B612B402B402B2B2059207B207720 + 6F2E77205B205920772044203D2E402B5B20412B77205B204420202E77207720 + 4D2054207520792B312E75202D2E7520312E312E2D2E7520302E302E6A204C20 + 6A20562E6A2034204B2E70207C20702E48204B2E4820642E642B4B2E382B7C20 + 632B4920442E6A203B2B4C204C204C2049203B2B702B4C20442E6A204C204C20 + 49204C204C207320212E212E3A2B312E5E2B6E2B302E302E6E2B302E522E522E + 68206820652B6820522E5F2B4720302E302E302E502E302E302E502E47205F2B + 522E522E772B532E382B272B772B6E2B5E2B5E2B5E2B502E6B202E20222C0A22 + 2E206B20642B422E422E422E2E2E362E562E372B372B4A204A204A204A206A20 + 522E472068205F2B302E6E2B792B262E262E6120262E792B792B322E6A206A20 + 6E2B6A20472068206820702B6C2E2120792E242E2C20792E4E205D203D2E762E + 252E252E252E252E252E4E20402B402B782E252E462B762E362B762E4E204E20 + 50202A2B272E3B203B20472B3B20472B472B6C2E2C20472B57206C2E6C2E3A20 + 3A205720572E3A20572057202C202C203D2E682B3A2E7720762E262B7720362B + 742E4420362B402B4420442077207B205B2B2B2B4D2068205F2E7520312E792B + 312E75202D2E792B312E6E2B302E502E472047206820422E362E2E2E4B2E452E + 232E402E402E402E70204B2E4B2E702070202A2E432E562E772B6820502E6A20 + 262E262E522E522E6A20442E422E5D2E562E442E262E6120792B302E302E6E2B + 792B5E2B5E2B6E2B5E2B502E522E6820652B272B382B382B452E7020652B652B + 6820502E302E6E2B502E502E47205F2B6820522E532E432E70205420452E622E + 432E522E502E502E5E2B5E2B6B202E20222C0A222E20242B422E422E422E422E + 772B562E442E6A20442E492049206A206A20522E5F2B5F2B792B6A206E2B6120 + 61206120612061206120612061206120792B262E49206E2B6A206A2047203B2B + 572E6C206C2E2C206C2E2C204E205D2029204E204E204E20252E62205D205D20 + 252E252E422B262B402B462B762E2A2B4E2E4E2E662B4E2E3A20352066203A20 + 3A203A204E2E572E6620612E3E2E6620572E242B382E2C202A2B612B6C20242B + 6620572E2E2B782E422B262B402B262B3A2E44204320742E732E77204420462B + 5B2B77202D2B6B2B602E75202D2E61202D2E312E2D2E312E792B312E7520792B + 5D2E622E622E2A2E7C205F2B522E522E772B7C207020402E4B2E4B2E4B2E432E + 2A2E2A2E48202A2E2A2E772B6820522E502E5F2B6E2B47206820522E5F2B422E + 272B272B68206A206A205F2B5F2B522E4720502E302E75205F2E322E502E4720 + 272B272B2A2E70205420702070202A2E422E522E502E6E2B5E2B322E302E502E + 472068206820772B472E5D2B232E552E452E382B472E652B6820502E5E2B502E + 6B202E20222C0A222E206B20422E772B772B6820522E562E522E522E522E4A20 + 322E4A205F2B322E262E262E792B6120312E6120312E312E6120792B312E6120 + 612061203120612061206120792B792B6A206E2B702B572E5720572E572E5720 + 21205D203D2E252E252E762E762E5D204E2062206220782E422B782E252E262B + 262B6C2E4B202E2B712B712B472B4E2E4E2E472B742E2920742E792E2C206C20 + 66203A20572040206C20422B762E5D20402B2A2B2C2050202620792E3D2E4E20 + 422B262B262B77202A2B742E44203A2E5B20402B4420262B2F2E4D20622E312E + 792B312E7520792B2D2E792B2D2E792B792B792B4D20772E772E772E6B2E262E + 322E322E262E322E372B772B432E2A2E432E362E362E7C20642B5320422E522E + 4A20502E262E502E502E5F2B522E422E422E5D2E2A2E652B562E502E5F2B6820 + 472068204720502E502E5E2B5E2B5E2B522E432E532E382B452E382B7020432E + 432E2A2E432E422E522E522E522E522E5F2B522E47205320652B7C20452E552E + 2D2B6A2E452E272B652B68205F2B502E2F2B322E6B202E20222C0A222E20242B + 362E522E522E522E47205F2B5F2B5F2B322E502E322E5F2B502E262E61206120 + 312E31203120482E3120312E312E3120312E312E312E312E312E312E6120792B + 612061206120792B3B2B382E5720572E572E572E5720272E5D205D20252E5D20 + 362B5D204E20252E252E422B422B782E3D2B5D20272E662B5E2E272E632E512E + 272E3C2B792E632E29203D2B5D20272E792E792E6C2E262050205E205E20692E + 5D205D20782E762E29205D20272E2E2B26203D2B462E462E462E592044202A2B + 3D2E5B2B462E7720262B39202B2B582068206E2B5E2B6E2B75207520312E792B + 312E5F2E5F2E6120782B6D2B6D2B6D2B2B2B49206120502E522E5F2B522E372B + 652B70204B2E7C20442E772B432E53205320772B522E4A20522E5F2B5F2B6820 + 622E2A2E2A2E2A2E7C202E2E442E442E6820682047205F2B47204720502E502E + 502E4A20772B432E622E2A2E452E5D2B48207C204820482048205320652B652B + 272B432E652B772B432E652B2A2E452E6A2E58206A2E452E5D2E47204720302E + 4720302E302E6E2B6B202E20222C0A222E206B20372B4A206A206A205F2B502E + 262E262E6120262E6120502E6E2B61206120612061203120312E482E3A2B312E + 312E3120312E3120312E302E562E302E6E2B7520792B6120212E61204920702B + 572E6620242B35203A20662B2C2050205D206220252E4E205D2062206220782E + 622029202920632E3C2B712B2A20512E3D2B3D2B4E202920742E632E29207E2B + 2920612B472B2C206C2E792E292029202120782E292029205D205D2029202920 + 3C2B712B2E2B2A203D2B462E462E422B5920202E5920412B5920402E702E562E + 562E4720502E302E47204720302E6E2B792B752075206E2B7520262E782B6D2B + 6D2B6D2B6B2E61206120522E622E652B472E7020452E232E452E7020362E362E + 652B2A2E452E382B472E272B2A2E272B432E432E2A2E2D205D2B232E54202A2E + 422E522E522E772B5D2E432E622E272B772B5F2B432E272B622E402E402E452E + 232E5D2B5D2B5D2B402E382B4820432E472E7020452E552E552E5420382B382B + 54207B2B2D2B7B2B5D2B4820652B522E4720302E47202F2B302E6E2B6B202E20 + 222C0A222E206B20372B522E6A20322E262E6120262E6120322E322E322E502E + 6A20262E792B792B312E312E3120312E3120482E482E3120482E312E702E692E + 5F206F2E502E6E2B792B792B612061206120702B6C2057203A20402035203A20 + 3A203A203C2B292029205D2029205D202920272E3C2B3C2B3D2B3D2B2920512E + 512E3D2B6220622062203D2B3D2E2920292062204E202920362B4E2029205D20 + 252E252E782E762E782E4E20252E402B5D205D20272E712B2E2B2E2B3C2B4620 + 342E782E46207B207D2E6D2070206A20312E61205F2E5F2E792B75207520302E + 6E2B75206E2B75206E2B6E2B6E2B502E782B6D2B6D2B6D2B6B2E702B4C20302E + 652B5420782B772E6D2B6D2B6D2B672E6B2E2A2E432E4D20782B672E782B672E + 782B782B542070205820392E6D2B6D2B6D2B6D2B782B5820682068206B2E782B + 782B782B6B2E5820772E58204D20782B672E672E2B2B7B2B782B672E782B672E + 232E2A2E552E782B6D2B6D2B6D2B6D2B782B602E5420552E232E5D2B2A2E652B + 522E502E5F2B302E302E4720302E6E2B6B202E20222C0A222E206B20522E4A20 + 4A20322E502E262E502E502E502E5F2B5F2B68206E2B262E6120792B31206120 + 312031203120482E482E312E34202B2051203D203D20722B7B20562E792B7520 + 262E262E6E2B4920702B6C206C2E3A20572E4E2E4E2E682E2E2B7A2B632E632E + 512E512E5020632E512E3D2B622062205D203D2B3D2B622046207C2B7C2B2B20 + 7C2B622062206220782E422B422B342E422B682B342E342E342E422B342E682B + 682B252E252E4E203D2E292029207E2B782E7120442E492028205B20462B442E + 792B312E792B762B792B762B6120762B5F2E752075205F2E7520752075207520 + 6E2B6A20782B6D2B6D2B6D2B602E382E2420262E5D2E672E6D2B6D2B6D2B6D2B + 6D2B6D2B6D2B602E422E782B6D2B6D2B6D2B6D2B6D2B6D2B232E552E772E6D2B + 6D2B6D2B6D2B6D2B6D2B6D2B5420522E2B2B6D2B6D2B6D2B4D206D2B6D2B5820 + 782B6D2B6D2B6D2B4D207B2B772E6D2B6D2B6D2B552E452E672E6D2B6D2B6D2B + 6D2B6D2B6D2B6D2B602E5420452E7020432E68204720302E502E4720302E4720 + 47206E2B6B202E20222C0A222E206B20372B772B522E522E502E6A20262E502E + 4720682047204720322E792B61206120312E31203120312E482E312E562E3920 + 5F203D203D203D203D203D203D205F2071206120792B61206120612061203B2B + 5E20572E572E662035203520662B512E512E632E3D2B3D2B632E512E3D2B4620 + 622062203D2B3D2B622062206220782E7C2B422B782E782E6220782E422B342E + 342E6F2E342E682B6F2E3920682B6F2E6F2E682B682B252E4E20762E4E204E20 + 5D20462E4D20622E6820302E792B792B792B792B312E792B762B792B762B5F2E + 762B312E312E75207520752075207520792B792B75206820782B6D2B6D2B6D2B + 602E382E722E212E602E6D2B6D2B6D2B602E6B2E6D2B6D2B6D2B782B372B2B2B + 672E672E6D2B6D2B6D2B6D2B382B2B2B6D2B6D2B6D2B602E2B2B6D2B6D2B6D2B + 2B2B49206B2E6D2B6D2B6D2B6D2B6D2B6D2B552E4D206D2B6D2B6D2B2B2B4B2E + 772E6D2B6D2B6D2B2A2E54206D2B6D2B6D2B2B2B58206D2B6D2B6D2B2B2B7C20 + 432E772B6820302E502E502E4720302E2F2B47206E2B302E6B202E20222C0A22 + 2E206B20442E522E6A206A20322E6E2B322E5F2B47205F2B5F2B502E262E792B + 612031206120312031206120792B782E51203D203D203D203D203D203D203D20 + 3D203D203D203920342061204C20212E61205E2B4920702B5E20382E572E6C20 + 3E2B7E2B3D2B512E512E632E2A20632E512E512E512E3D2B3D2B6220782E6220 + 4E20782E422B422B782E4E20782E262B422B682B682B6F2E682B6F2E682B3920 + 6F2E252E682B6F2E54207120252E762E762E4E204E20282E782B622E5D2E6820 + 47207520792B312E312E792B762B792B2D2E312E312E2D2E312E6E2B6E2B7520 + 752075202D2E792B7520302E782B6D2B6D2B6D2B602E382E242061204D206D2B + 6D2B6D2B48202E2E6D2B6D2B6D2B782B4C2049205F2B422E772E6D2B6D2B772E + 642B4D206D2B6D2B6D2B3C2E54206D2B6D2B6D2B4D20702B602E6D2B6D2B6D2B + 6D2B6D2B6D2B5D2B4D206D2B6D2B6D2B602E3420772E6D2B6D2B6D2B702E5420 + 6D2B6D2B6D2B5D2B702E6D2B6D2B6D2B2B2B702B49204920302E6E2B6E2B502E + 47206E2B47206E2B47206E2B6B202E20222C0A222E206B20322E49206A20322E + 322E262E322E502E262E262E262E262E6E2B262E792B792B312E6120792B252E + 3B2E3D203D203D203D203D203D203D203D203D203D203D203D2036205F20462B + 612061206120262E6E2B5E2B322E262E6120612034205D2046203D2B512E7A2B + 2A20512E3D2B512E5D205D2062202B20782E4E206220262B422B422B422B262B + 262B252E252E252E682B682B6F2E6F2E6F2E6F2E6F2E6F2E682B6F2E6F2E7120 + 252E252E252E342E6720772E782B5D2E472047206E2B7520792B5F2E792B7520 + 312E2D2E312E2D2E2D2E312E75207520312E792B792B7520762B792B75202D2E + 782B6D2B6D2B6D2B602E722E722E212E782B6D2B6D2B6D2B4820702E6D2B6D2B + 6D2B6D2B702B242061206A2E6D2B6D2B6D2B4D20242E782B6D2B6D2B772E702E + 232E6D2B6D2B6D2B672E2420442B6D2B6D2B6D2B6D2B6D2B782B3C2E2B2B6D2B + 6D2B6D2B602E632B672E6D2B6D2B6D2B702E5D2B6D2B6D2B6D2B6B2E632B5820 + 602E58204B2E722E702B502E302E6E2B302E502E302E6E2B47206E2B47204720 + 6B202E20222C0A222E206B20492049204920322E322E792B262E262E61206120 + 262E612061206120312E312E792B702E3B2E3D203D203D203D203D203D203D20 + 3D203D203D203D203D203D203D203D203D2051206F2E49206120262E322E5E2B + 322E5F2B502E522E2E2E782E622062203D2B512E512E512E62203D2B62206220 + 6220422B6220782E262B422B422B422B262B422B262B782E262B682B6F2E682B + 6F2E252E6F2E6F2E6F2E6F2E6F2E6F2E682B252E252E252E682B2B2B6D2B6D2B + 772E5D2E472075207520792B5F2E792B5F2E7520792B2D2E792B312E2D2E2D2E + 75206E2B312E2D2E7520752075202D2E75207520782B6D2B6D2B6D2B602E382E + 722E612058202B2B6B2E602E642B602E6D2B6D2B6D2B6D2B702B722E4920782B + 6D2B6D2B6D2B402E3B2B6A2E2B2B6B2E602E71202B2B6D2B6D2B6D2B672E702B + 442B6D2B6D2B6D2B772E4820702B722E2B2B6D2B6D2B6D2B602E4920672E6D2B + 6D2B6D2B702E642B6D2B6D2B6D2B6D2B4D2048206A20702B722E382E722E5E2B + 302E4720302E302E472047206E2B6E2B6E2B6E2B6B202E20222C0A222E206B20 + 49206120262E4C20262E262E612061204920612061206120312E312E6120312E + 312E422E69203D203D203D203D203D203D203D203D203D203D203D203D203D20 + 3D203D203D20722B452B702E5E2B5E2B6E2B502E262E502E442E422E462B6220 + 4620622046203D2B512E512E46206220622062206220422B782E262B422B422B + 342E422B422B422B252E252E262B252E682B682B682B6F2E6F2E6F2E6F2E6F2E + 6F2E6F2E682B7020252E682B4F206D2B6D2B6D2B772E432E612075205F2E312E + 312E312E312E6120312E312E2D2E7520312E7520752075207520792B5F2E5F2E + 312E792B2D2E7520782B6D2B6D2B6D2B602E382E24204C20502E68202A2E602E + 672E6D2B6D2B6D2B6D2B6D2B702B24202A2E6D2B6D2B6D2B772E3B2B702B3B2B + 642B752E2B2B772E6D2B6D2B6D2B6D2B772E6C2058206D2B6D2B6D2B392E382E + 382E702B2B2B6D2B6D2B6D2B602E3B2B672E6D2B6D2B6D2B702E24202B2B6D2B + 6D2B6D2B6D2B6D2B2B2B562E242024207320312E47204720302E4720502E4720 + 4720302E47205F2B6B202E20222C0A222E206B20492061204920612049206A20 + 4920792B492049204920792B792B792B312E6120312E34207A20732B3D203D20 + 3D203D203D203D203D203D203D203D203D203D203D203D20722B372E632E242E + 262E61206120262E262E262E6A20522E7C20422B7C2B7C2B46203D2B5D203D2B + 4620462062206220782E422B6220262B342E422B262B422B422B342E682B342E + 6F2E422B682B682B6F2E6F2E3A2E6F2E6F2E6F2E54206F2E54206F2E682B6B2E + 25206D2B6D2B6D2B772E432E612075207520752075207520312E2D2E7520792B + 312E75202D2E2D2E752075202D2E75207520752075205F2E2D2E792B782B6D2B + 6D2B6D2B602E382E24204920432E4D20772E6D2B6D2B782B6D2B6D2B6D2B6D2B + 702B24206B2E6D2B6D2B6D2B602E722E2420642B392E772E6D2B6D2B672E6D2B + 6D2B6D2B772E722E442B6D2B6D2B6D2B4D20722E722E702B4D206D2B6D2B6D2B + 602E3B2B772E6D2B6D2B6D2B702E722E6A206B2E772E6D2B6D2B6D2B6D2B672E + 432E322E322E502E502E47206A205F2B5F2B522E6820522E6820522E6B202E20 + 222C0A222E206B20322E492049204920322E6A206A206A20502E6A206A206A20 + 6A20792B6A20302E6A2034205B2E27202C2E3D203D203D203D203D203D203D20 + 3D203D203D203D203D20312B4620272E272E632B262E49206120612061204920 + 262E2E2E462B342E7C2B7C2B7C2B62203D2B62207C2B62207C2B422B782E422B + 422B262B342E342E682B682B342E682B682B342E6F2E682B39203A2E3A2E3A2E + 3A2E3A2E6F2E6F2E3920682B552E39206E2E772E6D2B6D2B6D2B6D2B772E622E + 6120792B792B6E2B6E2B6E2B6E2B792B312E312E312E792B792B75202D2E792B + 792B792B2D2E792B792B7520792B2D2E782B6D2B6D2B6D2B602E722E702B262E + 6B2E6D2B6D2B6D2B2B2B4B2E6D2B6D2B6D2B6D2B702B2420672E6D2B6D2B6D2B + 702E382E722E2B2B6D2B6D2B6D2B6B2E6A2E6D2B6D2B6D2B772E722E6A2E6D2B + 6D2B6D2B4D20382E722E4C204D206D2B6D2B6D2B602E3B2B672E6D2B6D2B6D2B + 4D2E722E73206A207C202B2B6D2B6D2B6D2B6D2B2B2B6120502E502E502E302E + 4720522E652B652B362E652B5320362E6B202E20222C0A222E206B206A204A20 + 502E322E6A206A20442E6A20442E5F2B6A206A20502E6A206A2047203420702E + 5B2E27202720712E312B3D203D203D203D203D203D203D203D203D20712E632E + 272E2A20792E492061204C204920262E6120322E6A20522E422E342E7C2B7C2B + 622062203D2B62206220622062206220782E422B422B262B682B342E682B682B + 682B682B682B6F2E6F2E6F2E6F2E682B682B39203A2E5420682B3A2E39205820 + 6B2E4F20672E772E6D2B6D2B6D2B6D2B772E54206E2B792B792B792B302E6E2B + 792B502E6E2B792B792B792B792B6E2B6E2B752075206E2B6E2B6E2B75206E2B + 6E2B792B782B6D2B6D2B6D2B6B2E382E702B322E4D206D2B6D2B6D2B70202E2E + 6D2B6D2B6D2B6D2B702B2A2E6D2B6D2B6D2B4D20722E722E3B2B782B6D2B6D2B + 6D2B642B5D2B6D2B6D2B6D2B772E382E6A2E6D2B6D2B6D2B4D20382E722E4920 + 4D206D2B6D2B6D2B602E3B2B672E6D2B6D2B6D2B34204D2E2B2B4D202B2B7020 + 552E6D2B6D2B6D2B782B732061205F2B47205F2B522E4A20372B652B432E622E + 2A2E432E6B202E20222C0A222E206B206A20322E322E322E322E322E6A20442E + 522E442E442E442E442E442E5F2B6A205F2B702E5B2E2720272027202720312B + 3D203D203D203D203D203D20512037203C2B632E272E632E612B3420322E502E + 4920262E262E61206A205F2B702E342E7C2B7C2B622062205D2062205D206220 + 782E6220782E5D20782E422B422B422B5920682B682B342E342E682B342E422B + 682B6F2E6F2E6F2E6F2E6F2E39203920692E392E6020782B6E20672E6020772E + 772E6D2B6D2B602E5F2B5F2B47205F2B502E6820682068206E2B7520792B792B + 792B6E2B6E2B6E2B6E2B6A206E2B6E2B6E2B6A206E2B6E2B782B6D2B6D2B6D2B + 6B2E702B3B2B442E782B6D2B6D2B6D2B642B34206D2B6D2B6D2B6D2B702B2B2B + 6D2B6D2B6D2B5420382E722E4C20782B6D2B6D2B772E49204B2E6D2B6D2B6D2B + 672E382E58206D2B6D2B6D2B4D20382E722E61204D206D2B6D2B6D2B602E3B2B + 672E6D2B6D2B6D2B3420272B6D2B6D2B6D2B552E562E672E6D2B6D2B782B702B + 24205E2B502E47205F2B5F2B522E432E5D2E432E652B372B6B202E20222C0A22 + 2E206B204A206A20322E4A206A204A206A204A20442E522E522E442E5F2B442E + 442E442E442E3C2E5B2E27202720272027202C2E312B3D203D203D203D20712E + 632E3C2B3C2B632E632E632E612B4D2E772B522E502E322E6A20262E6A20562E + 642B7B202B20742074207C2B62207C2B7C2B7C2B7C2B62207C2B342E342E7C2B + 462E2B202B207B20342E342E342E422B342E682B342E342E342E2B2039203920 + 602E6E20592E60206D2B772E6020392E672E772E672E772E6D2B582047202E2E + 652B2A2E7C207C202E2E442E262E792B792B792B262E262E6A206E2B6E2B6E2B + 792B262E6E2B6E2B6E2B6A20782B6D2B6D2B6D2B6D2B6D2B6D2B5820782B6D2B + 6D2B6D2B542071206D2B6D2B6D2B6D2B3B2B6D2B6D2B6D2B6D2B442B232E232E + 7C20782B6D2B6D2B6D2B3C2E232E6D2B6D2B6D2B672E382E6A2E6D2B6D2B6D2B + 4D20382E722E262E4D206D2B6D2B6D2B6B2E562E772E6D2B6D2B6D2B34202E2E + 6D2B6D2B6D2B58202A2E772E6D2B6D2B4D20382E722E6120502E472047206820 + 68206820682068206820522E6B202E20222C0A222E206B20442E4A20522E4A20 + 442E6A20442E6A206A204A20442E562E442E442E6A20442E442E702E5B2E2720 + 27202720712E2C2E312B312B722B722B4620792E3C2B512E632E2A202A20272E + 5020642B772B4A206A206A20322E6A206A20442E2E2E2B207C2B7C2B74206220 + 512E62207C2B6220622062207C2B7C2B782E62207C2B46202B20342E682B262B + 62207C2B422B342E682B422B782E342E6D206B2E592E7B2074207D2E6020592E + 6D204C2E6E2025205F20392E392E382B652B48202A2E70202A2E2A2E7C20772B + 422E47206A20322E6E2B6E2B6A20262E6A20262E6A20792B262E302E47204720 + 782B6D2B6D2B6D2B6D2B6D2B6D2B552E2B2B6D2B6D2B6D2B672E672E6D2B6D2B + 6D2B6D2B49206D2B6D2B6D2B6D2B6D2B6D2B6D2B54204D206D2B6D2B6D2B672E + 772E6D2B6D2B6D2B672E382E6A2E6D2B6D2B772E4D20382E242061206B2E6D2B + 6D2B6D2B772E672E6D2B6D2B6D2B6D2B34202420782B6D2B6D2B772E672E6D2B + 6D2B6D2B6A2E382E722E4C20502E302E5F2B472047204720502E4720502E522E + 6B202E20222C0A222E206B20442E442E442E6A20562E522E442E442E4720522E + 522E522E522E562E522E522E522E702E5B2E2720272027202C2E2C2E312B312B + 312B3720712B272E632E512E512E512E632E2A20612B522E5F2B442E6A206A20 + 6A206A206A206A20702E342E7C2B62207C2B2920632E3D2B62203D2B62204620 + 62204620252E62207C2B62207C2B2B20252E782E782E62202B20342E682B782E + 252E7C2B2B20282E67207C2B74203B2E282E2B2062207420282E6E204C2E5120 + 4D20382B6820432E432E70202A2E382B452E7020652B4720502E502E5F2B4720 + 502E502E5F2B6A205F2B4720442E442E562E422E782B6D2B6D2B6D2B6D2B6D2B + 6D2B452E7C20772E6D2B6D2B6D2B602E6D2B6D2B6D2B6D2B3B2B6D2B6D2B6D2B + 6D2B6D2B6D2B6D2B622E552E6D2B6D2B6D2B772E6B2E6D2B6D2B6D2B672E382E + 6A2E6D2B6D2B6D2B4D20382E722E6120382B772E6D2B6D2B6D2B2B2B772E6D2B + 6D2B6D2B4D2E382E7020782B6D2B6D2B6D2B6D2B6D2B2B2B7320722E722E6120 + 502E302E5F2B522E5F2B522E502E522E5F2B522E6B202E20222C0A222E206B20 + 522E442E442E562E442E5F2B5F2B522E5F2B562E682047205F2B522E522E522E + 5F2B4D2E5B2E27202C2E2C2E2C2E2C2E2C2E2C2E312B3720272E632E272E512E + 512E632E512E50202A2B6A205F2B522E522E5F2B522E562E47205F2B562E342E + 7C2B622062203C2B712B3D2B62203D2B62207C2B7C2B62205D20622062204620 + 7C2B342E252E252E782E62207C2B422B6F2E252E422B342E2B205F207B202B20 + 742074203B2E62207C2B74203B2E5F204C2E51204F2070206820772B772B432E + 48202A2E272B422E68204720472068206820562E4720502E5F2B472068206820 + 652B5D2E5D2E272B5820602E542071207C207C207C207320382E442E58205820 + 642B702B48202A2E71207C2024207C2070202A2E7C207C207C207C207320722E + 2E2E58205820442E702B48202A2E48202E2E382E632B5420452E432E442E382E + 242061204720622E602E58207C20702B7C202A2E712048202420722E7320772B + 70206A2E58206A2E7C207320722E382E2420262E502E502E502E5F2B5F2B5F2B + 522E5F2B5F2B4A206B202E20222C0A222E206B20442E442E442E5F2B522E562E + 5F2B442E5F2B6A206A206A206A206A205F2B442E5F2B442E46202C2E2C2E2C2E + 2C2E2C2E2C2E2C2E2C2E3720632E632E632E7A2B512E512E7A2B512E2820442E + 522E5F2B6A206A20522E522E522E522E702E342E7C2B7C2B3D2B472B712B3D2B + 3D2B2920622062207C2B6220362B6220782E62204620342E252E252E782E782E + 62202B20342E6F2E422B342E7C2B5F206D207B2074203B2E5F20252E7C2B4C2E + 6E2E6D203B2E51205F20622E6820362E372B362E4A20372B372B522E6A204720 + 522E472068205D2E6820682068206820682068205D2E5D2E5D2E5D2E652B5F2B + 7320722E382E382E382E382E382E24203A2B722E382E382E382E722E722E382E + 382E722E73202420382E382E382E382E382E722E73204C20722E722E382E382E + 722E722E382E382E722E212E4C20722E382E382E722E6120302E502E262E2420 + 722E382E382E722E722E382E722E722E7320262E4C202420722E382E382E382E + 382E722E212E502E502E502E502E522E47205F2B5F2B5F2B4720442E6B202E20 + 222C0A222E206B20562E522E442E562E522E562E4720562E6A20442E442E6A20 + 322E6A206A205F2B6A205F2B34207C2B712E2C2E2C2E2C2E2C2E2C2E312B3720 + 2A20632E632E7A2B512E7A2B7E2B2120562E522E562E68206820562E68202E2E + 68204720702E422B2B2062205D202E2B3C2B62205D205020782E7C2B7420782E + 362B4E20422B342E7C2B782E5D20252E252E62206220342E39206F2E252E342E + 62205F2067206D206D203B2E282E422B2B203B2E5F207D2E3B2E36205F204B2E + 7C20772B5320362E4A204A204D2E6A205F2B522E47206820652B68205D2E6820 + 682068205D2E6820682047205F2B502E502E6E2B612073202420242024202420 + 24206120792B482E242024202420482E3A2B7320732073206120212E73202420 + 73207320732073206120262E4C202420242073204C203A2B7320732073206120 + 792B732073207320212E262E502E5F2B262E4C20732024207320212E3A2B7320 + 732073206120502E6E2B49207320242024202420732061205E2B502E47204720 + 47205F2B522E5F2B522E5F2B5F2B4A206B202E20222C0A222E206B20562E562E + 562E562E522E442E4720342047206A20522E6A206A206A20322E6A20322E6A20 + 6A203420782E712E2C2E2C2E2C2E2C2E2C2E2720632E632E632E7A2B512E7E2B + 2A2B442E5F2B6A20522E442E5F2B522E68206820562E6820702E252E74207C2B + 5D20472B3C2B46205020272E6220342E2B20422B5D204E20342E342E342E422B + 762E4E20262B5D2062202B20342E252E342E342E782E5F2067206D204C2E3B2E + 6E20692E2B204C2E4F205F205F206E207D2E4B2E7C2053205320362E442E4A20 + 4A206A206A20472047205D2E622E622E5D2E5D2E682047207520792B792B792B + 792B322E322E6E2B7520792B312E2D2E312E2D2E792B792B6E2B6E2B792B312E + 792B792B792B792B7520792B792B302E792B6E2B6E2B6E2B6E2B6E2B6A20502E + 502E5E2B61206E2B502E6E2B322E6A206A206A20302E262E262E262E502E502E + 302E502E47206E2B322E792B6A20302E502E6E2B6A20262E6E2B5F2B502E5F2B + 6E2B262E262E262E262E502E502E502E5F2B5F2B502E5F2B522E4720522E5F2B + 4720442E6B202E20222C0A222E206B20442E442E6A20442E562E682068206820 + 562E522E562E522E6A206A206A206A206A205F2B6A204A203420252E712E2C2E + 2C2E2C2E2C2E3720632E632E632E512E292034206A206A205F2B442E4A205F2B + 522E522E562E422E6820562E702E252E2B20422B62203C2B29207C2B5020272E + 4E20342E7B20422B4E20252E422B342E342E782E5D204E20402B5D206220342E + 3920252E252E342E7C2B6E2E67206D206D203B2E592E392E6D20692E282E5F20 + 4F2E6E204F20702048202A2E432E4D2E372B442E362E562E47206A2047205D2E + 622E5D2E302E6E2B312E792B7520302E792B6E2B6E2B262E792B792B792B7520 + 6E2B75206E2B6E2B6E2B6E2B302E6E2B792B6E2B6E2B6E2B6E2B302E302E302E + 302E502E4720502E502E502E6E2B502E302E302E502E502E502E502E5F2B5F2B + 502E502E502E502E5F2B502E5F2B302E502E502E5F2B302E502E502E4720502E + 502E502E47205F2B502E502E5F2B502E302E302E502E502E302E472047204720 + 472047204720472047205F2B5F2B562E5F2B68206820772B6B202E20222C0A22 + 2E206B20442E442E442E5F2B562E562E562E562E6820562E6820562E6A206A20 + 522E522E522E522E522E6A205F2B442E462B4C2E2C2E2C2E2C2E2720632E632E + 632E3D2E3C2E4D2E442E562E522E6820772B6820562E6820772B432E5D2E522E + 702E252E7C2B7C2B422B502029207C2B2120272E262B2B207B20422B252E262B + 422B2B20342E422B762E252E252E262B782E2B203920252E6F2E422B7C2B7D2E + 6720692E4C2E7D2E5F20392E6D203B2E4F204F205F204F2E392E232E70202A2E + 432E642E5320362E2E2E772B522E6A20502E502E682068206E2B6A20792B6E2B + 792B792B792B262E6E2B49207B2E7B2E7B2E7B2E742B7B2E742B7B2E742B7B2E + 742B7B2E7B2E742B7B2E3B203C207B2E3C207B2E242E7B2E242E7B2E652E7B2E + 242E652E652E652E652E652E652E652E652E632B632B652E632B632B632B632B + 632B632B632B4A204A20632B4120632B442E6A20442E6A204A206A20522E502E + 6A205F2B5F2B5F2B502E502E502E5F2B5F2B47205F2B502E502E5F2B47204720 + 522E522E522E522E652B422E6B202E20222C0A222E206B206A206A206A20262E + 6A206A206A206A206A20442E6A205F2B6A20442E6A205F2B442E4A20322E562E + 442E522E2E2E7C202B20312B2C2E3720632E2920762E7C20422E422E53202E2E + 642B642B7C20642B5320642B642B7C202E2E422E702E262B2B2062202B202920 + 29202B203D2E742E6220342E7B20342E402B262B342E342E2B20342E762E402B + 422B782E422B7B20682B6F2E6F2E342E2B203B2E67206D2067207D2E5F206E20 + 692E6E2E6E205F205F20282E4D20552E402E4B2E4820642B772B53207C207C20 + 422E562E342047206820422E5F2B792B792B792B6E2B792B262E6A20322E4120 + 23203E203E203E203E203E203E203E203E203E203E203E203E203E20282B282B + 3E20282B282B282B282B282B282B322B322B322B322B322B2B2E322B2B2E2B2E + 2B2E6F2B6F2B6F2B542E542E542E542E79207B2E79207B2E7B2E7B2E7B2E7B2E + 652E652E652E652E652E652E632B632B632B632B4A20442E522E522E522E4720 + 5F2B472047205F2B47204720522E502E522E522E522E6820652B652B432E272B + 242B2E20222C0A222E206B206A206A206A206A206A20342049206A206A203420 + 442E442E6A20442E442E6A206A20442E6A206A206A206A20442E442E3420262B + 712E37207E2B702E642B422E2E2E2E2E642B642B642B642B48207C204820432E + 48207C20642B422E2E2E422B2B20342E2B205D205D202B205D205020782E342E + 2B20682B252E6F2E59202B202B20422B402B252E682B422B422B2B2039206F2E + 6F2E342E7B207D2E67206D207D2E6E2E5F204D207D2E5F20592E4F20282E282E + 4D20232E452E2D202D204B2E48207C207C20272B7020422E2E2E422E7C205D2E + 562E302E6E2B262E322E262E502E6A206A206F20322B3E206D2E6D2E282B3E20 + 3E203E203E203E203E203E206D2E282B3E203E20282B282B282B282B282B322B + 322B282B322B322B322B322B2B2E322B2B2E2B2E2B2E6F2B2B2E6F2B6F2B542E + 542E742B7920792079207B2E79207B2E43207B2E7B2E652E7B2E652E632B652E + 6F20632B4A20632B4A2034204A204A20522E47204720522E522E522E522E522E + 522E522E422E5D2E2A2E272B272B272B5D2E7C206B202E20222C0A222E206B20 + 34206E2B3420262E4920492034206A206A206A20442E442E362E772B772B442E + 442E442E442E442E442E6A206A204A20442E442E7120422B3C2E562E362E2E2E + 422E422E642B642B5320642B7C2048207C20482048207C202E2E562E702E342E + 2B20422B2B205D204E2074204E202920422B2B207B20342E252E422B682B2B20 + 342E342E252E252E422B422B342E6D2039206F2E682B39207B206E2E692E7D2E + 67206E2E6720592E67205F20282E592E5F20282E4D20552E752E402E402E2D20 + 4B2E4B2E2A2E2A2E70207120272B70202A2E422E562E5F2B5F2B5F2B502E6A20 + 6A20522E6C2B2C2B322B4A2E6B2B6B2B2F2E322B322B282B3E20322B322B4220 + 2F2E582E322B6D2E282B282B6D2E6D2E322B782078202B2E322B322B322B2B2E + 322B2B2E2B2E2B2E2B2E2B2E6F2B6F2B6F2B542E542E542E542E542E7B2E7920 + 7B2E7B2E7B2E7B2E652E652E652E652E652E652E632B2820632B4A20632B4A20 + 442E442E5F2B47205F2B5F2B47206820682068206820652B5D2E432E5D2E422E + 652B422E422E7C206B202E20222C0A222E206B20262E6A206A206A206A204920 + 49206A2034206A20442E6A20562E2E2E2E2E442E442E562E562E442E442E442E + 442E562E562E442E562E2E2E562E562E362E772B422E422E422E642B2E2E642B + 642B7C20642B642B642B2E2E442E442E4D2E342E342E7C2B342E5D204E202B20 + 422B4E20422B2B207B202B20252E6F2E682B39202B20682B252E77206F2E342E + 2B2067206D205D2B3A2E39207B20282E6720692E6E2E5F206E2E282E67205F20 + 5F20592E5F205A2E782B232E452E5D2B452E752E5D2B2D2070205D2B70205D2B + 5D2B5D2B7C20422E652B772B4720522E522E372B372B362E4820412B322B4A2E + 772E232B6B2B64206B2B642078206B2B672B7C2E6B2B352E672B6B2B2F2E582E + 6B2B392E6420672B6B2B582E322B322B322B322B2B2E322B52202B2E2B2E6F2B + 2B2E6F2B6F2B542E542E742B79207920742B79207B2E7B2E7B2E7B2E652E7B2E + 652E652E652E652E632B632B632B4A206F204A20442E6A20522E47204720522E + 522E522E6820652B652B652B652B772B6820652B652B652B652B432E6B202E20 + 222C0A222E206B206A206A206A206A2049206A206A20442E442E442E522E2E2E + 362E642B422E642B642B362E362E2E2E562E562E562E562E562E562E562E442E + 522E562E2E2E2E2E772B2E2E642B422E2E2E2E2E422E2E2E2E2E642B642E4D2E + 562E442E3420342E342E342E342E5D2062202B20342E252E422B342E6D20342E + 252E6F2E682B2B202B20682B252E6F2E682B342E342E6D20602E3A2E39207B20 + 6D206E2E4F206E2E6E2E6E2E5F20592E5F205F204F20592E282E592E392E232E + 5D2B752E752E232E452E402E402E5420752E232E5D2B702048202A2E4820772B + 362E362E372B372B642E472E402E55206D2E4A2E772E672B672B6420772E7820 + 6B2B672B672E2F2E6B2B232B772E672B6D2B7820772E782032202F2E672B2B2E + 322B322B322B322B2B2E2B2E2B2E2B2E2B2E2B2E6F2B6F2B6F2B542E542E542E + 542E792079207B2E56207B2E7B2E652E7B2E652E652E652E652E632B652E6F20 + 4A20632B34204A204A20442E5F2B522E5F2B5F2B682068206820682068206820 + 6820522E772B652B772B652B422E7C20242B2E20222C0A222E206B206A203420 + 302E34206A2049203420562E772B2E2E772B422E642B642B7C20642B7C207C20 + 642B642B642B2E2E642B642B642B2E2E2E2E562E562E522E442E442E442E442E + 442E422E2E2E562E562E562E562E562E4D2E4D2E362E562E702E422B342E7C2B + 422B5D2062202B20342E252E342E342E7420342E252E422B682B7B207B203920 + 252E6F2E682B342E2B206D2067203920392039206D205F204F2067205F206E2E + 5F204D206E2E282E6E20392E4F206E206E206A2E5D2B752E752E752E232E402E + 3A2E5D2B232E54202D202D202D204B2E4B2E4820432E432E642B48204B2E5D2B + 232E5B2B322B4A2E772E64204A2E78206B2B322B6B2B2F2E672E64206B2B3220 + 772E2F2E592E7820772E582E44202F2E672B322B322B322B322B322B2B2E322B + 2B2E2B2E2B2E6F2B6F2B2B2E742B6F2B542E7920742B79207B2E7B2E7B2E7B2E + 7920652E7B2E652E7B2E652E652E652E4120652E34204120632B442E442E522E + 5F2B68206820522E6820422E68206820422E6820772B522E522E522E522E6820 + 522E772B6B202E20222C0A222E206B20562E562E4720522E442E442E522E562E + 2E2E422E422E2E2E7C20482048202A2E4B2E71202A2E48202C2B642B642B642B + 642B642B422E7C20652B2E2E362E772B562E562E772B2E2E562E562E562E562E + 362E642E642B642B642B642B702E422B7420342E2B204E20782E7B20782E422B + 422B342E7B202B20252E6F2E682B7B202B207B206F2E6F2E682B682B2B206D20 + 67203A2E552039206D204F204F206B2E6E2E5F205F206E206720282E282E392E + 282E592E6E206B2E5D2B5D2B2D203A2E752E5D2B402E5D2B752E5520232E752E + 2D20402E4B2E4B2E4B2E2D204B2E402E402E752E752E2D20322B4A2E672E582E + 3E2078206B2B282B6B2B672B6B2B232B772E7820672E32206B2B7820772E6420 + 672B2F2E672B2B2E322B322B322B322B2B2E322B2B2E2B2E2B2E2B2E6F2B6F2B + 542E542E542E542E542E7920792079207B2E7B2E7B2E7B2E652E652E652E652E + 652E6F20652E632B632B34204A20442E6A20442E47206820522E682068206820 + 6820522E68206820682068206820522E522E522E772B772B6B202E20222C0A22 + 2E206B20562E562E562E562E562E4D2E4D2E362E362E642E642B642B642B7C20 + 4B2E4B2E4B2E2D204B2E2A2E642B642B3C2E2E2E642B3C2E362E2E2E7C20432E + 432E2A2E2A2E2A2E70202A2E642B2E2E2E2E422E652B7C202C2B48204820642B + 7120252E7B202B202B20252E7C2B2B20342E422B59202B207B20342E252E682B + 342E39202B20342E6F2E7720682B39202B206D20692E3A2E682B39207B204F20 + 4F206E2E5F205F20592E392E7D2E282E282E392E5F205A2E5F20602E2D202D20 + 2D202D205D2B2D202D202D205520552055205520752E752E5D2B402E5D2B452E + 232E232E232E55205D2B5B2B322B422064204A2E3E207C2E64203E207C2E672B + 6420352E672E352E7820672B78206D2E2F2E672B582E352E2F2E352E322B322B + 322B322B2B2E2B2E2B2E52202B2E6F2B2B2E6F2B6F2B542E542E742B7920542E + 7B2E79207B2E7B2E7B2E7B2E7B2E652E652E652E652E632B632B6F20632B632B + 4A20442E442E442E5F2B4720522E522E522E682068206820422E422E652B772B + 652B6820772B682068207C206B202E20222C0A222E206B202E2E562E2E2E562E + 362E4D2E362E4D2E642B4D2E642E642B2E2E642B642B48204B2E4B2E4B2E2D20 + 7120482071202C2B3C2E642B562E6820772B7C202A2E48204B2E402E5D2B7020 + 2A2E48202A2E7C204B2E48204B2E4B2E4B2E2D207120262B2B20342E2B204E20 + 422B2B20342E782E342E342E7B207B20252E6F2E39202B207B2039206F2E682B + 682B59207B206D2067203A2E6F2E592032204F204F206E2E6E2E5F20282E4D20 + 5F205F20282E392E4F20592E6E20442B2D202D20412B412B48202D202D202D20 + 2D20752E752E5D2B55205520752E752E752E7B2B7B2B232E232E752E452E5B2B + 6D2E3E203E203E203E203E203E203E203E203E203E2042207C2E282B3E20282B + 3E20282B282B322B282B322B322B322B322B322B322B322B322B322B2B2E2B2E + 2B2E6F2B2B2E6F2B6F2B542E542E542E742B79207920792056207B2E7B2E7B2E + 652E7B2E652E652E652E652E6F204120632B3420632B4A20442E442E5F2B522E + 522E522E68206820422E772B682068206820652B522E372B652B372B772B422E + 6B202E20222C0A222E206B202E2E562E562E562E642E642E642E4D2E642B4D2E + 642E642E642E4D2E642E642B2C2B4B2E402E402E402E5D2B5D2B402E48203C2E + 562E562E522E362E772B53204820402E752E5D2B5D2B2D20402E2D2070202D20 + 2D20412B4B2E2D202D20422B2B202B20342E4E20342E7B20342E252E342E7B20 + 7B202B20252E682B682B7B207B207B2077206F2E682B682B7B206D2067206F2E + 6F2E682B6D204F204F206E2E6E2E5F20592E6E206E2E5F20282E60205F206E20 + 672E542048204B2E4820412B4B2E2D20402E2D20412B2D20412B412B2D202D20 + 5520752E752E752E7B2B5520232E232E2D2B7820322B3E203E203E203E203E20 + 3E203E203E203E203E203E203E203E203E20282B3E20282B282B282B282B282B + 282B322B322B322B322B2B2E2B2E2B2E2B2E2B2E2B2E6F2B6F2B6F2B6F2B542E + 542E7920542E79207B2E7B2E7B2E7B2E652E7B2E652E652E7B2E4120652E652E + 632B632B632B7D2B632B4A206A20442E522E68206820442E562E522E522E6820 + 562E372B522E652B6820772B6820372B772B422E6B202E20222C0A222E20242B + 562E362E2E2E362E362E642E642E4D2E642E642E642E642B642E4D2E4D2E362E + 642B48204B2E752E752E7B2B7B2B232E752E48204D2E442E6A20442E4D2E642E + 532048204B2E5D2B3A2E5D2B752E3A2E2D20752E48202D202D2048202D206F2E + 7B202B20342E782E342E7B202B20422B342E342E7B202B20252E682B682B2B20 + 7B2039203A2E6F2E682B59202B206D20602E6F2E682B39207B205F202B2B6720 + 6E2E5F20592E392E6E2E5F20282E6E205F206E20392E5D2B7C202C2B48204820 + 48204B2E2D202D202D202D202D202D202D202D203A2E3A2E752E232E232E5520 + 7B2B7B2B7B2B55204A2E42206D2E42206D2E42206D2E6D2E6D2E6D2E6D2E6D2E + 6D2E6D2E6D2E2B2E6D2E2B2E2B2E6D2E6F2B542E542E6F2B542E542E542E6F2B + 742B542E742B742B742B742B7B2E742B7B2E7B2E7B2E7B2E7B2E7B2E7B2E652E + 652E652E652E652E652E652E6F20652E4120632B41206F20442E442E442E442E + 442E522E4720522E522E6820522E522E562E372B522E522E772B522E772B652B + 652B652B652B422E6B202E20222C0A222E206B20562E442E362E442E442E442E + 4D2E442E4D2E4D2E642E642B642E642E642B642B642E2C2B4820402E5D2B232E + 6A2E552E232E2D20642B4D2E4D2E442E442E4D2E362E642B48204B2E402E2D20 + 752E392055207B2B752E2D203A2E412B2D206F2E7B202B202B20422B2B202B20 + 342E422B342E2B202B203920252E682B682B59207B20342E6F2E3A2E682B5920 + 7B20202E67206F2E6F2E682B2B204F204F2067206E2E5F20592E392E5F20282E + 282E6E206E2E5A2E4D2039207C20642B48202C2B48204820482048202D20412B + 2D202D202D203A2E2D205520752E552039207B2B7B2B7B2B7B2B7B2B55205520 + 55205520552055207B2B78207B2B7B2B7B2B5520752E412B532E48206C2B4820 + 472E2D202D202D20472E48206C2B5320362E7D2B4A204A207D2B4A20502E4A20 + 502E4A204A20502E502E502E4720522E4A204A207D2B372B7D2B47207D2B502E + 4720522E522E522E522E522E522E772B682068206820522E68206820522E442E + 522E562E522E372B372B522E6820522E68206820652B652B652B7C206B202E20 + 222C0A222E206B20442E562E442E372B4D2E4D2E4D2E4D2E4D2E4D2E4D2E5320 + 642E642E642E642E642B7C20482048204B2E3A2E752E7B2B232E752E4B2E642B + 4D2E442E442E562E2E2E2E2E7C20272B71204B2E2D205D2B552055207B2B7B2B + 5520752E3A2E682B342E2B202B20342E342E7B20342E252E342E2B202B202B20 + 6F2E682B682B342E2B2039206F2E3A2E682B59207B206D206B2E6F2E6F2E5520 + 7B204F205F2045205F206E2E592E392E5F206E2E592E60206E2E592E4F2E552E + 642B642B642B7C20642B2C2B4820532E412B412B2D20412B2D202D20752E3A2E + 55205520552055207B2B2D2B78202D2B2D2B2D2B5520552055207B2B7B2B7B2B + 2D2B2D2B55202D202D202D20412B48202D202D205D2B232E752E4B2E48204820 + 432E652B522E772B4720472047206820522E4720522E47205F2B4A20522E4720 + 4A205F2B5F2B522E5F2B5F2B5F2B5F2B502E522E522E47204720472047204720 + 68206820562E562E522E562E522E522E4720522E562E522E522E522E522E372B + 522E6820372B372B652B432E272B432E6B202E20222C0A222E206B204920442E + 442E4D2E4A206F207D2B642E4D2E4D2E7D2B642E642E642E5320642E642B642B + 642B482071202A2E4B2E2D205D2B3A2E5D2B4B2E642B562E442E562E522E562E + 2E2E2E2E7C2048204820412B2D20552055207B2B7B2B55205520682B422B342E + 7B20342E2B207B202B20262B342E7B202B207B20252E682B682B59202B203920 + 6F2E3A2E682B682B7B20202E45206F2E682B682B7B205F204F20692E6E2E5F20 + 592E392E5F205F206020672E5F206E205F206D20642B2E2E2E2E3C2E422E2E2E + 642B642B482048202D20412B2D202D203A2E3A2E5520552039207B2B202E2D2B + 2D2B2D2B2D2B2D2B2D2B2D2B7B2B7B2B7B2B55207B2B5520552055205520752E + 752E5D2B55205520452E5D2B2D204B2E48207C20432E5320522E772B772B6820 + 522E4720522E502E522E502E47205F2B4A2047205F2B47205F2B5F2B522E5F2B + 5F2B522E5F2B5F2B522E47205F2B472047205F2B472047204720682047206820 + 6820562E6820522E442E372B372B372B372B372B522E522E522E522E6820652B + 432E432E6B202E20222C0A222E206B204A20442E442E372B362E362E642E642E + 642E642E4D2E4D2E4D2E4D2E642E642E642E642E642E642B642B2C2B642B4820 + 48204B2E4B2E4B2E71207C207C202E2E2E2E562E6820562E2E2E642B2C2B2C2B + 2D202D202D20752E752E55203A2E422B422B342E7B202B20342E2B20342E252E + 342E342E7B207B20682B682B682B342E2B207B20682B3A2E682B39207B206D20 + 602E6F2E3A2E392039206E2E4F206E2E6E2E6E2E592E772E4F205A2E772E6020 + 6E2E36204F207B20642B642B642B642B642B7C207C202C2B6C2B2C2B48204B2E + 48204B2E2D203A2E3A2E5520552055207B2B2D2B2D2B2D2B2D2B2D2B2D2B2D2B + 7B2B2D2B55207B2B5520552055205520752E552055205520232E752E3A2E2D20 + 2D2048204820642B5320652B5320772B772B372B522E522E522E522E522E522E + 522E5F2B5F2B522E5F2B522E5F2B5F2B5F2B4720522E5F2B5F2B5F2B4720522E + 47205F2B5F2B47205F2B5F2B562E5F2B522E5F2B47206820522E562E372B372B + 522E522E522E522E522E522E522E6820522E772B652B2E2E6B202E20222C0A22 + 2E206B20442E442E442E442E562E362E642B642B642B5320642E642E4D2E4D2E + 642B642B642B642B642E2E2E2E2E2E2E642B3C2E7C20482048202C2B642B2C2B + 7C207C20702E422E422E2E2E7C20642B48204820412B412B2D20412B2D202D20 + 7720262B782E342E2B20342E2B202B20342E262B342E7B207B207B206F2E682B + 342E342E2B207B203A2E3A2E682B342E7B206D2067206F2E772059207B206E2E + 2B2B692E6E2E5F20592E25206720282E2520392E6E2E6E20282E3920642B642B + 642B2E2E642B772B422E53205320642B5320642B2C2B642B412B48202D203A2E + 3A2E552055207B2B2D2B2D2B2D2B2D2B2D2B2D2B2D2B7B2B7B2B55207B2B5520 + 55205520232E7B2B2D2B7B2B7B2B752E5D2B2D202D2048202A2E48204820432E + 432E5320652B772B772B372B372B522E522E522E522E4720522E522E5F2B5F2B + 522E5F2B522E6A205F2B522E522E522E4720522E522E522E5F2B562E4720522E + 4720522E522E5F2B442E4720522E6820522E372B372B522E372B522E6820772B + 522E772B522E522E6820422E6B202E20222C0A222E206B20442E442E442E442E + 442E4D2E442E362E4D2E642B642B5320642B642B362E3C2E2E2E642B2E2E642B + 642B642B4D2E642E642E3C2E642E642B3C2E642B3C2E642B7C20462B7C20462B + 642B48204820412B2D202D20412B412B412B2D20412B782E262B422B2B20262B + 342E2B20342E252E422B2B207B207B20252E6F2E422B682B2B207B203A2E682B + 682B59202B20202E452077203A2E682B7B20692E4F2067206E2E5F20592E6020 + 7D2E5F206E20592E5F205A2E4F203920642E4D2E642E2E2E362E362E362E562E + 772B642E642E642E642E642B4820412B2D202D202D2055207B2B5520202E2D2B + 2D2B2D2B2D2B7B2B7B2B552055205520752E5520232E232E7B2B7B2B55207B2B + 5520752E3A2E402E5D2B402E402E2D204B2E4B2E482048207C20652B642B422E + 53205320772B522E522E772B432E272B652B772B522E6A204A20522E522E6A20 + 522E442E442E562E562E522E562E522E442E442E442E442E5F2B442E442E442E + 522E562E772B6820772B372B522E562E522E562E772B682068206820772B2E2E + 242B2E20222C0A222E202E206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B20242B6B206B20242B6B206B206B206B206B206B206B206B206B20 + 6B206B206B20242B6B206B20242B6B206B206B206B206B20242B242B6B20242B + 242B242B6B20242B242B242B242B242B242B242B4020242B242B242B242B242B + 242B4020242B242B242B242B242B242B242B242B242B242B242B242B4020242B + 242B242B4020402040204020242B402040204020242B40204020402040204020 + 402040206B206B206B206B206B206B206B206B206B206B206B206B206B20242B + 6B206B20242B242B242B242B4020242B242B402066204020612E242B242B242B + 242B242B242B242B242B242B242B4020242B242B242B242B242B242B242B242B + 242B242B242B242B242B6B20242B6B206B206B206B206B206B206B206B206B20 + 6B20242B6B206B206B206B206B206B206B206B206B206B206B206B206B206B20 + 6B206B206B206B206B206B206B206B206B206B206B206B206B206B206B20242B + 6B206B206B206B206B206B206B206B20242B6B202E202E20222C0A222E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E202E202E202E202E202E202E202E202E202E202E20 + 2E202E202E202E202E202E20227D3B0A + } + end end diff --git a/examples/androidlcl/secondform.pas b/examples/androidlcl/secondform.pas index 48c12bcd9a..185872462f 100644 --- a/examples/androidlcl/secondform.pas +++ b/examples/androidlcl/secondform.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ComCtrls; + ComCtrls, ExtCtrls; type @@ -15,6 +15,7 @@ type TForm2 = class(TForm) Button1: TButton; Edit1: TEdit; + Image1: TImage; procedure Button1Click(Sender: TObject); private { private declarations } diff --git a/lcl/interfaces/customdrawn/customdrawnint.pas b/lcl/interfaces/customdrawn/customdrawnint.pas index 578c2e87f2..134446d666 100644 --- a/lcl/interfaces/customdrawn/customdrawnint.pas +++ b/lcl/interfaces/customdrawn/customdrawnint.pas @@ -134,6 +134,13 @@ type FWMDeleteWindow: TAtom; // Atom for "WM_DELETE_WINDOW" FWMHints: TAtom; // Atom for "_MOTIF_WM_HINTS" + // For composing character events + ComposeBuffer: string; + ComposeStatus: TStatus; + InputMethod: xlib.PXIM; + InputContext: PXIC; + LastKeySym: TKeySym; // Used for KeyRelease event + function FindWindowByXID(XWindowID: X.TWindow; out AWindowInfo: TX11WindowInfo): TWinControl; {$endif} {$ifdef CD_Android} @@ -146,13 +153,14 @@ type AccumulatedStr: string; // The currently focused control FocusedControl: TWinControl; + FocusedIntfControl: TWinControl; // Default Fonts DefaultFont: TFPCustomFont; DefaultFontAndroidSize: Integer; // For unusual implementations of DebugLn/DebugOut procedure AccumulatingDebugOut(AStr: string); // - procedure CDSetFocusToControl(ALCLControl: TWinControl); + procedure CDSetFocusToControl(ALCLControl, AIntfControl: TWinControl); // protected {function CreateThemeServices: TThemeServices; override;} @@ -161,6 +169,7 @@ type // procedure BackendCreate; procedure BackendDestroy; + procedure BackendInit; public // ScreenDC and Image for doing Canvas operations outside the Paint event // and also for text drawing operations diff --git a/lcl/interfaces/customdrawn/customdrawnobject.inc b/lcl/interfaces/customdrawn/customdrawnobject.inc index 9dee98b451..1578fe9e73 100644 --- a/lcl/interfaces/customdrawn/customdrawnobject.inc +++ b/lcl/interfaces/customdrawn/customdrawnobject.inc @@ -20,7 +20,7 @@ begin AccumulatedStr := AccumulatedStr + AStr; end; -procedure TCDWidgetSet.CDSetFocusToControl(ALCLControl: TWinControl); +procedure TCDWidgetSet.CDSetFocusToControl(ALCLControl, AIntfControl: TWinControl); begin if (CDWidgetset.FocusedControl <> ALCLControl) then begin @@ -29,6 +29,12 @@ begin LCLSendKillFocusMsg(CDWidgetset.FocusedControl); CDWidgetset.FocusedControl := ALCLControl; LCLSendSetFocusMsg(ALCLControl); + + // The same for intf controls + if CDWidgetset.FocusedIntfControl <> nil then + LCLSendKillFocusMsg(CDWidgetset.FocusedIntfControl); + CDWidgetset.FocusedIntfControl := AIntfControl; + if AIntfControl <> nil then LCLSendSetFocusMsg(AIntfControl); end; end; diff --git a/lcl/interfaces/customdrawn/customdrawnobject_android.inc b/lcl/interfaces/customdrawn/customdrawnobject_android.inc index 3af946df36..f8121b74d2 100644 --- a/lcl/interfaces/customdrawn/customdrawnobject_android.inc +++ b/lcl/interfaces/customdrawn/customdrawnobject_android.inc @@ -42,25 +42,17 @@ begin eventResult := 0; lCurForm := GetCurrentForm(); - lTarget := FindControlWhichReceivedEvent(lCurForm.LCLForm, lCurForm.Children, Round(X), Round(Y)); - lEventPos := FormPosToControlPos(lTarget, Round(X), Round(Y)); case action of ACTION_DOWN: begin - lCurForm.LastMouseDownControl := lTarget; - LCLSendMouseDownMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []); + CallbackMouseDown(lCurForm, Round(X), Round(Y), mbLeft, []); end; ACTION_UP: begin - if lCurForm.LastMouseDownControl <> nil then lTarget := lCurForm.LastMouseDownControl; - LCLSendMouseUpMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []); - LCLSendClickedMsg(lTarget); - - // If the target is focusable, a mouse up will give it focus - CDWidgetset.CDSetFocusToControl(lTarget); + CallbackMouseUp(lCurForm, Round(X), Round(Y), mbLeft, []); end; - ACTION_MOVE: LCLSendMouseMoveMsg(lTarget, lEventPos.X, lEventPos.Y, []); + ACTION_MOVE: CallbackMouseMove(lCurForm, Round(X), Round(Y), []); end; // This sends messages like Invalidate requests @@ -156,36 +148,33 @@ begin eventResult := 0; lCurForm := GetCurrentForm(); - lTarget := lCurForm.GetFocusedControl(); lKey := CDWidgetset.AndroidKeyCodeToLCLKeyCode(AKeyCode); case AKind of - ACTION_DOWN: - begin - LCLSendKeyDownEvent(lTarget, lKey, 0, False, False); - end; + ACTION_DOWN: CallbackKeyDown(lCurForm, lKey); ACTION_UP: begin - LCLSendKeyUpEvent(lTarget, lKey, 0, False, False); + CallbackKeyUp(lCurForm, lKey); if AChar <> 0 then begin - LCLSendCharEvent(lTarget, lKey, 0, False, False, True); SetLength(AWideText, 1); AWideText[1] := WideChar(AChar); AUTF8Text := UTF16ToUTF8(AWideText); AUTF8Char := AUTF8Text; - LCLSendUTF8KeyPress(lTarget, AUTF8Char, False); + CallbackKeyChar(lCurForm, lKey, AUTF8Char); end; // Handle the Back hardware key if AKeyCode = AKEYCODE_BACK then begin // The back hardware key hides the current form and shows the one bellow it - lForm := GetCurrentForm(); - HideForm(lForm); - // If all forms got hidden, exit the application - lForm := GetCurrentForm(); - if lForm = nil then eventResult := eventResult or 2; + lForm := lCurForm; + //DebugLn(Format('CallbackKeyUp D lForm=%x', [PtrInt(lForm)])); + // If this is the main form, then go back to desktop + if (Application.MainForm <> nil) and (lForm = TCDForm(Application.MainForm.Handle)) then + eventResult := eventResult or 2 + // for other forms, hide them + else HideForm(lForm); end; end; //ACTION_MULTIPLE: @@ -405,9 +394,9 @@ begin AKEYCODE_NUM = 78; AKEYCODE_HEADSETHOOK = 79; AKEYCODE_FOCUS = 80; // *Camera* focus - AKEYCODE_PLUS = 81; - AKEYCODE_MENU = 82; - AKEYCODE_NOTIFICATION = 83; + AKEYCODE_PLUS = 81;} + AKEYCODE_MENU: Result := VK_MENU; +{ AKEYCODE_NOTIFICATION = 83; AKEYCODE_SEARCH = 84; AKEYCODE_MEDIA_PLAY_PAUSE = 85; AKEYCODE_MEDIA_STOP = 86; @@ -506,6 +495,11 @@ begin {$endif} end; +procedure TCDWidgetSet.BackendInit; +begin + +end; + {------------------------------------------------------------------------------ Method: TWinCEWidgetSet.AppInit Params: None diff --git a/lcl/interfaces/customdrawn/customdrawnobject_x11.inc b/lcl/interfaces/customdrawn/customdrawnobject_x11.inc index 3cac5dce4d..a454e65d3d 100644 --- a/lcl/interfaces/customdrawn/customdrawnobject_x11.inc +++ b/lcl/interfaces/customdrawn/customdrawnobject_x11.inc @@ -18,7 +18,12 @@ ***************************************************************************** } -function TCDWidgetSet.FindWindowByXID(XWindowID: X.TWindow; out AWindowInfo: TX11WindowInfo): TWinControl; + +// redefines: + +function XOpenIM(para1: PDisplay; para2: PXrmHashBucketRec; para3: Pchar; para4: Pchar): PXIM; cdecl; external; +function XCreateIC(para1: PXIM; para2: array of const): PXIC; cdecl; external;function TCDWidgetSet.FindWindowByXID(XWindowID: X.TWindow; out AWindowInfo: TX11WindowInfo): TWinControl; + var i: Integer; EndSubSearch: Boolean; { Necessary to quit the recursion } @@ -70,6 +75,15 @@ procedure TCDWidgetSet.BackendDestroy; begin end; +procedure TCDWidgetSet.BackendInit; +begin + InputMethod := XOpenIM(FDisplay, nil, nil, nil); + if InputMethod <> nil then + InputContext := XCreateIC(InputMethod, [XNInputStyle, XIMPreeditNothing or XIMStatusNothing, nil]); + + if InputContext = nil then DebugLn('[TCDWidgetSet.BackendInit] Failed to initialize the Keyboard handling!'); +end; + {------------------------------------------------------------------------------ Method: TWinCEWidgetSet.AppInit Params: None @@ -94,6 +108,8 @@ begin if not Assigned(FDisplay) then raise Exception.Create('[TCDWidgetSet.AppInit] XOpenDisplay failed'); + BackendInit(); + //if (not (woX11SkipWMHints in WindowOptions)) and (woWindow in WindowOptions) then //begin LeaderWindow := XCreateSimpleWindow(FDisplay, XDefaultRootWindow(FDisplay), 0, 0, 1, 1, 0, 0, 0); diff --git a/lcl/interfaces/customdrawn/customdrawnprivate.pas b/lcl/interfaces/customdrawn/customdrawnprivate.pas index 7a7d2be0c2..653255fd49 100644 --- a/lcl/interfaces/customdrawn/customdrawnprivate.pas +++ b/lcl/interfaces/customdrawn/customdrawnprivate.pas @@ -9,7 +9,7 @@ uses Types, Classes, SysUtils, // LCL Controls, Graphics, stdctrls, extctrls, comctrls, - customdrawnproc, customdrawncontrols; + customdrawnproc, customdrawncontrols, lcltype, lclproc; type { TCDIntfButton } @@ -17,8 +17,6 @@ type TCDIntfButton = class(TCDButton) public LCLControl: TButton; - constructor Create(AOwner: TComponent); override; - procedure HandleOnClick(Sender: TObject); end; // These are default message handlers which backends might use to simplify their code @@ -26,6 +24,10 @@ type procedure CallbackMouseUp(AWindowHandle: TCDForm; x, y: Integer; Button: TMouseButton; ShiftState: TShiftState = []); procedure CallbackMouseDown(AWindowHandle: TCDForm; x, y: Integer; Button: TMouseButton; ShiftState: TShiftState = []); procedure CallbackMouseMove(AWindowHandle: TCDForm; x, y: Integer; ShiftState: TShiftState = []); +procedure CallbackKeyDown(AWindowHandle: TCDForm; AKey: Word); +procedure CallbackKeyUp(AWindowHandle: TCDForm; AKey: Word); +procedure CallbackKeyChar(AWindowHandle: TCDForm; AKey: Word; AChar: TUTF8Char); +function IsIntfControl(AControl: TWinControl): Boolean; implementation @@ -43,21 +45,40 @@ begin lEventPos := FormPosToControlPos(lTarget, x, y); LCLSendMouseUpMsg(lTarget, lEventPos.x, lEventPos.y, Button, ShiftState); LCLSendClickedMsg(lTarget); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lTarget := lTarget.Parent; + LCLSendMouseUpMsg(lTarget, lEventPos.x, lEventPos.y, Button, ShiftState); + LCLSendClickedMsg(lTarget); + end; end; procedure CallbackMouseDown(AWindowHandle: TCDForm; x, y: Integer; Button: TMouseButton; ShiftState: TShiftState = []); var lTarget: TWinControl; + lIntfTarget: TWinControl = nil; lEventPos: TPoint; begin lTarget := FindControlWhichReceivedEvent(AWindowHandle.LCLForm, AWindowHandle.Children, x, y); AWindowHandle.LastMouseDownControl := lTarget; + AWindowHandle.FocusedControl := lTarget; lEventPos := FormPosToControlPos(lTarget, x, y); - // If the target is focusable, a mouse down will give it focus - CDWidgetset.CDSetFocusToControl(lTarget); - LCLSendMouseDownMsg(lTarget, lEventPos.x, lEventPos.y, Button, ShiftState); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lIntfTarget := lTarget; + lTarget := lTarget.Parent; + + LCLSendMouseDownMsg(lTarget, lEventPos.x, lEventPos.y, Button, ShiftState); + end; + + // If the target is focusable, a mouse down will give it focus + CDWidgetset.CDSetFocusToControl(lTarget, lIntfTarget); end; procedure CallbackMouseMove(AWindowHandle: TCDForm; x, y: Integer; ShiftState: TShiftState = []); @@ -72,20 +93,82 @@ begin lEventPos := FormPosToControlPos(lTarget, x, y); LCLSendMouseMoveMsg(lTarget, lEventPos.x, lEventPos.y, ShiftState); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lTarget := lTarget.Parent; + + LCLSendMouseMoveMsg(lTarget, lEventPos.x, lEventPos.y, ShiftState); + end; end; -{ TCDIntfButton } - -constructor TCDIntfButton.Create(AOwner: TComponent); +procedure CallbackKeyDown(AWindowHandle: TCDForm; AKey: Word); +var + lTarget: TWinControl; begin - inherited Create(AOwner); - OnClick := @HandleOnClick; + lTarget := AWindowHandle.GetFocusedControl(); + {$ifdef VerboseCDEvents} + DebugLn(Format('CallbackKeyDown FocusedControl=%s:%s AKey=%x', [lTarget.Name, lTarget.ClassName, AKey])); + {$endif} + + LCLSendKeyDownEvent(lTarget, AKey, 0, True, False); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lTarget := lTarget.Parent; + {$ifdef VerboseCDEvents} + DebugLn(Format('CallbackKeyDown IsIntfControl, sending msg to Parent=%s:%s', [lTarget.Name, lTarget.ClassName])); + {$endif} + LCLSendKeyDownEvent(lTarget, AKey, 0, True, False); + end; end; -procedure TCDIntfButton.HandleOnClick(Sender: TObject); +procedure CallbackKeyUp(AWindowHandle: TCDForm; AKey: Word); +var + lTarget: TWinControl; begin - if Assigned(LCLControl.OnClick) then - LCLControl.OnClick(LCLControl); + lTarget := AWindowHandle.GetFocusedControl(); + {$ifdef VerboseCDEvents} + DebugLn(Format('CallbackKeyUp FocusedControl=%s:%s', [lTarget.Name, lTarget.ClassName])); + {$endif} + + LCLSendKeyUpEvent(lTarget, AKey, 0, True, False); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lTarget := lTarget.Parent; + LCLSendKeyUpEvent(lTarget, AKey, 0, True, False); + end; +end; + +procedure CallbackKeyChar(AWindowHandle: TCDForm; AKey: Word; AChar: TUTF8Char); +var + lTarget: TWinControl; +begin + lTarget := AWindowHandle.GetFocusedControl(); + {$ifdef VerboseCDEvents} + DebugLn(Format('CallbackKeyChar FocusedControl=%s:%s', [lTarget.Name, lTarget.ClassName])); + {$endif} + + LCLSendCharEvent(lTarget, AKey, 0, True, False, True); + LCLSendUTF8KeyPress(lTarget, AChar, False); + + // If this is a interface control, send the message to the main LCL control too + if IsIntfControl(lTarget) then + begin + lTarget := lTarget.Parent; + LCLSendCharEvent(lTarget, AKey, 0, True, False, True); + LCLSendUTF8KeyPress(lTarget, AChar, False); + end; +end; + +function IsIntfControl(AControl: TWinControl): Boolean; +begin + Result := (AControl <> nil) and (AControl.Parent <> nil) and + ((AControl is TCDIntfButton) {or ...}); end; end. diff --git a/lcl/interfaces/customdrawn/customdrawnproc.pas b/lcl/interfaces/customdrawn/customdrawnproc.pas index a464d3839e..f9f477eee2 100644 --- a/lcl/interfaces/customdrawn/customdrawnproc.pas +++ b/lcl/interfaces/customdrawn/customdrawnproc.pas @@ -50,6 +50,7 @@ type NativeHandle: HWND; // LastMouseDownControl: TWinControl; // Stores the control which should receive the next MouseUp + FocusedControl: TWinControl; // The control focused in the form // Counter to keep track of when we requested Invalidate // Some systems like X11 and Win32 will keep sending unnecessary paint messages // so for them we just throw the previously painted image @@ -225,7 +226,7 @@ begin if lCurrentForm = ACDForm then begin lCurrentForm := FindTopMostVisibleForm(); - LCLIntf.InvalidateRect(lCurrentForm.NativeHandle, nil, True); + LCLIntf.InvalidateRect(HWND(lCurrentForm), nil, True); end; end; @@ -648,7 +649,7 @@ end; function TCDForm.GetFocusedControl: TWinControl; begin - if LastMouseDownControl <> nil then Result := LastMouseDownControl + if FocusedControl <> nil then Result := FocusedControl else Result := LCLForm; end; diff --git a/lcl/interfaces/customdrawn/customdrawnwinapi.inc b/lcl/interfaces/customdrawn/customdrawnwinapi.inc index 28c432a7fe..3fb0406ac5 100644 --- a/lcl/interfaces/customdrawn/customdrawnwinapi.inc +++ b/lcl/interfaces/customdrawn/customdrawnwinapi.inc @@ -2884,8 +2884,9 @@ end;*) ------------------------------------------------------------------------------} function TCDWidgetSet.GetFocus: HWND; begin - if FocusedControl = nil then Result := 0 - else Result := FocusedControl.Handle; + Result := 0; + if FocusedIntfControl <> nil then Result := FocusedIntfControl.Handle + else if FocusedControl <> nil then Result := FocusedControl.Handle; end; (*function TQtWidgetSet.GetKeyState(nVirtKey: Integer): Smallint; @@ -4632,7 +4633,7 @@ var lControl: TWinControl; begin {$ifdef VerboseCDDrawing} - WriteLn('[WinAPI InvalidateRect]'); + DebugLn('[WinAPI InvalidateRect]'); {$endif} if AHandle = 0 then exit(False); diff --git a/lcl/interfaces/customdrawn/customdrawnwsforms.pp b/lcl/interfaces/customdrawn/customdrawnwsforms.pp index 210dcd7dea..499487ea8f 100644 --- a/lcl/interfaces/customdrawn/customdrawnwsforms.pp +++ b/lcl/interfaces/customdrawn/customdrawnwsforms.pp @@ -44,7 +44,7 @@ uses customdrawncontrols, // Widgetset InterfaceBase, WSForms, WSProc, WSLCLClasses, LCLMessageGlue, - customdrawnwscontrols, customdrawnint, customdrawnproc; + customdrawnwscontrols, customdrawnint, customdrawnproc, customdrawnprivate; type { TCDWSScrollingWinControl } @@ -128,6 +128,9 @@ type var Event: TXConfigureEvent); class procedure EvClientMessage(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo; var Event: TXClientMessageEvent); + // Key routines + class function StartComposing(const Event: TXKeyEvent): TKeySym; + class function X11KeyToLCLKey(AX11Key: TKeySym): Word; {$endif} published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; diff --git a/lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc b/lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc index c78b49719b..bcbe1ca665 100644 --- a/lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc +++ b/lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc @@ -1,5 +1,9 @@ {$MainForm customdrawnwsforms.pp} +// redefines: +function XmbLookupString(p1: PXIC; ev: PXKeyPressedEvent; str: PChar; len: longword; ks: PKeySym; stat: PStatus): longint; cdecl; external; +function Xutf8LookupString(p1: PXIC; ev: PXKeyPressedEvent; str: PChar; len: longword; ks: PKeySym; stat: PStatus): longint; cdecl; external; + { TCDWSCustomForm } class procedure TCDWSCustomForm.UpdateMotifWMHints(const AWinControl: TWinControl; CanMaximize: Boolean); @@ -480,14 +484,18 @@ end; class procedure TCDWSCustomForm.EvKeyPressed(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo; var Event: TXKeyEvent); -{var - KeySym: TKeySym;} +var + lKey: Word; + lForm: TCDForm; + KeySym: TKeySym; begin -{ KeySym := StartComposing(FXEvent^); + lForm := TCDForm(AWinControl.Handle); + KeySym := StartComposing(Event); - inherited EvKeyPressed(AKey); + lKey := X11KeyToLCLKey(KeySym); + CallbackKeyDown(lForm, lKey); - if (FXEvent^.xkey.state and (ControlMask or Mod1Mask)) = 0 then EndComposing;} + //if (FXEvent^.xkey.state and (ControlMask or Mod1Mask)) = 0 then EndComposing; end; class procedure TCDWSCustomForm.EvKeyReleased(const AWinControl: TWinControl; @@ -506,19 +514,10 @@ class procedure TCDWSCustomForm.EvMousePressed(const AWinControl: TWinControl; A var Event: TXButtonEvent); var MouseButton: TMouseButton; - lTarget: TWinControl; - lEventPos: TPoint; begin - lTarget := FindControlWhichReceivedEvent(TCustomForm(AWinControl), AWindowInfo.Children, Event.x, Event.y); - AWindowInfo.LastMouseDownControl := lTarget; - lEventPos := FormPosToControlPos(lTarget, Event.x, Event.y); - - // If the target is focusable, a mouse down will give it focus - CDWidgetset.CDSetFocusToControl(lTarget); - if XButtonToMouseButton(Event.button, MouseButton) then begin - LCLSendMouseDownMsg(lTarget, lEventPos.x, lEventPos.y, MouseButton, []) + CallbackMouseDown(TCDForm(AWinControl.Handle), Event.x, Event.y, MouseButton, []); end else begin @@ -704,6 +703,184 @@ begin DebugLn(Format('LCL-CustomDrawn-X11: Unknown client message: %d', [Event.message_type])); end; +class function TCDWSCustomForm.StartComposing(const Event: TXKeyEvent): TKeySym; +var + len: integer; +begin + SetLength(CDWidgetset.ComposeBuffer, 20); + // Xutf8LookupString returns the size of FComposeBuffer in bytes. + len := Xutf8LookupString(CDWidgetset.InputContext, @Event, @CDWidgetset.ComposeBuffer[1], + Length(CDWidgetset.ComposeBuffer), @Result, @CDWidgetset.ComposeStatus); + SetLength(CDWidgetset.ComposeBuffer, len); + // if overflow occured, then previous SetLength() would have fixed the buffer + // size, so run Xutf8LookupString again to read correct value. + if CDWidgetset.ComposeStatus = XBufferOverflow then + Xutf8LookupString(CDWidgetset.InputContext, @Event, @CDWidgetset.ComposeBuffer[1], + Length(CDWidgetset.ComposeBuffer), @Result, @CDWidgetset.ComposeStatus); +end; + +class function TCDWSCustomForm.X11KeyToLCLKey(AX11Key: TKeySym): Word; +{const + Table_20aX: array[$20a0..$20ac] of Word = (keyEcuSign, keyColonSign, + keyCruzeiroSign, keyFFrancSign, keyLiraSign, keyMillSign, keyNairaSign, + keyPesetaSign, keyRupeeSign, keyWonSign, keyNewSheqelSign, keyDongSign, + keyEuroSign); + Table_feXX: array[$fe50..$fe60] of Word = (keyDeadGrave, keyDeadAcute, + keyDeadCircumflex, keyDeadTilde, keyDeadMacron,keyDeadBreve, + keyDeadAbovedot, keyDeadDiaeresis, keyDeadRing, keyDeadDoubleacute, + keyDeadCaron, keyDeadCedilla, keyDeadOgonek, keyDeadIota, + keyDeadVoicedSound, keyDeadSemivoicedSound, keyDeadBelowdot); + Table_ff5X: array[$ff50..$ff58] of Word = (keyHome, keyLeft, keyUp, keyRight, + keyDown, keyPrior, keyNext, keyEnd, keyBegin); + Table_ff6X: array[$ff60..$ff6b] of Word = (keySelect, keyPrintScreen, + keyExecute, keyInsert, keyNIL, keyUndo, keyRedo, keyMenu, keyFind, + keyCancel, keyHelp, keyBreak); + Table_ff9X: array[$ff91..$ff9f] of Word = (keyPF1, keyPF2, keyPF3, keyPF4, + keyP7, keyP4, keyP8, keyP6, keyP2, keyP9, keyP3, keyP1, keyP5, keyP0, + keyPDecimal); + Table_ffeX: array[$ffe1..$ffee] of Word = (keyShiftL, keyShiftR, keyCtrlL, + keyCtrlR, keyCapsLock, keyShiftLock, keyMetaL, keyMetaR, keyAltL, keyAltR, + keySuperL, keySuperR, keyHyperL, keyHyperR); } +begin + case AX11Key of + $20: Result := VK_SPACE; +{ 0x0021 U0021 . # exclam + 0x0022 U0022 . # quotedbl + 0x0023 U0023 . # numbersign + 0x0024 U0024 . # dollar + 0x0025 U0025 . # percent + 0x0026 U0026 . # ampersand + 0x0027 U0027 . # apostrophe + 0x0027 U0027 . # quoteright /* deprecated */ + 0x0028 U0028 . # parenleft + 0x0029 U0029 . # parenright + 0x002a U002a . # asterisk + 0x002b U002b . # plus + 0x002c U002c . # comma + 0x002d U002d . # minus + 0x002e U002e . # period + 0x002f U002f . # slash + 0x0030 U0030 . # 0 + 0x0031 U0031 . # 1 + 0x0032 U0032 . # 2 + 0x0033 U0033 . # 3 + 0x0034 U0034 . # 4 + 0x0035 U0035 . # 5 + 0x0036 U0036 . # 6 + 0x0037 U0037 . # 7 + 0x0038 U0038 . # 8 + 0x0039 U0039 . # 9 + 0x003a U003a . # colon + 0x003b U003b . # semicolon + 0x003c U003c . # less + 0x003d U003d . # equal + 0x003e U003e . # greater + 0x003f U003f . # question + 0x0040 U0040 . # at } + $41: Result := VK_A; +{ 0x0042 U0042 . # B + 0x0043 U0043 . # C + 0x0044 U0044 . # D + 0x0045 U0045 . # E + 0x0046 U0046 . # F + 0x0047 U0047 . # G + 0x0048 U0048 . # H + 0x0049 U0049 . # I + 0x004a U004a . # J + 0x004b U004b . # K + 0x004c U004c . # L + 0x004d U004d . # M + 0x004e U004e . # N + 0x004f U004f . # O + 0x0050 U0050 . # P + 0x0051 U0051 . # Q + 0x0052 U0052 . # R + 0x0053 U0053 . # S + 0x0054 U0054 . # T + 0x0055 U0055 . # U + 0x0056 U0056 . # V + 0x0057 U0057 . # W + 0x0058 U0058 . # X + 0x0059 U0059 . # Y + 0x005a U005a . # Z } +{ 0x005b U005b . # bracketleft + 0x005c U005c . # backslash + 0x005d U005d . # bracketright + 0x005e U005e . # asciicircum + 0x005f U005f . # underscore + 0x0060 U0060 . # grave + 0x0060 U0060 . # quoteleft /* deprecated */ } + $61: Result := VK_A; +{ 0x0062 U0062 . # b + 0x0063 U0063 . # c + 0x0064 U0064 . # d + 0x0065 U0065 . # e + 0x0066 U0066 . # f + 0x0067 U0067 . # g + 0x0068 U0068 . # h + 0x0069 U0069 . # i + 0x006a U006a . # j + 0x006b U006b . # k + 0x006c U006c . # l + 0x006d U006d . # m + 0x006e U006e . # n + 0x006f U006f . # o + 0x0070 U0070 . # p + 0x0071 U0071 . # q + 0x0072 U0072 . # r + 0x0073 U0073 . # s + 0x0074 U0074 . # t + 0x0075 U0075 . # u + 0x0076 U0076 . # v + 0x0077 U0077 . # w + 0x0078 U0078 . # x + 0x0079 U0079 . # y + 0x007a U007a . # z } + { 0..Ord('a')-1, Ord('z')+1..$bf, $f7: + 826 Result := KeySym; + 827 Ord('a')..Ord('z'), $c0..$f6, $f8..$ff: + 828 Result := KeySym - 32; // ignore case: convert lowercase a-z to A-Z keysyms; + 829 $20a0..$20ac: Result := Table_20aX[KeySym]; + 830 $fe20: Result := keyTab; + 831 $fe50..$fe60: Result := Table_feXX[KeySym]; + 832 XK_BackSpace: Result := keyBackspace; + 833 XK_Tab: Result := keyTab; + 834 XK_Linefeed: Result := keyLinefeed; + 835 $ff0b: Result := keyClear; + 836 $ff0d: Result := keyReturn; + 837 $ff13: Result := keyPause; + 838 $ff14: Result := keyScrollLock; + 839 $ff15: Result := keySysRq; + 840 $ff1b: Result := keyEscape; + 841 $ff50..$ff58: Result := Table_ff5X[KeySym]; + 842 $ff60..$ff6b: Result := Table_ff6X[KeySym]; + 843 $ff7e: Result := keyModeSwitch; + 844 $ff7f: Result := keyNumLock; + 845 $ff80: Result := keyPSpace; + 846 $ff89: Result := keyPTab; + 847 $ff8d: Result := keyPEnter; + 848 $ff91..$ff9f: Result := Table_ff9X[KeySym]; + 849 $ffaa: Result := keyPAsterisk; + 850 $ffab: Result := keyPPlus; + 851 $ffac: Result := keyPSeparator; + 852 $ffad: Result := keyPMinus; + 853 $ffae: Result := keyPDecimal; + 854 $ffaf: Result := keyPSlash; + 855 $ffb0..$ffb9: Result := keyP0 + KeySym - $ffb0; + 856 $ffbd: Result := keyPEqual; + 857 $ffbe..$ffe0: Result := keyF1 + KeySym - $ffbe; + 858 $ffe1..$ffee: Result := Table_ffeX[KeySym]; + 859 $ffff: Result := keyDelete; } + else + Result := 0; + end; + + (*864 {$IFDEF Debug} + 865 if Result = keyNIL then + 866 WriteLn('fpGFX/X11: Unknown KeySym: $', IntToHex(KeySym, 4)); + 867 {$ENDIF}*) +end; + {------------------------------------------------------------------------------ Method: TCDWSCustomForm.CreateHandle Params: None