diff --git a/Notice d'utilisation des signaux_complexes_GL_V8.2.pdf b/Notice d'utilisation des signaux_complexes_GL_V8.2.pdf index 5ad0112..9c1c096 100644 Binary files a/Notice d'utilisation des signaux_complexes_GL_V8.2.pdf and b/Notice d'utilisation des signaux_complexes_GL_V8.2.pdf differ diff --git a/Signaux_complexes_GL.map b/Signaux_complexes_GL.map index 54b5f71..365e79d 100644 --- a/Signaux_complexes_GL.map +++ b/Signaux_complexes_GL.map @@ -1,104 +1,104 @@ Start Length Name Class - 0001:00000000 0015E190H .text CODE - 0002:00000000 00002BECH .data DATA - 0002:00002BEC 041A0505H .bss BSS + 0001:00000000 0016B428H .text CODE + 0002:00000000 00002BF4H .data DATA + 0002:00002BF4 041A0561H .bss BSS Detailed map of segments - 0001:00000000 00005DF3 C=CODE S=.text G=(none) M=System ACBP=A9 - 0001:00005DF4 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9 - 0001:00005F34 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9 - 0001:0000603C 00000ED8 C=CODE S=.text G=(none) M=Windows ACBP=A9 - 0001:00006F14 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9 - 0001:00006F4C 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9 - 0001:00007284 00006E28 C=CODE S=.text G=(none) M=SysUtils ACBP=A9 - 0001:0000E0AC 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 - 0001:0000E8C8 00008042 C=CODE S=.text G=(none) M=Variants ACBP=A9 - 0001:0001690C 00000188 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 - 0001:00016A94 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 - 0001:000172D0 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 - 0001:00017628 0000A236 C=CODE S=.text G=(none) M=Classes ACBP=A9 - 0001:00021860 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 - 0001:00021BD0 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 - 0001:0002B7CC 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 - 0001:0002B8F0 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 - 0001:0002BBA8 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 - 0001:0002BD40 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 - 0001:0002C4C8 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 - 0001:0002C500 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 - 0001:0002D4F8 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 - 0001:0002D550 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 - 0001:0002E618 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 - 0001:0002E938 000001A4 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 - 0001:0002EADC 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 - 0001:0002F498 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 - 0001:0002F4D0 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 - 0001:0002F508 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 - 0001:0002F548 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 - 0001:0002F580 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 - 0001:0002F5D8 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 - 0001:0002F610 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 - 0001:0002F67C 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 - 0001:0002F6DC 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 - 0001:0002F714 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 - 0001:00032DE8 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 - 0001:000378C4 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 - 0001:00037954 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 - 0001:000380F4 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 - 0001:0003821C 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 - 0001:0003BA40 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 - 0001:0003BA78 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 - 0001:0003BAE0 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 - 0001:0003BB48 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 - 0001:0003BBB4 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 - 0001:0003BC0C 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 - 0001:0003BC44 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 - 0001:0004558C 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 - 0001:0004642C 0000D390 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 - 0001:000537BC 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 - 0001:00053924 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 - 0001:00054644 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 - 0001:00065A48 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 - 0001:00066CDC 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 - 0001:00068878 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 - 0001:0006EF5C 0000CEFC C=CODE S=.text G=(none) M=Forms ACBP=A9 - 0001:0007BE58 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 - 0001:0007BEB8 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 - 0001:0007D114 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 - 0001:0007D14C 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 - 0001:0007E8E0 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 - 0001:0007E940 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 - 0001:00081E5C 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 - 0001:00081EAC 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 - 0001:00095298 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 - 0001:000955AC 000000D8 C=CODE S=.text G=(none) M=WinSock ACBP=A9 - 0001:00095684 00001F40 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 - 0001:000975C4 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 - 0001:00097EB0 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 - 0001:00098448 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 - 0001:00098488 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 - 0001:000984C0 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 - 0001:00098ED8 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 - 0001:0009AFE0 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 - 0001:000A422C 000015A0 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 - 0001:000A57CC 000004D0 C=CODE S=.text G=(none) M=Importation ACBP=A9 - 0001:000A5C9C 0000FE58 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 - 0001:000B5AF4 000025F4 C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 - 0001:000B80E8 000009C0 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 - 0001:000B8AA8 00003434 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 - 0001:000BBEDC 0002B274 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 - 0001:000E7150 00002C18 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 - 0001:000E9D68 00002404 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 - 0001:000EC16C 000015C7 C=CODE S=.text G=(none) M=verif_version ACBP=A9 - 0001:000ED734 0000114C C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 - 0001:000EE880 000333DF C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 - 0001:00121C60 00002904 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 - 0001:00124564 00000C00 C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 - 0001:00125164 00002390 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 - 0001:001274F4 0003680C C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 - 0001:0015DD00 0000048D C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9 + 0001:00000000 00005DFB C=CODE S=.text G=(none) M=System ACBP=A9 + 0001:00005DFC 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9 + 0001:00005F3C 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9 + 0001:00006044 00000ED8 C=CODE S=.text G=(none) M=Windows ACBP=A9 + 0001:00006F1C 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9 + 0001:00006F54 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9 + 0001:0000728C 00006E28 C=CODE S=.text G=(none) M=SysUtils ACBP=A9 + 0001:0000E0B4 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 + 0001:0000E8D0 00008042 C=CODE S=.text G=(none) M=Variants ACBP=A9 + 0001:00016914 00000188 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 + 0001:00016A9C 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 + 0001:000172D8 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 + 0001:00017630 0000A236 C=CODE S=.text G=(none) M=Classes ACBP=A9 + 0001:00021868 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 + 0001:00021BD8 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 + 0001:0002B7D4 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 + 0001:0002B8F8 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 + 0001:0002BBB0 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 + 0001:0002BD48 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 + 0001:0002C4D0 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 + 0001:0002C508 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 + 0001:0002D500 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 + 0001:0002D558 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 + 0001:0002E620 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 + 0001:0002E940 000001A4 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 + 0001:0002EAE4 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 + 0001:0002F4A0 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 + 0001:0002F4D8 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 + 0001:0002F510 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 + 0001:0002F550 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 + 0001:0002F588 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 + 0001:0002F5E0 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 + 0001:0002F618 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 + 0001:0002F684 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 + 0001:0002F6E4 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 + 0001:0002F71C 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 + 0001:00032DF0 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 + 0001:000378CC 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 + 0001:0003795C 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 + 0001:000380FC 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 + 0001:00038224 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 + 0001:0003BA48 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 + 0001:0003BA80 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 + 0001:0003BAE8 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 + 0001:0003BB50 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 + 0001:0003BBBC 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 + 0001:0003BC14 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 + 0001:0003BC4C 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 + 0001:00045594 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 + 0001:00046434 0000D390 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 + 0001:000537C4 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 + 0001:0005392C 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 + 0001:0005464C 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 + 0001:00065A50 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 + 0001:00066CE4 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 + 0001:00068880 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 + 0001:0006EF64 0000CEFC C=CODE S=.text G=(none) M=Forms ACBP=A9 + 0001:0007BE60 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 + 0001:0007BEC0 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 + 0001:0007D11C 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 + 0001:0007D154 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 + 0001:0007E8E8 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 + 0001:0007E948 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 + 0001:00081E64 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 + 0001:00081EB4 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 + 0001:000952A0 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 + 0001:000955B4 000000D8 C=CODE S=.text G=(none) M=WinSock ACBP=A9 + 0001:0009568C 00001F40 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 + 0001:000975CC 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 + 0001:00097EB8 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 + 0001:00098450 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 + 0001:00098490 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 + 0001:000984C8 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 + 0001:00098EE0 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 + 0001:0009AFE8 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 + 0001:000A4234 000015B4 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 + 0001:000A57E8 000004D0 C=CODE S=.text G=(none) M=Importation ACBP=A9 + 0001:000A5CB8 0000FE58 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 + 0001:000B5B10 000025F4 C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 + 0001:000B8104 000009C0 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 + 0001:000B8AC4 00003450 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 + 0001:000BBF14 0002B264 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 + 0001:000E7178 00002C18 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 + 0001:000E9D90 00002404 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 + 0001:000EC194 000015C7 C=CODE S=.text G=(none) M=verif_version ACBP=A9 + 0001:000ED75C 0000114C C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 + 0001:000EE8A8 00034684 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 + 0001:00122F2C 00002904 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 + 0001:00125830 00000C00 C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 + 0001:00126430 00002390 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 + 0001:001287C0 000427D8 C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 + 0001:0016AF98 0000048D C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9 0002:00000000 000000CC C=DATA S=.data G=DGROUP M=System ACBP=A9 0002:000000CC 00000020 C=DATA S=.data G=DGROUP M=SysInit ACBP=A9 0002:000000EC 00000254 C=DATA S=.data G=DGROUP M=SysUtils ACBP=A9 @@ -217,11 +217,11 @@ Detailed map of segments 0002:00049A30 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9 0002:00049A44 00000014 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 0002:00049A58 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 - 0002:00049A5C 00000380 C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 - 0002:00049DDC 00000028 C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 - 0002:00049E04 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 - 0002:00049E10 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 - 0002:00049E18 041596EC C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 + 0002:00049A5C 00000388 C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 + 0002:00049DE4 00000028 C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 + 0002:00049E0C 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 + 0002:00049E18 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 + 0002:00049E20 04159740 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 Bound resource files @@ -247,4 +247,4 @@ Signaux_complexes_GL.res Signaux_complexes_GL.drf -Program entry point at 0001:0015E010 +Program entry point at 0001:0016B2A8 diff --git a/UnitConfig.dfm b/UnitConfig.dfm index 2bfce5e..074316f 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -1,6 +1,6 @@ object FormConfig: TFormConfig - Left = 255 - Top = 125 + Left = 209 + Top = 203 Hint = 'Modifie la configuration selon les s'#233'lections choisies' BorderStyle = bsDialog Caption = 'Configuration g'#233'n'#233'rale' @@ -38,909 +38,6 @@ object FormConfig: TFormConfig Top = 128 Width = 249 Height = 177 - Picture.Data = { - 0A544A504547496D6167659A700000FFD8FFE000104A46494600010101006000 - 600000FFFE003C43524541544F523A2067642D6A7065672076312E3020287573 - 696E6720494A47204A50454720763632292C207175616C697479203D2039300A - 00FFDB0043000201010201010202020202020202030503030303030604040305 - 070607070706070708090B0908080A0807070A0D0A0A0B0C0C0C0C07090E0F0D - 0C0E0B0C0C0CFFDB004301020202030303060303060C0807080C0C0C0C0C0C0C - 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C - 0C0C0C0C0C0C0C0C0C0C0CFFC000110800B400FA03012200021101031101FFC4 - 001F0000010501010101010100000000000000000102030405060708090A0BFF - C400B5100002010303020403050504040000017D010203000411051221314106 - 13516107227114328191A1082342B1C11552D1F02433627282090A161718191A - 25262728292A3435363738393A434445464748494A535455565758595A636465 - 666768696A737475767778797A838485868788898A92939495969798999AA2A3 - A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8 - D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F010003010101 - 0101010101010000000000000102030405060708090A0BFFC400B51100020102 - 0404030407050404000102770001020311040521310612415107617113223281 - 08144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A - 35363738393A434445464748494A535455565758595A636465666768696A7374 - 75767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9 - AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5 - E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00F6609F28 - 14A1702A5F2B28BED4F58706BF63B9F94B5A9E05FB54FEDF7E0CFD98BC6B63E1 - 5D622D56F356D434D9B56B85B24461A7DA44923EF7DC46E67F29D5507271938E - 33E7BFB497C61F09C3F0847C4EF03F86AE3E2678DEE6C65D33C3D0DA1926D2F4 - 684ED93FB52EE25FF5F2832324300FDDFCB2198905623EA3FB697EC79E09FDA2 - 7C09A96A1ACE9E2DFC4D6DA5CB6163ADDB3797776D1C990518F2B247F3B7CAE0 - E3736D2A4935F8E3F013C57E3CF837F1635883C27ACF972785C5E6A1A858CB79 - E4DAEA70596E7B85D84ED6631A3B0C7CE003B482057C1711D4C43AEE936B95D9 - AB7657DFE6D9F6590D1C3BA3ED127CCB7BF99F437C17FF0082BD7C44F06F8266 - F86FE3EF1778FF004DF0A8998ABF86EE868D7FA797FBE92A42B1F9F177DAE095 - E42F0401DA4FFB2FDAF8EBE1E4FF00103C1BF10AC7C51A248CCE26BB8A64BC69 - 3201472371F303100EE0A4672428E6BC6BFE0A85AA5BFC69BFF04FC44F0FC135 - F689AA68496F73A8C71EF4826F3246486775E1660AC46D639F94E381537EC7FF - 00B74F84FF00668F1AEBDA6C3A0F896E3E1AF89ADED659AC0DCC7717BA65F7D9 - E34BA963DC5564467F300048628B0E4E4115F331E6E5E687DC7D24A2AF662F88 - BE227F6AE856275286EF546BC9E78A6BA689609E154588A793759632C87CC3B9 - 268D95004C64B9D9EFDFF04B6D357C1DFB7EFC19D58EA9E5E91797CF2DF26A68 - 2CE6974A786E60BC7EA639A23109D18AB64EC73B140207CDD71A9FF6824DA3D8 - FF00A6697717C6E2CA378375CAB728AC801CA332150CA321B626725148FA013C - 0F7BFF0004C9FD9ABC51F10BC6D6EDA0FC5BF8A3A1DCF873C05E19B91E5EA5A5 - E9F7B1182FF5CBA8BEF401AD8CB6D6EAFB59CCF2C980A8A5AA6ECB953D5F4335 - 1EC6C7FC12EBF6B3B8D13F693B4F006A9E75AAEBD149A74B6F701A3922B98636 - 9226656E4310AE9EFBFE95FA49E2ADCBE16D47692185B4841F43B4F3D0D7E23F - FC13A7C61E24F18FED8DF0C7C3FF006A5D4157584FB34F771F9D73A5C71A3C8E - F04D912C615118EC0E10E39535FACDE22F89FA9784EE6E74DFF849341F11DA49 - 1496EC5889AEADEE3692B1B3DB01E57CA19B12C440087337391F5996660E1809 - C2AAF77549FAADBBEFF99F3399E0D3C6C2517AE8DFC99E8BA1E8B6FA6D905B78 - 63B78E43E6948D022EF6E59B03B92724F52493EF56DADBE9D6B17C19E2AB8D67 - C27A7DF4D64DB6E23E44254952095276EE231C646189C11C03915B9697B0EA24 - 88A45665E590F0EBF553C8FC457A94AA45C138F63CF9D36A4FD4F37F87E638BE - 31F8D34DB8B3B75BA98C774B24518DB35B12C17CC381962E5F8F9BA3735E9DE1 - C81603711C6D36D42AC11DB72C590785E720719C741DAA8E95079D25D961CC77 - 5228E31C616B53C3B1EEBDBE3C9C141FA1AD32B4E3CBAF57F8DD91983E64DF92 - FC2C5EF2F9EF404C03EFC558F230697C9C8FEA2BDE3C6E52B797C534C78FFF00 - 555AF2B07F0E2B90F8C9737F67A05AAE9BA9DC68D70D74AFF69816195880AC3C - B314AAC24466652DB7691B47CEB9ACEA54508F33F2FC5D8BA74DC9D933C3BC76 - DE6FECEFF142D556391ED5FC4A634650EB9FB55EB2F07BE477FEA2BC7F4BFF00 - 82617C21F8CBF0F3C35E205B5D63C337FA96916B7772DA45E848E777854B3797 - 2ABAAEE249C2803AF15D27C6FF001B7C44F86FA2F8A2E2EBC25A7F8CBC37AC41 - 746E27F0F492457D652CE192590DAC9B8B445DF790ACE532F9936E02C7FB03FC - 704F8CDF0134CB792EB4B3AD787E03A64D6369725AE043022A24CD1B7CCBB942 - F2328B9EB9381F332A387AF5FD9555ADB66BB76FBFA1EFC2B57A541D5A6F4BF4 - 7DFBFDDD4F25F8F1FF000490F877F0F7E16EA9E22F0DEB9E20B6D63C376771A9 - 192E5E29D6F446858465511020246370CF539071C78F7ECDFF0003BC53FB407C - 27F889E19B8F121F0FF817C23A55D78A7FB36D74E8B6EB1790A79896C5C2AE23 - 53E5BBA316C130B0439C8FBE7E38DA7DAFE05F8D23E0EFD12EF1E9CC0E33FD05 - 7C97FB05EB9A6E907C5174DAE87B7F195BEB9E1AFECCDE0F9139D32DA4B798A7 - DE51232CF0E4F0CFE50193D38F1597E1E9E22114AD16B5D5AFBF53B30B8EAF53 - 0F3937769AB5F5F53BBF8F9A541FB387C18F84FE27FED9F1A78AA1F146991CDA - B5A6B3AEDDDD5ACF18B384A20B78D910450ACF2C81140CF96A18902BE77F087E - D61E28F09DEF899B42F0ADBE8F3788A1B6F3ADAC50C3268F1C324D2AF92AE8DF - BB91EE1988704EC2AAACA3691F497ED95E30B8F09FEC25FB38788AD5566963D3 - ED2D1D18FCB2C771A3F952A13FED47BD73DB39AE13C63FB5EF807E25FC31F116 - A76B6B30F1B6ADE2F9AF21B496DCB470599B0B7B2F25E6040283C913284DD878 - A3240C607899D51B627DD5BA8FE48F5B29ACDD0F79ECDFE67BC7ECB7A96A167E - 17B3BDD72E56DECADF556934D9AE36431AE96CEAF6CDBB81B446D8DC793B393C - 57D6F0F85AF2F7E1CC3E38F11789BC2BF087E1ADD00D67E29F179612EB208DCA - DA7E9E1925B8565E55D99038219164539AFC06F8A5F18BC41E2C9AD2CF53BEB8 - B8B6D2605B2B4B790FEEED228FE5540BD323B9EA7D7A0AD8F875FB48CD7CF61A - 1F8DB57D5EFB43B38BECBA6CF3DC4971FD840B16DB12B121606624B228C67E60 - 01CE63079957A149D1A2F96EF7EBA7636C465B4AB4D54AAAF6E9D0FD9ABBFDA3 - FF0065196FBEC775FB4C7C609AEF38FB7D878420B7D3D4E472226B36936E403C - 927DEBACD77E0E78913E193FC48F863E3AF0E7ED19F0E347266D41F45B6165E2 - 3D26318662F6AA4ACA555492B88E5C6488C819AFCA73FB3EF89B50D21753D22D - A1D7B49954490DE58CE8EB2A9E410370393EC0E7B135D7FEC49FB66F8CBF605F - DA174DF18787A7BC85ACE658759D25DDA38B56B50DFBCB7953D7192AC7947018 - 74C542C66214B9A35257D1BBB6EF6DAE9972C1D06B97917DD6DF73F45FE1F7C4 - AD0FE2B787E3D4B41D421BEB57018EDE248F23A32F507F4EB5E67F1CB48D79BC - 510F88B446934E9A2B98EDF56892EDFF00D32D536C48E91056577550088C8058 - 9EAA496307EDF363A4FEC9DFB6668BE36F87BB21F87BF1A342B6F1CE8F6F18F2 - EDD7ED3F35CDB851C2AB1DB2851C279E00C6D18EDAE35A87C43A03EA969E635A - DE2FDAA167653B94A8618DBD00CF43C8C1F515F472CC219961796AAB496F6FC1 - AFB8F06182960311CF4DFBAFFA68E7343F1ED8E97A65BE9BE20B4BBF0D6A51C1 - 1C5FE913B5C5BCDB50007CEE32C4F04B60163C126A8DEDC789A1BD9921965112 - BB2A0F291B0A0F1C9193F535D76B7A0D9F8A34AB9B4BEB58AF2D26DC1A390707 - 390483D4120E323079C7B578FDDFEC5FA7BDD48D6FE34F1FD9DBB3931411EAC7 - 640B9E107CBD00E07D2BA70B56BAA514D732B269DECFE7D0CB134E9BA8DA6E2E - FDAFFA9F52227C8B9A72A61454823CA85FE21D29CAB8FAFD2BE9E4F53E5CC1F8 - 81A3C7E20F09DCE9F33C91C37E8D6F23C67E655656048F719C8F7AFCAAFF0082 - 88FEC0FA5DCFC65B1D53E145BE9DA5EA9A96971DC78A3C2736AA9672E91A90DD - 15C4F686EE506E2C2E8A1B88DD1DBCB170D130528547EB1F8A5CA410A7FCF473 - 91EC0579CFC41F855E18F8C3349A6F8ABC3FA3F88AC63B48C245A85A24E2262F - 2E4A161946F7520FBD7CC66D83589A8ADA493B7FE4B7FD0FA0CAB18F0F06FA35 - 7FC6C7E567817FE09C777E13F85DAC788BC75F103C23E09B5BA86286C2CE2F37 - 56B9D5F3201298DA01F65C44A392F3819600726B6FE09FC35FD9C3C3FACDADA6 - A7378BBE236A91DD19534B544B48F5011A6F653E4C8BB632AAC38BBC8E4E3A57 - D41F1ABFE08E1E11F881AF2EA9E15F12EB1E1692344B76B2BA53A9593458D823 - 5DCCB246A14003E66C76C62BC0BE0CFF00C12DFF00E321345F07F8824D37C557 - 4CB7D757B6926AB3E996F0AC0AA12390C76EF2E779F315918092329FEAF764FC - B4B2EC4297235BBB5FFE1BFC8FA48E61425073E6D95EDFD7F99E8FE3BFF82E20 - F865E1EBDF0FFC15F86361FB3F6A8AA161BDD134DD364B864383FBC965B76BCC - 95E43ADDF707E615F17FC43B6F899FB40FC478F5EF157FC24DE2EF1178B2E088 - AFEEE299EE7509490001BC65C92CA06D279603B8AF7EFDAABC3967FB2C7ED9F0 - 69AFA0F84593C3B6E6EA5BBD2B44F32669AE22FB5A3C82EA5904CD1B3A22C929 - 24AA31237649FAFBF66CD17C59FB516A5E07D534ED33C53AFDF683E2BB6D4D2C - 2C239EEA33A6ED475956D631E5C691A4AA9B82800C4C3764E2B86541D1ADEC1D - 92BD9BEDDFEE3AA35F9E97B68ABE97472FFF0004DCFF0082482FC14BC97C5DF1 - 5B4FD2F52D7AFE036D61A1BEDBA874C46C179663CA34CC06D0AB95552F924B61 - 7ECDD7BC37A7F85345BAB4D2EC6CF4BB34D1AF02C16702C11A0C274550056DFC - 59BED4BE0CC7A7CDE29F0AF8C3414B8B958A06BFD29EDE2B966046C499F10B3E - 327CBF3048403B558E14E1EA9E33D17C6B1EA16B637BE65E43A55D8B8B3914DA - 5F40ACABCB45326F407B3346573EBD2BED68C7094E84E961E49EAACEE9B774BA - FDFA23E46ACF1352B46AD74D68FC96EFFE00FB3F0FDBDDDA43710BCB6B712448 - 4CF030567E060BAE0A3F1FDE071DB1D6926B6B98B6FDB2DE3BE8D7959EDD3122 - 7FC0324FE28C49CFDD159BE03D4B5BD3BC19A4B6AB602F646B64334967283342 - 48CED28C1436DCED055B242E719AE8B4EF10D8EB32F976F708D70ADB5A09018A - 607D363004E3D46455C250714BE17D9FF567F22674E49B6B55E5FD5FEF393F87 - 3E256F15C5AF4DA3EA36B7D058EB1359B452AB66268D630D1B37DF570DBB3BC3 - 11D31C1AEE3C10D25CC9A97996EF6B22C88BB5983071B01CA90795E71C80783C - 573FE1FF000B5A5CDE6B6CD03413FF006948C25899A2990B244C70E30D863C91 - 9C1F4C715D078623D4B4DB9D40AAC7A9C2B2A0209586E40F2C1F411B1E7A1F2F - EA6B6CBE4D38C9EDAEDF3E9BFDD733C76D25E9FA1D01872D9A0C3934DD3F57B5 - D4EE1A18D9A3B955DCD6F3218E651EBB5B048FF68657D09AB861E3A7E95F4119 - A6AF1678CE2D6E5336F5CEFC4CF05DE78CBC2F35AE9D796BA76A05488A79ED7E - D11AE4824150C8C036304AB0383DC818EB7C8C1A468703A1A9A91538F2CB61C6 - 6E2EE8F977C67AA78BBE11C6F75E25F06EA13D8C243B6ADE1B2753B6840FE278 - B6ACF1803D51946492DC64F88E85FB35781FE31CF6BA87847C651FF6569B79F6 - 9B64D3ADE15D474B2771F2D6E0E2E238C336424808C9E3B1AFD1044F2A4565E0 - A11CF4AF907E247EC97E15D7755F3A3B7D43C3FE20D3CB1875CD267363A88E48 - 2CEEB9127FB4640F9E80815E3E330FEF462FDE5ABD747A5B66ADE5A7E27A984A - C92725EEBD36D575E8FF0047D5E8799F8FBC6FF10BC1FAC78B3C1B1DB43F1134 - 98F407BA96E6E268EC357B58655923DC3AC771E5E0EE040761CA91F747CEFF00 - F04EFF0087FA07ED33ACF8B3C1DA969661D5EC0DEEBB6DAEDA5DB477D69B2DD2 - 3840451F3471CF1C6D96623748A300B06AEE3E25786BE2DFC32FDA75AF2EAEF5 - 2F8896ABE1BBDF3D34A68AC6EAFF004E1BE34F3E0385774964495963DC4A8EBF - 7B15FF00E09EFF0006BC7B69E0BF106A1E07F0C4DE20F12EA73DC456F6D1697A - 81D4EC1D62222B8865B5864DD1B348434330113F94BBB2335F3F88AF0F6D1F6F - 7514DDD4BB69B3FC376CF730F49FB17ECAD7925671EFE6BFE024745FB5F6B967 - E34FF82507C0BD42D248E54B1D4F4FD3E6D9C7952C76B730C88476C3478FA60F - 422BE39F855E1D5D4E3BC9DB6EE9AF6708A3B0F3769FE607E35FA45E17FF0082 - 2BFED3DF153E04E9BE11D53C2DA1F83FC176F716BAACCDAE5CC5A7C715DC1018 - 04CC0CBE7AE63C6FC200CCA0ED073BA2F0FF00FC122FE0BFECF0D19F895FB5A7 - C2DD125B47324BA678514EBD2839C9F9630B206CFF007C3F3D8D7978CC7D3AB3 - 528DDFBA96DA5D2B1E96130B3A51717D5B7F267867FC17FF00F663F047ECC5F1 - 4BE1AF85FC27A2E9FA2EB5E1DF87BA3A78AAE2D90A9D67529BCD792790671E66 - 029DC06487C1276AE3F34FC4578F35C470C7F2B49D48F4AFD1AFF83817F6A2F0 - 87ED73FB5F6A5E2EF00DF5E6ADE1B934ED36C85DCF6725A996482DDA373B2401 - 82EEC60B019AFCEF9BC6574DE18BAD0F6C0D6726A316A0ACC999239238E48885 - 6ECAE241B87731A7A73E6C60BD0F4B999F577FC12ABE385EFC35F892BE11BEB9 - B893C37E260D6D0073BA2B4BA6FBA39E02CBCA91D37943EB5E9DFB637C3EBFF0 - 27C55B36D4354D435ABBBED320336A57F299AE6FDE35F2BCC91CF2CCC8B193F5 - C57C1BA378F2F3C3FA7BC76BFBAB8C868A70C43DBB0390C873F7811907B1AFB1 - 75FF00DB7D7F6C9F865E1F875AF0F9D2FC6BE177686F6FED48FB0EA904883E70 - A4EF8E5DF1825794E490470A08C5A95C6ECD1F66FF00C144249356FF00825DFE - C4DAE6E669E1D035AD34C87A858A7B7445FC0262B4BF625F10B78C7F65EB3691 - B75C5BCF756CFF0079881BB2B9C8F4230013DBA722A87ED98A353FF82237EC8F - 75F785AEA7E22B2CFB1BB90FFEC959BFF04F5D7E3D2BF67D5B7B9323473EBAF6 - 90E264608D228FE0C8645E0E49CE7271DC57A5954946AFBDE7F91E766316E969 - DD1EFF00A49FB5D942DCE2401BEB9E7FCFE353344DB8E3CCC678C74AAFE1619D - 16DFEEE7CA4CE06D19DAB9FF003F4AB8E30C7EE75EEF83F88AFA5C0BFDCC7D11 - E2627F8B2F565A6D7FC59E1A9F17DA2DAEB1663FE5E74F9FF7B1A8EED195DCEC - 7FBB1A607A9AD2D1BE24E91AA6E59266D3E68F1E6C578BE51873D03364A06FF6 - 4B6E1DC03C574623C81506A3A1DAEB2ABF6AB7867F2FEE33AE5A33EAADD54FB8 - 20D7BB2A3561FC39DFCA5AFE3BFE67CEFB483F8A3F77F96C721E36F1D69F6FA9 - 450CD24D1C36FE62BCE6DD9E3CFCBC295C9EA083C7627903359DE19D66D3C43A - AEA5716338BAB78C44AB2A2B796CB83C86230C0B6EE5491C1A8FC5BF03E6B28D - A4D22EF51B7B7F3CCFE5C32B3143B8B1F9460B939C6496C8E0A919CF9ADAF8B7 - 45D1BC6775711DE69363AB5C2F98D73672C50DC4990546F0C0B4921238002A1C - 119E08AF9AC463AAD3C45AB46DADFD74B68D2FD3D4F76861613A17A6EFA5BD35 - BEABFE0AF99ECC8BBA1B8F518C7D42822BE7FF008D571A87C3CFDB7FE1C78934 - 6BCD2B4E97C4D1DFF87EE5F50B27B9B6674B58E685E5F2E44745DA64432296D8 - 36B32B2AFCBDDFC35F891AA1F05E91797DAA697AACD756705C5C99D45BEF91E2 - 563E5CD1028DBB04AAEC66231CF7AB17DFB277C52F8C7E28F08F89B5DF86DABE - 8BA4F85B5CBBBC6935E6B6D1ED6EEC2748ADC82D79346AE1ECDAE2320E0166CE - 00C1A55B30A16837249DEFF8A7D3C8AA385A8E535157D2DF83FD4FCE9FF82AE7 - 8FBC75E15FDB33C4D21B68740BE934CB18F526D1EEDAEE3319B458F1E73451B8 - 89D33B91940CB10770009EF7E057FC147AFBE3C7ECEFE17F82B1F8AA1F85F75A - 4AB43F61D3E1FB0E99E30B8762566B9922C3BCE72AA11CB20DA0469D87D37E3C - F861A7FC0397E3E7C4EF1A7C50F84FAAF88BC41F0875BF05F87F41D17C49FDBD - AC5D5C4D63F64B67945BC4F179CD016591BCDC17909030723F15AD3ECB05B4D3 - 3497906AD63750B5B04E136FEF3CC278C89158445791C6FEE057CCE32A46AD79 - D485ED776763E9307074E846125AA48FD6AFD9DFE36F8D7F621F8ADA7683E32B - A8FC49F0BFC6B20D3FC51E1B7D43ED5A76AD61215599FCACEE8678C3EF8A5011 - C3A603101C57B7FC31D52E3E14FED5BE3EF833AB6A126AADE099359D2747BBBA - C35C3411B703BE0491469215FBA190FAD7C61A7FED3FE1BFDABBC01E0CF26E48 - F1969B770C5AC58496CD1B3EF015A646C6C68DA45CE03646EC1515F4AFC4EBA9 - 752FF82FAFC4C64DDB1358D7D5C2F4F92C6E5727F103B8ABCB6A4E35E37EAD5F - CF52730A717465E8FF0023EB1F0943E778634D931F33DA44C7F1406ADEA7E1DB - 3D62D7CABBB786EA31C2AC89BB67D0F51F85677C3BD4E6BCF0769AE1AD6F952D - 61490DB931B23F9484AE18907191CEE1F4CD6F5BDE43733F97B8C72B748DD4A3 - 1FA03D7F0C8AFB184E2E093DBCCF939464A4DA389F0F786F5ED33C43AFC90EA5 - 6ED6FF006958AD2DEE6269A3F29628F8660E195B2CC370FE100107031DB7804D - C5D595E3DE5B456975F69DAF14571E7C6308982AFB5490410795041C8E7A9A1A - 1E5351D755BA2DF8DA3D8C109FE64D6F7844F9ADA87B5C2FFE8A4ABCAE9C60E3 - 6DB5D3A75FEB433CC2A39295FCBF42D6A1A45BEAD0F977104770AA772875CED6 - F553D8FB8E6AA7F65DFE98736773F6A8874B7BD624FE13005FFEFB0E4FA8EB5B - 4211FF00D6A511F3E95EECA317AF5EE7931BA31A2D7E012AC3751CBA7DC390AA - 97185590F6092025189F40777A815A0D0E3A8C7D7B54F359A5C44D1C8AB24720 - C3A30CAB0F423A1ACEFF00846DF4D19D36E1AD57B4120335BE3D02E4141E8119 - 40F43D2A79A715AEBF9FF97E41CA9EDA13345B7EBDB15E27F109ADF469AFEF2E - 2486DED6D5E632CB83B2345624B1EF85C1E31C9E9D2BD91B5B6D387FC4CAD5AC - F1F7A743E75B7E2E00280772EAA07A9EB5C8787B5AD0FC33F113C51E39F10C29 - A97857E0D68F3F8F2F6D9986CD4AF232134AB52791896E49743D336A99C8635E - 56698C8D18AABD55F4F376B1E9E5B85759BA5DEDFA9E55F1C75FF863FB09C5A5 - 78ABE2E785D3C79F18356D303E81F0E669CC367A0D8C8C1D6E35B619DF248CAA - E2D082A36852A48F353E73F8ABFF0005D2FDA27C7B64D61A678D2DFC07A228DB - 6FA5784F4D834BB7B44EC91BAAB4E001FF004D6BE6DF8A1E3BF167ED15F103C5 - FE3CD7A6BCD6F5ABF965D6F5CBEC164803380CE7B244995451F75542A8C002BC - 4EF3C75ACDF4866D3F4B87EC39CA1BB98C734CBEA17F873DB7738F4AF83A9375 - 26EA54D5BEA7DCD1A51A7054E1B23D63E297ED01E2FF008BF78F71E2CF157893 - C51331CEFD5F539EF981F6F359B15C4CDADED1D781E95912EB71DE6976B711C9 - F3DC2132C2410F6AE1994C6D918246DCE46410473DAB32EB58C1EBC52B1A16BC - 47AE2C42691B695442C41E84019AF15B3F0C2CB62970C1A38DB2598AFCB90718 - 1EBDB8F7AEEBC69ACE34AB9F9BEFA6CEBEBC7F5AE6E1D566B8F09DADAB4D33DB - DACEDE5C4CC4A445B2720741939CE3AF14D225C8A71786F2A1820618CE09F98F - F9FAD7B2FC1AD00695E0A86E86337B712AF078C22C78FD59ABCB6C67690AA80C - CCC76AA8E49F6AFA1F4DD174DD13E1B78420D3EF9F50125B4B35C486DDA1D933 - 49FBC8C0639608C0AEEE036DC8029C9590A326D9F787ED1B746FFF00E080FF00 - B38C91A34D35BF8FF58D3D114649324B78C140F7C0AE07F663F105C7C39FD9FA - 7BB96CC2CDA4F8A374D1C9959C32C1BC031E012A32D904E4EEE31B70C7ED11E2 - D96FFF00E080DF09EC6DA465B8D2BE2CDFAEE46C3266DAE64C823A1F987D0D79 - 37ECF1F1EB5AD53F6789B47D726BAD5F6EB36BA7D9DF4E91C50C710B49CAC265 - 003BC8A2263B79243027A739C25C916FD4551733B79A3EDBFD9DFE2C45F15FC3 - 12DC2C7676CD6EE1638A09A79B29D0317921883F2083E56F5071F39AEF1D0063 - FBC8D79E854923F1AE2FE054F0F8A3E16E936F7D343A85D5BC3B8B799BDCFEF2 - 451206E082769F9800460F7AEA4F872653F26ADAD22FF0AA946551E809524FD4 - 926BE9F2DA927878BDF43C1C6462AAB47A481D3F4A7AA73EBED595FF00097476 - 43FE26167A96960725E683CC8547A99622E883DDD96B534CBDB6D62D45C59DC5 - BDDDB938F360904887FE04A48AFAEE64DE87C9F2B451F191F23C1FAB37A59CDD - B3FC07B57CCFFB42FECFBE15F187827589F59D16CE49A1B0B89E0BC84F917116 - C42E0874C1EA070723AF06BE96F8889FF1426A9DF741E5F0339DC42FF5AF94FF - 00E0A43FB5669FFB2C7C21B496E34B9358BEF13CD36996B6FE67950AA988F9B2 - 48F8246148C2819627B004D795984E0AF2A9B25D7E67760E139351A6DDEFFE47 - 1BF13BE2C5E7FC13FBE057877E17F872EAFADFE226A9A45BEB5E25D7B5094497 - FE1582E638E7B6D2EC1F005A3985A3B89A58F12833471071E5316F9B6D7F6909 - BE200921BC6B7F135BDAAE4FDAA275961463CBC6E401F331E64DAC493F7B915D - E6AFF11A1FF8295FC48F1B7C42D2756B3D1F5CF185E5F5F6ABE183A818A6B1DF - 978AD4B10AB73684AC4AAC420FBBB941422BCFBC57F0E359F87CAADAF787F57D - 3E69976DB4D345E5C49CE5B2483BB701C0561C8CF2073F9DBE596FAB3EFF0096 - CAC69E9F17877C4516E5BABAD0AEA4521D2746B9B71D30A8C32C7B7CCFB00CF4 - 039AF09F1FFECEBADDF6B5A96BD676F69E20B1BCBD90ADD6952A5D2819C2A7CA - 72CD8033B030072326AE78CBE3C3782BC68BA69D33CEB5B708D39F30C72CCAD8 - 24C47955E38CB0619078E2BB4F037EC4DE2ED76CAD7C51F067C47178E747B898 - 091B49BCFECFD7B4C126DDF15C5B96C96031911BB93B73B429A4BDD7A3FBFF00 - CC528CBA1A1FB0FF0080A6B4F1469724B6B716F36A1E21B4B25F3A228D88E45D - E3040E8CE01F75F6AFB53C5FE28D1FC3BFF05AFF008B7AA5EEBBA25BC8DE2BF1 - 1D8496979706DEE1039B8891A3DCBB6505815DA84B0C0C800827CCFE13EA9E24 - B4FDA07E1BF84F5AD325B1B893C4563676F06A76A7CDD33CCB9890344080396F - 9892ADB8E7A5770DE11F06FC5DFF0082A0FC594F1168F75E23D423D675FBAD42 - DA440D6F2CF15DB9FB541B3E70E8FF00BC1CA019E2B6C3549FB78B4B5D3CD7F9 - FE06189B7B1929763EA8F809E37B1D52D5B498E4DD3320BAB7995C3C77881235 - 93611FC71B140EA7040910E3078F49FB325CB796EAB223E32A572A7F0AF04F84 - 9F0AF43D43C1DBB4BD6AF346D734BBC379A55CBDFCCD1432C90A91E644EC6275 - 667954A005B6123200E3D03C39E2EF175CF8625BB86D74ED6B51D3E616D7BA63 - C66D6F2D6752BBD3218C720DAC1D4E230E8CAC3A815F4984C55A8A525D1EDAFE - 1BFE07CF62282955728BB7AE858F8657571E238B53BE8E46B36BA9ADEE05B91E - 6C51EFB2B76D872013824FDD23823A6315DDF82629D4EA3E72C6ADF695C7979D - AC3CA8F9E7A679E3F53D6BCABF67CF895FDA1A0CB1EA5A56A5A5C82686DD5CD9 - 4F242E5618D013208F0B9C00093B4F627A57B3785E3FDFEA0BDC4EA0FF00DFA4 - AEFCA2A46718496FADFF0013933384A0E49F97E85D11739C52F927DAAC08368E - FC75A7345FE457D0DCF10ABE591DA93CAC1FBBF855B68700FD29AF167FCF4A77 - 029F9783C706BE1EFF00828A7ED91E05FD9C3E0A7ED09F0EAF27BBFF0084DFE2 - 9DCF85DECAD6CE0DEA2D2CE479E492790E1635382A1012C5981DBB72C3EEA68B - 9AFC96FF0082CE7EC01E3AF1BFC50F8AFF0018BC370C7AC7857C276BA0DEF88A - 269BCBBBD345DC6D651491C6DFEBA1DF6803143BD5A61F2155671F37C4F6FABC - 5BFE6FD19F41C3AFFDA24BCBF547CBBF0E75CD0BE30EA1716ED72B1496D63792 - C504B288F337D965F281C9C32B485539E85C67039AE5352BB749995B706CF20F - 07E86BC32DFC4179E1FD563BAB39E4B6B8B763B2443C8EC7EA08E3D0835EA9F0 - BBE3D3788F528ED754B1B3B8B82A5419230D1DC01C95F5463CF438FA74AF8D8D - BA9F612BF43535CD574C86C6D56CE6BE92FB0E7501340B1C31C99F9444C18990 - 6CDBB8B05C3640040CD73B75AC7DEC56C7C5CB9D2D05BDD695A7DC69EA5CC730 - 79C491CA480CAC83195C7CCA412412B901738AF3F9F522D9E6B5E546674EFA65 - BDD58ACB7DBDE37F99514E323D7FCFA52695E15B2D6AEE4B5D36E23B3B999711 - C176DBA0B93D76EEC655B8C8CE727D2B16C3C52D244B6F32B371B6361DBEB597 - E28D63FB2E3DCBF7F385E7BD73734E333A3962E27A8FC2ED2B5AF056B53B4DA3 - B5ADE03B6398C45F62E0E5A37E460E71953FD6BD4358D5649AD2CE4B8CEE58D9 - C9273DC7FF005EB8BFD8B3F6A2D5BE1E78DAC6CF5F65D4349BC7547F346707B0 - 6F53D8370C09EBE9EC5FB704A74CD3F4FD616D748B6B7BF92E61B696C0102E6D - B28D0492924E662A5C31000CA74E335A3A9CCCCF91A3D87411FF00096FFC10AA - FB5398EE8742F8CFE4267F8449A6313FAC82B96FD80E3B76F016B5A6CEB1C82D - FC59A7DC1431BB3BC4CA490A4E22C65390C73F771F2EE0777E16DC797FF06F4F - 8D6CDBFD649F196DAE109EE4E9F6A08FC326B9DFF827C5C6A975E15F17DE58BF - 99A5E9FA8690DA9C610B794185DAACCD8FE1565552082079809C2A961A42EEE9 - 18D4B5B5F23EACF1F5A5F7C379EDBC45E1B8868763A5DCB596A30C912B450DB4 - F223873147BF72AC8724AB8386E0004E3D13FE124F1AA7CBFF00088F8667C71E - 62EBD322C9FED05C700F5C76A6E9D7DA2F8BB58D734937961AAC1A944EEF046F - E679D06C8924639180BF38049EE78AF2AFF8573F193C3BFF0012FD2754D3E6D2 - 6C7FD1ECA4942891E04F9632DFBA3C95009E4F35E9518F227283934DBF85F54F - EED4F3EA4B99F2C924D25F12F23EA74B1D6B4CE60BEB3D4917A25DC5E44C7FED - AC436FE1E57E3546FED6C6EAF7ED1AA7876F2CEEBA1BEB3432B9F612DB9F3C0F - 52CAA2B7A2D7AC8BAC724C2DE46E152E54C0CC7D83E377D5722B4563FF003E95 - F7124A5B3BFE27C4F335BFF91C078AB17FE0FBCFEC7F112EA491C90A496D7023 - BA31E654C02CBB2453FF005D198F5E3BD792FED27A3E93F10FE06EB9A7F89BC3 - D63ACE9975107DADB6E2385B700241B82BA380C70F182C3B11D6BDCFE2EE8D69 - AC787EDFED36B6F70DF6A863579230CF18DE18ED6EAB9DBD411EB5F3FF00C76D - 0BFE118F056A86DF52D4A387ED16F1A5B4D37DA166CDC47C03206907CB93F2B8 - 0003C57958F8FBB3BF45FD6E7A3837AC12EAFF00CBB1F941FB5E7C1BD3FE047F - C149FE2E7813C0BAB4DE10D37C13E33D7F4CF0FDCC97B2F99691D9CD702DE113 - E7CCDEDE5244AE49259D4B13C9AFAD3C05F1E61FDA9BF61192F64D53CDF13787 - E08E2D5AC96E70F23C52C59BA685481B5D36B6EDBB433380460D788FFC167B43 - D217FE0A5DF1B24B6B4812F2E3C6BAEDC3BC670B216D4A40AEC31839F98F6CE7 - 249AF16FD9EFC17FDA1E2D9353658DBFB26232E4B00C19888C60673FC67240C0 - E338C8CFC23A6A4933EEF9ADA1E87F1D74BB3BDF85DA8DCDC411C93D922B5BCA - 47CF1333A8F94F5E73C8E86BCEBF661F8A7ABFECEBE39D1FE25697ABA2AE8FAD - 43A7EA3A4A5C18E6D42DA48DA46575E8D132C722E4E76B853D715F627C34FD82 - BE2D7ED19A1DBC9E1DF84FE39F1468F7855E3B987439DEC651D41F38A888AF71 - 96C1C7B57CF973FF0004F8F15689757175E228BC23E07B792795C0D7BC516167 - E4217254797E7349C2E380A4F1D0D115195C4E5CACFD3FF0DE8DA5FED0FF00B7 - 5FECF3E2AD0759B6D63C3371A826B779A925EF9D05A5969AF05EDCB39DCCB16C - B7462C9F2E1B391B98E7C2FF00E0989F1CA0F8F3FF00053AF899E2BFDDD9E95F - 64D675C9AEA67090DBC32DE44A0B3B602F32E727B035F3E683FB49F84BF643FD - 97FC59F0C7E0FCD71E25F89FF159C693E26F17D9DB491431E97942BA5E9A8C04 - CFE749BBCC95954C802AAAEDFBDEEDFF0004F7FF008274C5F0B561D5FC59690C - DE309ACFCEBCB2BBD3EDF52B6D20CCF135B5B98E456C5CAA46F24841055678C7 - 03E66ECCAE8CD57528ABF2BF438B32A90F60E3376E6D0FAF7E06F83EDBE2A69D - AA78B17519E4B5F105E4D2E9B22DB40616B6F930CA1E2DCD1B4A26646241D8C8 - 5481B6B67C5BF0EBC55E074B8D5B41D6BEC91A40CB7D2DBC0F752B4414E2616B - 23E25993939F372CB940BCA95E675DF88DAFF82FC4674B8B5BD275CD69905CC7 - A5DBF872E649E3B7DDB4EE68AE0AC2A5810AF200090C06EDA71B7E1DF8BFF132 - F85CC72F82B47D3DF67FA1DE5DEB43C80C73832C48AF2F1C12A339E9B876F6FE - AB8771E4B352EE95F5F95D2FC0F0FEB35AFCD74E3E6FA7CEC3FF0067EF8BAB3E - 9B32C71D8EA10DC3C6B6EF05DC70CB7402004C713B65DBA0281B703C63D3D9FC - 13E3AD365BFD42DAE276D2EFBCC566B4D410DACD10F2D0721B8FC89EBEB5C87C - 3CD074CD03C056BE1DB811EA76B0DBA4371F68815A2BC7E4C8ED19CA80CCCC76 - F20671D3AF67F0CFC35A443A4DEE8F6F676B269565324B0DB36258AD59D72511 - 49223C7DE0A0003CCC800115D781C3E228B8C7993F55FE5F9BBFA1CB8CC452AA - 9C92B7A33AF681A33F32B03DA831FB7B56245F0DA2D1D7FE24B7FA868BDC471C - 9E75BE7D4C526474E38200F4CF3486F7C4DA2498B8D3ECF5AB7E865B193C8B80 - 075631C876B13D95587D457B1F58947F8916BCD6ABFCFF0003C9F6717F04BEFD - 3FE07E26E343F351E5607E95856BF14F4596FBECB7571368F7854B791A940D6A - 71FEF37C9CF61BB279C0C574617CE89645656471B9181CABAFA83DEB68558CD7 - BACCE5171D245578F3FD2BE12FF829F7EDF1E0FF00D9C7C33F1CFE17DFDBDFEA - 5E24F8AFE1AF0CDBD98B578CC1A69B3BEBBBA77B925B7216468B622A9DC1F71D - A304FDE7B0927D6BF263FE0B17FF0004D3F187C40F8D9F127E29F8366B7D634D - D27C3D6BE2BF10D85C4BE4DCD94018593BDBE7E59954C28ECB9575126155EBC5 - E234FEAA9F9AFD4F7387ADF5977ECFF43F353C27F0CAD7C4FE2FB159AF9AEB47 - 5BB8BFB516D87977B15AB3A89648D4EE0C554923193903E539ACB8113C0DE2FB - AB4942E74DBA916325B3BF6B90AE18750700861C1ACF1ACDC68B789716F3496F - 7109F95D1B04763FE4D74DA3FC406F88314763AB5BC46660441729F2927B023B - 67DB8ED8AF8B8EDE67D93DF4363C49AF5AF8C7C1B25C5ACF1C8F0ED95E10DF3C - 673B5B23AE39383E95C686C0FC0D59D6B408F4C8924F255668A4D8CE18FEF01C - F51D0118C71EA2AA2727F5ADB733D8B1A5AF9BAA43F5CD3B55D56CC5BEAD6D73 - A7C77D71736AA965334ACA6C6613C6E6400101B3124B1E1B23F7B9EAA08AA599 - 1F746CCAC3A106923D264D42292E1BF7877EC6FC856728DDDCD23B1A5E08F184 - 3A1CAFF6A4976EDF97628DC0FA73FCEBD97C41F19ACBE307C06D334B9353B78F - 54D26E92596C6662920E76B1889E1D4862D8524AE4E46315E2F63E07B8D4DA28 - ED639AE2EA7216386242F248DE800E49AFB0BF63BFD92BC2DFB2688FE337ED11 - 0FD8749F0FA7DB7C3DE0B970352F14DF291E547244798EDD5B0CFBC7601C053B - 5E7979751B9773D3BF6C1BE6FD943FE097BF08FE13DD2B5BF8A3C617D3FC40D6 - 6CCFCB25A24D1B5BDA0917A863130CA9E4340C0F22B88FF826B78635FF001EF8 - 6358D264D2AE23F06F89B5ED363D57593284DA2CC4D22DA46ADFEB1A569D7715 - E630A87F8857CFBFB457C7FF00187EDC3FB45EA5E2AD694DC6BDE27BA0B6D688 - FB62B48BA470A963858D1001B98F0AA598E4B13F7CFECE9F0A7C79FB2A78434E - F0FEA10F877C45A4F87C5C4F6FE4EB634FB78A5725A79A559A240EC43940D2B3 - 796870768C29D693D5A5D9EDF71CD5B44969BA3DE3E10FECCAD65E31BCFF0084 - 5FC59AF6832DE299E0DAD15C0573B41F34BAEE9A145880557214191FE66C8C7A - D2FC0EF8AC146DD7BE165C2E38965D0AF84920FEF36D3B727A9C719E95F377C3 - 9FF828D7857E146B9BFC53A1EB1677B1C662FB2E977D61ABB2CA71B46639C1FB - A720BAF19E171C9F648FFE0A37E01BE8D665D0FE29C8B30DE1FF00E114BC7DC0 - F39DC0E0E7D4706A31D53D9D771C34B963E4DAD7AE9EA183A6E7493AEAF2F357 - F4FC0F6C6844919560195860A9E73F5AE3F5BD6D7C29AA4D1C9E17F135B58C6D - 98EFF4545BA81C103E66B6858CDBB39073038E3EF1EDDBF97851C53D22FDE0FA - F1EF5FA5D68F3E9B1F9EC64A3AB573C8354F8D1A0F8F746863F0EF89F46F115D - 5BDFA2C962EC20BE8982BE448980F1E003C18739183EDF0EFF00C15E7E18F8D7 - E256A9E0ABEF0C5C7886C7ED3BB43BAB44FF00906ABCCEBB6492646DD1B48DE5 - C5992301B00020820FD15F0CBC9F8A3E35F88F7BACE9163E225BAF1CDE69F6B6 - F736A9244905AA4CAA58BE55407918EEE58E7E519C01F3AFFC154FE1C7C60F01 - DAF86751F872BA93F84A19925BAB4D2EEA4B8920D4C48ED0AC76B233B796B1AA - 91E52E19B797500201F278AAD3AB425CEAFD34F27A6F7FCCFA7C251852AD1507 - 6EBAF9AF97E47CE7F0EBFE0A3BAAFC1FBF7F86DF1C3E1B7867E28587836E25D1 - 2E1B50B686E756D3BC891A29104CC1D25F2F695054A12147EF0F5AFA7BF6AFFD - 943E17F807E08D97C4AF85BA443A6691E228AC99BECD7B2C96CD0CD89229238E - 4DC577861BB2FF00294501465ABE69F0B7C44FD98BF6A6D51E6F8A5A7F8AFE10 - FC50D4A690EB5AEE9533C9A56A77B231134D2412097C969198B3A048914B37CE - 3191D478B35FF8A7FB27586BBFB3D6A979A4F897C03A79175A75FDCD81174B66 - D309E19E1915F0A1A4600A3F98AA647556E057CB72EBA687D2F4D4EA3FE0B47F - B447C44F0BEA7F06FC31A4F8EBC61A5F8517E1278508D1EDB57B88AC11DF48B7 - 766112B6DCB6E3BB8E71EB5F0CFC31F87579F10F48F166A10EA16F02784ECEDE - FEE2291DBCD9D26BD82D3318008255EE109DC4003D4F07EC8FF82D2D89D4FC6F - F0DA3546F32CBE12F835B77738D12D09FC839AF8CFE095EDDDB78EE6B286668E - 1D5ED5AD6EE30389A359239C29FA490C6DC7F76B7A4B4D4897747D2FFF0004FA - F85DAD5DFC506D4F4196E9B5286C5E7B61A3FD925D662500A3C9145732216E18 - 3108EAC54750B9AFD19F811F111BC23A3B586A5A829D46DE532DE9D42D1F4AB8 - 84CA58869D2E1C7EF642AEBB96E664629B50801547CCFF00F04A1F82BE19F1F4 - BAADC6B5A3DBDF5C5958B18A60EF14D6C4DD32EE49232AF1B6171B948207422B - DF3C6DE1793C1FFB68782FC27A1EB97B34DE23D0EE2711F886793598912DD6EF - CA84F9C5A56899A493EFBB11962B835EDD3A3569E194E9BDDADBCD9E157A94AA - E25D3A8AF657FB91DBDBFC69F0BE9BF19B5ED3F509A18753D42DED2578E69021 - DA88E026E936863F31608A58E2424020E4F7FF00DBBA6C76FBDAF7FB342AEF54 - B86F248503248593195C77008F7AF86FE347C3CD474CFDB0FC3B0DFE93E1CD0E - 3D43565D164BDF0EA3AC49703ECE4CA914AC7685037007A3BC9C9040AFBE3E0B - FC13B1F86FE28B7D3EDF49D275A56D3A59273711ADBB5C490C90289CC20341E7 - 1F35F2C89106DDC91815D997D6AD3BC1AD9EFEACE3C7D1A34ED35BB5B7A235BC - 1FF09FC41E28B813DF5C1D374523EE344D06A379F43C8813DCA79879C08F873E - ADA16936BE16D322B1B3D3FEC5690E76AC0A194927249C65D989249661924924 - 927358E91586923EEEBDE172BDD7E7B545EFC7EF6D501E39215BD319AD5D324D - 5AEED966B1B8D1FC416EDF2878D8DBB7FDF69E6239F60A83DEBDEA7151F5FBFF - 00E18F06A49CBD3EE34E0BB8669762C8BE6373B0F0FF00F7C9E7F4A97663FBDF - 8D71DE35F8F3E15F8729E5F8AB51B3F0F4CC3F7706A17300F3C8EC0872A3FE06 - 57AD78D685FF000547F85FAB5F341147E2C8FE42F1B5A68F73329C1DB8036796 - 7E6CAE7904E3A8C35635F32A1424A356695FFAF91B50CBB115A2E54E2DA5FD7C - FE47D217FA65BEAD6A60BAB786EA163CC73462443F83022B9897E0FD8E9ECF26 - 8977A97876666F308B29CF9123F669226CABE3818E303818E2BC2BE23FFC1452 - FF00C30F6D71A3F817571A6F9C52697C4F3DB692B3AE323CB68E495C375214C2 - 49E7818AB1E1DFDA27E357C5B8A47D03C2FE1BD06DFECAF3A4B75A36AD781DC1 - C79692C82D9198EE5232A01F9BB2935C32CEB0139349F335FCAAFF00735FE68E - E8E4B8D8479A568A7DDDBEFB9EDD12F8B3C3C8AB71158F88ADC02AB2C58B3BB6 - 3D77329FDD9F4C2E0FD6BE16FF008293FF00C14E7C33F03BC49F127C0F1E83A8 - 6A9AD78DBE1ECFE0DBF8A793EC874479AE56E619DC6D7DE7CA3B820C7DF52580 - 209F2FD1B56F8CFF0014BFE0A39A9785DBE206B5E1DD69B50962329924582DE5 - FB190C9F6786711A2840C84C2E0E470E71CF1BFB747FC127FE25788BE23F8935 - DBBD5B43B8D62DBC21AA78D6FAEA5D76EAF975A874C16CB7090B4D009A298453 - 215499E456F2FF00D6A920579B9963275A83508CB953D5BB69FADFE67A996E0A - 146B2739479ADB2BFF00C358FCED8FE1C4FE2596E27D26EADB506B77DD2DACBF - B898A93D4024AB0EDD460F6E4565D9DB5EF83755F2EEACEE6DDA3625034679E7 - 839E9F9546DAE5D683A80B8B499EDE7889DAC9D467A8F7F706BA8F0D7C4F93C6 - C16C356B784994ED4B841B406EDB97A0CFA8C0CF6AF015ADA9F40C5D4BC49A6F - 8A3C3B3059A386F9537189FE562CA7391D8E4038039E6BD4FF00638FD933C35F - B41783BC75E29F18F8F1FC0BE19F87E96325FDC47A4BEA124AB752491A615581 - 186455E15892E3818AF1FF0010F87974DB49B30C7BA07DEB2EDF9B04818CFA77 - 1F8D7D0DFB10EED47F640FDA834F5E77F86F4ABE03FEB85EB3FF005ADE1AEE67 - 3D8D69EC3F634F870AC24D4BE327C429D3FE79A5BE9D6B263D98472A8FCCD513 - FB637C09F04C4E9E10FD9E74D9D55B227F10F8867BC2C7B13115653F81AF94E4 - B48834885BF7DB9B01871C7A1FF3D2BE80FD9AFF00635D23E387EC5FF19BE26D - C6BD796BA9FC337B14B7D26DA042B742E254532C9236485DBE600AAB92533BB1 - C198A954938C16BABFBB50938C1734DF65F7BB1D643FF0543F1A2CCBA7F817C2 - 9F0E3C08F707C985F40F0E8FB4E4F002972CACC738E13AD64F867F65DF8CDFB5 - 5F8E5B54D62C75CB8BCBA6025D6BC4F2496F0C6A0F014480B955CF091A363200 - 5008A77ECDFF0000FC27E35F17F836DEFB528DBFB4EE754D3EFB48B75F2EEA05 - 86C0DCDBDD9903173BE577419181F67032C32A3E9DF10FECD375F01F5DB5BAB1 - F8897FFF0008CDC6A3F6092DB5AD38DD4D6BBF705669D084DB9EBE698D79C672 - 4648D37CBCF2F87CADE44CAA24F963BF99A7F0DFF62FF0EFECD7F0BF58BAD3EF - E1D67C5924416E7569A200B8DCA4C100DC7CA46C637292E58F2595401A1E06F8 - 33258259DC78AB4BD1BC7BA95D1896E8EBD792DE240F80024237F97B02825559 - 1C6319EED5D45A6913476B247AF5BFDAAD5668A2F32C94A433F2197E62C50E40 - 27113B82B820915B6DF1A341D7FC596B169CCCD1E9F3416E418C288595423A8F - F75CB29C67054F7E2AA5528549FEEF651F4D7F5328C6B463EFEEDFE076DA145A - 3F82916D747B33E129264DE90E981B4FC24647DF7B72AAE41652016206781D6B - 2EEFC33A65F5D493491DECB24CE5D9DAEEE09724E493F3F7AD1D5BC41A6AE98B - 7135F5A40AAA76379A30325793CF7207739C7E15CABE95E229D8BC7A1F8DA68D - CEE5923F0FDEB2480F465222C107A835D198E15CAB5E11BE8B6B1860710A34AD - 37D59F6F5EDE43A6D94971733436F6F029796695C2471A8EA598F007B9ACAB6B - 8D43C5B22ADAFDA349D34B0DD75247B6EEE07FD32461FBB53FDF906E3CE1002B - 257CBBF073FE0A9FF0E7E377C71D07C3234DF15DE6A5AC5E8B7D32696DE14D3E - D672098F119937EF240512B82416C8F2D4915F40EAD7DE33F04E99757CBAD68B - AB5BD8C2F3B43AC6912D94C5514B1DD776CED0A9C0EA203CD7D83C642A2BC355 - E5FD7E47C94B093A6ED5347E7FD7E67947C2FF000EC3F0DF48D0ADECDA49D752 - 9757D5A6799CB3492BDC427713D4FCB391C924F724D7CEDFF054CFDB9BC45FB3 - 55F782F4FD1FC33637B1C939D5DB52D4609A4B34913CC816DD4C6E83CCC33B1C - B640319039C8F6CF851F15AE3C7BE1FF00095E47E13D6A6D3E3D2AED449A75E5 - BDEB32F9D0C6CE54B44FB730646D462C1B81C7373E317C66F8790F812FF4ED62 - ED4F1FE9BA46ABA6CF1CF32323AA8304D182CA5CAFCC14A8CE73819AF07DB43E - A295ECDFEAEFD4F6FD9CFEB8E4E3CC974F456E87E6EDAFEC9BF0C3F6FEF186A7 - E2DF04FC5ED2BC2FE3CF175EDC6A5A87837C61079622BCB891A4952DEEA3C19A - 3DEE4A6C85D82EDDDF3022BBFD77F6A8D53C3BF02AE3E00FC4EF01CC7E22F836 - 28F4787C5515CC326FB6B799658436E412188C4A14323B07CC6C541626BE3EFD - B33C2B63E0EFDAFF00E2769BA7E96747D1ED7C57AA0D2AD1206B65B5B43752B5 - AF968402B1F9262298E0A15238C57DBDF0F3E39F807FE0A09F077C35A0C76F71 - 27ED45AD5BE9FE17820FB25D37F6F325D4481C48AA6DC33C6A2466728570EB9D - A1457CCBD357A9F4DBEC47FF000536B05F117C7DF05D9150CB1FC2BF085B3F7E - 1BC39627FF0066AF857E0EE9D259FC6486178DB7C026490019DA4020FEB5F657 - FC153FE2C69117ED6BE25BEF0E32EB5E1DF0DC5A7784F4EB98E4DB1DE43A6585 - BE9D1DC83CFCB235A09063FBE2BE40F84739D57E38A4E4C8A970679D93CC2777 - 05C027F8B07D6BA2927A194DE87E8CFF00C1273C3ED73A6EA9A85C6A16B60B0E - 9F39124F12342BFE9CF82C4ED7181DD64439EE4715D77C56F8C7A2783FFE0A25 - F0EF579B5DD2F54B5B0F0F3DB4B77A64ADA9ADBBF997800640E5831320CA6F63 - 8C73CE2BC1FF0062CF855E01F1B594D378E35BD6B43F2ED9EE21BF8ED5BECCB2 - 79E546E79619615014E0960A323EF135E957BE0EB5D03F6EFF0084F69E11F137 - 843C7D6D3E9137D8E60B15ADA921AE3F713BDA7980BEDC6196307951B08193EC - C6759D18C61156BAD6FADFA688F1654E8FB794A6DDECF4B74EBAEC6E7ED47F14 - 2DBC67F1BBC1F7D670DF18ECBC4CBAA3CED6C6D94A88635DB890E6327CB0403C - 05C9AFA8349F8E1F14B51F1DC0DE1FF0678574F55B0B94177AB6A171730EDF36 - 00C4AC71C5F30654FE3C1DC483C0CFC9FF00B5D78BF678C1A7B9D2ACEC924F1C - DA4BF6AB2BE86EE1DB1DACE8D0A01B65619190C2309F2E090DB54FE857C09BDD - 0FC4DE2DD2FC41A0C2B0D8EB5A4DD4F138B77B332A34B6FCB44C1486F9472573 - 83C1C1193034EBCE4D42A72F7B2F37DFB118E9D1A708CA54F9BB5DE9B2EDDCE5 - ECFC13F1FF00C75A69B8BFF1DE8FA12CC418A2F0F69505BC40739CC971E7CBDC - 60A9EDEF54DFFE09E9278BF576BCF1678EFC5BAE4D2A9497CCD66E5A3953FB8D - 1E44641E0E3681903A62BE8C9340B3965693C948E66396961262909F76521BF5 - A7AE9B736FC437D27A05B88C4CABF88DAE7F1627EB5EAFF64C64EF5A739FFDBC - D7E0AC7951CE2A455A8C630F48FEAEE7837857FE09BBE03F03B79DA3A7D8AF32 - 1BCCFB2A15F73C624DC78E4C84703E5AF8F7E25FEC4DAC78DFFE0A4DADF86F46 - F176BDA0DDDD4075C6D4F4FD935CDBA4704188D54BC21801204CB7CDB703F7A4 - 923F4F96E6F201FBCB459BB036F28CB7B957DA07D371FA9AF21B8D1ADED3F6EB - B0D5A7D1F4FB28E4F045C08F549DE486EDA5FB7461E0DAD88DE321D583F24321 - 0A7048AE5C665B8383A708C2DCD249EF7B7AB3AF0799E2E7CF394EFCB16D7A9D - 87866C34DF04C10DAE97AC7F6549811A45AB58AC7E7B77209586491C9EA448C3 - 9E9C8AE864BED5AD79BAD316E94FFCB4B2B8566FA94976607B2B39F6AD978D67 - B665655923997E60795753FA115927C17616EBFE871CDA6B751F6295A04CFA98 - D4F96C7FDE535EF429A82E58688F0A5539DF34F73F367E0EEA31DF7FC167BC45 - 33A9B78D7C577C999B74647FA24D80437DD3920638EDC64E4F71FF000582FDB5 - B40FD97FE20695A59B78F5BD735CF00F88F41BBB04B83049656DAA8B6862B876 - DAC18036F291181B9B67254106B84F8136335C7FC164FC5D12AC5A848BE2DD5D - 08BB608B3E2C6E73BCAA103201E898CF6AA5FF00059FFD81A1F8D1F1AFC0DAAE - 8090F85FC49E25D2F54B6B9123AC9A5DD1D36D7ED510411A892391D5A442C536 - 9DB19DB90C4FCFE2399E0EAF2FF37EA8FA2C3F2AC652727F67F43F25F4FF0086 - 69E38BF9E1D17548CDFC41A75B5BC4F2CCCA39628EB90C579241038E79C1C54F - 13787354F0B78A64B9934D92DE191C4A04617CA462016505491B43640F503A0A - C57D526B49A3B88249619948923746DAE87A8C11D0D751E17F8BDA86A720B5D5 - 923BAB791B63CBB36BA8F52070DF9035F351B5B53E95F91666F1769FE22F0FB4 - 17529B5D45A22A564520391D0838C7381C7AD7BBFF00C13ADBEDBF0B7F692B06 - E049F0BEFAEFA7786446FF00D9ABC2BC53E1A5D32DEE5552368F06646D837290 - 3B375C633C74AF74FF0082606ED4358F8DDA6FFD053E11F882003D4ED848ADE9 - DCCE7B58F9875FB6F2F5090A9FE23823BF26BE9AFF00826BFC4A834CF85DFB47 - F81EEDE4487C5DF0F25D42D9563670F736132C8A0ED0768F2E598EE38036F5E4 - 57CDB771FDA76B7F79335DA7EC8DE3E4F877F1CA192697C9B7D7348D5BC3D396 - 38522FF4EB9B45DDEC249A33FF0001AAC3C9C6A292F4FBF4FD49AD0E6A6D7CFE - ED4FA3BF67FF0084FA5F8C34EF0CCD27DBECAFEEBC6969A4CB7D617925BDD241 - 71A748C888FF003227EF222721093961C8E2BD97E206BDE22F00FC16F145C1F1 - E787FC55E1B8E092CE74D72C9EDF53B492452B1FD9E68C1496E01C11B9436E52 - 32A412BE6BFB3569B6D359E8B7122B47756DE3FF000BA47711B98A78A3923BF4 - 708C385E550E4FF741F5AF59FDAB3E1343A67C18F126B13EB16775336A365A8C - F67A8C4BF688D8CF6E1BECD2311E629F9C32229230C4E3219AA29C29A9455BFA - B18B7CD51C5FF5D7F5352E7E2AF83756F05EA3A0DE4571A2EBD61A6456FA743A - 822A24327961631BC31842B7C8CAFB89C2920A9C83E0BF133E19FF00C209F19F - 44D2F4E93C45A2E9BAB7F6734D3DE88D27B8334AE1E48F61DB24188DD91A41B8 - E067D4FAB7ECB5ADEBDF1274FF008D10DAB5D0D36F24BD6566B117492DB2B4C8 - AA57036900150C18005B9E14579AFED4FE36D43C4DE2FF000FDE4B058D9FF61A - 436369E4337EFA3B7895D1DC1EAC3ED0CA76F0304738CD79BCB6B58EC5D4FD2E - FD937E01F85F41F0658DFC9A6A6A9E20D1EF2EEC5F50BD76B9749209DA21244A - E4A4259151B11FDD2C46E6EA7DA9E172E7E57EBE95F977ADF81BF6EAD57C2B78 - 7C23A0F89974B8EE64FB5C5A2DAE9D78F0DDB849645545324AAA6396161B4630 - E08279AF3A97E14FED98256F36C7E3B09327781A05F8E7BF021C7E55F4986E22 - A54A0A10A6BCF5B6A7875B239559B9CA7F87FC1380F84DFB4743E24F1E7C19FB - 2E9FA569BAEF837527177AAE9F6C96AD7B119216B68DFCA4C3BC2164FDE90D23 - 79D825B62D7D936DF1BBE3378A3C5DF127C1EDAC78CA55F07E8F7336B12AE9B6 - BFD9B6D11B576DB24F2A99519D46546159CEFDBD067466FF00823FC7FB336A9E - 18D77C1BE13F0AFC415F0A78965D6EED752D6E6B5BAD734F138960B3920B856B - 35648C0899B3893258852401E8DFB2AFED35A3FED39E1DF8EDE24D3743B9D075 - AF15BDB5A34372F086B98C99CC488EB8F30C51C9B4B103236D793530F5694D29 - 371DFCB6BBFF00807A5F58A5562E51B4BF1DD9C4783BF65EB6F2BC2EFE23D6FC - 4BA5C7A6F852C9A3812DAEDAD2D656332C98DA7CA5CBA3163B572770EB93567E - 287C00F01C1616F79A6FF67EB567A1697AC6A375334B14A63963B36580FCAB90 - CAC5DBE6E7E41DD457D19AFC91693AC9B9BCB85B1B18F4CB5B759643B149F36E - 656F98E00C09579FF6BD8D796FC53F8F3F063EC3343AF78B3C13A93EC6DF612D - DDADEBDD3904052A1DB1F79865F006EE4819AE8587C324A7369CB4DEEFD7BFE4 - 72CABE25B718A696BD95FF0023F28AF7E2AF827E3C78634DB3F8A30F88F4EF10 - E8F17D96C3C51A25BC57935D5A86262B7BDB79248FCCF283154951C304DAACAC - 1411DCFECC5FB4A7C39FD90BC4BAD5C7C3E9B5F4F126B9A44FA21F166BB64B1D - ED9437055268F4CB581A4F2659620F19B87769024AEA8232C5AABFFC145BC3BE - 1283C79669F0BFC0EBE1B5D244897CD14A5DAF8CAA8C8EB1B31558B663853C97 - CE0FDEAF2BFD9A7C23AB7817E29E9FE3CD7BCBD174FF0007DCC57BE4EDB6FB65 - E33128A2286575DE412090C0A85C920806B92B24B4D19DD464E4AFAAF23A0F8C - 9F107C31AE2DD5A2DF7D96DCC7E5279EAAA73FC276025B00E0E76D79BFC0145B - EF8C962D1C8A47933F43C8FDD9AF66D67F648F86C15E6F127C6CF87D14FB0B79 - 5A2699A8EB370C40E1772411401BB7FAEDA3D4D67FC33F83DE11F845E206D4AC - 3C69E10F172DEC2F6F6A2D8DD5ADFD83928C5DA09D231CAABC7C348B87638DDB - 4D453A8B99234A917C973EB2FF00827A7C32F8E07E1FFF00C265F0E754F0943A - 74A27B0FB16B3B9BCCF2E61B87C91961BD943062E9F748CFADAF8B3A078DBE28 - FEDE9F09F4FF008A5E05F0CE8F71783CB921D22E43DB6B302CCCCF2C98919811 - 9230CDBB038AF5CFD943C49FB3ADA7C1FF000869573E27D3FC29E26B1115E6A1 - 35F5A5DA19AE4FCD2C7E7BE53C92CCC76A4A801C101718A77C754F0C78D3FE0A - 75F0374DF0378B1B5C812CCBDCDE43A91D5A1B233CD208634965697E622272D1 - 9276AEC385DC09FA0A74FF007295F4BAEA9ADD74DD1F3B2A9FBF93B747D1A7B7 - 7BEA791FED216DE0DF873E05F13F867428FEC771A1F8F2C6F22B6820676B1B73 - 0DD2281230C005D70159F2719AFD34F035D35DFC46D2DDBCC0CFA7DD6E1D5724 - DB9E4FA8C57C3BFF000504F84D7DE14FD98FC51A85D43A3CACBE3B815B518ED7 - ECF7975279F322C45773B4806377DE50A1B80D86C7D99F0666D72F35FD0EF751 - F0DEB1A743169ACEF3C8D6D2C532C8916D286295CF38276B056C0E456D9738C2 - 6EFF00D6ACE7CC3DE847E7F923D91507E14E58C0C7BFE95135F436FA7C979319 - ADACE152EF3CF0BC312281924B3800003927B53FC4D751F847E1F6A9E29BCF9F - 43D1616B8BB9ED48BA68D557790238CB3B36DE42A82C72300E467D878BA2B792 - FBD1E3470D55ED17F712797F5AF2AF859F0AACB40FDAA7E29F8AE2B7924BCD71 - 74EB59AE594058CA59C00DBA1DD93F2AC3231C007CD519254E3E62F19FFC1C5D - FB3BE9F21B4D0478FF00C5734CE2247D3F4716A9F31DBB83DC3A30EA48F933C7 - 4AD2FD873FE0A516DF10FE1AEB1A84D1EA1E23BA8F5D9E3BC9A7B9585E266556 - 4D8BE5FF00ABF2FCB5193CB24841208C79B89CCB0EEA422E5A277FC2CBA75BFE - 07A987CAF12A9CDA8EAD592F9DDFE47DACDA0DA87668E25B776392D0130B31F7 - 2A467F1CD1FD9F7512FEEAED9813F76E230E07B02BB4FE2DBBFC737C15E376F8 - 87E0CD3F56B4B59AC22D533B3CEDB23201BB2700E0F2B8EA383DAA2F8C365E30 - B2F829A3EB9E1FF13681E1DBA1E2BB1D0AF9D7434D59EEA0BDD56CEC51D0CEFB - 2092159E4728639433003700093D188CC68D2A4AB24DA7D8E6C3E5F56AD574AF - 66BBFF00C03F38FF00664B991BFE0B3FE2F668CC922F8C7C400AC7DF1677A38D - C47A77EDEFC57A7FFC165FF68ED27E03DCFC23D4DA1FED0D6AC352D52ED74C97 - 75B3CB692E9B35A3486428708259E2E80EFDAC07DD35F3858FC59F17FECAFF00 - F0551F8CDABF862CEF3C69E24F09EA1E3190DE186DADE4474B1BF85F5168B625 - BFEE41FB4989061846E8AA30A1ACFF00C14BB4EF097ED59FB447863C1B6BA97C - 70F08F8CE6B9D3B48D374BF8AB697D26A16B04F06A32DF48CD2EF0D1FDAADECC - AED9C2E6EAE0C71B05213E76A666FD9CA8C17C4EFE9ADCFA5A796AF6B1AD37F0 - AB7E07E6AF867E0669DF1175C5D1F4EF100D375699765947A8C3FE8F76E3A47E - 6A728E7F8414218F190700E1F8EBE16789FC19AF3B6A161FBC8422C8D149E621 - 28A173D8F20679C54DE34B7B8D2F56B88B7347359DC3C0DB491B5E372A483F55 - EB57F48F8E5E20D6EFFCAD6E6FED48E3C2892E17FD2197DDFABF1DDB24FAD795 - 193FB47AF249FC22683E3DB1BBD07EC3AD34D6D38DD123F965E39148E3247208 - CE3A7402BDD3FE0920AD79FB4A78874DEADABF81B5CB2C7A936E1BFF0064AF1A - F137859224926B74536D76A1DBE507A659483D460FA57B2FFC11BDD9BF6F1F0D - AF3E5CDA66A91CBEC86CA5CE7F215D14CC6A6C7CDF631EF82127FE788AC785FE - CBADDABF649D1BE98615BD69E5C6D1AE7F758D9BBD1738CFBE0735CFEAFF00B8 - B866FEEBE7E9CD268A5A9F58683A3789F507B59341BABCB3D3EC6EEC6E6F8C57 - 86350E6E8C36F318778F38A4B200BB412BE61E80B1AFADFF0069BF8970F8D3E0 - E789BC13ABE9BA8C9E28D16D4D86A37F6BE6DCFD9E485C911CF2CE90C85C3460 - 36D8A44E58EF04E2BE38D37C4DAE693E176486F5AC92FA654BA8ACEE5E38EE62 - 4B859610E323715711B818215943019191F567863F686BEF17783EC3C3DE259B - ED1A97887C2379ACCD37D8C02F3FDAEE6DC4FB555362CF6F1412339043BAB4CC - 73231A9955942328AD992E9464D49EE8E6FF00E09A53EB2AB7D63E1A9219355B - 8D1EEDEF6D43C07ED96E55CC8AEEE0EC382AC3A67691900E4737FB57E937AB61 - F0EBC4579A5AAC5E22D2E48A2BC5B5F216F96210461865882CAA55491B73C1C6 - 4F3C7FEC75AEE9FADFC41D763D4AD2D6F2DF50F0EDE69304324584B26F2418A7 - 0C394D8C1DB78E540CFA0153C5171E268BE15787D357B8D4AEB48D2EE6E6C74E - 4B98CCB6F6CDBB122C4F80DD153208C0E0E6B9797DFB9B736963F487FE098DFB - 7FD9BFC545F879A97C41B596FF00C456F06A3A25E6A9A535BDAEAD782D2086E6 - CE66DDBE29235B7844723BFEF70C02E4857FD10FEDBF1A7FD0034493FDB4D664 - DADEE3F71D0D7E1AFC3BBAF11F8FFF00690F09EA5E26F07F84AFA6BAF0F34D6A - FAF491CD6F0DA94B4315D212A5B72A4242AEEDCA1E400AE79FAB113E20D8A2C3 - 05F7C22B58211B23863D4F5444854701428BDC0007000E062B4860EACB64CCA5 - 88A6B767D75E28F0C5AF8BBC3B79A56A11CAD65A8C0D6F388E5689CA30C1C3A9 - 0CA7DC10457C77E14FF825B6977D6FE28B6F087C44F8BBF0DEC23D59EDA3B7B3 - D5A19AD2E9A35556936ED12BA86CA82D203F21E3B9FA0BC4DE1FF09F803C177F - 736FFF0009578621B181D834173776A9031E9B5E66FB38218F00B6DE8067815C - 9FECDFF1364F1BFC28D1354F117C4AD3F49F126B0AD712E99149650ADBB3FEF3 - CA30485A4DE036E6CEC7058864560D9FAEC6D3A356B45565B26F75E9AEDDCF94 - C2D4AF4E94A545BD5A5B7CF4DFB1F287C57FF821B7C44D58CD269BF143C2FE32 - 661C2789F4DB8B39587A19636B8CFD768AF86BF697FD807E2A7ECBB7571278AB - C1BA8693A6AB958F52B36379A5CB93C6DB94CAA93D924DAF8ED5FBA9F0EBC59A - 87C4AD26F2FB40F1526A76765772D8C86FFC3D25B06963628E11B29B9432B0DC - 1586548CD748C9E3010C90CD1784F5186652922133DB8914F552A448181F7FCB - B571CF27C34D7351BAFC51D14F39C4425CB56CFF0007FD7C8FE6C7C37F10B56F - 0A4E2D24692F2C738304ADF347FEE1EDF4E47B77A7789342B6BF125E59A308E4 - 2588230D193EB5FABDFF00054FFD81BC03A67C09D7FE2159FC33D27C27E25D32 - 5B5C5E681AAF97632F9B731C4DE65AF9688490E465114827249AFCF5D1FE1E5B - 792AE5BCCFBD91B703E515E2E2B0B528CBD9CBF53DDC2E2A9D687B489E576BA3 - 47A7D9C724CA599865549E4FF9F5AAD3788AFB4997CCB5DB6E776D1B073F9D45 - F13F55BCD0BE22DD5ADB95589821F2D9430CE39E7AFEB5D67C0AF05C1F15BC4B - 6763AAC170D6F34E5196CEEA2B491F0858012CC1A34C903E660463B6715C328D - B5676AEC8C2D37C6DAE4A7F737D711EDEA518A85FAD773F0F7E366A3E07BA171 - FDAFA8C9A90561138214C6A54A9DAC3E6E412A493D1B18E6BE8AF877F087E1A5 - 96A1A0EADA0F82F53D2EF7C25E3AD12D357B7F13EAC9AB5B6A1653CCE8D902DA - 188A8911436637575901040460FF00A05F163FE0947F093C5FE0CF1559F85F51 - D4BC2C6EA1903697697BE5D8DCEA7106F29E68E41925248C0548CA280D270C18 - 6DDA8D1A937FBA7E7BDBF130AF5E9D2FE2AFC2E7CAFF000C3FE09B5FB587ED35 - F0EB439A2F08DF2F84B5058B5BD34EB1E2DB586CD84D0B7977490B4EEC19A295 - B9F2F387AFB59345FDA43C17E33B1F07FC49BCF10CDA95E784B529FC0FA7FC24 - BB7863D3EF607B38E0975295628435AC2D2A26FB8F347EF3E62F9E7BCFD91FF6 - E6B3F867FF0004E3F0878866D25B525F087842DA17B2370B672CBF6689E38E18 - 9D8C9BDD8C6918DCA9F330EB9CD779E27FDB33C27F0E3E3059F89BE2169BAA78 - 7FC43A7E917BA3E976BA44777AEC77B6B3CD673CEC7CAB550ACB25B42A18B050 - 0B752462651C472F34AF6239A8F372C6D738DBFF0015DB0F892BE35D7B54D42D - BC693F8DF56F0B6A773752DD59DA1D253C357456C16190ADB84FB4C70CDE5A8F - 304AE1CF2F93C6E81E288FF67DF84BE30F186B9E03F86FA1C7A0FC3BF096A167 - 67A55D0FECB9AC45D5E473DEDE4AB6DBA2BDDCC4C8AB0B0091A2F98E7257B99B - F69DF03EB7F1E25F137857E03FC45BCF1A6B1672C97979AA68B1E9EBABDA9896 - D24112CD70C124646843CC2257686028588205719F1F3E38EAD6625D26E3E07F - C33D121D620B5D0AD175AF115ADABD84789951CC9040B22C6F1A36E567010403 - 192F8A98D3AD7E68C5E9F9EFE88A7529BF764D7F5A1F9897FF00B36F80FC3FFB - 40DF5BDCFC42BEBAD43C59752EA7E1EB2D2FC29A6DD69915A4B26F8A3B7D5351 - 9E36BA3123842628583046DACFC9AEFECBC43F0D3F620F1C37873C3B1EB1AE69 - 7E2290C136A7178922BA0AD081B2630FF674263318725A06C160E02CA386AF31 - FDA9BF66C7F84DE25D7BC3777E2EF01DFF00816F353FED8D074ED22CE3BFBAFB - 4799819360D1005166914492B46655442501C2AFAA693E178BC51F0EFC27E249 - 2CF54F895A9F876D67BD92DEF6E2CB47859A18716FE6234AF717516CB6759117 - CA92411B21941CBAD4BDD95E4691D62944FD00FD95BC4963E28F043D9DB3DE59 - 6B9A1EAB77A36A3736EAB70AD358B157B74C1DE17748241850C55C960075F6BF - 1678AB4AD7FE09C7E1BBABCB78EFEE3C5D61A8ACBA3DBADC283657F0DF8132BC - 91F97248B62F13658847209240207E7C7FC1327C67A77C16F85DAB697E236F19 - 6B7E30F895E21BBD6F53D62DA07B601E7220C22AC9E6AC81D24762A8A497C0DC - AAA6BAEF8EFF00B7D6A57DFDA3A0E89E0D856F2E2D62B886F6EEF62867825BDB - 68A6672157CC611A4CC321577300C0950B9EDA98BA4F0FEC7EEB5FA773CF8E16 - AAC47B5E9AEFFD7F5D8F2CFD9BF57D07E33FFC1567E28DE4B6571AAF873C73A8 - 78BE2B98E229311697B677F1B48AD1391222C736F2D1B1C804A93C676BF6F4F8 - F1E0FF00863F09BC13AA49E34F1EF8CBC65A7FC51F0E5EF8A2FF00C44935C7D8 - AD74FB7BCB36B64BCFB2C10C8A8279DC2A658B4B231248663F35FC18F8D7ABFE - CF7F1D2FBC631EB3A7E83A969379334D79788CD6D18789D2547552A59583B0C1 - 3DF90699FF000508FDAAEE3F69FF00D8F6F34FD3FE207FC24FA1784758B06934 - A44B78E1B3693ED016541E4C72BA02EEB906455322A9604A83872FBEAFDBCB73 - AD5ED6F33E50FDB9BE1F37C1EFDA53E206898CC30EB173756A7040782E2433C4 - 412391B640B91C12A715E1DF69965789FF008A340873DC03C7E5D2BECFF06DEF - 867FE0A25F07BC3FE0BF126B163E1BF8CFE0BB45D37C3DAB5FBEDB5F15582FDC - B39A4EA268FA29E49CEE018B381E27E38FD853E2BFC39D764D3F52F87FE2A322 - B6C1259E9EF79049FEEC908743F9D54A9EA5C65D0C0F067C5BB61A79B3D6232A - AB81149147BC11DC3639FC877AF7EFF827BE98BF03FE1AFC62F8D975F269FE19 - D0AE3C35E1D95C6DFB66AB7BB523D99E498D36961D42CB9EC6B9FF00837FF04D - 2F186AF07FC249F101A1F85FE05D3C892FF58D7C8B790275DB140C43B487A004 - 2827A64FCA6AFED87FB4DE8BF12B46D03E1DFC3AD3EE344F84FE052E74C8261B - 6E759BA6C89350B91C7EF1B736D046543B13B4B145AA7A132D4F054411DB22FF - 00754AFE9593E2118F339E39ADC9ED9A081376DF9D770C306E08EF8E9D3A1E45 - 62EBD0F9DBBE99A25B1513E8ED2BC63FD99E0AB51F66B3B8FED4B278CC9736C9 - 2ADB8DB6EE5E32DCACBC10197E600903EF57AD7817E20AF863C4BE33BEF155E4 - 6DE28D7A236D7536B16F23DD7D9C1B7F2208D540863468C105780AB144A981F2 - 9F03F0E06D4BE1868ED1C68CD6F6D196F9B9FF0052BCFD32BF5E6BA7F87FE3DF - 105BEB9AB69FE1F592F26BCB5B8B0BAB44B72CD716F260BAB05C171F2860093C - AF4ED594F71C7627FD99A04B3F89D0C0D7B0E8F1C2C1A296E9E18A3891771C1F - 3BF767238C36771C639C576FFB473EA5E1AD074CB15B8D4751D17CC62B23432C - 76B05C3990EE12E3CA264019C22724649279AF30F8256706ABF16743B0D5352B - 8B4D324D42149E45BC5B76B642E06FF3581085786CF6C57D49FB49793AF7EC97 - 756E9A84DAA4B6DE30751704C4D1CF12473246D94033210492DB4039F7CD44AE - 9AB0CF11F1CE90DE048BC39A83EED58DE698B78D696D76EAD0A324ADB5F2A769 - DB1EF21430DB8C915DD693FB4569F36956AF36816AD33C4ACE4DD124B1033FC1 - 5DE7C3EF0F785F52BDF8177DAF6A9A6D9C933496FAA3493C2C6158A29D6112AE - 18A2BB02A378C30FBA33927E93B5B3F024B6D1B342DB99413E4445A2CE3F8488 - B057D08EA2B1A951DF634A713E82FDB23E1BF87F59FD9ABC51A4DFC3E266B5D6 - E04D3847A5CF34CF1C9348B1C72794C5A3DB1B3090E57A21C738AEDFC23F0863 - F0878274DF0FD9EBBA96A5A5E976B1DADAA6A76D6772BE546A163DDB6042C768 - 03713938C924924F53723CD963FEEC32A1FAB123F903F991E95711016E47E95F - A04A9AE772F2B1F03ED64A0A070B1FC1982DAC66B786CB40B786793CE9174D86 - 7D27CC72412C7ECF28F9C900EEEBD33576C741D561DC60B8D76C63591908FED4 - 5BDF33048C817114C4038E9B81AEC235E5477A759C6AB180AA7E7666000EA589 - 3FD68E44B6279DBD0F967FE0A8EBAB4DFB1178AAD6E2E1E6825BAD3D5BCFB48D - 243FE99163E68E418E7FE9973EDD6BF32C7863EC3A4190AB7CAB20C7F77E5E7F - 515FAADFF053CDBA9FEC89A9E5D9ADE6D574E58801F7BFD21497F7CE300F65C9 - FE222BF3C75BF0C5C6B3A1496F636FE64DE55CCDB4B05F9521323B7246005563 - CFA57878EBCEA29BDADA1EF602D0A4E0B7BEBEA7C1BF1FAD9EDFE25DFC8BF7A1 - 0AFF008735EB9FB1969125E6B9A79DFAA5BC77174567934F8619AE4DBBC38991 - 166FDDE5E2675F9BB12464802B87F8D7E0AD5BC4DE35D5350B3B192E2DE588C6 - A5194B6E03046DCE7A8F4AF5EFD8E34AB7B0BEB54D7350B6F0EC30932C975A81 - 9228A275B76DA1CA4333ED660172B1B1E7819E478B286E8F7148F50FDA5BC316 - BA4FC2B8EDFC0EB1C3E176D4E3D4AFEEE5D7BFB4F55BF9608A458D2711C30456 - C882566089E639704BC8764613E91F8ABE0D3E28F12378B3C2F69691E8FA8585 - D4369A2F8C14EBB60BE4A194DDACB26F95988803471C8772EE2AC5A32517CA2E - 7E36C9F18FC31E22F877A7EA9F10AF75AF0F698FA5E8BAC69B65791681E29B79 - 711CED25A38091B4B148C4CB2AC5958436D8F6A463DC3F663F86FAE7C43FD947 - E1DDE4DE2FB186CF505103D958E9CF0DD5B4663B9B7129956E544D2125530F1E - 06EEE179E395B975669ADFFCCF03F843FF00050F9BC2FF0009BC2BE133378574 - 4D274DD645EB5EDFD9C5325F189609638583B2ED8967904982082634078C83F5 - B7C49BEF8F5E1CF006ABE30F166A43C2FE14D16D05C5C5CDAE976DA608977752 - 5B9F98B22AE382580EA6BE5BF0C7FC13A63F889F1B7E257C3FF107897C2BA545 - E0FD434BD516F350BF4F31A0BB89CCC6168A366793CB440C8005570BB81DB5FA - 76DF113C3FA57C38B7F01CDA8F877C49A3C3631E9434A934B94CED6C91AC681C - CF341BF0A8BCAA16CE0E735D11C5495A2DBB69DFF468E7A9878BF79257F45FA9 - F949ACFED859FB55C269FF0015B58B3BB25659A6BE105A1DCC1C9578E468C862 - 99E3A9504F415F612FFC13A74FF187C39B7F881A7DC43AF7F6BE836FABD8E98D - 66EB3DF192133450B19640A9231755666185C939E39ECB4BD17E1FFC2BF146BD - E2FF0010787CDA5E5F451C1787518E2D1C5DBA6F2B752B9B378DA46DC434C650 - A0B64004927B6F167EDB5E15B58E592E6E34BF0959B010A346B71ACDAF2A3684 - 367322AEE5E4663620F50320D72D4A8AF7F3EDB9D5084ADA76EE7E6EEA9F0F7E - 335BCB63A2E9BE0AF09D9B4978CBA9E9B69A72FEE2D4C8A5C348CE33F2B9766C - 08A38CA317259847DC49F10BC55FB34DA40B1DD781FC496ECE74AFB2697E22D3 - F55F14C72CED78C9776ED03DDFD9D6289204633C24096E079615CABAFB57C43F - DA53C0FF0013EE3C41A6DE78EB45D36D64944204DE08179672DA410BDDB5BCE6 - F239BC962D6E92AEF88A130606F902D707F137F6BBF87FF06FE217FC2117D6FA - DBEA715C84B1BC8753FF00843B4081CC61E06636CD708B957E240910CB9FBABF - 30D232DD2D7B6DA13CBB391E9DF097C15F1035FF001BF82F55BFD3BC752D9DBE - A96923EADE25D3E5875092C6E6C259FC9D49F647992D6E2DCC44C84362E90316 - 5118AFA7BF673D5345F08E9FAADAB789344BE9219AD2DE386DAFA1BFB88922D3 - EDA160F0C26471B9A36254820F247079F89743F88BA9FF00656A1A7EA1A4F81F - C3B757FAE69B6CBAB59DEDD7882F07DAACAF4A4B6B7F792CBF37EE9536429971 - 7129014A864F54D07E25F89FE04FC3CBAD574FF1343A0C76DA6BDB2437B77656 - D6A26505949DD0C804859DCAF98E8C1A4C061804E752EDEA5C6D63E6EF077ECC - F2FED35FB6278C3C23A45AAB5A6A3E27BD92782451144D631CECF2218DD7A88D - 72A8547CC141031C6D7EDB5FF04C7D07E00FFC13B35CD11A6F06DBFC6CB18A0F - 105FE9566F135D6A3A7DBCCEB2C9688D1A4E8BE59323A2008CD0B8009518E416 - 2F1458B789755864F105BEA9AB3CD3ADCDADC496B7370F2E1891328CAEF63F33 - 007827E56191599FB44FC38F1D7ED1DE36D37C5BA1D8F847C3AB6F636561A55A - EBFAC4D72BA5E9F6D6CF0881895CC924B248F2C8CCAADE63B67926B49F3AAA9C - 7AA220A2E9B52EE7E6F5E5A27D8B77972BAED25BF72C700727231D873ED5DEF8 - 3BF6E1F8A9F0EB43FB0E8BF113C5D6F63020D907DB1A68E15E802F99BB68F618 - 15EF1FB447ECE7E34F005E58EBFE22B9F871AE6A175A447696F1697A85CC3379 - 085A34706E11BCD2376D2C1F3803278AF8EBC71E19BEF0C6AD25ADD43F659594 - 318FCC56CA9CE3A1231D7BD7546A49A21C5266D7C44FDA27C45F16AFD2E7C51A - EEBDE24BA8B2626D46F5E61167FB81890BFF000102A5F0AE953788FC3179AD49 - 6F247A6D94E2DF3190EEEFB771E3B000AF3DF70C7438F3C5B5FB5DC470C7B649 - A46088A187CC49C01E95EF1F04FC252D97C2FD4345D466861BCB8BF3730D9C37 - 51CB3483CA55C9446240C8C73CF5A4E4F61D91E6F73E28D15AC658E383578EF3 - 04C6CC23F2F3E8CB8DDF883F9D63CFA87DA59B103B2ED009C7B0F6C57B047FB3 - 3F8B2EA48E6D3B4BBC8CC4C1926F3043E5B0E41058820F715D5F833E0878825F - 1E7DB3C55AFDD2DD5F5BCB0DCDFDBDF7DBB54B7FDD0447C3BA172B8500798385 - C640A7EF2576174637816D193E0CDAE15F74D6A30BDF203A1E7D7915E9BFB327 - 8217429B4EF11586A925F4724F358DDA0824B5BAD3DDACE6640EB8276B61C874 - 62AC14F23070787FC3F6BA5E8935DF8C2C752D6B4FB142F756DE62D94FAC46A1 - 9A40B260AA33EDC67E6C13CE7AD7A17ECCBF027C1BFF0009E6B9A65BE8B1C725 - D69911CFF6F5CEB11582B48CD37D9F305BAC73A88B0D2B34EA239B09B99C38AA - 89DF4338C95B53C23E10F875BC41F1934CB3589526B9B989510289464B2ED5DA - C181CF1F2907A8073DFE97F8E1E19B8F0E7ECBDE2AD1AF9BF7BA3EA314C3CD8C - 79922398B6392077CB80BC6DC6DC118C78E7C40F0A59785BF6CE4F0EF87A48E5 - 86096C5567E6E5A277487703F30DD8661C139C6066BE8FFDAC3E1B78BADFE197 - 8E34FD4E3F0D5EC3A7E95A65CCB3E9FE7D8BDB037B300441286121380ADF3A85 - 5C101B9A950E68F3F6B04A694947B9E14FE19B8D27E1FF0082BC59A2E9F7D79A - C6A177E458C36914E646BA8CEE8063CB2B26589CAC4FBB181B41193C2EA5FB71 - 4E750B8FB769F711DEF98DF685F36F06D933F30C7DA4639CD7D45FB28E87378A - BE16FC3D81B4FD6E0B7F0AF8C975692F7ECB27D916DE24F34279DFEAC3193CA0 - 54FCC43E471CD7C07F1C2286D7E3578C238D19638F5BBD551C0C013B81DAB595 - 18593D2FFD7EA4C6ACAED33FA563E20D345BC68BA858B36F4EB709B9BE71938C - F73CD6A5A4E977FEA64498772AC187E95E0D04DABEB024B8BFF1ED8E817D771A - E45DF86BC892152DBC2317650CCBC8C851CE4F238AE9749BAF0BC3A15D69D2F8 - DA059A38E276D663D580B867B89A440A91EFFB3E4B28500C0C49906724835F46 - B1D564F4A6FE6EC7CCCB054E3BCF5F467A478B7C67A4FC3FB09AEB5ABC8F4FB7 - B7B692EDDE50DC471825C800124F070A32CC4600278AF1ABEFF8293FC1D5F076 - 8FAC5AF8B7ED9A5EB969737904E9673DBB3416E1CC876CEB1B00DE54C01C7CC2 - 09B1F74B0DDD27F675F0D69BAE5B6A967A6EB5A85F5A09560BDBB5B680979230 - 8FC8856525C29DCC1318690F3920B47EC6DE119F5AD5AFBC41A4E87AB26B51A5 - AC3A747A622C16A05BBC1B50B1242F92F2A7EEC46162665DACA140E3C557C5CD - 38C52B75FF002EDA9D586A38483529B6DF4D2DF3F97E879BFEDD5F1534EF8CFF - 00B1E47A96866C753D0EFB5DB0F22FECB54B6BDB7B80B2C81B6BC0EE8D878CA9 - 01B2086CE31839BFB25FECE7A0EB7FB2F6BFAC6B1A4DB5D5E6BD36A16905CCA9 - B9E0B516E21210E78CB19B247D3A55CFDBDBE1BC7F08BF651D1F44D1DA1B5F0F - 58EB16504165145E5AC2155F6851D028DA400A0718CE4E49F60F877E101E05FD - 967C2561E5F9771FD8ED3CA3D1E64F39FF00F1E7C7E15C38E9D4E48BA97E6EBF - E5A6E7760E34F99FB2B72F4FF83E67E196BF7D69E14F156AFA2EA17D630EA5A6 - 5F4D6F7104970A8E8CAE41E09CF38AEBFE1AEB17DA15A5D6ADA05E3DBEA562AF - 34535BBAEF50217DDB5BA64AE467DEBCAFFE0A55E188F47FDB43E264516369BA - 4B9618FE29208E46FF00C79CD7A2FEC3DF0DF4DF14695A2E8BA8798D6FAAEB90 - 46638D824972ECB1EC8518FDD691F081806605B211C80A7939934EFB58EF71B3 - 4D1EFDF0034BD4BE247C4BF0D78D2E3E227883537D36E7C3F77E25F0EEA77173 - E5D85AC97004F348E646824846C766C7CAAA58B05DC0554FD99FC69E34BBF873 - A2E87E0DD305F6A1E1FD5AED750BCBCB7B1BCB30BB4B431DB0998162B8958EC6 - 00F98BD8823CAAFF00E3BC7E36175E1BF87D7DA6E83A14D0DB88E4834CB98F53 - F2158C1E5493B090EF56320133166505C46C8ACCA7DAFF0066B8A4F85BE3BF12 - 5BE977DA7E9F63E13F10C3A9033DC08D238E4B49E38A188481434C0C9B0EE1F3 - 6D63CE0570EF16AC6F2D1EACF40F825F0BF54F1FFEDDD63FF0995ADE785FFB6B - C212DF5841A7CF6F1BDE436D3881164642E50B42EFB82346C47A29E6C7C54FD9 - EFE28FC60F8EBF15BC25A3FC52F105CD9F86EE34BB8D2ADB53D5EF63922FB642 - D7660B710BAC4AA8CA533229013196E589DEF881F1964F0AFEDB1F056EA6D235 - 45BDB0B6D4745B9B4816D2FE468AE2D992DD116C679DE461247B8A955241C0CE - 491E81F013E387857C35FB53FC62B8D7BC40BA45CEBABA20B6FEDA80E97712F9 - 164CB28F2650AF128908015F92369CB7DE3ECD3C251E5507BDF7D9DADD8F1EA6 - 2AB2939ADADB6FADD1F2BEA9F04BC57E10FDA33E1F7C31D5216BF97C51AE9D1E - 5B8B59E08D2D65478A594A4891A4B232C6CB316729F3700B95047D8BFB53FF00 - C12DE6F81BA0FDB06AD6B7927FC25BA8697A7DE5F5EB08F59B1F2ADA6B3712B8 - 9024CA5EF12566609E65BAA054196AE5749D5FC37F12FF006FBF875AC43A8432 - 697378C1AE2D354B7B2B8BA9229A6821B688C6A8426D79090CCEAC0EC003264B - 57D8FF00B60FECD31F86FE0F6B5A7EADE3CF1C34163AEDDF886D9EF67B2B3B4B - 39B51BD325D46B10B6173E5667B82B1A4E71B8F2531BBC6853849C979B5F73D0 - F61B924BA689FDEB53F1C7E36FC24B7F879F062E97C5DE2AD43C2F6BE3DD6ACA - F17C44D126AB63E1CBAB54D4A08ACEE45A949639EEA090C81BCA21163DACCC4B - F97CC7C42F817A2FC1EF85D6775E32F8A5A845AC58EA70E97A3369FA4B5E5BDF - 4915BC170927DAA69E2F214473C663223917E51C8C135F417FC14F34FD3F46F8 - 71F0CF5ED2EEAC7414B6B18AC353F105F4116B5E1E8818D847637FA701297776 - 0ECB3FD99CC6514647253E5EFDAFBC391D97EC69630CF6579A4FD9FC4D2CF6B0 - 5CDDFDA207CE9F6DFF001E4E4E5ACB68060EE2168B3EA7B274D464A2B6B2FC91 - 85393945B7DDFE67BB7C15F0578AAD758F0668763AF785350D0FC077A2F92E23 - D5EDEE66768768B49DDA08D23F2A28E5B948621BF699642EC4305AF61F879F18 - 3C4DF06F4ED763F10787AC2EA2D362FED1B486F750FECC478A3749A76C48CC1C - 11122AE028CE4019233F3F7C17F157D8BC6DE04D3759D427F10E9BA9E948F636 - B3465974A6DC4BC4DF383E5882D86DDA7E53B7E423E61EE07C6979E11FD9EBE2 - F6B9E245908D05EEA422DAF6DECD6FEE1EE1EDFCA86411C9E5A8598795D5385D - A9950C3292946AEDA0F4953DCF8E3E2AFED65F1735CD35B5ED07C49A2C769329 - BA1636BA3DA09A0899C8DCA2584B950782413820E0B0E6BC6356FDBA3E2F3339 - FF0084E35CB7DDD45B48B6DFFA2C2D7710FC6ED3AEB43D51B56B85BABABAB630 - DB43A8C03559A25F3176C725C490EE70AA58F500900F04F1B1FB4869DF01BE33 - 780BC2775E08D4B56F0D7C486B2B4B6D720BBD345B681712ADAAABB2B20CC4E6 - 65DBBC828C1B7391CBD1ECA4EED16AA2564D1E43E12FDABFC65ADDE6A6BAEEB1 - 26BD69F6379A78F57D40C92305C01E43484B79A376422F040248E323B58353D2 - 7C79E168F50B786CB528E152424B107F29C73B594F43FCC7B5780F893C197DE1 - 2F105C69BA959DC595EDBB18E48A54C143D7F11DC11C104115BBE0696FBC357A - B716323445C6D910FDC997D1877FE63DAA7A6869A6E75DA9FED15E24D160682C - F4FF000DD946A3681169AA0E07D49AE7EDBE30F89AE2EDA78EE63B395B86305B - C684FAF2067BD4DE21D3C6ACAD34719567E5E3C7DDCFA7B7BD57D37C35242BBA - E15608C6097738502B3BBEA5DA3BA417DE32F116B4BB6EB55BFB856FE1927665 - FC89AA724CD691AC97175E5F395E7073EDEB57754D66DED2D9A2B1856593A19E - 55F97FE02BFE39AE3A6692F6EDA4964692461C92739E6A772B5B1E93E16FDA07 - 53F09E9CB6D6BAA6AB3479E52E27F3A2FA04604015B3A77ED5B7966EBE769F14 - C579530B98190FA8C0207E55E77E04F86FAF7C48D5BEC1E1FD1757D72F76190C - 1A75949752851D5B646A4E07AE2B63C6BF0A358F864D1C3AAD8FD8EEA662803C - 88F2C6C02E54C609D87E75FBDCF3D2AA3269E8C9924F73D5BE1FFC5AF0FF0089 - 35CFED6B8D3F51B1D45583B5CCB6F1CF0CE4306C39C867E473C1E2BD53C73FB4 - 8EB5F123C21A968CB7D610DBEAF0DBDB5CBC21EDD658E079258E2DAED8442F26 - 4840061471F7B773773FB21782E2D52DECF4BD73C53AC5C5C68971AAAB5D4B1A - 431C296125C292D1A875225409B0060413CE700FB07ECADFB1CFC2DF125CDCD9 - F883C1975AF6A5A7696D35D06D6EEDD279C4AA36C680478254E03162A0E72010 - 71A46B54B72F46652A70DDF424FD9A7F683B1F861F0BAF7C23AB5B4EF6F34CD7 - 96F77664336F68E38CA39F30298F0808C65837B74F867E3AD85C37C6FF00191F - B3DC2E75CBDE190EE1FE90FD7DEBF483E13FC2BF82BE0CF0E78B7557F87B269F - 6BA0191A5D527D2E2B986C632F1A8625669652BBA2936B6CCFEF08C5705E29F0 - CF80755F136A57574D3C97373752CB2B996CBE7767258FFAFEE49AA956D9CBB1 - 11A69EC8FD53FD97BC7DA97C4BFD9EFC1BE21D52456D4B56D1EDEE6E5A30555E - 42BF33633C67AFD4D75F2F8774FD68FF00A669F6379890B8F3EDD24C10D907E6 - 079079CD1457D9D1D69C6FD91F175F4AB2B7765497E1F689AB3DD5BCDA65AAC3 - 1C8A1561530E094472D9420E7271907A281EB99B4EF045AFDA2E2382EB54B48E - DE408AB15EC841DD1A312771273CFE1818C73928AE4B5A31F57FA9D5CCFDFF00 - F0AFD0F05FF8290688F1FC1AD1ACE4BFBEB8B5B8F1258C6D1CAC8DD44A33BB6E - EE87B9AF68F891214F0B246BF2C71DBC88AA070004C0FD28A2BCDCDB75F33D2C - A7E197A9F807FF000552B7583F6D7F8A3B06DF9ED7BFAD95B13FA9AF4CFD81EF - 1B4BF1AFC3BDAA926DF1CE9080C83715FDFC073F51814515C54FE1F97E87A953 - 75EA790FC30B249758D77EF27D8746B578B61DB82D752B367D725D8FE5E95F48 - 786EE85B78CAC7C4135B69B797D71A0D8DCCC92D840B6F2B34B736EC0C488A80 - 18C63800E4EECEEC105158D959FF005D4A937747D71FF0506F835A07837F64DF - 837AFE9316A5617F278B7478E409AB5DB467CD8A62E515A53E536777316CFBC7 - DB1E3FF01FE0F687E284D4AE3548EFB516BAD3ECEFA412DFCEB9925D3D2E8825 - 1D4B2893202B12304E7279A28AEBC47C76E965F9238F08DBA4DF9BFCCCFF0085 - BE02D27C0BE39F19FF0063D8C3A70D2FC33AC49008C6E2A91C0BBA3DCD965595 - 0BC6ECA43ED91F6B23618755FF00048AD7ACBE27783B52F104DE1CF0D697793F - 8BF488825858EC4897ECAEA554B977C36DDC41620B33375268A2B8701FC59AF3 - 7F923BF19FEEF07E4BFF004A6715FF000559B0B5F0B7C3BF04C86CED350B3F12 - 5FDAE997B67730A88DA2FB3120AC91EC995964449011270CA78DACEADF217C7C - F164DAE7C10B0F0A8861B4D0FC1325C2E9B6F1348DFBC79912499DA466667641 - 1A750AA90C4AAAA1714515D4FE146503D334BD426F87D17C2EBED3E6B8F3BC47 - A2C33DCACB3C92468C751685B626EC0052250548233938CF35CB7C48F1DDCEAD - FB3B9B336B636F1DF6AD25D398632A5424F38112F3811EE3BB6E3860318000A2 - 8ACEA7C6553F84F12B3B15D47548A172CAB21C12B8CF4CD5111F972EDC9C1E28 - A282A47E93F80FF667F06FED8DFB2F7C4EF1278BB498E3F107803E1968BAC68F - A869C7ECF3453C3FDBD9DFD55D6516F0AB86072235C152011F9F1A3E8B0C76E3 - 1BBE5E073451584762A5F11721D1A16D46163BB3F7873D0D71DF192F24D13518 - DA17639936ED73B940C761DA8A2B396E694CE6B4FF00114D7C63478E10188CED - 07FC6B5347D1E0BAF1024722B347904AE719F6E39E7DB9A28A8347B1EC565A87 - 88BE0EF8125BBF08F8DBC71E154D540FB55B691AD4D6704FB49DBB96320B6373 - 6324E326B85BEF106ADAE5BADE6A9AC6A5AB4D6F2A4CAD7D209D999700167237 - 9E00182718028A2B334E87DF9FB347872D757F8A3AD79D18FF0044F00AA44100 - 4D9BD630C780393B9B9FF68D7AE7C1676F107C766D4266F2EE353B6B99AE3CB0 - 3123A35BCF939C9CB348C092738C6304668A2B78F4F4397B9E79E209E5BBF85D - F136CCCD2C70C7E13D58111B6DDE12E92450474C033C9C631D3B806BE42F8EDF - 10FC4769F1BFC65143E22D7A1863D72F51238EFA4548D45C38000CF000E31451 - 56BE1899FDA67FFFD9} Stretch = True end object Label11: TLabel @@ -1571,7 +668,7 @@ object FormConfig: TFormConfig Top = 8 Width = 633 Height = 497 - ActivePage = TabSheetCDM + ActivePage = TabSheetAccessoires Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -3229,7 +2326,7 @@ object FormConfig: TFormConfig Width = 129 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 1 OnChange = ComboBoxDecChange end @@ -3336,7 +2433,7 @@ object FormConfig: TFormConfig Width = 129 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 2 OnChange = ComboBoxAspChange end @@ -3516,54 +2613,54 @@ object FormConfig: TFormConfig object Label61: TLabel Left = 13 Top = 4 - Width = 284 - Height = 19 + Width = 173 + Height = 13 Caption = 'D'#233'codeurs personnalis'#233's de signaux' Font.Charset = ANSI_CHARSET Font.Color = clBlack - Font.Height = -16 - Font.Name = 'Arial' - Font.Style = [fsBold] + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] ParentFont = False end object Label62: TLabel - Left = 24 + Left = 16 Top = 40 - Width = 36 - Height = 16 + Width = 24 + Height = 13 Caption = 'Etats' Font.Charset = DEFAULT_CHARSET Font.Color = clBlack - Font.Height = -13 + Font.Height = -11 Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False end object Label63: TLabel - Left = 160 - Top = 24 - Width = 73 - Height = 32 + Left = 168 + Top = 32 + Width = 49 + Height = 26 Caption = 'D'#233'calage d'#39'adresse' Font.Charset = DEFAULT_CHARSET Font.Color = clBlack - Font.Height = -13 + Font.Height = -11 Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False WordWrap = True end object Label66: TLabel - Left = 256 + Left = 248 Top = 40 - Width = 50 - Height = 16 + Width = 32 + Height = 13 Caption = 'Sorties' Font.Charset = DEFAULT_CHARSET Font.Color = clBlack - Font.Height = -13 + Font.Height = -11 Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False WordWrap = True end @@ -3622,7 +2719,7 @@ object FormConfig: TFormConfig Top = 56 Width = 193 Height = 21 - ItemHeight = 13 + ItemHeight = 0 TabOrder = 0 OnChange = ComboBoxDecodeurPersoChange end @@ -3641,7 +2738,7 @@ object FormConfig: TFormConfig Width = 145 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 2 OnChange = ComboBoxNationChange end @@ -3867,7 +2964,6 @@ object FormConfig: TFormConfig Top = 18 Width = 80 Height = 13 - Alignment = taRightJustify BiDiMode = bdLeftToRight Caption = 'Action : Fonction' ParentBiDiMode = False @@ -4037,6 +3133,18 @@ object FormConfig: TFormConfig TabOrder = 5 OnChange = EditTrainDestChange end + object ComboBoxAccComUSB: TComboBox + Left = 24 + Top = 32 + Width = 169 + Height = 21 + Hint = 'Nom de l'#39'accessoire d'#233'fini dans l'#39'onglet "accessoires COM/USB"' + ItemHeight = 0 + ParentShowHint = False + ShowHint = True + TabOrder = 6 + OnChange = ComboBoxAccComUSBChange + end end object ButtonTestAct: TButton Left = 16 @@ -4050,18 +3158,6 @@ object FormConfig: TFormConfig TabOrder = 2 OnClick = ButtonTestActClick end - object ButtonOuvreCom: TButton - Left = 120 - Top = 296 - Width = 75 - Height = 20 - Hint = 'R'#233'ouvre les ports COMs demand'#233's' - Caption = 'Ouvre COMs' - ParentShowHint = False - ShowHint = True - TabOrder = 3 - OnClick = ButtonOuvreComClick - end end object GroupBoxPN: TGroupBox Left = 216 @@ -5131,6 +4227,111 @@ object FormConfig: TFormConfig OnMouseDown = ListBoxTrainsMouseDown end end + object TabSheetAccessoires: TTabSheet + Caption = 'Accessoires COM/USB' + ImageIndex = 9 + object Label73: TLabel + Left = 8 + Top = 8 + Width = 355 + Height = 13 + Caption = + 'Les accessoires COM/USB sont utilis'#233's pour '#234'tre activ'#233's par un a' + + 'ctionneur' + end + object LabelInfoAcc: TLabel + Left = 272 + Top = 312 + Width = 3 + Height = 13 + end + object ListBoxAcc: TListBox + Left = 8 + Top = 96 + Width = 233 + Height = 249 + Color = clBlack + Font.Charset = DEFAULT_CHARSET + Font.Color = clAqua + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ItemHeight = 13 + MultiSelect = True + ParentFont = False + PopupMenu = PopupMenuListes + TabOrder = 0 + OnMouseDown = ListBoxAccMouseDown + end + object ButtonAjAccCom: TButton + Left = 8 + Top = 72 + Width = 65 + Height = 17 + Caption = 'Nouveau' + TabOrder = 1 + OnClick = ButtonAjAccComClick + end + object ButtonSupAccCom: TButton + Left = 80 + Top = 72 + Width = 65 + Height = 17 + Caption = 'Supprime' + TabOrder = 2 + OnClick = ButtonSupAccComClick + end + object GroupBox27: TGroupBox + Left = 264 + Top = 96 + Width = 329 + Height = 113 + Caption = 'Description de l'#39'accessoire' + TabOrder = 3 + object Label71: TLabel + Left = 10 + Top = 32 + Width = 95 + Height = 13 + Caption = 'Nom de l'#39'accessoire' + end + object Label72: TLabel + Left = 10 + Top = 64 + Width = 133 + Height = 13 + Caption = 'Port COM/USB (de 1 '#224' 255)' + end + object EditNomAcc: TEdit + Left = 168 + Top = 24 + Width = 121 + Height = 21 + TabOrder = 0 + OnChange = EditNomAccChange + end + object EditPortCom: TEdit + Left = 256 + Top = 56 + Width = 33 + Height = 21 + TabOrder = 1 + OnChange = EditPortComChange + end + end + object ButtonOuvreCom: TButton + Left = 272 + Top = 256 + Width = 75 + Height = 20 + Hint = 'R'#233'ouvre les ports COMs demand'#233's' + Caption = 'Ouvre COMs' + ParentShowHint = False + ShowHint = True + TabOrder = 4 + OnClick = ButtonOuvreComClick + end + end end object ButtonEnregistre: TButton Left = 472 diff --git a/UnitConfig.pas b/UnitConfig.pas index 58ac6f8..cf99c8a 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -369,8 +369,20 @@ type RadioButtonCde: TRadioButton; Label28: TLabel; EditPortCde: TEdit; - ButtonOuvreCom: TButton; CheckBoxCR: TCheckBox; + TabSheetAccessoires: TTabSheet; + ListBoxAcc: TListBox; + ButtonAjAccCom: TButton; + ButtonSupAccCom: TButton; + GroupBox27: TGroupBox; + Label71: TLabel; + EditNomAcc: TEdit; + Label72: TLabel; + EditPortCom: TEdit; + ComboBoxAccComUSB: TComboBox; + ButtonOuvreCom: TButton; + Label73: TLabel; + LabelInfoAcc: TLabel; procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -497,8 +509,8 @@ type procedure RichCdeDccppChange(Sender: TObject); procedure CheckEnvAigDccppClick(Sender: TObject); procedure ListBoxTrainsMouseDown(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure ButtonSupprimeClick(Sender: TObject); + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure ButtonSupprimeClick(Sender: TObject); procedure EditNomTrainChange(Sender: TObject); procedure EditAdresseTrainChange(Sender: TObject); procedure EditVitesseMaxiChange(Sender: TObject); @@ -557,7 +569,14 @@ type procedure RadioButtonCdeClick(Sender: TObject); procedure ButtonOuvreComClick(Sender: TObject); procedure CheckBoxCRClick(Sender: TObject); - + procedure ButtonAjAccComClick(Sender: TObject); + procedure EditNomAccChange(Sender: TObject); + procedure EditPortComChange(Sender: TObject); + procedure ListBoxAccMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure ComboBoxAccComUSBChange(Sender: TObject); + procedure ButtonSupAccComClick(Sender: TObject); + private { Déclarations privées } public @@ -633,6 +652,7 @@ section_initpp_ch='[init_dcc++]'; section_trains_ch='[section_trains]'; section_placement_ch='[section_placement]'; section_DecPers_ch='[section_decodeurs]'; +section_accCOM_ch='[section_accCOMUSB]'; var @@ -644,10 +664,10 @@ var ligneclicAig,AncLigneClicAig,ligneClicSig,AncligneClicSig,EnvAigDccpp,AdrBaseDetDccpp, ligneClicBr,AncligneClicBr,ligneClicAct,AncLigneClicAct,Adressefeuclic,NumTrameCDM, Algo_localisation,Verif_AdrXpressNet,ligneclicTrain,AncligneclicTrain,AntiTimeoutEthLenz, - ligneDCC,decCourant,AffMemoFenetre,NbreComCde,avecCR : integer; + ligneDCC,decCourant,AffMemoFenetre,NbreComCde,avecCR,ligneClicAccCOM,AncligneClicAccCOM : integer; ack_cdm,clicliste,config_modifie,clicproprietes,confasauver,trouve_MaxPort, - modif_branches,ConfigPrete,trouve_section_dccpp,trouve_section_trains, + modif_branches,ConfigPrete,trouve_section_dccpp,trouve_section_trains,trouve_section_acccomusb, trouveAvecVerifIconesTCO,Affiche_avert,activ,trouve_section_dec_pers : boolean; fichier : text; @@ -894,6 +914,14 @@ begin config_com:=not( (i=0) or (NumPort>MaxPortCom) or (prot_serie=-1) or (prot_serie>4) or (i=0) ); end; +function encode_AccCOM(index : integer) : string; +var s : string; +begin + s:=Tablo_acc_COMUSB[index].nom; + s:=s+','+inttoSTR(Tablo_acc_COMUSB[index].NumCom); + result:=s; +end; + // transforme l'aiguillage de la base de données aiguillage en texte function encode_aig(index : integer): string; var s : string; @@ -1603,7 +1631,7 @@ begin s:=s+','+IntToSTR(Tablo_Actionneur[i].Etat)+','+Tablo_Actionneur[i].trainDecl+',"'+Tablo_Actionneur[i].FichierSon+'"'; if Tablo_Actionneur[i].cde then - s:=s+','+IntToSTR(Tablo_Actionneur[i].Etat)+','+Tablo_Actionneur[i].trainDecl+',COM'+IntToSTR(Tablo_Actionneur[i].fonction)+','+Tablo_Actionneur[i].trainDest; + s:=s+','+IntToSTR(Tablo_Actionneur[i].Etat)+','+Tablo_Actionneur[i].trainDecl+',ACC'+IntToSTR(Tablo_Actionneur[i].fonction)+','+Tablo_Actionneur[i].trainDest; encode_act_loc_son:=s; end; @@ -1922,40 +1950,20 @@ begin end; writeln(fichierN,'0'); - - + // accessoires comusb + writeln(fichierN,'/------------'); + writeln(fichierN,section_accCOM_ch); + for i:=1 to NbAcc_USBCOM do + begin + s:=Tablo_acc_COMUSB[i].nom+','+inttostr(Tablo_acc_COMUSB[i].NumCom); + writeln(fichierN,s); + end; + writeln(fichierN,'0'); closefile(fichierN); end; -// affecte un index à un com dans le tableau tablo_com_cde -function affecte_index_com(NumCom : integer) : boolean; -var j : integer; - trouve : boolean; -begin - j:=1; - repeat - trouve:=Tablo_com_cde[j].NumPort=NumCom; - if not(trouve) then inc(j); - until (Trouve) or (j>10); - // le com n'a pas été stocké, le stocker et incrémenter l'indice du tableau - if not(trouve) then - begin - if NbreComCde1 then if (sa[1]='A') then + if length(sa)>1 then if (sa[1]='A') and (sa[2]<>'C') then // pour différencier ACC // -----------------accessoire begin Tablo_actionneur[maxtablo_act].act:=true; @@ -2241,7 +2249,7 @@ var s,sa,SOrigine: string; end; end; - if length(sa)>3 then if copy(sa,1,3)='COM' then + if length(sa)>3 then if copy(sa,1,3)='ACC' then // -----------------fonction commande COM begin Tablo_actionneur[maxtablo_act].act:=false; @@ -2262,10 +2270,9 @@ var s,sa,SOrigine: string; delete(sa,1,3); val(sa,i,erreur); // com - tablo_actionneur[maxTablo_act].fonction:=i; // numéro de COM - - affecte_index_com(i); + tablo_actionneur[maxTablo_act].fonction:=i; // numéro d'accessoire + i:=pos(',',sa); delete(sa,1,i); tablo_actionneur[maxTablo_act].trainDest:=sa; @@ -2810,8 +2817,29 @@ var s,sa,SOrigine: string; trains[i].x:=-999999; trains[i].y:=-999999; end; + end; + + procedure compile_acc_comusb; + var i,erreur : integer; + begin + NbAcc_USBCOM:=0; + repeat + lit_ligne; + if s<>'0' then + begin + inc(NbAcc_USBCOM); + sa:=sOrigine; + i:=pos(',',sa); + Tablo_acc_COMUSB[NbAcc_USBCOM].nom:=copy(sa,1,i-1); + delete(sa,1,i); + val(sa,i,erreur); + Tablo_acc_COMUSB[NbAcc_USBCOM].NumCom:=i; + Tablo_com_cde[NbAcc_USBCOM].NumAcc:=NbAcc_USBCOM; + end; + NbreComCde:=NbAcc_USBCOM; + until (sOrigine='0') or (NbAcc_USBCOM>=NbAccMaxi_USBCOM); + end; -end; // trie les signaux procedure trier_sig; @@ -3469,6 +3497,15 @@ end; until (s='0') or eof(fichier); end; + // section accesoires comusb + sa:=uppercase(section_accCOM_ch); + if pos(sa,s)<>0 then + begin + trouve_section_acccomusb:=true; + compile_acc_comusb; + end; + + inc(it); until (eof(fichier)); @@ -3483,6 +3520,7 @@ begin trouve_ipv4_PC:=false; trouve_retro:=false; trouve_sec_init:=false; + trouve_section_acccomusb:=false; trouve_init_aig:=false; trouve_dem_aig:=false; trouve_tempo_aig:=false; @@ -3866,6 +3904,7 @@ var AncAdresse,index,adresse,erreur : integer; s : string; begin index:=index_Signal(lc)-1; + if index<1 then exit; s:=Uppercase(FormConfig.ListBoxSig.Items[index]); // ligne cliquée if s='' then begin @@ -4004,6 +4043,8 @@ begin editLAY.Text:=lay; LabelNbDecPers.caption:=intToSTR(NbreDecPers); + + //l'onglet affiché est sélectionné à l'appel de la fiche dans l'unité UnitPrinc clicListe:=false; activ:=false; @@ -4197,7 +4238,7 @@ begin end; end; - // remplit les 4 fenêtres de config des aiguillages branches signaux, actionneurs + // remplit les 5 fenêtres de config des aiguillages branches signaux, actionneurs, accessoires comusb for i:=1 to NbreDecPers do begin s:=decodeur_pers[i].nom; @@ -4352,7 +4393,25 @@ begin items.Add(Train_tablo(i)); end; end; - + + with listBoxAcc do + begin + clear; + formConfig.ComboBoxAccComUSB.Clear; + for i:=1 to NbAcc_USBCOM do + begin + items.Add(encode_AccCOM(i)); + formConfig.ComboBoxAccComUSB.Items.Add(Tablo_acc_COMUSB[i].nom+' (COM'+intToSTR(Tablo_acc_COMUSB[i].NumCom)+')'); + end; + end; + if NbAcc_USBCOM>MaxComUSBCde then LabelInfoAcc.caption:='Nombre maxi de com atteint : '+intToStr(MaxComUSBCde); + + {if FileExists('Image_Signaux.jpg') then ImageSignaux.Picture.LoadFromFile('Image_Signaux.jpg') + else + Affiche('Manque fichier "Image_Signaux.jpg"',clOrange); + } + ImageSignaux.picture.Assign(formpilote.ImageSignaux.Picture); + ligneclicAig:=-1; AncLigneClicAig:=-1; ligneClicSig:=-1; @@ -4361,6 +4420,8 @@ begin AncligneClicBr:=-1; ligneClicAct:=-1; AncLigneClicAct:=-1; + ligneClicAccCOM:=-1; + AncligneClicAccCOM:=-1; end; @@ -4388,9 +4449,19 @@ begin if s[erreur]='P' then begin B:='P';exit;end; if s[erreur]='D' then begin B:='D';exit;end; end; + B:='Z'; end; +procedure Aff_champs_accCOMUSB_tablo(index : integer); +begin + if (index<1) or (index>NbAccMaxi_USBCOM) then exit; + clicliste:=true; + formConfig.editNomAcc.Text:=Tablo_acc_COMUSB[index].nom; + formConfig.editPortCom.Text:=intToSTR(Tablo_acc_COMUSB[index].NumCom); + clicliste:=false; +end; + // affiche le graphisme de l'aiguillage en fonction du tablo en index procedure Aff_champs_aig_tablo(index : integer); var Adresse,Adr2,ind,id2,erreur,position : integer; @@ -4664,6 +4735,7 @@ begin GroupBox19.Top:=GroupBox18.Top+GroupBox18.Height+8; GroupBox19.Height:=96; ButtonTestAct.Top:=GroupBox19.Top+GroupBox19.Height+8; + // ComboBoxAccComUSB.top:= end; end; @@ -4674,6 +4746,7 @@ begin positionne; ButtonOuvreCom.Visible:=false; CheckRaz.Visible:=false; + ComboBoxAccComUSB.Visible:=false; GroupBoxAct.Caption:='Action pour fonction F de locomotive'; EditFonctionAccess.Hint:='Numéro de fonction du décodeur du train (0 à 12 ou 28)'; editTrainDest.Hint:='Train destinataire de la fonction F'; @@ -4706,17 +4779,15 @@ begin begin positionne; editTrainDest.Hint:='Commande ASCII'; - EditFonctionAccess.Hint:='Port Com/Usb d''envoi de la commande'; - + EditFonctionAccess.visible:=false; + ComboBoxAccComUSB.Visible:=true; CheckRaz.Visible:=false; GroupBoxAct.Caption:='Action pour commande sur COM/USB'; LabelTempo.Visible:=true; EditTempo.visible:=true; editEtatFoncSortie.visible:=false;LabelA.Visible:=false; LabelFonction.visible:=true; - LabelFonction.caption:='Port COM/USB :'; - LabelFonction.Top:=22; - - EditFonctionAccess.Visible:=true; - EditFonctionAccess.Top:=20; + LabelFonction.caption:='Accessoire COM/USB'; + LabelFonction.Top:=18; + ComboBoxAccComUSB.Top:=32; RadioButtonLoc.Checked:=false; RadioButtonAccess.Checked:=false; @@ -4744,9 +4815,10 @@ begin with formconfig do begin positionne; - + ComboBoxAccComUSB.Visible:=false; GroupBoxAct.Caption:='Action pour accessoire'; CheckRaz.Visible:=true; + ButtonOuvreCom.Visible:=false; LabelTempo.Visible:=false; EditTempo.visible:=false;editEtatFoncSortie.visible:=true;LabelA.Visible:=true; LabelFonction.visible:=true; @@ -4776,7 +4848,7 @@ begin GroupBoxAct.Caption:='Action pour son'; CheckRaz.Visible:=true; ButtonOuvreCom.Visible:=false; - + ComboBoxAccComUSB.Visible:=false; LabelTempo.Visible:=false; EditTempo.visible:=false; EditFonctionAccess.Top:=14; LabelFonction.Top:=18; @@ -5248,7 +5320,7 @@ begin champs_type_cde; with formConfig do begin - EditFonctionAccess.text:=inttostr(Tablo_actionneur[i].fonction); + ComboBoxAccComUSB.ItemIndex:=Tablo_actionneur[i].fonction-1; EditEtatFoncSortie.Text:=intToSTR(Tablo_actionneur[i].etat); EditTrainDest.text:=Tablo_actionneur[i].TrainDest; end; @@ -5468,8 +5540,6 @@ begin Aig_sauve:=Aiguillage[lc+1]; // sauvegarde AncligneclicAig:=ligneclicAig; ligneclicAig:=lc; - - end; Val(s,Adresse,erreur); // Adresse de l'aguillage @@ -6668,8 +6738,8 @@ begin begin LabelInfo.caption:='Erreur fonction actionneur';exit end else LabelInfo.caption:=' '; - - if radioButtonLoc.Checked or RadioButtonCde.Checked then tablo_actionneur[ligneClicAct+1].fonction:=fonction; + + if radioButtonLoc.Checked then tablo_actionneur[ligneClicAct+1].fonction:=fonction; if RadioButtonAccess.Checked then Tablo_Actionneur[ligneClicAct+1].accessoire:=fonction; s:=encode_act_loc_son(ligneClicAct+1); @@ -8755,6 +8825,18 @@ begin Affiche('qui se trouve dans la plage des accessoires DCC interdits (257-272) en Xpressnet',clred); end; end; + if Tablo_actionneur[i].cde then + begin + j:=Tablo_actionneur[i].fonction; + if j>10 then begin Affiche('Erreur 15.1 pilotage actionneur '+intToSTR(Tablo_actionneur[i].adresse),clred);ok:=false;end; + if j=0 then begin Affiche('Erreur 15.2 L''actionneur '+intToSTR(Tablo_actionneur[i].adresse)+' n''a pas d''accessoire COM/USB d''affecté',clOrange);ok:=false;end; + if (j>0) and (j<11) and (Tablo_acc_COMUSB[j].NumCom=0) then + begin + Affiche('Erreur 15.3 L''actionneur '+intToSTR(Tablo_actionneur[i].adresse)+' n''a pas d''accessoire COM/USB d''affecté',clOrange); + ok:=false; + end; + + end; end; if not(AdrOk) then @@ -10933,6 +11015,7 @@ begin end; end; + procedure TFormConfig.ListBoxTrainsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var s : string; @@ -10956,7 +11039,7 @@ begin clicListeTrains(ligneclicTrain+1); clicliste:=false; -end; +end; procedure TFormConfig.EditNomTrainChange(Sender: TObject); @@ -12018,32 +12101,129 @@ begin end; end; +procedure supprime_acc; +var ss,s : string; + n,i,j : integer; + begin + ss:=''; + n:=0; + for i:=0 to NbAcc_USBCOM-1 do + begin + if formconfig.ListBoxAcc.selected[i] then + begin + ss:=ss+ tablo_acc_comusb[i+1].nom+' '; + inc(n); + end; + end; + if ss='' then exit; + + s:='Voulez-vous supprimer '; + if n=1 then s:=s+' l''accessoire COM/USB ' else s:=s+' les accessoires COM/USB '; + s:=s+ss+' ?'; + + if Application.MessageBox(pchar(s),pchar('confirm'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION)=idNo then exit; + + clicliste:=true; + formConfig.editNomAcc.text:=''; + formConfig.editPortCom.Text:=''; + + // suppression + n:=0; + i:=1; + repeat + if formconfig.ListBoxAcc.selected[i-1] then + begin + + for j:=i to NbAcc_USBCOM-1 do + begin + formconfig.ListBoxAcc.selected[j-1]:=formconfig.ListBoxAcc.selected[j]; + tablo_acc_comusb[j]:=tablo_acc_comusb[j+1]; + end; + dec(NbAcc_USBCOM); + tablo_acc_comusb[NbAcc_USBCOM+1].NumCom:=0; + i:=0; + end; + inc(i); + until i>NbAcc_USBCOM; + + if NbAcc_USBCOM<=MaxComUSBCde then formConfig.LabelInfoAcc.caption:=''; + NbreComCde:=NbAcc_USBCOM; + + config_modifie:=true; + FormConfig.ListBoxAcc.Clear; + formConfig.ComboBoxAccComUSB.Clear; + + // réafficher la liste + for i:=1 to NbAcc_USBCOM do + begin + s:=encode_AccCOM(i); + if s<>'' then + begin + Tablo_com_cde[i].NumAcc:=i; + FormConfig.ListBoxAcc.items.Add(s); + formConfig.ComboBoxAccComUSB.Items.Add(Tablo_acc_COMUSB[i].nom+' (COM'+intToSTR(Tablo_acc_COMUSB[i].NumCom)+')'); + end; + end; + ligneclicAccCom:=-1; + AncligneclicAccCom:=-1; + clicliste:=false; +end; + +procedure ajoute_acc; +var i : integer; + s : string; +begin + if NbAcc_USBCOM>=NbAccMaxi_USBCOM then + begin + Affiche('Nombre maximal d''accessoires COM/USB',clRed); + exit; + end; + clicliste:=true; + + // désélectionne tout + with formconfig.ListBoxAcc do + for i:=0 to items.Count-1 do Selected[i]:=false; + + inc(NbAcc_USBCOM); + if NbAcc_USBCOM>MaxComUSBCde then formConfig.LabelInfoAcc.caption:='Nombre maxi de com atteint : '+intToStr(MaxComUSBCde); + + i:=NbAcc_USBCOM; + Tablo_acc_COMUSB[i].nom:=''; + Tablo_acc_COMUSB[i].NumCom:=0; + + s:=encode_AccCOM(i); + // scroller à la fin et sélectionner + with formconfig.ListBoxAcc do + begin + items.add(s); + selected[i-1]:=true; + SetFocus; + perform(WM_VSCROLL,SB_BOTTOM,0); + end; + + formconfig.LabelInfo.caption:='Accessoire COM/USB créé'; + ligneClicAccCOM:=i-1; + AncligneClicAccCOM:=ligneClicAccCom; + Aff_champs_accCOMUSB_tablo(i); + formConfig.ComboBoxAccComUSB.Items.Add('nouveau'); + clicliste:=false; + config_modifie:=true; +end; + + + procedure TFormConfig.Supprimer1Click(Sender: TObject); var tl: TListBox; s : string; begin tl:=(Tpopupmenu(Tmenuitem(sender).GetParentMenu).PopupComponent) as TlistBox ; s:=tl.name; - if s='ListBoxAct' then - begin - supprime_act; - end; - if s='ListBoxPN' then - begin - supprime_PN; - end; - if s='ListBoxSig' then - begin - supprime_sig; - end; - if s='ListBoxAig' then - begin - supprime_aig; - end; - if s='ListBoxTrains' then - begin - supprime_Train; - end; + if s='ListBoxAct' then supprime_act; + if s='ListBoxPN' then supprime_PN; + if s='ListBoxSig' then supprime_sig; + if s='ListBoxAig' then supprime_aig; + if s='ListBoxTrains' then supprime_Train; + if s='ListBoxAcc' then supprime_acc; end; @@ -12073,7 +12253,7 @@ begin begin ajoute_train; end; - + if s='ListBoxAcc' then ajoute_acc; end; procedure TFormConfig.outcopierentatquetexte1Click(Sender: TObject); @@ -12084,28 +12264,21 @@ begin end; procedure TFormConfig.ButtonOuvreComClick(Sender: TObject); -var i : integer; +var i,index : integer; begin - // recrée les indexs des com - NbreComCde:=0; - for i:=1 to 10 do tablo_com_cde[i].NumPort:=0; - for i:=1 to maxTablo_act do - begin - if Tablo_actionneur[i].cde then - begin - affecte_index_com(tablo_actionneur[i].fonction); - end; - end; +// Affiche(intToSTr(componentcount),clyellow); for i:=1 to 10 do begin deconnecte_usb_cde(i); end; + for i:=1 to NbreComCde do begin - if connecte_port_usb_cde(i) then - Affiche('COM'+intToSTR(tablo_com_cde[i].numport)+' commande actionneurs ouvert',clLime) - else Affiche('COM'+intToSTR(tablo_com_cde[i].numport)+' commande actionneurs non ouvert',clOrange); + index:=tablo_com_cde[i].NumAcc; + if connecte_port_usb_cde(index) then + Affiche('COM'+intToSTR(tablo_acc_comusb[index].numcom)+' commande actionneurs ouvert',clLime) + else Affiche('COM'+intToSTR(tablo_acc_comusb[index].numcom)+' commande actionneurs non ouvert',clOrange); end; end; @@ -12114,7 +12287,93 @@ begin if checkBoxCR.Checked then avecCR:=1 else avecCR:=0; end; +procedure TFormConfig.ButtonAjAccComClick(Sender: TObject); begin -end. + ajoute_acc; +end; + +procedure TFormConfig.EditNomAccChange(Sender: TObject); +var s : string; +begin + if clicliste or (ligneClicAccCOM<0) then exit; + if affevt then affiche('Evt Edit act Change',clyellow); + with Formconfig do + begin + s:=EditNomAcc.Text; + Tablo_acc_COMUSB[ligneClicAccCOM+1].nom:=s; + ComboBoxAccComUSB.Items[ligneClicAccCOM]:=s+' (COM'+intToSTR(Tablo_acc_COMUSB[ligneClicAccCOM+1].NumCom)+')'; + s:=encode_AccCOM(ligneClicAccCOM+1); + ListBoxAcc.Items[ligneClicAccCOM]:=s; + ListBoxAcc.Selected[ligneClicAccCOM]:=true; + end; +end; + +procedure TFormConfig.EditPortComChange(Sender: TObject); +var s : string; + i,erreur : integer; +begin + if clicliste or (ligneClicAccCOM<0) then exit; + if affevt then affiche('Evt Edit port Change',clyellow); + with Formconfig do + begin + val(EditPortCom.Text,i,erreur); + if (i<1) or (i>255) then exit; + Tablo_acc_COMUSB[ligneClicAccCOM+1].NumCom:=i; + s:=encode_AccCOM(ligneClicAccCOM+1); + ListBoxAcc.Items[ligneClicAccCOM]:=s; + ListBoxAcc.Selected[ligneClicAccCOM]:=true; + s:=EditNomAcc.Text; + ComboBoxAccComUSB.Items[ligneClicAccCOM]:=s+' (COM'+intToSTR(Tablo_acc_COMUSB[ligneClicAccCOM+1].NumCom)+')'; + end; +end; + +procedure TFormConfig.ListBoxAccMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var i,lc : integer; + s : string; +begin + clicliste:=true; + if NbAcc_USBCOM<1 then exit; + + with Formconfig.ListBoxAcc do + begin + i:=0; + lc:=itemindex; + //Affiche('numéro de la ligne cliquée '+intToStr(lc),clyellow); + s:=Uppercase(items[lc]); // ligne cliquée + if s='' then + begin + ligneclicAccCom:=-1; + exit; + end; + + AncligneclicAccCom:=ligneclicAccCom; + ligneclicAccCom:=lc; + end; + + + Aff_champs_accCOMUSB_tablo(lc+1); + clicliste:=false; +end; + + + +procedure TFormConfig.ComboBoxAccComUSBChange(Sender: TObject); + var s : string; + begin + if clicliste or (ligneClicAct<0) then exit; + if affevt then affiche('Evt Edit port Change',clyellow); + Tablo_Actionneur[ligneClicAct+1].fonction:=ComboBoxAccComUSB.ItemIndex+1; + s:=encode_act_loc_son(ligneClicAct+1); + ListBoxAct.Items[ligneClicAct]:=s; + ListBoxAct.Selected[ligneClicAct]:=true; +end; + +procedure TFormConfig.ButtonSupAccComClick(Sender: TObject); + begin + supprime_acc; + end; + + end. diff --git a/UnitConfigCellTCO.pas b/UnitConfigCellTCO.pas index d52c292..d2dee4d 100644 --- a/UnitConfigCellTCO.pas +++ b/UnitConfigCellTCO.pas @@ -539,6 +539,7 @@ end; procedure TFormConfCellTCO.FormActivate(Sender: TObject); begin + if indexTCOcourant=0 then exit; if affevt then Affiche('FormConfCellTCO activate',clyellow); if selectionaffichee[indexTCOcourant] then ButtonFond.caption:='Couleur de fond de la sélection' else ButtonFond.caption:='Couleur de fond de la cellule'; @@ -585,7 +586,7 @@ end; procedure TFormConfCellTCO.EditTypeImageChange(Sender: TObject); var Bimage,erreur : integer; begin - if clicTCO or not(ConfCellTCO) or actualize then exit; + if clicTCO or not(ConfCellTCO) or actualize or (IndexTCOCourant=0) then exit; if affevt then Affiche('TCO evt editTypeImageKeyPress',clorange); Val(EditTypeImage.Text,Bimage,erreur); if (erreur<>0) or not(Bimage in[0..29,32..34,50,51]) then exit; diff --git a/UnitPilote.dfm b/UnitPilote.dfm index b46d319..6f79c89 100644 --- a/UnitPilote.dfm +++ b/UnitPilote.dfm @@ -67,6 +67,916 @@ object FormPilote: TFormPilote Height = 13 Caption = 'D'#233'codeur:' end + object ImageSignaux: TImage + Left = 168 + Top = 96 + Width = 153 + Height = 105 + Picture.Data = { + 0A544A504547496D6167659A700000FFD8FFE000104A46494600010101006000 + 600000FFFE003C43524541544F523A2067642D6A7065672076312E3020287573 + 696E6720494A47204A50454720763632292C207175616C697479203D2039300A + 00FFDB0043000201010201010202020202020202030503030303030604040305 + 070607070706070708090B0908080A0807070A0D0A0A0B0C0C0C0C07090E0F0D + 0C0E0B0C0C0CFFDB004301020202030303060303060C0807080C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0CFFC000110800B400FA03012200021101031101FFC4 + 001F0000010501010101010100000000000000000102030405060708090A0BFF + C400B5100002010303020403050504040000017D010203000411051221314106 + 13516107227114328191A1082342B1C11552D1F02433627282090A161718191A + 25262728292A3435363738393A434445464748494A535455565758595A636465 + 666768696A737475767778797A838485868788898A92939495969798999AA2A3 + A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8 + D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F010003010101 + 0101010101010000000000000102030405060708090A0BFFC400B51100020102 + 0404030407050404000102770001020311040521310612415107617113223281 + 08144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A + 35363738393A434445464748494A535455565758595A636465666768696A7374 + 75767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9 + AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5 + E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00F6609F28 + 14A1702A5F2B28BED4F58706BF63B9F94B5A9E05FB54FEDF7E0CFD98BC6B63E1 + 5D622D56F356D434D9B56B85B24461A7DA44923EF7DC46E67F29D5507271938E + 33E7BFB497C61F09C3F0847C4EF03F86AE3E2678DEE6C65D33C3D0DA1926D2F4 + 684ED93FB52EE25FF5F2832324300FDDFCB2198905623EA3FB697EC79E09FDA2 + 7C09A96A1ACE9E2DFC4D6DA5CB6163ADDB3797776D1C990518F2B247F3B7CAE0 + E3736D2A4935F8E3F013C57E3CF837F1635883C27ACF972785C5E6A1A858CB79 + E4DAEA70596E7B85D84ED6631A3B0C7CE003B482057C1711D4C43AEE936B95D9 + AB7657DFE6D9F6590D1C3BA3ED127CCB7BF99F437C17FF0082BD7C44F06F8266 + F86FE3EF1778FF004DF0A8998ABF86EE868D7FA797FBE92A42B1F9F177DAE095 + E42F0401DA4FFB2FDAF8EBE1E4FF00103C1BF10AC7C51A248CCE26BB8A64BC69 + 3201472371F303100EE0A4672428E6BC6BFE0A85AA5BFC69BFF04FC44F0FC135 + F689AA68496F73A8C71EF4826F3246486775E1660AC46D639F94E381537EC7FF + 00B74F84FF00668F1AEBDA6C3A0F896E3E1AF89ADED659AC0DCC7717BA65F7D9 + E34BA963DC5564467F300048628B0E4E4115F331E6E5E687DC7D24A2AF662F88 + BE227F6AE856275286EF546BC9E78A6BA689609E154588A793759632C87CC3B9 + 268D95004C64B9D9EFDFF04B6D357C1DFB7EFC19D58EA9E5E91797CF2DF26A68 + 2CE6974A786E60BC7EA639A23109D18AB64EC73B140207CDD71A9FF6824DA3D8 + FF00A6697717C6E2CA378375CAB728AC801CA332150CA321B626725148FA013C + 0F7BFF0004C9FD9ABC51F10BC6D6EDA0FC5BF8A3A1DCF873C05E19B91E5EA5A5 + E9F7B1182FF5CBA8BEF401AD8CB6D6EAFB59CCF2C980A8A5AA6ECB953D5F4335 + 1EC6C7FC12EBF6B3B8D13F693B4F006A9E75AAEBD149A74B6F701A3922B98636 + 9226656E4310AE9EFBFE95FA49E2ADCBE16D47692185B4841F43B4F3D0D7E23F + FC13A7C61E24F18FED8DF0C7C3FF006A5D4157584FB34F771F9D73A5C71A3C8E + F04D912C615118EC0E10E39535FACDE22F89FA9784EE6E74DFF849341F11DA49 + 1496EC5889AEADEE3692B1B3DB01E57CA19B12C440087337391F5996660E1809 + C2AAF77549FAADBBEFF99F3399E0D3C6C2517AE8DFC99E8BA1E8B6FA6D905B78 + 63B78E43E6948D022EF6E59B03B92724F52493EF56DADBE9D6B17C19E2AB8D67 + C27A7DF4D64DB6E23E44254952095276EE231C646189C11C03915B9697B0EA24 + 88A45665E590F0EBF553C8FC457A94AA45C138F63CF9D36A4FD4F37F87E638BE + 31F8D34DB8B3B75BA98C774B24518DB35B12C17CC381962E5F8F9BA3735E9DE1 + C81603711C6D36D42AC11DB72C590785E720719C741DAA8E95079D25D961CC77 + 5228E31C616B53C3B1EEBDBE3C9C141FA1AD32B4E3CBAF57F8DD91983E64DF92 + FC2C5EF2F9EF404C03EFC558F230697C9C8FEA2BDE3C6E52B797C534C78FFF00 + 555AF2B07F0E2B90F8C9737F67A05AAE9BA9DC68D70D74AFF69816195880AC3C + B314AAC24466652DB7691B47CEB9ACEA54508F33F2FC5D8BA74DC9D933C3BC76 + DE6FECEFF142D556391ED5FC4A634650EB9FB55EB2F07BE477FEA2BC7F4BFF00 + 82617C21F8CBF0F3C35E205B5D63C337FA96916B7772DA45E848E777854B3797 + 2ABAAEE249C2803AF15D27C6FF001B7C44F86FA2F8A2E2EBC25A7F8CBC37AC41 + 746E27F0F492457D652CE192590DAC9B8B445DF790ACE532F9936E02C7FB03FC + 704F8CDF0134CB792EB4B3AD787E03A64D6369725AE043022A24CD1B7CCBB942 + F2328B9EB9381F332A387AF5FD9555ADB66BB76FBFA1EFC2B57A541D5A6F4BF4 + 7DFBFDDD4F25F8F1FF000490F877F0F7E16EA9E22F0DEB9E20B6D63C376771A9 + 192E5E29D6F446858465511020246370CF539071C78F7ECDFF0003BC53FB407C + 27F889E19B8F121F0FF817C23A55D78A7FB36D74E8B6EB1790A79896C5C2AE23 + 53E5BBA316C130B0439C8FBE7E38DA7DAFE05F8D23E0EFD12EF1E9CC0E33FD05 + 7C97FB05EB9A6E907C5174DAE87B7F195BEB9E1AFECCDE0F9139D32DA4B798A7 + DE51232CF0E4F0CFE50193D38F1597E1E9E22114AD16B5D5AFBF53B30B8EAF53 + 0F3937769AB5F5F53BBF8F9A541FB387C18F84FE27FED9F1A78AA1F146991CDA + B5A6B3AEDDDD5ACF18B384A20B78D910450ACF2C81140CF96A18902BE77F087E + D61E28F09DEF899B42F0ADBE8F3788A1B6F3ADAC50C3268F1C324D2AF92AE8DF + BB91EE1988704EC2AAACA3691F497ED95E30B8F09FEC25FB38788AD5566963D3 + ED2D1D18FCB2C771A3F952A13FED47BD73DB39AE13C63FB5EF807E25FC31F116 + A76B6B30F1B6ADE2F9AF21B496DCB470599B0B7B2F25E6040283C913284DD878 + A3240C607899D51B627DD5BA8FE48F5B29ACDD0F79ECDFE67BC7ECB7A96A167E + 17B3BDD72E56DECADF556934D9AE36431AE96CEAF6CDBB81B446D8DC793B393C + 57D6F0F85AF2F7E1CC3E38F11789BC2BF087E1ADD00D67E29F179612EB208DCA + DA7E9E1925B8565E55D99038219164539AFC06F8A5F18BC41E2C9AD2CF53BEB8 + B8B6D2605B2B4B790FEEED228FE5540BD323B9EA7D7A0AD8F875FB48CD7CF61A + 1F8DB57D5EFB43B38BECBA6CF3DC4971FD840B16DB12B121606624B228C67E60 + 01CE63079957A149D1A2F96EF7EBA7636C465B4AB4D54AAAF6E9D0FD9ABBFDA3 + FF0065196FBEC775FB4C7C609AEF38FB7D878420B7D3D4E472226B36936E403C + 927DEBACD77E0E78913E193FC48F863E3AF0E7ED19F0E347266D41F45B6165E2 + 3D26318662F6AA4ACA555492B88E5C6488C819AFCA73FB3EF89B50D21753D22D + A1D7B49954490DE58CE8EB2A9E410370393EC0E7B135D7FEC49FB66F8CBF605F + DA174DF18787A7BC85ACE658759D25DDA38B56B50DFBCB7953D7192AC7947018 + 74C542C66214B9A35257D1BBB6EF6DAE9972C1D06B97917DD6DF73F45FE1F7C4 + AD0FE2B787E3D4B41D421BEB57018EDE248F23A32F507F4EB5E67F1CB48D79BC + 510F88B446934E9A2B98EDF56892EDFF00D32D536C48E91056577550088C8058 + 9EAA496307EDF363A4FEC9DFB6668BE36F87BB21F87BF1A342B6F1CE8F6F18F2 + EDD7ED3F35CDB851C2AB1DB2851C279E00C6D18EDAE35A87C43A03EA969E635A + DE2FDAA167653B94A8618DBD00CF43C8C1F515F472CC219961796AAB496F6FC1 + AFB8F06182960311CF4DFBAFFA68E7343F1ED8E97A65BE9BE20B4BBF0D6A51C1 + 1C5FE913B5C5BCDB50007CEE32C4F04B60163C126A8DEDC789A1BD9921965112 + BB2A0F291B0A0F1C9193F535D76B7A0D9F8A34AB9B4BEB58AF2D26DC1A390707 + 390483D4120E323079C7B578FDDFEC5FA7BDD48D6FE34F1FD9DBB3931411EAC7 + 640B9E107CBD00E07D2BA70B56BAA514D732B269DECFE7D0CB134E9BA8DA6E2E + FDAFFA9F52227C8B9A72A61454823CA85FE21D29CAB8FAFD2BE9E4F53E5CC1F8 + 81A3C7E20F09DCE9F33C91C37E8D6F23C67E655656048F719C8F7AFCAAFF0082 + 88FEC0FA5DCFC65B1D53E145BE9DA5EA9A96971DC78A3C2736AA9672E91A90DD + 15C4F686EE506E2C2E8A1B88DD1DBCB170D130528547EB1F8A5CA410A7FCF473 + 91EC0579CFC41F855E18F8C3349A6F8ABC3FA3F88AC63B48C245A85A24E2262F + 2E4A161946F7520FBD7CC66D83589A8ADA493B7FE4B7FD0FA0CAB18F0F06FA35 + 7FC6C7E567817FE09C777E13F85DAC788BC75F103C23E09B5BA86286C2CE2F37 + 56B9D5F3201298DA01F65C44A392F3819600726B6FE09FC35FD9C3C3FACDADA6 + A7378BBE236A91DD19534B544B48F5011A6F653E4C8BB632AAC38BBC8E4E3A57 + D41F1ABFE08E1E11F881AF2EA9E15F12EB1E1692344B76B2BA53A9593458D823 + 5DCCB246A14003E66C76C62BC0BE0CFF00C12DFF00E321345F07F8824D37C557 + 4CB7D757B6926AB3E996F0AC0AA12390C76EF2E779F315918092329FEAF764FC + B4B2EC4297235BBB5FFE1BFC8FA48E61425073E6D95EDFD7F99E8FE3BFF82E20 + F865E1EBDF0FFC15F86361FB3F6A8AA161BDD134DD364B864383FBC965B76BCC + 95E43ADDF707E615F17FC43B6F899FB40FC478F5EF157FC24DE2EF1178B2E088 + AFEEE299EE7509490001BC65C92CA06D279603B8AF7EFDAABC3967FB2C7ED9F0 + 69AFA0F84593C3B6E6EA5BBD2B44F32669AE22FB5A3C82EA5904CD1B3A22C929 + 24AA31237649FAFBF66CD17C59FB516A5E07D534ED33C53AFDF683E2BB6D4D2C + 2C239EEA33A6ED475956D631E5C691A4AA9B82800C4C3764E2B86541D1ADEC1D + 92BD9BEDDFEE3AA35F9E97B68ABE97472FFF0004DCFF0082482FC14BC97C5DF1 + 5B4FD2F52D7AFE036D61A1BEDBA874C46C179663CA34CC06D0AB95552F924B61 + 7ECDD7BC37A7F85345BAB4D2EC6CF4BB34D1AF02C16702C11A0C274550056DFC + 59BED4BE0CC7A7CDE29F0AF8C3414B8B958A06BFD29EDE2B966046C499F10B3E + 327CBF3048403B558E14E1EA9E33D17C6B1EA16B637BE65E43A55D8B8B3914DA + 5F40ACABCB45326F407B3346573EBD2BED68C7094E84E961E49EAACEE9B774BA + FDFA23E46ACF1352B46AD74D68FC96EFFE00FB3F0FDBDDDA43710BCB6B712448 + 4CF030567E060BAE0A3F1FDE071DB1D6926B6B98B6FDB2DE3BE8D7959EDD3122 + 7FC0324FE28C49CFDD159BE03D4B5BD3BC19A4B6AB602F646B64334967283342 + 48CED28C1436DCED055B242E719AE8B4EF10D8EB32F976F708D70ADB5A09018A + 607D363004E3D46455C250714BE17D9FF567F22674E49B6B55E5FD5FEF393F87 + 3E256F15C5AF4DA3EA36B7D058EB1359B452AB66268D630D1B37DF570DBB3BC3 + 11D31C1AEE3C10D25CC9A97996EF6B22C88BB5983071B01CA90795E71C80783C + 573FE1FF000B5A5CDE6B6CD03413FF006948C25899A2990B244C70E30D863C91 + 9C1F4C715D078623D4B4DB9D40AAC7A9C2B2A0209586E40F2C1F411B1E7A1F2F + EA6B6CBE4D38C9EDAEDF3E9BFDD733C76D25E9FA1D01872D9A0C3934DD3F57B5 + D4EE1A18D9A3B955DCD6F3218E651EBB5B048FF68657D09AB861E3A7E95F4119 + A6AF1678CE2D6E5336F5CEFC4CF05DE78CBC2F35AE9D796BA76A05488A79ED7E + D11AE4824150C8C036304AB0383DC818EB7C8C1A468703A1A9A91538F2CB61C6 + 6E2EE8F977C67AA78BBE11C6F75E25F06EA13D8C243B6ADE1B2753B6840FE278 + B6ACF1803D51946492DC64F88E85FB35781FE31CF6BA87847C651FF6569B79F6 + 9B64D3ADE15D474B2771F2D6E0E2E238C336424808C9E3B1AFD1044F2A4565E0 + A11CF4AF907E247EC97E15D7755F3A3B7D43C3FE20D3CB1875CD267363A88E48 + 2CEEB9127FB4640F9E80815E3E330FEF462FDE5ABD747A5B66ADE5A7E27A984A + C92725EEBD36D575E8FF0047D5E8799F8FBC6FF10BC1FAC78B3C1B1DB43F1134 + 98F407BA96E6E268EC357B58655923DC3AC771E5E0EE040761CA91F747CEFF00 + F04EFF0087FA07ED33ACF8B3C1DA969661D5EC0DEEBB6DAEDA5DB477D69B2DD2 + 3840451F3471CF1C6D96623748A300B06AEE3E25786BE2DFC32FDA75AF2EAEF5 + 2F8896ABE1BBDF3D34A68AC6EAFF004E1BE34F3E0385774964495963DC4A8EBF + 7B15FF00E09EFF0006BC7B69E0BF106A1E07F0C4DE20F12EA73DC456F6D1697A + 81D4EC1D62222B8865B5864DD1B348434330113F94BBB2335F3F88AF0F6D1F6F + 7514DDD4BB69B3FC376CF730F49FB17ECAD7925671EFE6BFE024745FB5F6B967 + E34FF82507C0BD42D248E54B1D4F4FD3E6D9C7952C76B730C88476C3478FA60F + 422BE39F855E1D5D4E3BC9DB6EE9AF6708A3B0F3769FE607E35FA45E17FF0082 + 2BFED3DF153E04E9BE11D53C2DA1F83FC176F716BAACCDAE5CC5A7C715DC1018 + 04CC0CBE7AE63C6FC200CCA0ED073BA2F0FF00FC122FE0BFECF0D19F895FB5A7 + C2DD125B47324BA678514EBD2839C9F9630B206CFF007C3F3D8D7978CC7D3AB3 + 528DDFBA96DA5D2B1E96130B3A51717D5B7F267867FC17FF00F663F047ECC5F1 + 4BE1AF85FC27A2E9FA2EB5E1DF87BA3A78AAE2D90A9D67529BCD792790671E66 + 029DC06487C1276AE3F34FC4578F35C470C7F2B49D48F4AFD1AFF83817F6A2F0 + 87ED73FB5F6A5E2EF00DF5E6ADE1B934ED36C85DCF6725A996482DDA373B2401 + 82EEC60B019AFCEF9BC6574DE18BAD0F6C0D6726A316A0ACC999239238E48885 + 6ECAE241B87731A7A73E6C60BD0F4B999F577FC12ABE385EFC35F892BE11BEB9 + B893C37E260D6D0073BA2B4BA6FBA39E02CBCA91D37943EB5E9DFB637C3EBFF0 + 27C55B36D4354D435ABBBED320336A57F299AE6FDE35F2BCC91CF2CCC8B193F5 + C57C1BA378F2F3C3FA7BC76BFBAB8C868A70C43DBB0390C873F7811907B1AFB1 + 75FF00DB7D7F6C9F865E1F875AF0F9D2FC6BE177686F6FED48FB0EA904883E70 + A4EF8E5DF1825794E490470A08C5A95C6ECD1F66FF00C144249356FF00825DFE + C4DAE6E669E1D035AD34C87A858A7B7445FC0262B4BF625F10B78C7F65EB3691 + B75C5BCF756CFF0079881BB2B9C8F4230013DBA722A87ED98A353FF82237EC8F + 75F785AEA7E22B2CFB1BB90FFEC959BFF04F5D7E3D2BF67D5B7B9323473EBAF6 + 90E264608D228FE0C8645E0E49CE7271DC57A5954946AFBDE7F91E766316E969 + DD1EFF00A49FB5D942DCE2401BEB9E7FCFE353344DB8E3CCC678C74AAFE1619D + 16DFEEE7CA4CE06D19DAB9FF003F4AB8E30C7EE75EEF83F88AFA5C0BFDCC7D11 + E2627F8B2F565A6D7FC59E1A9F17DA2DAEB1663FE5E74F9FF7B1A8EED195DCEC + 7FBB1A607A9AD2D1BE24E91AA6E59266D3E68F1E6C578BE51873D03364A06FF6 + 4B6E1DC03C574623C81506A3A1DAEB2ABF6AB7867F2FEE33AE5A33EAADD54FB8 + 20D7BB2A3561FC39DFCA5AFE3BFE67CEFB483F8A3F77F96C721E36F1D69F6FA9 + 450CD24D1C36FE62BCE6DD9E3CFCBC295C9EA083C7627903359DE19D66D3C43A + AEA5716338BAB78C44AB2A2B796CB83C86230C0B6EE5491C1A8FC5BF03E6B28D + A4D22EF51B7B7F3CCFE5C32B3143B8B1F9460B939C6496C8E0A919CF9ADAF8B7 + 45D1BC6775711DE69363AB5C2F98D73672C50DC4990546F0C0B4921238002A1C + 119E08AF9AC463AAD3C45AB46DADFD74B68D2FD3D4F76861613A17A6EFA5BD35 + BEABFE0AF99ECC8BBA1B8F518C7D42822BE7FF008D571A87C3CFDB7FE1C78934 + 6BCD2B4E97C4D1DFF87EE5F50B27B9B6674B58E685E5F2E44745DA64432296D8 + 36B32B2AFCBDDFC35F891AA1F05E91797DAA697AACD756705C5C99D45BEF91E2 + 563E5CD1028DBB04AAEC66231CF7AB17DFB277C52F8C7E28F08F89B5DF86DABE + 8BA4F85B5CBBBC6935E6B6D1ED6EEC2748ADC82D79346AE1ECDAE2320E0166CE + 00C1A55B30A16837249DEFF8A7D3C8AA385A8E535157D2DF83FD4FCE9FF82AE7 + 8FBC75E15FDB33C4D21B68740BE934CB18F526D1EEDAEE3319B458F1E73451B8 + 89D33B91940CB10770009EF7E057FC147AFBE3C7ECEFE17F82B1F8AA1F85F75A + 4AB43F61D3E1FB0E99E30B8762566B9922C3BCE72AA11CB20DA0469D87D37E3C + F861A7FC0397E3E7C4EF1A7C50F84FAAF88BC41F0875BF05F87F41D17C49FDBD + AC5D5C4D63F64B67945BC4F179CD016591BCDC17909030723F15AD3ECB05B4D3 + 3497906AD63750B5B04E136FEF3CC278C89158445791C6FEE057CCE32A46AD79 + D485ED776763E9307074E846125AA48FD6AFD9DFE36F8D7F621F8ADA7683E32B + A8FC49F0BFC6B20D3FC51E1B7D43ED5A76AD61215599FCACEE8678C3EF8A5011 + C3A603101C57B7FC31D52E3E14FED5BE3EF833AB6A126AADE099359D2747BBBA + C35C3411B703BE0491469215FBA190FAD7C61A7FED3FE1BFDABBC01E0CF26E48 + F1969B770C5AC58496CD1B3EF015A646C6C68DA45CE03646EC1515F4AFC4EBA9 + 752FF82FAFC4C64DDB1358D7D5C2F4F92C6E5727F103B8ABCB6A4E35E37EAD5F + CF52730A717465E8FF0023EB1F0943E778634D931F33DA44C7F1406ADEA7E1DB + 3D62D7CABBB786EA31C2AC89BB67D0F51F85677C3BD4E6BCF0769AE1AD6F952D + 61490DB931B23F9484AE18907191CEE1F4CD6F5BDE43733F97B8C72B748DD4A3 + 1FA03D7F0C8AFB184E2E093DBCCF939464A4DA389F0F786F5ED33C43AFC90EA5 + 6ED6FF006958AD2DEE6269A3F29628F8660E195B2CC370FE100107031DB7804D + C5D595E3DE5B456975F69DAF14571E7C6308982AFB5490410795041C8E7A9A1A + 1E5351D755BA2DF8DA3D8C109FE64D6F7844F9ADA87B5C2FFE8A4ABCAE9C60E3 + 6DB5D3A75FEB433CC2A39295FCBF42D6A1A45BEAD0F977104770AA772875CED6 + F553D8FB8E6AA7F65DFE98736773F6A8874B7BD624FE13005FFEFB0E4FA8EB5B + 4211FF00D6A511F3E95EECA317AF5EE7931BA31A2D7E012AC3751CBA7DC390AA + 97185590F6092025189F40777A815A0D0E3A8C7D7B54F359A5C44D1C8AB24720 + C3A30CAB0F423A1ACEFF00846DF4D19D36E1AD57B4120335BE3D02E4141E8119 + 40F43D2A79A715AEBF9FF97E41CA9EDA13345B7EBDB15E27F109ADF469AFEF2E + 2486DED6D5E632CB83B2345624B1EF85C1E31C9E9D2BD91B5B6D387FC4CAD5AC + F1F7A743E75B7E2E00280772EAA07A9EB5C8787B5AD0FC33F113C51E39F10C29 + A97857E0D68F3F8F2F6D9986CD4AF232134AB52791896E49743D336A99C8635E + 56698C8D18AABD55F4F376B1E9E5B85759BA5DEDFA9E55F1C75FF863FB09C5A5 + 78ABE2E785D3C79F18356D303E81F0E669CC367A0D8C8C1D6E35B619DF248CAA + E2D082A36852A48F353E73F8ABFF0005D2FDA27C7B64D61A678D2DFC07A228DB + 6FA5784F4D834BB7B44EC91BAAB4E001FF004D6BE6DF8A1E3BF167ED15F103C5 + FE3CD7A6BCD6F5ABF965D6F5CBEC164803380CE7B244995451F75542A8C002BC + 4EF3C75ACDF4866D3F4B87EC39CA1BB98C734CBEA17F873DB7738F4AF83A9375 + 26EA54D5BEA7DCD1A51A7054E1B23D63E297ED01E2FF008BF78F71E2CF157893 + C51331CEFD5F539EF981F6F359B15C4CDADED1D781E95912EB71DE6976B711C9 + F3DC2132C2410F6AE1994C6D918246DCE46410473DAB32EB58C1EBC52B1A16BC + 47AE2C42691B695442C41E84019AF15B3F0C2CB62970C1A38DB2598AFCB90718 + 1EBDB8F7AEEBC69ACE34AB9F9BEFA6CEBEBC7F5AE6E1D566B8F09DADAB4D33DB + DACEDE5C4CC4A445B2720741939CE3AF14D225C8A71786F2A1820618CE09F98F + F9FAD7B2FC1AD00695E0A86E86337B712AF078C22C78FD59ABCB6C67690AA80C + CCC76AA8E49F6AFA1F4DD174DD13E1B78420D3EF9F50125B4B35C486DDA1D933 + 49FBC8C0639608C0AEEE036DC8029C9590A326D9F787ED1B746FFF00E080FF00 + B38C91A34D35BF8FF58D3D114649324B78C140F7C0AE07F663F105C7C39FD9FA + 7BB96CC2CDA4F8A374D1C9959C32C1BC031E012A32D904E4EEE31B70C7ED11E2 + D96FFF00E080DF09EC6DA465B8D2BE2CDFAEE46C3266DAE64C823A1F987D0D79 + 37ECF1F1EB5AD53F6789B47D726BAD5F6EB36BA7D9DF4E91C50C710B49CAC265 + 003BC8A2263B79243027A739C25C916FD4551733B79A3EDBFD9DFE2C45F15FC3 + 12DC2C7676CD6EE1638A09A79B29D0317921883F2083E56F5071F39AEF1D0063 + FBC8D79E854923F1AE2FE054F0F8A3E16E936F7D343A85D5BC3B8B799BDCFEF2 + 451206E082769F9800460F7AEA4F872653F26ADAD22FF0AA946551E809524FD4 + 926BE9F2DA927878BDF43C1C6462AAB47A481D3F4A7AA73EBED595FF00097476 + 43FE26167A96960725E683CC8547A99622E883DDD96B534CBDB6D62D45C59DC5 + BDDDB938F360904887FE04A48AFAEE64DE87C9F2B451F191F23C1FAB37A59CDD + B3FC07B57CCFFB42FECFBE15F187827589F59D16CE49A1B0B89E0BC84F917116 + C42E0874C1EA070723AF06BE96F8889FF1426A9DF741E5F0339DC42FF5AF94FF + 00E0A43FB5669FFB2C7C21B496E34B9358BEF13CD36996B6FE67950AA988F9B2 + 48F8246148C2819627B004D795984E0AF2A9B25D7E67760E139351A6DDEFFE47 + 1BF13BE2C5E7FC13FBE057877E17F872EAFADFE226A9A45BEB5E25D7B5094497 + FE1582E638E7B6D2EC1F005A3985A3B89A58F12833471071E5316F9B6D7F6909 + BE200921BC6B7F135BDAAE4FDAA275961463CBC6E401F331E64DAC493F7B915D + E6AFF11A1FF8295FC48F1B7C42D2756B3D1F5CF185E5F5F6ABE183A818A6B1DF + 978AD4B10AB73684AC4AAC420FBBB941422BCFBC57F0E359F87CAADAF787F57D + 3E69976DB4D345E5C49CE5B2483BB701C0561C8CF2073F9DBE596FAB3EFF0096 + CAC69E9F17877C4516E5BABAD0AEA4521D2746B9B71D30A8C32C7B7CCFB00CF4 + 039AF09F1FFECEBADDF6B5A96BD676F69E20B1BCBD90ADD6952A5D2819C2A7CA + 72CD8033B030072326AE78CBE3C3782BC68BA69D33CEB5B708D39F30C72CCAD8 + 24C47955E38CB0619078E2BB4F037EC4DE2ED76CAD7C51F067C47178E747B898 + 091B49BCFECFD7B4C126DDF15C5B96C96031911BB93B73B429A4BDD7A3FBFF00 + CC528CBA1A1FB0FF0080A6B4F1469724B6B716F36A1E21B4B25F3A228D88E45D + E3040E8CE01F75F6AFB53C5FE28D1FC3BFF05AFF008B7AA5EEBBA25BC8DE2BF1 + 1D8496979706DEE1039B8891A3DCBB6505815DA84B0C0C800827CCFE13EA9E24 + B4FDA07E1BF84F5AD325B1B893C4563676F06A76A7CDD33CCB9890344080396F + 9892ADB8E7A5770DE11F06FC5DFF0082A0FC594F1168F75E23D423D675FBAD42 + DA440D6F2CF15DB9FB541B3E70E8FF00BC1CA019E2B6C3549FB78B4B5D3CD7F9 + FE06189B7B1929763EA8F809E37B1D52D5B498E4DD3320BAB7995C3C77881235 + 93611FC71B140EA7040910E3078F49FB325CB796EAB223E32A572A7F0AF04F84 + 9F0AF43D43C1DBB4BD6AF346D734BBC379A55CBDFCCD1432C90A91E644EC6275 + 667954A005B6123200E3D03C39E2EF175CF8625BB86D74ED6B51D3E616D7BA63 + C66D6F2D6752BBD3218C720DAC1D4E230E8CAC3A815F4984C55A8A525D1EDAFE + 1BFE07CF62282955728BB7AE858F8657571E238B53BE8E46B36BA9ADEE05B91E + 6C51EFB2B76D872013824FDD23823A6315DDF82629D4EA3E72C6ADF695C7979D + AC3CA8F9E7A679E3F53D6BCABF67CF895FDA1A0CB1EA5A56A5A5C82686DD5CD9 + 4F242E5618D013208F0B9C00093B4F627A57B3785E3FDFEA0BDC4EA0FF00DFA4 + AEFCA2A46718496FADFF0013933384A0E49F97E85D11739C52F927DAAC08368E + FC75A7345FE457D0DCF10ABE591DA93CAC1FBBF855B68700FD29AF167FCF4A77 + 029F9783C706BE1EFF00828A7ED91E05FD9C3E0A7ED09F0EAF27BBFF0084DFE2 + 9DCF85DECAD6CE0DEA2D2CE479E492790E1635382A1012C5981DBB72C3EEA68B + 9AFC96FF0082CE7EC01E3AF1BFC50F8AFF0018BC370C7AC7857C276BA0DEF88A + 269BCBBBD345DC6D651491C6DFEBA1DF6803143BD5A61F2155671F37C4F6FABC + 5BFE6FD19F41C3AFFDA24BCBF547CBBF0E75CD0BE30EA1716ED72B1496D63792 + C504B288F337D965F281C9C32B485539E85C67039AE5352BB749995B706CF20F + 07E86BC32DFC4179E1FD563BAB39E4B6B8B763B2443C8EC7EA08E3D0835EA9F0 + BBE3D3788F528ED754B1B3B8B82A5419230D1DC01C95F5463CF438FA74AF8D8D + BA9F612BF43535CD574C86C6D56CE6BE92FB0E7501340B1C31C99F9444C18990 + 6CDBB8B05C3640040CD73B75AC7DEC56C7C5CB9D2D05BDD695A7DC69EA5CC730 + 79C491CA480CAC83195C7CCA412412B901738AF3F9F522D9E6B5E546674EFA65 + BDD58ACB7DBDE37F99514E323D7FCFA52695E15B2D6AEE4B5D36E23B3B999711 + C176DBA0B93D76EEC655B8C8CE727D2B16C3C52D244B6F32B371B6361DBEB597 + E28D63FB2E3DCBF7F385E7BD73734E333A3962E27A8FC2ED2B5AF056B53B4DA3 + B5ADE03B6398C45F62E0E5A37E460E71953FD6BD4358D5649AD2CE4B8CEE58D9 + C9273DC7FF005EB8BFD8B3F6A2D5BE1E78DAC6CF5F65D4349BC7547F346707B0 + 6F53D8370C09EBE9EC5FB704A74CD3F4FD616D748B6B7BF92E61B696C0102E6D + B28D0492924E662A5C31000CA74E335A3A9CCCCF91A3D87411FF00096FFC10AA + FB5398EE8742F8CFE4267F8449A6313FAC82B96FD80E3B76F016B5A6CEB1C82D + FC59A7DC1431BB3BC4CA490A4E22C65390C73F771F2EE0777E16DC797FF06F4F + 8D6CDBFD649F196DAE109EE4E9F6A08FC326B9DFF827C5C6A975E15F17DE58BF + 99A5E9FA8690DA9C610B794185DAACCD8FE1565552082079809C2A961A42EEE9 + 18D4B5B5F23EACF1F5A5F7C379EDBC45E1B8868763A5DCB596A30C912B450DB4 + F223873147BF72AC8724AB8386E0004E3D13FE124F1AA7CBFF00088F8667C71E + 62EBD322C9FED05C700F5C76A6E9D7DA2F8BB58D734937961AAC1A944EEF046F + E679D06C8924639180BF38049EE78AF2AFF8573F193C3BFF0012FD2754D3E6D2 + 6C7FD1ECA4942891E04F9632DFBA3C95009E4F35E9518F227283934DBF85F54F + EED4F3EA4B99F2C924D25F12F23EA74B1D6B4CE60BEB3D4917A25DC5E44C7FED + AC436FE1E57E3546FED6C6EAF7ED1AA7876F2CEEBA1BEB3432B9F612DB9F3C0F + 52CAA2B7A2D7AC8BAC724C2DE46E152E54C0CC7D83E377D5722B4563FF003E95 + F7124A5B3BFE27C4F335BFF91C078AB17FE0FBCFEC7F112EA491C90A496D7023 + BA31E654C02CBB2453FF005D198F5E3BD792FED27A3E93F10FE06EB9A7F89BC3 + D63ACE9975107DADB6E2385B700241B82BA380C70F182C3B11D6BDCFE2EE8D69 + AC787EDFED36B6F70DF6A863579230CF18DE18ED6EAB9DBD411EB5F3FF00C76D + 0BFE118F056A86DF52D4A387ED16F1A5B4D37DA166CDC47C03206907CB93F2B8 + 0003C57958F8FBB3BF45FD6E7A3837AC12EAFF00CBB1F941FB5E7C1BD3FE047F + C149FE2E7813C0BAB4DE10D37C13E33D7F4CF0FDCC97B2F99691D9CD702DE113 + E7CCDEDE5244AE49259D4B13C9AFAD3C05F1E61FDA9BF61192F64D53CDF13787 + E08E2D5AC96E70F23C52C59BA685481B5D36B6EDBB433380460D788FFC167B43 + D217FE0A5DF1B24B6B4812F2E3C6BAEDC3BC670B216D4A40AEC31839F98F6CE7 + 249AF16FD9EFC17FDA1E2D9353658DBFB26232E4B00C19888C60673FC67240C0 + E338C8CFC23A6A4933EEF9ADA1E87F1D74BB3BDF85DA8DCDC411C93D922B5BCA + 47CF1333A8F94F5E73C8E86BCEBF661F8A7ABFECEBE39D1FE25697ABA2AE8FAD + 43A7EA3A4A5C18E6D42DA48DA46575E8D132C722E4E76B853D715F627C34FD82 + BE2D7ED19A1DBC9E1DF84FE39F1468F7855E3B987439DEC651D41F38A888AF71 + 96C1C7B57CF973FF0004F8F15689757175E228BC23E07B792795C0D7BC516167 + E4217254797E7349C2E380A4F1D0D115195C4E5CACFD3FF0DE8DA5FED0FF00B7 + 5FECF3E2AD0759B6D63C3371A826B779A925EF9D05A5969AF05EDCB39DCCB16C + B7462C9F2E1B391B98E7C2FF00E0989F1CA0F8F3FF00053AF899E2BFDDD9E95F + 64D675C9AEA67090DBC32DE44A0B3B602F32E727B035F3E683FB49F84BF643FD + 97FC59F0C7E0FCD71E25F89FF159C693E26F17D9DB491431E97942BA5E9A8C04 + CFE749BBCC95954C802AAAEDFBDEEDFF0004F7FF008274C5F0B561D5FC59690C + DE309ACFCEBCB2BBD3EDF52B6D20CCF135B5B98E456C5CAA46F24841055678C7 + 03E66ECCAE8CD57528ABF2BF438B32A90F60E3376E6D0FAF7E06F83EDBE2A69D + AA78B17519E4B5F105E4D2E9B22DB40616B6F930CA1E2DCD1B4A26646241D8C8 + 5481B6B67C5BF0EBC55E074B8D5B41D6BEC91A40CB7D2DBC0F752B4414E2616B + 23E25993939F372CB940BCA95E675DF88DAFF82FC4674B8B5BD275CD69905CC7 + A5DBF872E649E3B7DDB4EE68AE0AC2A5810AF200090C06EDA71B7E1DF8BFF132 + F85CC72F82B47D3DF67FA1DE5DEB43C80C73832C48AF2F1C12A339E9B876F6FE + AB8771E4B352EE95F5F95D2FC0F0FEB35AFCD74E3E6FA7CEC3FF0067EF8BAB3E + 9B32C71D8EA10DC3C6B6EF05DC70CB7402004C713B65DBA0281B703C63D3D9FC + 13E3AD365BFD42DAE276D2EFBCC566B4D410DACD10F2D0721B8FC89EBEB5C87C + 3CD074CD03C056BE1DB811EA76B0DBA4371F68815A2BC7E4C8ED19CA80CCCC76 + F20671D3AF67F0CFC35A443A4DEE8F6F676B269565324B0DB36258AD59D72511 + 49223C7DE0A0003CCC800115D781C3E228B8C7993F55FE5F9BBFA1CB8CC452AA + 9C92B7A33AF681A33F32B03DA831FB7B56245F0DA2D1D7FE24B7FA868BDC471C + 9E75BE7D4C526474E38200F4CF3486F7C4DA2498B8D3ECF5AB7E865B193C8B80 + 075631C876B13D95587D457B1F58947F8916BCD6ABFCFF0003C9F6717F04BEFD + 3FE07E26E343F351E5607E95856BF14F4596FBECB7571368F7854B791A940D6A + 71FEF37C9CF61BB279C0C574617CE89645656471B9181CABAFA83DEB68558CD7 + BACCE5171D245578F3FD2BE12FF829F7EDF1E0FF00D9C7C33F1CFE17DFDBDFEA + 5E24F8AFE1AF0CDBD98B578CC1A69B3BEBBBA77B925B7216468B622A9DC1F71D + A304FDE7B0927D6BF263FE0B17FF0004D3F187C40F8D9F127E29F8366B7D634D + D27C3D6BE2BF10D85C4BE4DCD94018593BDBE7E59954C28ECB9575126155EBC5 + E234FEAA9F9AFD4F7387ADF5977ECFF43F353C27F0CAD7C4FE2FB159AF9AEB47 + 5BB8BFB516D87977B15AB3A89648D4EE0C554923193903E539ACB8113C0DE2FB + AB4942E74DBA916325B3BF6B90AE18750700861C1ACF1ACDC68B789716F3496F + 7109F95D1B04763FE4D74DA3FC406F88314763AB5BC46660441729F2927B023B + 67DB8ED8AF8B8EDE67D93DF4363C49AF5AF8C7C1B25C5ACF1C8F0ED95E10DF3C + 673B5B23AE39383E95C686C0FC0D59D6B408F4C8924F255668A4D8CE18FEF01C + F51D0118C71EA2AA2727F5ADB733D8B1A5AF9BAA43F5CD3B55D56CC5BEAD6D73 + A7C77D71736AA965334ACA6C6613C6E6400101B3124B1E1B23F7B9EAA08AA599 + 1F746CCAC3A106923D264D42292E1BF7877EC6FC856728DDDCD23B1A5E08F184 + 3A1CAFF6A4976EDF97628DC0FA73FCEBD97C41F19ACBE307C06D334B9353B78F + 54D26E92596C6662920E76B1889E1D4862D8524AE4E46315E2F63E07B8D4DA28 + ED639AE2EA7216386242F248DE800E49AFB0BF63BFD92BC2DFB2688FE337ED11 + 0FD8749F0FA7DB7C3DE0B970352F14DF291E547244798EDD5B0CFBC7601C053B + 5E7979751B9773D3BF6C1BE6FD943FE097BF08FE13DD2B5BF8A3C617D3FC40D6 + 6CCFCB25A24D1B5BDA0917A863130CA9E4340C0F22B88FF826B78635FF001EF8 + 6358D264D2AE23F06F89B5ED363D57593284DA2CC4D22DA46ADFEB1A569D7715 + E630A87F8857CFBFB457C7FF00187EDC3FB45EA5E2AD694DC6BDE27BA0B6D688 + FB62B48BA470A963858D1001B98F0AA598E4B13F7CFECE9F0A7C79FB2A78434E + F0FEA10F877C45A4F87C5C4F6FE4EB634FB78A5725A79A559A240EC43940D2B3 + 796870768C29D693D5A5D9EDF71CD5B44969BA3DE3E10FECCAD65E31BCFF0084 + 5FC59AF6832DE299E0DAD15C0573B41F34BAEE9A145880557214191FE66C8C7A + D2FC0EF8AC146DD7BE165C2E38965D0AF84920FEF36D3B727A9C719E95F377C3 + 9FF828D7857E146B9BFC53A1EB1677B1C662FB2E977D61ABB2CA71B46639C1FB + A720BAF19E171C9F648FFE0A37E01BE8D665D0FE29C8B30DE1FF00E114BC7DC0 + F39DC0E0E7D4706A31D53D9D771C34B963E4DAD7AE9EA183A6E7493AEAF2F357 + F4FC0F6C6844919560195860A9E73F5AE3F5BD6D7C29AA4D1C9E17F135B58C6D + 98EFF4545BA81C103E66B6858CDBB39073038E3EF1EDDBF97851C53D22FDE0FA + F1EF5FA5D68F3E9B1F9EC64A3AB573C8354F8D1A0F8F746863F0EF89F46F115D + 5BDFA2C962EC20BE8982BE448980F1E003C18739183EDF0EFF00C15E7E18F8D7 + E256A9E0ABEF0C5C7886C7ED3BB43BAB44FF00906ABCCEBB6492646DD1B48DE5 + C5992301B00020820FD15F0CBC9F8A3E35F88F7BACE9163E225BAF1CDE69F6B6 + F736A9244905AA4CAA58BE55407918EEE58E7E519C01F3AFFC154FE1C7C60F01 + DAF86751F872BA93F84A19925BAB4D2EEA4B8920D4C48ED0AC76B233B796B1AA + 91E52E19B797500201F278AAD3AB425CEAFD34F27A6F7FCCFA7C251852AD1507 + 6EBAF9AF97E47CE7F0EBFE0A3BAAFC1FBF7F86DF1C3E1B7867E28587836E25D1 + 2E1B50B686E756D3BC891A29104CC1D25F2F695054A12147EF0F5AFA7BF6AFFD + 943E17F807E08D97C4AF85BA443A6691E228AC99BECD7B2C96CD0CD89229238E + 4DC577861BB2FF00294501465ABE69F0B7C44FD98BF6A6D51E6F8A5A7F8AFE10 + FC50D4A690EB5AEE9533C9A56A77B231134D2412097C969198B3A048914B37CE + 3191D478B35FF8A7FB27586BBFB3D6A979A4F897C03A79175A75FDCD81174B66 + D309E19E1915F0A1A4600A3F98AA647556E057CB72EBA687D2F4D4EA3FE0B47F + B447C44F0BEA7F06FC31A4F8EBC61A5F8517E1278508D1EDB57B88AC11DF48B7 + 766112B6DCB6E3BB8E71EB5F0CFC31F87579F10F48F166A10EA16F02784ECEDE + FEE2291DBCD9D26BD82D3318008255EE109DC4003D4F07EC8FF82D2D89D4FC6F + F0DA3546F32CBE12F835B77738D12D09FC839AF8CFE095EDDDB78EE6B286668E + 1D5ED5AD6EE30389A359239C29FA490C6DC7F76B7A4B4D4897747D2FFF0004FA + F85DAD5DFC506D4F4196E9B5286C5E7B61A3FD925D662500A3C9145732216E18 + 3108EAC54750B9AFD19F811F111BC23A3B586A5A829D46DE532DE9D42D1F4AB8 + 84CA58869D2E1C7EF642AEBB96E664629B50801547CCFF00F04A1F82BE19F1F4 + BAADC6B5A3DBDF5C5958B18A60EF14D6C4DD32EE49232AF1B6171B948207422B + DF3C6DE1793C1FFB68782FC27A1EB97B34DE23D0EE2711F886793598912DD6EF + CA84F9C5A56899A493EFBB11962B835EDD3A3569E194E9BDDADBCD9E157A94AA + E25D3A8AF657FB91DBDBFC69F0BE9BF19B5ED3F509A18753D42DED2578E69021 + DA88E026E936863F31608A58E2424020E4F7FF00DBBA6C76FBDAF7FB342AEF54 + B86F248503248593195C77008F7AF86FE347C3CD474CFDB0FC3B0DFE93E1CD0E + 3D43565D164BDF0EA3AC49703ECE4CA914AC7685037007A3BC9C9040AFBE3E0B + FC13B1F86FE28B7D3EDF49D275A56D3A59273711ADBB5C490C90289CC20341E7 + 1F35F2C89106DDC91815D997D6AD3BC1AD9EFEACE3C7D1A34ED35BB5B7A235BC + 1FF09FC41E28B813DF5C1D374523EE344D06A379F43C8813DCA79879C08F873E + ADA16936BE16D322B1B3D3FEC5690E76AC0A194927249C65D989249661924924 + 927358E91586923EEEBDE172BDD7E7B545EFC7EF6D501E39215BD319AD5D324D + 5AEED966B1B8D1FC416EDF2878D8DBB7FDF69E6239F60A83DEBDEA7151F5FBFF + 00E18F06A49CBD3EE34E0BB8669762C8BE6373B0F0FF00F7C9E7F4A97663FBDF + 8D71DE35F8F3E15F8729E5F8AB51B3F0F4CC3F7706A17300F3C8EC0872A3FE06 + 57AD78D685FF000547F85FAB5F341147E2C8FE42F1B5A68F73329C1DB8036796 + 7E6CAE7904E3A8C35635F32A1424A356695FFAF91B50CBB115A2E54E2DA5FD7C + FE47D217FA65BEAD6A60BAB786EA163CC73462443F83022B9897E0FD8E9ECF26 + 8977A97876666F308B29CF9123F669226CABE3818E303818E2BC2BE23FFC1452 + FF00C30F6D71A3F817571A6F9C52697C4F3DB692B3AE323CB68E495C375214C2 + 49E7818AB1E1DFDA27E357C5B8A47D03C2FE1BD06DFECAF3A4B75A36AD781DC1 + C79692C82D9198EE5232A01F9BB2935C32CEB0139349F335FCAAFF00735FE68E + E8E4B8D8479A568A7DDDBEFB9EDD12F8B3C3C8AB71158F88ADC02AB2C58B3BB6 + 3D77329FDD9F4C2E0FD6BE16FF008293FF00C14E7C33F03BC49F127C0F1E83A8 + 6A9AD78DBE1ECFE0DBF8A793EC874479AE56E619DC6D7DE7CA3B820C7DF52580 + 209F2FD1B56F8CFF0014BFE0A39A9785DBE206B5E1DD69B50962329924582DE5 + FB190C9F6786711A2840C84C2E0E470E71CF1BFB747FC127FE25788BE23F8935 + DBBD5B43B8D62DBC21AA78D6FAEA5D76EAF975A874C16CB7090B4D009A298453 + 215499E456F2FF00D6A920579B9963275A83508CB953D5BB69FADFE67A996E0A + 146B2739479ADB2BFF00C358FCED8FE1C4FE2596E27D26EADB506B77DD2DACBF + B898A93D4024AB0EDD460F6E4565D9DB5EF83755F2EEACEE6DDA3625034679E7 + 839E9F9546DAE5D683A80B8B499EDE7889DAC9D467A8F7F706BA8F0D7C4F93C6 + C16C356B784994ED4B841B406EDB97A0CFA8C0CF6AF015ADA9F40C5D4BC49A6F + 8A3C3B3059A386F9537189FE562CA7391D8E4038039E6BD4FF00638FD933C35F + B41783BC75E29F18F8F1FC0BE19F87E96325FDC47A4BEA124AB752491A615581 + 186455E15892E3818AF1FF0010F87974DB49B30C7BA07DEB2EDF9B04818CFA77 + 1F8D7D0DFB10EED47F640FDA834F5E77F86F4ABE03FEB85EB3FF005ADE1AEE67 + 3D8D69EC3F634F870AC24D4BE327C429D3FE79A5BE9D6B263D98472A8FCCD513 + FB637C09F04C4E9E10FD9E74D9D55B227F10F8867BC2C7B13115653F81AF94E4 + B48834885BF7DB9B01871C7A1FF3D2BE80FD9AFF00635D23E387EC5FF19BE26D + C6BD796BA9FC337B14B7D26DA042B742E254532C9236485DBE600AAB92533BB1 + C198A954938C16BABFBB50938C1734DF65F7BB1D643FF0543F1A2CCBA7F817C2 + 9F0E3C08F707C985F40F0E8FB4E4F002972CACC738E13AD64F867F65DF8CDFB5 + 5F8E5B54D62C75CB8BCBA6025D6BC4F2496F0C6A0F014480B955CF091A363200 + 5008A77ECDFF0000FC27E35F17F836DEFB528DBFB4EE754D3EFB48B75F2EEA05 + 86C0DCDBDD9903173BE577419181F67032C32A3E9DF10FECD375F01F5DB5BAB1 + F8897FFF0008CDC6A3F6092DB5AD38DD4D6BBF705669D084DB9EBE698D79C672 + 4648D37CBCF2F87CADE44CAA24F963BF99A7F0DFF62FF0EFECD7F0BF58BAD3EF + E1D67C5924416E7569A200B8DCA4C100DC7CA46C637292E58F2595401A1E06F8 + 33258259DC78AB4BD1BC7BA95D1896E8EBD792DE240F80024237F97B02825559 + 1C6319EED5D45A6913476B247AF5BFDAAD5668A2F32C94A433F2197E62C50E40 + 27113B82B820915B6DF1A341D7FC596B169CCCD1E9F3416E418C288595423A8F + F75CB29C67054F7E2AA5528549FEEF651F4D7F5328C6B463EFEEDFE076DA145A + 3F82916D747B33E129264DE90E981B4FC24647DF7B72AAE41652016206781D6B + 2EEFC33A65F5D493491DECB24CE5D9DAEEE09724E493F3F7AD1D5BC41A6AE98B + 7135F5A40AAA76379A30325793CF7207739C7E15CABE95E229D8BC7A1F8DA68D + CEE5923F0FDEB2480F465222C107A835D198E15CAB5E11BE8B6B1860710A34AD + 37D59F6F5EDE43A6D94971733436F6F029796695C2471A8EA598F007B9ACAB6B + 8D43C5B22ADAFDA349D34B0DD75247B6EEE07FD32461FBB53FDF906E3CE1002B + 257CBBF073FE0A9FF0E7E377C71D07C3234DF15DE6A5AC5E8B7D32696DE14D3E + D672098F119937EF240512B82416C8F2D4915F40EAD7DE33F04E99757CBAD68B + AB5BD8C2F3B43AC6912D94C5514B1DD776CED0A9C0EA203CD7D83C642A2BC355 + E5FD7E47C94B093A6ED5347E7FD7E67947C2FF000EC3F0DF48D0ADECDA49D752 + 9757D5A6799CB3492BDC427713D4FCB391C924F724D7CEDFF054CFDB9BC45FB3 + 55F782F4FD1FC33637B1C939D5DB52D4609A4B34913CC816DD4C6E83CCC33B1C + B640319039C8F6CF851F15AE3C7BE1FF00095E47E13D6A6D3E3D2AED449A75E5 + BDEB32F9D0C6CE54B44FB730646D462C1B81C7373E317C66F8790F812FF4ED62 + ED4F1FE9BA46ABA6CF1CF32323AA8304D182CA5CAFCC14A8CE73819AF07DB43E + A295ECDFEAEFD4F6FD9CFEB8E4E3CC974F456E87E6EDAFEC9BF0C3F6FEF186A7 + E2DF04FC5ED2BC2FE3CF175EDC6A5A87837C61079622BCB891A4952DEEA3C19A + 3DEE4A6C85D82EDDDF3022BBFD77F6A8D53C3BF02AE3E00FC4EF01CC7E22F836 + 28F4787C5515CC326FB6B799658436E412188C4A14323B07CC6C541626BE3EFD + B33C2B63E0EFDAFF00E2769BA7E96747D1ED7C57AA0D2AD1206B65B5B43752B5 + AF968402B1F9262298E0A15238C57DBDF0F3E39F807FE0A09F077C35A0C76F71 + 27ED45AD5BE9FE17820FB25D37F6F325D4481C48AA6DC33C6A2466728570EB9D + A1457CCBD357A9F4DBEC47FF000536B05F117C7DF05D9150CB1FC2BF085B3F7E + 1BC39627FF0066AF857E0EE9D259FC6486178DB7C026490019DA4020FEB5F657 + FC153FE2C69117ED6BE25BEF0E32EB5E1DF0DC5A7784F4EB98E4DB1DE43A6585 + BE9D1DC83CFCB235A09063FBE2BE40F84739D57E38A4E4C8A970679D93CC2777 + 05C027F8B07D6BA2927A194DE87E8CFF00C1273C3ED73A6EA9A85C6A16B60B0E + 9F39124F12342BFE9CF82C4ED7181DD64439EE4715D77C56F8C7A2783FFE0A25 + F0EF579B5DD2F54B5B0F0F3DB4B77A64ADA9ADBBF997800640E5831320CA6F63 + 8C73CE2BC1FF0062CF855E01F1B594D378E35BD6B43F2ED9EE21BF8ED5BECCB2 + 79E546E79619615014E0960A323EF135E957BE0EB5D03F6EFF0084F69E11F137 + 843C7D6D3E9137D8E60B15ADA921AE3F713BDA7980BEDC6196307951B08193EC + C6759D18C61156BAD6FADFA688F1654E8FB794A6DDECF4B74EBAEC6E7ED47F14 + 2DBC67F1BBC1F7D670DF18ECBC4CBAA3CED6C6D94A88635DB890E6327CB0403C + 05C9AFA8349F8E1F14B51F1DC0DE1FF0678574F55B0B94177AB6A171730EDF36 + 00C4AC71C5F30654FE3C1DC483C0CFC9FF00B5D78BF678C1A7B9D2ACEC924F1C + DA4BF6AB2BE86EE1DB1DACE8D0A01B65619190C2309F2E090DB54FE857C09BDD + 0FC4DE2DD2FC41A0C2B0D8EB5A4DD4F138B77B332A34B6FCB44C1486F9472573 + 83C1C1193034EBCE4D42A72F7B2F37DFB118E9D1A708CA54F9BB5DE9B2EDDCE5 + ECFC13F1FF00C75A69B8BFF1DE8FA12CC418A2F0F69505BC40739CC971E7CBDC + 60A9EDEF54DFFE09E9278BF576BCF1678EFC5BAE4D2A9497CCD66E5A3953FB8D + 1E44641E0E3681903A62BE8C9340B3965693C948E66396961262909F76521BF5 + A7AE9B736FC437D27A05B88C4CABF88DAE7F1627EB5EAFF64C64EF5A739FFDBC + D7E0AC7951CE2A455A8C630F48FEAEE7837857FE09BBE03F03B79DA3A7D8AF32 + 1BCCFB2A15F73C624DC78E4C84703E5AF8F7E25FEC4DAC78DFFE0A4DADF86F46 + F176BDA0DDDD4075C6D4F4FD935CDBA4704188D54BC21801204CB7CDB703F7A4 + 923F4F96E6F201FBCB459BB036F28CB7B957DA07D371FA9AF21B8D1ADED3F6EB + B0D5A7D1F4FB28E4F045C08F549DE486EDA5FB7461E0DAD88DE321D583F24321 + 0A7048AE5C665B8383A708C2DCD249EF7B7AB3AF0799E2E7CF394EFCB16D7A9D + 87866C34DF04C10DAE97AC7F6549811A45AB58AC7E7B77209586491C9EA448C3 + 9E9C8AE864BED5AD79BAD316E94FFCB4B2B8566FA94976607B2B39F6AD978D67 + B665655923997E60795753FA115927C17616EBFE871CDA6B751F6295A04CFA98 + D4F96C7FDE535EF429A82E58688F0A5539DF34F73F367E0EEA31DF7FC167BC45 + 33A9B78D7C577C999B74647FA24D80437DD3920638EDC64E4F71FF000582FDB5 + B40FD97FE20695A59B78F5BD735CF00F88F41BBB04B83049656DAA8B6862B876 + DAC18036F291181B9B67254106B84F8136335C7FC164FC5D12AC5A848BE2DD5D + 08BB608B3E2C6E73BCAA103201E898CF6AA5FF00059FFD81A1F8D1F1AFC0DAAE + 8090F85FC49E25D2F54B6B9123AC9A5DD1D36D7ED510411A892391D5A442C536 + 9DB19DB90C4FCFE2399E0EAF2FF37EA8FA2C3F2AC652727F67F43F25F4FF0086 + 69E38BF9E1D17548CDFC41A75B5BC4F2CCCA39628EB90C579241038E79C1C54F + 13787354F0B78A64B9934D92DE191C4A04617CA462016505491B43640F503A0A + C57D526B49A3B88249619948923746DAE87A8C11D0D751E17F8BDA86A720B5D5 + 923BAB791B63CBB36BA8F52070DF9035F351B5B53E95F91666F1769FE22F0FB4 + 17529B5D45A22A564520391D0838C7381C7AD7BBFF00C13ADBEDBF0B7F692B06 + E049F0BEFAEFA7786446FF00D9ABC2BC53E1A5D32DEE5552368F06646D837290 + 3B375C633C74AF74FF0082606ED4358F8DDA6FFD053E11F882003D4ED848ADE9 + DCCE7B58F9875FB6F2F5090A9FE23823BF26BE9AFF00826BFC4A834CF85DFB47 + F81EEDE4487C5DF0F25D42D9563670F736132C8A0ED0768F2E598EE38036F5E4 + 57CDB771FDA76B7F79335DA7EC8DE3E4F877F1CA192697C9B7D7348D5BC3D396 + 38522FF4EB9B45DDEC249A33FF0001AAC3C9C6A292F4FBF4FD49AD0E6A6D7CFE + ED4FA3BF67FF0084FA5F8C34EF0CCD27DBECAFEEBC6969A4CB7D617925BDD241 + 71A748C888FF003227EF222721093961C8E2BD97E206BDE22F00FC16F145C1F1 + E787FC55E1B8E092CE74D72C9EDF53B492452B1FD9E68C1496E01C11B9436E52 + 32A412BE6BFB3569B6D359E8B7122B47756DE3FF000BA47711B98A78A3923BF4 + 708C385E550E4FF741F5AF59FDAB3E1343A67C18F126B13EB16775336A365A8C + F67A8C4BF688D8CF6E1BECD2311E629F9C32229230C4E3219AA29C29A9455BFA + B18B7CD51C5FF5D7F5352E7E2AF83756F05EA3A0DE4571A2EBD61A6456FA743A + 822A24327961631BC31842B7C8CAFB89C2920A9C83E0BF133E19FF00C209F19F + 44D2F4E93C45A2E9BAB7F6734D3DE88D27B8334AE1E48F61DB24188DD91A41B8 + E067D4FAB7ECB5ADEBDF1274FF008D10DAB5D0D36F24BD6566B117492DB2B4C8 + AA57036900150C18005B9E14579AFED4FE36D43C4DE2FF000FDE4B058D9FF61A + 436369E4337EFA3B7895D1DC1EAC3ED0CA76F0304738CD79BCB6B58EC5D4FD2E + FD937E01F85F41F0658DFC9A6A6A9E20D1EF2EEC5F50BD76B9749209DA21244A + E4A4259151B11FDD2C46E6EA7DA9E172E7E57EBE95F977ADF81BF6EAD57C2B78 + 7C23A0F89974B8EE64FB5C5A2DAE9D78F0DDB849645545324AAA6396161B4630 + E08279AF3A97E14FED98256F36C7E3B09327781A05F8E7BF021C7E55F4986E22 + A54A0A10A6BCF5B6A7875B239559B9CA7F87FC1380F84DFB4743E24F1E7C19FB + 2E9FA569BAEF837527177AAE9F6C96AD7B119216B68DFCA4C3BC2164FDE90D23 + 79D825B62D7D936DF1BBE3378A3C5DF127C1EDAC78CA55F07E8F7336B12AE9B6 + BFD9B6D11B576DB24F2A99519D46546159CEFDBD067466FF00823FC7FB336A9E + 18D77C1BE13F0AFC415F0A78965D6EED752D6E6B5BAD734F138960B3920B856B + 35648C0899B3893258852401E8DFB2AFED35A3FED39E1DF8EDE24D3743B9D075 + AF15BDB5A34372F086B98C99CC488EB8F30C51C9B4B103236D793530F5694D29 + 371DFCB6BBFF00807A5F58A5562E51B4BF1DD9C4783BF65EB6F2BC2EFE23D6FC + 4BA5C7A6F852C9A3812DAEDAD2D656332C98DA7CA5CBA3163B572770EB93567E + 287C00F01C1616F79A6FF67EB567A1697AC6A375334B14A63963B36580FCAB90 + CAC5DBE6E7E41DD457D19AFC91693AC9B9BCB85B1B18F4CB5B759643B149F36E + 656F98E00C09579FF6BD8D796FC53F8F3F063EC3343AF78B3C13A93EC6DF612D + DDADEBDD3904052A1DB1F79865F006EE4819AE8587C324A7369CB4DEEFD7BFE4 + 72CABE25B718A696BD95FF0023F28AF7E2AF827E3C78634DB3F8A30F88F4EF10 + E8F17D96C3C51A25BC57935D5A86262B7BDB79248FCCF283154951C304DAACAC + 1411DCFECC5FB4A7C39FD90BC4BAD5C7C3E9B5F4F126B9A44FA21F166BB64B1D + ED9437055268F4CB581A4F2659620F19B87769024AEA8232C5AABFFC145BC3BE + 1283C79669F0BFC0EBE1B5D244897CD14A5DAF8CAA8C8EB1B31558B663853C97 + CE0FDEAF2BFD9A7C23AB7817E29E9FE3CD7BCBD174FF0007DCC57BE4EDB6FB65 + E33128A2286575DE412090C0A85C920806B92B24B4D19DD464E4AFAAF23A0F8C + 9F107C31AE2DD5A2DF7D96DCC7E5279EAAA73FC276025B00E0E76D79BFC0145B + EF8C962D1C8A47933F43C8FDD9AF66D67F648F86C15E6F127C6CF87D14FB0B79 + 5A2699A8EB370C40E1772411401BB7FAEDA3D4D67FC33F83DE11F845E206D4AC + 3C69E10F172DEC2F6F6A2D8DD5ADFD83928C5DA09D231CAABC7C348B87638DDB + 4D453A8B99234A917C973EB2FF00827A7C32F8E07E1FFF00C265F0E754F0943A + 74A27B0FB16B3B9BCCF2E61B87C91961BD943062E9F748CFADAF8B3A078DBE28 + FEDE9F09F4FF008A5E05F0CE8F71783CB921D22E43DB6B302CCCCF2C98919811 + 9230CDBB038AF5CFD943C49FB3ADA7C1FF000869573E27D3FC29E26B1115E6A1 + 35F5A5DA19AE4FCD2C7E7BE53C92CCC76A4A801C101718A77C754F0C78D3FE0A + 75F0374DF0378B1B5C812CCBDCDE43A91D5A1B233CD208634965697E622272D1 + 9276AEC385DC09FA0A74FF007295F4BAEA9ADD74DD1F3B2A9FBF93B747D1A7B7 + 7BEA791FED216DE0DF873E05F13F867428FEC771A1F8F2C6F22B6820676B1B73 + 0DD2281230C005D70159F2719AFD34F035D35DFC46D2DDBCC0CFA7DD6E1D5724 + DB9E4FA8C57C3BFF000504F84D7DE14FD98FC51A85D43A3CACBE3B815B518ED7 + ECF7975279F322C45773B4806377DE50A1B80D86C7D99F0666D72F35FD0EF751 + F0DEB1A743169ACEF3C8D6D2C532C8916D286295CF38276B056C0E456D9738C2 + 6EFF00D6ACE7CC3DE847E7F923D91507E14E58C0C7BFE95135F436FA7C979319 + ADACE152EF3CF0BC312281924B3800003927B53FC4D751F847E1F6A9E29BCF9F + 43D1616B8BB9ED48BA68D557790238CB3B36DE42A82C72300E467D878BA2B792 + FBD1E3470D55ED17F712797F5AF2AF859F0AACB40FDAA7E29F8AE2B7924BCD71 + 74EB59AE594058CA59C00DBA1DD93F2AC3231C007CD519254E3E62F19FFC1C5D + FB3BE9F21B4D0478FF00C5734CE2247D3F4716A9F31DBB83DC3A30EA48F933C7 + 4AD2FD873FE0A516DF10FE1AEB1A84D1EA1E23BA8F5D9E3BC9A7B9585E266556 + 4D8BE5FF00ABF2FCB5193CB24841208C79B89CCB0EEA422E5A277FC2CBA75BFE + 07A987CAF12A9CDA8EAD592F9DDFE47DACDA0DA87668E25B776392D0130B31F7 + 2A467F1CD1FD9F7512FEEAED9813F76E230E07B02BB4FE2DBBFC737C15E376F8 + 87E0CD3F56B4B59AC22D533B3CEDB23201BB2700E0F2B8EA383DAA2F8C365E30 + B2F829A3EB9E1FF13681E1DBA1E2BB1D0AF9D7434D59EEA0BDD56CEC51D0CEFB + 2092159E4728639433003700093D188CC68D2A4AB24DA7D8E6C3E5F56AD574AF + 66BBFF00C03F38FF00664B991BFE0B3FE2F668CC922F8C7C400AC7DF1677A38D + C47A77EDEFC57A7FFC165FF68ED27E03DCFC23D4DA1FED0D6AC352D52ED74C97 + 75B3CB692E9B35A3486428708259E2E80EFDAC07DD35F3858FC59F17FECAFF00 + F0551F8CDABF862CEF3C69E24F09EA1E3190DE186DADE4474B1BF85F5168B625 + BFEE41FB4989061846E8AA30A1ACFF00C14BB4EF097ED59FB447863C1B6BA97C + 70F08F8CE6B9D3B48D374BF8AB697D26A16B04F06A32DF48CD2EF0D1FDAADECC + AED9C2E6EAE0C71B05213E76A666FD9CA8C17C4EFE9ADCFA5A796AF6B1AD37F0 + AB7E07E6AF867E0669DF1175C5D1F4EF100D375699765947A8C3FE8F76E3A47E + 6A728E7F8414218F190700E1F8EBE16789FC19AF3B6A161FBC8422C8D149E621 + 28A173D8F20679C54DE34B7B8D2F56B88B7347359DC3C0DB491B5E372A483F55 + EB57F48F8E5E20D6EFFCAD6E6FED48E3C2892E17FD2197DDFABF1DDB24FAD795 + 193FB47AF249FC22683E3DB1BBD07EC3AD34D6D38DD123F965E39148E3247208 + CE3A7402BDD3FE0920AD79FB4A78874DEADABF81B5CB2C7A936E1BFF0064AF1A + F137859224926B74536D76A1DBE507A659483D460FA57B2FFC11BDD9BF6F1F0D + AF3E5CDA66A91CBEC86CA5CE7F215D14CC6A6C7CDF631EF82127FE788AC785FE + CBADDABF649D1BE98615BD69E5C6D1AE7F758D9BBD1738CFBE0735CFEAFF00B8 + B866FEEBE7E9CD268A5A9F58683A3789F507B59341BABCB3D3EC6EEC6E6F8C57 + 86350E6E8C36F318778F38A4B200BB412BE61E80B1AFADFF0069BF8970F8D3E0 + E789BC13ABE9BA8C9E28D16D4D86A37F6BE6DCFD9E485C911CF2CE90C85C3460 + 36D8A44E58EF04E2BE38D37C4DAE693E176486F5AC92FA654BA8ACEE5E38EE62 + 4B859610E323715711B818215943019191F567863F686BEF17783EC3C3DE259B + ED1A97887C2379ACCD37D8C02F3FDAEE6DC4FB555362CF6F1412339043BAB4CC + 73231A9955942328AD992E9464D49EE8E6FF00E09A53EB2AB7D63E1A9219355B + 8D1EEDEF6D43C07ED96E55CC8AEEE0EC382AC3A67691900E4737FB57E937AB61 + F0EBC4579A5AAC5E22D2E48A2BC5B5F216F96210461865882CAA55491B73C1C6 + 4F3C7FEC75AEE9FADFC41D763D4AD2D6F2DF50F0EDE69304324584B26F2418A7 + 0C394D8C1DB78E540CFA0153C5171E268BE15787D357B8D4AEB48D2EE6E6C74E + 4B98CCB6F6CDBB122C4F80DD153208C0E0E6B9797DFB9B736963F487FE098DFB + 7FD9BFC545F879A97C41B596FF00C456F06A3A25E6A9A535BDAEAD782D2086E6 + CE66DDBE29235B7844723BFEF70C02E4857FD10FEDBF1A7FD0034493FDB4D664 + DADEE3F71D0D7E1AFC3BBAF11F8FFF00690F09EA5E26F07F84AFA6BAF0F34D6A + FAF491CD6F0DA94B4315D212A5B72A4242AEEDCA1E400AE79FAB113E20D8A2C3 + 05F7C22B58211B23863D4F5444854701428BDC0007000E062B4860EACB64CCA5 + 88A6B767D75E28F0C5AF8BBC3B79A56A11CAD65A8C0D6F388E5689CA30C1C3A9 + 0CA7DC10457C77E14FF825B6977D6FE28B6F087C44F8BBF0DEC23D59EDA3B7B3 + D5A19AD2E9A35556936ED12BA86CA82D203F21E3B9FA0BC4DE1FF09F803C177F + 736FFF0009578621B181D834173776A9031E9B5E66FB38218F00B6DE8067815C + 9FECDFF1364F1BFC28D1354F117C4AD3F49F126B0AD712E99149650ADBB3FEF3 + CA30485A4DE036E6CEC7058864560D9FAEC6D3A356B45565B26F75E9AEDDCF94 + C2D4AF4E94A545BD5A5B7CF4DFB1F287C57FF821B7C44D58CD269BF143C2FE32 + 661C2789F4DB8B39587A19636B8CFD768AF86BF697FD807E2A7ECBB7571278AB + C1BA8693A6AB958F52B36379A5CB93C6DB94CAA93D924DAF8ED5FBA9F0EBC59A + 87C4AD26F2FB40F1526A76765772D8C86FFC3D25B06963628E11B29B9432B0DC + 1586548CD748C9E3010C90CD1784F5186652922133DB8914F552A448181F7FCB + B571CF27C34D7351BAFC51D14F39C4425CB56CFF0007FD7C8FE6C7C37F10B56F + 0A4E2D24692F2C738304ADF347FEE1EDF4E47B77A7789342B6BF125E59A308E4 + 2588230D193EB5FABDFF00054FFD81BC03A67C09D7FE2159FC33D27C27E25D32 + 5B5C5E681AAF97632F9B731C4DE65AF9688490E465114827249AFCF5D1FE1E5B + 792AE5BCCFBD91B703E515E2E2B0B528CBD9CBF53DDC2E2A9D687B489E576BA3 + 47A7D9C724CA599865549E4FF9F5AAD3788AFB4997CCB5DB6E776D1B073F9D45 + F13F55BCD0BE22DD5ADB95589821F2D9430CE39E7AFEB5D67C0AF05C1F15BC4B + 6763AAC170D6F34E5196CEEA2B491F0858012CC1A34C903E660463B6715C328D + B5676AEC8C2D37C6DAE4A7F737D711EDEA518A85FAD773F0F7E366A3E07BA171 + FDAFA8C9A90561138214C6A54A9DAC3E6E412A493D1B18E6BE8AF877F087E1A5 + 96A1A0EADA0F82F53D2EF7C25E3AD12D357B7F13EAC9AB5B6A1653CCE8D902DA + 188A8911436637575901040460FF00A05F163FE0947F093C5FE0CF1559F85F51 + D4BC2C6EA1903697697BE5D8DCEA7106F29E68E41925248C0548CA280D270C18 + 6DDA8D1A937FBA7E7BDBF130AF5E9D2FE2AFC2E7CAFF000C3FE09B5FB587ED35 + F0EB439A2F08DF2F84B5058B5BD34EB1E2DB586CD84D0B7977490B4EEC19A295 + B9F2F387AFB59345FDA43C17E33B1F07FC49BCF10CDA95E784B529FC0FA7FC24 + BB7863D3EF607B38E0975295628435AC2D2A26FB8F347EF3E62F9E7BCFD91FF6 + E6B3F867FF0004E3F0878866D25B525F087842DA17B2370B672CBF6689E38E18 + 9D8C9BDD8C6918DCA9F330EB9CD779E27FDB33C27F0E3E3059F89BE2169BAA78 + 7FC43A7E917BA3E976BA44777AEC77B6B3CD673CEC7CAB550ACB25B42A18B050 + 0B752462651C472F34AF6239A8F372C6D738DBFF0015DB0F892BE35D7B54D42D + BC693F8DF56F0B6A773752DD59DA1D253C357456C16190ADB84FB4C70CDE5A8F + 304AE1CF2F93C6E81E288FF67DF84BE30F186B9E03F86FA1C7A0FC3BF096A167 + 67A55D0FECB9AC45D5E473DEDE4AB6DBA2BDDCC4C8AB0B0091A2F98E7257B99B + F69DF03EB7F1E25F137857E03FC45BCF1A6B1672C97979AA68B1E9EBABDA9896 + D24112CD70C124646843CC2257686028588205719F1F3E38EAD6625D26E3E07F + C33D121D620B5D0AD175AF115ADABD84789951CC9040B22C6F1A36E567010403 + 192F8A98D3AD7E68C5E9F9EFE88A7529BF764D7F5A1F9897FF00B36F80FC3FFB + 40DF5BDCFC42BEBAD43C59752EA7E1EB2D2FC29A6DD69915A4B26F8A3B7D5351 + 9E36BA3123842628583046DACFC9AEFECBC43F0D3F620F1C37873C3B1EB1AE69 + 7E2290C136A7178922BA0AD081B2630FF674263318725A06C160E02CA386AF31 + FDA9BF66C7F84DE25D7BC3777E2EF01DFF00816F353FED8D074ED22CE3BFBAFB + 4799819360D1005166914492B46655442501C2AFAA693E178BC51F0EFC27E249 + 2CF54F895A9F876D67BD92DEF6E2CB47859A18716FE6234AF717516CB6759117 + CA92411B21941CBAD4BDD95E4691D62944FD00FD95BC4963E28F043D9DB3DE59 + 6B9A1EAB77A36A3736EAB70AD358B157B74C1DE17748241850C55C960075F6BF + 1678AB4AD7FE09C7E1BBABCB78EFEE3C5D61A8ACBA3DBADC283657F0DF8132BC + 91F97248B62F13658847209240207E7C7FC1327C67A77C16F85DAB697E236F19 + 6B7E30F895E21BBD6F53D62DA07B601E7220C22AC9E6AC81D24762A8A497C0DC + AAA6BAEF8EFF00B7D6A57DFDA3A0E89E0D856F2E2D62B886F6EEF62867825BDB + 68A6672157CC611A4CC321577300C0950B9EDA98BA4F0FEC7EEB5FA773CF8E16 + AAC47B5E9AEFFD7F5D8F2CFD9BF57D07E33FFC1567E28DE4B6571AAF873C73A8 + 78BE2B98E229311697B677F1B48AD1391222C736F2D1B1C804A93C676BF6F4F8 + F1E0FF00863F09BC13AA49E34F1EF8CBC65A7FC51F0E5EF8A2FF00C44935C7D8 + AD74FB7BCB36B64BCFB2C10C8A8279DC2A658B4B231248663F35FC18F8D7ABFE + CF7F1D2FBC631EB3A7E83A969379334D79788CD6D18789D2547552A59583B0C1 + 3DF90699FF000508FDAAEE3F69FF00D8F6F34FD3FE207FC24FA1784758B06934 + A44B78E1B3693ED016541E4C72BA02EEB906455322A9604A83872FBEAFDBCB73 + AD5ED6F33E50FDB9BE1F37C1EFDA53E206898CC30EB173756A7040782E2433C4 + 412391B640B91C12A715E1DF69965789FF008A340873DC03C7E5D2BECFF06DEF + 867FE0A25F07BC3FE0BF126B163E1BF8CFE0BB45D37C3DAB5FBEDB5F15582FDC + B39A4EA268FA29E49CEE018B381E27E38FD853E2BFC39D764D3F52F87FE2A322 + B6C1259E9EF79049FEEC908743F9D54A9EA5C65D0C0F067C5BB61A79B3D6232A + AB81149147BC11DC3639FC877AF7EFF827BE98BF03FE1AFC62F8D975F269FE19 + D0AE3C35E1D95C6DFB66AB7BB523D99E498D36961D42CB9EC6B9FF00837FF04D + 2F186AF07FC249F101A1F85FE05D3C892FF58D7C8B790275DB140C43B487A004 + 2827A64FCA6AFED87FB4DE8BF12B46D03E1DFC3AD3EE344F84FE052E74C8261B + 6E759BA6C89350B91C7EF1B736D046543B13B4B145AA7A132D4F054411DB22FF + 00754AFE9593E2118F339E39ADC9ED9A081376DF9D770C306E08EF8E9D3A1E45 + 62EBD0F9DBBE99A25B1513E8ED2BC63FD99E0AB51F66B3B8FED4B278CC9736C9 + 2ADB8DB6EE5E32DCACBC10197E600903EF57AD7817E20AF863C4BE33BEF155E4 + 6DE28D7A236D7536B16F23DD7D9C1B7F2208D540863468C105780AB144A981F2 + 9F03F0E06D4BE1868ED1C68CD6F6D196F9B9FF0052BCFD32BF5E6BA7F87FE3DF + 105BEB9AB69FE1F592F26BCB5B8B0BAB44B72CD716F260BAB05C171F2860093C + AF4ED594F71C7627FD99A04B3F89D0C0D7B0E8F1C2C1A296E9E18A3891771C1F + 3BF767238C36771C639C576FFB473EA5E1AD074CB15B8D4751D17CC62B23432C + 76B05C3990EE12E3CA264019C22724649279AF30F8256706ABF16743B0D5352B + 8B4D324D42149E45BC5B76B642E06FF3581085786CF6C57D49FB49793AF7EC97 + 756E9A84DAA4B6DE30751704C4D1CF12473246D94033210492DB4039F7CD44AE + 9AB0CF11F1CE90DE048BC39A83EED58DE698B78D696D76EAD0A324ADB5F2A769 + DB1EF21430DB8C915DD693FB4569F36956AF36816AD33C4ACE4DD124B1033FC1 + 5DE7C3EF0F785F52BDF8177DAF6A9A6D9C933496FAA3493C2C6158A29D6112AE + 18A2BB02A378C30FBA33927E93B5B3F024B6D1B342DB99413E4445A2CE3F8488 + B057D08EA2B1A951DF634A713E82FDB23E1BF87F59FD9ABC51A4DFC3E266B5D6 + E04D3847A5CF34CF1C9348B1C72794C5A3DB1B3090E57A21C738AEDFC23F0863 + F0878274DF0FD9EBBA96A5A5E976B1DADAA6A76D6772BE546A163DDB6042C768 + 03713938C924924F53723CD963FEEC32A1FAB123F903F991E95711016E47E95F + A04A9AE772F2B1F03ED64A0A070B1FC1982DAC66B786CB40B786793CE9174D86 + 7D27CC72412C7ECF28F9C900EEEBD33576C741D561DC60B8D76C63591908FED4 + 5BDF33048C817114C4038E9B81AEC235E5477A759C6AB180AA7E7666000EA589 + 3FD68E44B6279DBD0F967FE0A8EBAB4DFB1178AAD6E2E1E6825BAD3D5BCFB48D + 243FE99163E68E418E7FE9973EDD6BF32C7863EC3A4190AB7CAB20C7F77E5E7F + 515FAADFF053CDBA9FEC89A9E5D9ADE6D574E58801F7BFD21497F7CE300F65C9 + FE222BF3C75BF0C5C6B3A1496F636FE64DE55CCDB4B05F9521323B7246005563 + CFA57878EBCEA29BDADA1EF602D0A4E0B7BEBEA7C1BF1FAD9EDFE25DFC8BF7A1 + 0AFF008735EB9FB1969125E6B9A79DFAA5BC77174567934F8619AE4DBBC38991 + 166FDDE5E2675F9BB12464802B87F8D7E0AD5BC4DE35D5350B3B192E2DE588C6 + A5194B6E03046DCE7A8F4AF5EFD8E34AB7B0BEB54D7350B6F0EC30932C975A81 + 9228A275B76DA1CA4333ED660172B1B1E7819E478B286E8F7148F50FDA5BC316 + BA4FC2B8EDFC0EB1C3E176D4E3D4AFEEE5D7BFB4F55BF9608A458D2711C30456 + C882566089E639704BC8764613E91F8ABE0D3E28F12378B3C2F69691E8FA8585 + D4369A2F8C14EBB60BE4A194DDACB26F95988803471C8772EE2AC5A32517CA2E + 7E36C9F18FC31E22F877A7EA9F10AF75AF0F698FA5E8BAC69B65791681E29B79 + 711CED25A38091B4B148C4CB2AC5958436D8F6A463DC3F663F86FAE7C43FD947 + E1DDE4DE2FB186CF505103D958E9CF0DD5B4663B9B7129956E544D2125530F1E + 06EEE179E395B975669ADFFCCF03F843FF00050F9BC2FF0009BC2BE133378574 + 4D274DD645EB5EDFD9C5325F189609638583B2ED8967904982082634078C83F5 + B7C49BEF8F5E1CF006ABE30F166A43C2FE14D16D05C5C5CDAE976DA608977752 + 5B9F98B22AE382580EA6BE5BF0C7FC13A63F889F1B7E257C3FF107897C2BA545 + E0FD434BD516F350BF4F31A0BB89CCC6168A366793CB440C8005570BB81DB5FA + 76DF113C3FA57C38B7F01CDA8F877C49A3C3631E9434A934B94CED6C91AC681C + CF341BF0A8BCAA16CE0E735D11C5495A2DBB69DFF468E7A9878BF79257F45FA9 + F949ACFED859FB55C269FF0015B58B3BB25659A6BE105A1DCC1C9578E468C862 + 99E3A9504F415F612FFC13A74FF187C39B7F881A7DC43AF7F6BE836FABD8E98D + 66EB3DF192133450B19640A9231755666185C939E39ECB4BD17E1FFC2BF146BD + E2FF0010787CDA5E5F451C1787518E2D1C5DBA6F2B752B9B378DA46DC434C650 + A0B64004927B6F167EDB5E15B58E592E6E34BF0959B010A346B71ACDAF2A3684 + 367322AEE5E4663620F50320D72D4A8AF7F3EDB9D5084ADA76EE7E6EEA9F0F7E + 335BCB63A2E9BE0AF09D9B4978CBA9E9B69A72FEE2D4C8A5C348CE33F2B9766C + 08A38CA317259847DC49F10BC55FB34DA40B1DD781FC496ECE74AFB2697E22D3 + F55F14C72CED78C9776ED03DDFD9D6289204633C24096E079615CABAFB57C43F + DA53C0FF0013EE3C41A6DE78EB45D36D64944204DE08179672DA410BDDB5BCE6 + F239BC962D6E92AEF88A130606F902D707F137F6BBF87FF06FE217FC2117D6FA + DBEA715C84B1BC8753FF00843B4081CC61E06636CD708B957E240910CB9FBABF + 30D232DD2D7B6DA13CBB391E9DF097C15F1035FF001BF82F55BFD3BC752D9DBE + A96923EADE25D3E5875092C6E6C259FC9D49F647992D6E2DCC44C84362E90316 + 5118AFA7BF673D5345F08E9FAADAB789344BE9219AD2DE386DAFA1BFB88922D3 + EDA160F0C26471B9A36254820F247079F89743F88BA9FF00656A1A7EA1A4F81F + C3B757FAE69B6CBAB59DEDD7882F07DAACAF4A4B6B7F792CBF37EE9536429971 + 7129014A864F54D07E25F89FE04FC3CBAD574FF1343A0C76DA6BDB2437B77656 + D6A26505949DD0C804859DCAF98E8C1A4C061804E752EDEA5C6D63E6EF077ECC + F2FED35FB6278C3C23A45AAB5A6A3E27BD92782451144D631CECF2218DD7A88D + 72A8547CC141031C6D7EDB5FF04C7D07E00FFC13B35CD11A6F06DBFC6CB18A0F + 105FE9566F135D6A3A7DBCCEB2C9688D1A4E8BE59323A2008CD0B8009518E416 + 2F1458B789755864F105BEA9AB3CD3ADCDADC496B7370F2E1891328CAEF63F33 + 007827E56191599FB44FC38F1D7ED1DE36D37C5BA1D8F847C3AB6F636561A55A + EBFAC4D72BA5E9F6D6CF0881895CC924B248F2C8CCAADE63B67926B49F3AAA9C + 7AA220A2E9B52EE7E6F5E5A27D8B77972BAED25BF72C700727231D873ED5DEF8 + 3BF6E1F8A9F0EB43FB0E8BF113C5D6F63020D907DB1A68E15E802F99BB68F618 + 15EF1FB447ECE7E34F005E58EBFE22B9F871AE6A175A447696F1697A85CC3379 + 085A34706E11BCD2376D2C1F3803278AF8EBC71E19BEF0C6AD25ADD43F659594 + 318FCC56CA9CE3A1231D7BD7546A49A21C5266D7C44FDA27C45F16AFD2E7C51A + EEBDE24BA8B2626D46F5E61167FB81890BFF000102A5F0AE953788FC3179AD49 + 6F247A6D94E2DF3190EEEFB771E3B000AF3DF70C7438F3C5B5FB5DC470C7B649 + A46088A187CC49C01E95EF1F04FC252D97C2FD4345D466861BCB8BF3730D9C37 + 51CB3483CA55C9446240C8C73CF5A4E4F61D91E6F73E28D15AC658E383578EF3 + 04C6CC23F2F3E8CB8DDF883F9D63CFA87DA59B103B2ED009C7B0F6C57B047FB3 + 3F8B2EA48E6D3B4BBC8CC4C1926F3043E5B0E41058820F715D5F833E0878825F + 1E7DB3C55AFDD2DD5F5BCB0DCDFDBDF7DBB54B7FDD0447C3BA172B8500798385 + C640A7EF2576174637816D193E0CDAE15F74D6A30BDF203A1E7D7915E9BFB327 + 8217429B4EF11586A925F4724F358DDA0824B5BAD3DDACE6640EB8276B61C874 + 62AC14F23070787FC3F6BA5E8935DF8C2C752D6B4FB142F756DE62D94FAC46A1 + 9A40B260AA33EDC67E6C13CE7AD7A17ECCBF027C1BFF0009E6B9A65BE8B1C725 + D69911CFF6F5CEB11582B48CD37D9F305BAC73A88B0D2B34EA239B09B99C38AA + 89DF4338C95B53C23E10F875BC41F1934CB3589526B9B989510289464B2ED5DA + C181CF1F2907A8073DFE97F8E1E19B8F0E7ECBDE2AD1AF9BF7BA3EA314C3CD8C + 79922398B6392077CB80BC6DC6DC118C78E7C40F0A59785BF6CE4F0EF87A48E5 + 86096C5567E6E5A277487703F30DD8661C139C6066BE8FFDAC3E1B78BADFE197 + 8E34FD4E3F0D5EC3A7E95A65CCB3E9FE7D8BDB037B300441286121380ADF3A85 + 5C101B9A950E68F3F6B04A694947B9E14FE19B8D27E1FF0082BC59A2E9F7D79A + C6A177E458C36914E646BA8CEE8063CB2B26589CAC4FBB181B41193C2EA5FB71 + 4E750B8FB769F711DEF98DF685F36F06D933F30C7DA4639CD7D45FB28E87378A + BE16FC3D81B4FD6E0B7F0AF8C975692F7ECB27D916DE24F34279DFEAC3193CA0 + 54FCC43E471CD7C07F1C2286D7E3578C238D19638F5BBD551C0C013B81DAB595 + 18593D2FFD7EA4C6ACAED33FA563E20D345BC68BA858B36F4EB709B9BE71938C + F73CD6A5A4E977FEA64498772AC187E95E0D04DABEB024B8BFF1ED8E817D771A + E45DF86BC892152DBC2317650CCBC8C851CE4F238AE9749BAF0BC3A15D69D2F8 + DA059A38E276D663D580B867B89A440A91EFFB3E4B28500C0C49906724835F46 + B1D564F4A6FE6EC7CCCB054E3BCF5F467A478B7C67A4FC3FB09AEB5ABC8F4FB7 + B7B692EDDE50DC471825C800124F070A32CC4600278AF1ABEFF8293FC1D5F076 + 8FAC5AF8B7ED9A5EB969737904E9673DBB3416E1CC876CEB1B00DE54C01C7CC2 + 09B1F74B0DDD27F675F0D69BAE5B6A967A6EB5A85F5A09560BDBB5B680979230 + 8FC8856525C29DCC1318690F3920B47EC6DE119F5AD5AFBC41A4E87AB26B51A5 + AC3A747A622C16A05BBC1B50B1242F92F2A7EEC46162665DACA140E3C557C5CD + 38C52B75FF002EDA9D586A38483529B6DF4D2DF3F97E879BFEDD5F1534EF8CFF + 00B1E47A96866C753D0EFB5DB0F22FECB54B6BDB7B80B2C81B6BC0EE8D878CA9 + 01B2086CE31839BFB25FECE7A0EB7FB2F6BFAC6B1A4DB5D5E6BD36A16905CCA9 + B9E0B516E21210E78CB19B247D3A55CFDBDBE1BC7F08BF651D1F44D1DA1B5F0F + 58EB16504165145E5AC2155F6851D028DA400A0718CE4E49F60F877E101E05FD + 967C2561E5F9771FD8ED3CA3D1E64F39FF00F1E7C7E15C38E9D4E48BA97E6EBF + E5A6E7760E34F99FB2B72F4FF83E67E196BF7D69E14F156AFA2EA17D630EA5A6 + 5F4D6F7104970A8E8CAE41E09CF38AEBFE1AEB17DA15A5D6ADA05E3DBEA562AF + 34535BBAEF50217DDB5BA64AE467DEBCAFFE0A55E188F47FDB43E264516369BA + 4B9618FE29208E46FF00C79CD7A2FEC3DF0DF4DF14695A2E8BA8798D6FAAEB90 + 46638D824972ECB1EC8518FDD691F081806605B211C80A7939934EFB58EF71B3 + 4D1EFDF0034BD4BE247C4BF0D78D2E3E227883537D36E7C3F77E25F0EEA77173 + E5D85AC97004F348E646824846C766C7CAAA58B05DC0554FD99FC69E34BBF873 + A2E87E0DD305F6A1E1FD5AED750BCBCB7B1BCB30BB4B431DB0998162B8958EC6 + 00F98BD8823CAAFF00E3BC7E36175E1BF87D7DA6E83A14D0DB88E4834CB98F53 + F2158C1E5493B090EF56320133166505C46C8ACCA7DAFF0066B8A4F85BE3BF12 + 5BE977DA7E9F63E13F10C3A9033DC08D238E4B49E38A188481434C0C9B0EE1F3 + 6D63CE0570EF16AC6F2D1EACF40F825F0BF54F1FFEDDD63FF0995ADE785FFB6B + C212DF5841A7CF6F1BDE436D3881164642E50B42EFB82346C47A29E6C7C54FD9 + EFE28FC60F8EBF15BC25A3FC52F105CD9F86EE34BB8D2ADB53D5EF63922FB642 + D7660B710BAC4AA8CA533229013196E589DEF881F1964F0AFEDB1F056EA6D235 + 45BDB0B6D4745B9B4816D2FE468AE2D992DD116C679DE461247B8A955241C0CE + 491E81F013E387857C35FB53FC62B8D7BC40BA45CEBABA20B6FEDA80E97712F9 + 164CB28F2650AF128908015F92369CB7DE3ECD3C251E5507BDF7D9DADD8F1EA6 + 2AB2939ADADB6FADD1F2BEA9F04BC57E10FDA33E1F7C31D5216BF97C51AE9D1E + 5B8B59E08D2D65478A594A4891A4B232C6CB316729F3700B95047D8BFB53FF00 + C12DE6F81BA0FDB06AD6B7927FC25BA8697A7DE5F5EB08F59B1F2ADA6B3712B8 + 9024CA5EF12566609E65BAA054196AE5749D5FC37F12FF006FBF875AC43A8432 + 697378C1AE2D354B7B2B8BA9229A6821B688C6A8426D79090CCEAC0EC003264B + 57D8FF00B60FECD31F86FE0F6B5A7EADE3CF1C34163AEDDF886D9EF67B2B3B4B + 39B51BD325D46B10B6173E5667B82B1A4E71B8F2531BBC6853849C979B5F73D0 + F61B924BA689FDEB53F1C7E36FC24B7F879F062E97C5DE2AD43C2F6BE3DD6ACA + F17C44D126AB63E1CBAB54D4A08ACEE45A949639EEA090C81BCA21163DACCC4B + F97CC7C42F817A2FC1EF85D6775E32F8A5A845AC58EA70E97A3369FA4B5E5BDF + 4915BC170927DAA69E2F214473C663223917E51C8C135F417FC14F34FD3F46F8 + 71F0CF5ED2EEAC7414B6B18AC353F105F4116B5E1E8818D847637FA701297776 + 0ECB3FD99CC6514647253E5EFDAFBC391D97EC69630CF6579A4FD9FC4D2CF6B0 + 5CDDFDA207CE9F6DFF001E4E4E5ACB68060EE2168B3EA7B274D464A2B6B2FC91 + 85393945B7DDFE67BB7C15F0578AAD758F0668763AF785350D0FC077A2F92E23 + D5EDEE66768768B49DDA08D23F2A28E5B948621BF699642EC4305AF61F879F18 + 3C4DF06F4ED763F10787AC2EA2D362FED1B486F750FECC478A3749A76C48CC1C + 11122AE028CE4019233F3F7C17F157D8BC6DE04D3759D427F10E9BA9E948F636 + B3465974A6DC4BC4DF383E5882D86DDA7E53B7E423E61EE07C6979E11FD9EBE2 + F6B9E245908D05EEA422DAF6DECD6FEE1EE1EDFCA86411C9E5A8598795D5385D + A9950C3292946AEDA0F4953DCF8E3E2AFED65F1735CD35B5ED07C49A2C769329 + BA1636BA3DA09A0899C8DCA2584B950782413820E0B0E6BC6356FDBA3E2F3339 + FF0084E35CB7DDD45B48B6DFFA2C2D7710FC6ED3AEB43D51B56B85BABABAB630 + DB43A8C03559A25F3176C725C490EE70AA58F500900F04F1B1FB4869DF01BE33 + 780BC2775E08D4B56F0D7C486B2B4B6D720BBD345B681712ADAAABB2B20CC4E6 + 65DBBC828C1B7391CBD1ECA4EED16AA2564D1E43E12FDABFC65ADDE6A6BAEEB1 + 26BD69F6379A78F57D40C92305C01E43484B79A376422F040248E323B58353D2 + 7C79E168F50B786CB528E152424B107F29C73B594F43FCC7B5780F893C197DE1 + 2F105C69BA959DC595EDBB18E48A54C143D7F11DC11C104115BBE0696FBC357A + B716323445C6D910FDC997D1877FE63DAA7A6869A6E75DA9FED15E24D160682C + F4FF000DD946A3681169AA0E07D49AE7EDBE30F89AE2EDA78EE63B395B86305B + C684FAF2067BD4DE21D3C6ACAD34719567E5E3C7DDCFA7B7BD57D37C35242BBA + E15608C6097738502B3BBEA5DA3BA417DE32F116B4BB6EB55BFB856FE1927665 + FC89AA724CD691AC97175E5F395E7073EDEB57754D66DED2D9A2B1856593A19E + 55F97FE02BFE39AE3A6692F6EDA4964692461C92739E6A772B5B1E93E16FDA07 + 53F09E9CB6D6BAA6AB3479E52E27F3A2FA04604015B3A77ED5B7966EBE769F14 + C579530B98190FA8C0207E55E77E04F86FAF7C48D5BEC1E1FD1757D72F76190C + 1A75949752851D5B646A4E07AE2B63C6BF0A358F864D1C3AAD8FD8EEA662803C + 88F2C6C02E54C609D87E75FBDCF3D2AA3269E8C9924F73D5BE1FFC5AF0FF0089 + 35CFED6B8D3F51B1D45583B5CCB6F1CF0CE4306C39C867E473C1E2BD53C73FB4 + 8EB5F123C21A968CB7D610DBEAF0DBDB5CBC21EDD658E079258E2DAED8442F26 + 4840061471F7B773773FB21782E2D52DECF4BD73C53AC5C5C68971AAAB5D4B1A + 431C296125C292D1A875225409B0060413CE700FB07ECADFB1CFC2DF125CDCD9 + F883C1975AF6A5A7696D35D06D6EEDD279C4AA36C680478254E03162A0E72010 + 71A46B54B72F46652A70DDF424FD9A7F683B1F861F0BAF7C23AB5B4EF6F34CD7 + 96F77664336F68E38CA39F30298F0808C65837B74F867E3AD85C37C6FF00191F + B3DC2E75CBDE190EE1FE90FD7DEBF483E13FC2BF82BE0CF0E78B7557F87B269F + 6BA0191A5D527D2E2B986C632F1A8625669652BBA2936B6CCFEF08C5705E29F0 + CF80755F136A57574D3C97373752CB2B996CBE7767258FFAFEE49AA956D9CBB1 + 11A69EC8FD53FD97BC7DA97C4BFD9EFC1BE21D52456D4B56D1EDEE6E5A30555E + 42BF33633C67AFD4D75F2F8774FD68FF00A669F6379890B8F3EDD24C10D907E6 + 079079CD1457D9D1D69C6FD91F175F4AB2B7765497E1F689AB3DD5BCDA65AAC3 + 1C8A1561530E094472D9420E7271907A281EB99B4EF045AFDA2E2382EB54B48E + DE408AB15EC841DD1A312771273CFE1818C73928AE4B5A31F57FA9D5CCFDFF00 + F0AFD0F05FF8290688F1FC1AD1ACE4BFBEB8B5B8F1258C6D1CAC8DD44A33BB6E + EE87B9AF68F891214F0B246BF2C71DBC88AA070004C0FD28A2BCDCDB75F33D2C + A7E197A9F807FF000552B7583F6D7F8A3B06DF9ED7BFAD95B13FA9AF4CFD81EF + 1B4BF1AFC3BDAA926DF1CE9080C83715FDFC073F51814515C54FE1F97E87A953 + 75EA790FC30B249758D77EF27D8746B578B61DB82D752B367D725D8FE5E95F48 + 786EE85B78CAC7C4135B69B797D71A0D8DCCC92D840B6F2B34B736EC0C488A80 + 18C63800E4EECEEC105158D959FF005D4A937747D71FF0506F835A07837F64DF + 837AFE9316A5617F278B7478E409AB5DB467CD8A62E515A53E536777316CFBC7 + DB1E3FF01FE0F687E284D4AE3548EFB516BAD3ECEFA412DFCEB9925D3D2E8825 + 1D4B2893202B12304E7279A28AEBC47C76E965F9238F08DBA4DF9BFCCCFF0085 + BE02D27C0BE39F19FF0063D8C3A70D2FC33AC49008C6E2A91C0BBA3DCD965595 + 0BC6ECA43ED91F6B23618755FF00048AD7ACBE27783B52F104DE1CF0D697793F + 8BF488825858EC4897ECAEA554B977C36DDC41620B33375268A2B8701FC59AF3 + 7F923BF19FEEF07E4BFF004A6715FF000559B0B5F0B7C3BF04C86CED350B3F12 + 5FDAE997B67730A88DA2FB3120AC91EC995964449011270CA78DACEADF217C7C + F164DAE7C10B0F0A8861B4D0FC1325C2E9B6F1348DFBC79912499DA466667641 + 1A750AA90C4AAAA1714515D4FE146503D334BD426F87D17C2EBED3E6B8F3BC47 + A2C33DCACB3C92468C751685B626EC0052250548233938CF35CB7C48F1DDCEAD + FB3B9B336B636F1DF6AD25D398632A5424F38112F3811EE3BB6E3860318000A2 + 8ACEA7C6553F84F12B3B15D47548A172CAB21C12B8CF4CD5111F972EDC9C1E28 + A282A47E93F80FF667F06FED8DFB2F7C4EF1278BB498E3F107803E1968BAC68F + A869C7ECF3453C3FDBD9DFD55D6516F0AB86072235C152011F9F1A3E8B0C76E3 + 1BBE5E073451584762A5F11721D1A16D46163BB3F7873D0D71DF192F24D13518 + DA17639936ED73B940C761DA8A2B396E694CE6B4FF00114D7C63478E10188CED + 07FC6B5347D1E0BAF1024722B347904AE719F6E39E7DB9A28A8347B1EC565A87 + 88BE0EF8125BBF08F8DBC71E154D540FB55B691AD4D6704FB49DBB96320B6373 + 6324E326B85BEF106ADAE5BADE6A9AC6A5AB4D6F2A4CAD7D209D999700167237 + 9E00182718028A2B334E87DF9FB347872D757F8A3AD79D18FF0044F00AA44100 + 4D9BD630C780393B9B9FF68D7AE7C1676F107C766D4266F2EE353B6B99AE3CB0 + 3123A35BCF939C9CB348C092738C6304668A2B78F4F4397B9E79E209E5BBF85D + F136CCCD2C70C7E13D58111B6DDE12E92450474C033C9C631D3B806BE42F8EDF + 10FC4769F1BFC65143E22D7A1863D72F51238EFA4548D45C38000CF000E31451 + 56BE1899FDA67FFFD9} + Visible = False + end object GroupBox1: TGroupBox Left = 8 Top = 48 diff --git a/UnitPilote.pas b/UnitPilote.pas index 389a5ba..93ee06d 100644 --- a/UnitPilote.pas +++ b/UnitPilote.pas @@ -6,7 +6,8 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ExtCtrls, StdCtrls, UnitPrinc; + Dialogs, ExtCtrls, StdCtrls, UnitPrinc, + jpeg; type TFormPilote = class(TForm) @@ -38,6 +39,7 @@ type CheckChiffre: TCheckBox; CheckChevron: TCheckBox; CheckClignote: TCheckBox; + ImageSignaux: TImage; procedure RadioVertClick(Sender: TObject); procedure RadioVertCliClick(Sender: TObject); procedure RadioJauneClick(Sender: TObject); diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index 376cc4e..b04f759 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -1,6 +1,6 @@ object FormPrinc: TFormPrinc - Left = 63 - Top = 148 + Left = 55 + Top = 179 Width = 1222 Height = 653 Caption = 'Signaux complexes' @@ -18,8 +18,8 @@ object FormPrinc: TFormPrinc OnCreate = FormCreate OnResize = FormResize DesignSize = ( - 1206 - 595) + 1214 + 602) PixelsPerInch = 96 TextHeight = 13 object LabelTitre: TLabel @@ -1442,8 +1442,8 @@ object FormPrinc: TFormPrinc end object StatusBar1: TStatusBar Left = 0 - Top = 573 - Width = 1206 + Top = 580 + Width = 1214 Height = 22 Panels = < item diff --git a/UnitPrinc.pas b/UnitPrinc.pas index 72220aa..d019cdc 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -359,6 +359,7 @@ MaxElBranches=200; NbreMaxiAiguillages=200; NbreMaxiSignaux=200; NbreMaxiDecPers=10; // nombre maxi de décodeurs personnalisés +NbAccMaxi_USBCOM=10; // nombre maxi d'accessoires COM LargImg=50;HtImg=91; // Dimensions image des feux MaxComUSBCde=2; // Nombre maxi de périphériques USB commande const_droit=2; // positions aiguillages transmises par la centrale LENZ @@ -523,7 +524,7 @@ var ServeurRetroCDM,TailleFonte,Nb_Det_Dist,Tdoubleclic,algo_Unisemaf,fA,fB, etape,idEl,avecRoulage,intervalle_courant,filtrageDet0,SauvefiltrageDet0, TpsTimeoutSL,formatY,OsBits,NbreDecPers,NbDecodeur,NbDecodeurdeBase, - LargeurF,HauteurF,OffsetXF,OffsetYF,PosSplitter : integer; + LargeurF,HauteurF,OffsetXF,OffsetYF,PosSplitter,NbAcc_USBCOM : integer; ack,portCommOuvert,traceTrames,AffMem,CDM_connecte,dupliqueEvt,affiche_retour_dcc, Raz_Acc_signaux,AvecInit,AvecTCO,terminal,Srvc_Aig,Srvc_Det,Srvc_Act,MasqueBandeauTCO, @@ -561,7 +562,7 @@ var Tablo_com_cde : array[1..10] of record portOuvert: boolean; - NumPort: integer; + NumAcc: integer; // numéro accessoire tableau tablo_acc_comusb tamponRx : string; end; @@ -590,7 +591,13 @@ var reaffecte : integer ; // =1 réaffecté au bon train dans le cas de 2 détecteurs contigus qui ne s'enchainent pas bien =2 réaffecté par changement aiguillage end; - Index_Accessoire : array[0..MaxAcc] of integer; // tableau d'index des accessoires aiguillages et signaux + Index_Accessoire : array[0..MaxAcc] of integer; // tableau d'index des accessoires aiguillages et signaux sur le bus DCC + + // tableau des accessoires + Tablo_acc_COMUSB : array[1..NbAccMaxi_USBCOM] of record + nom : string; + NumCom : integer; // numéro de port COM + end; // tableau des croisement rencontrés par la fonction suivant_alg3 croisement : array[1..20] of @@ -617,7 +624,7 @@ var loco,act,son,cde: boolean; // destinataire loco acessoire ou son adresse,adresse2, // adresse: adresse de base ; adresse2=cas d'une Zone etat, - fonction, // fonction F de train ou COM + fonction, // fonction F de train ou accessoire tempo,TempoCourante, accessoire,sortie, typdeclenche : integer; // déclencheur: 0=actionneur/détecteur 2=evt aig 3=MemZone @@ -792,7 +799,7 @@ Function RazBit(n : word;position : integer) : word; procedure inverse_image(imageDest,ImageSrc : Timage) ; function extract_int(s : string) : integer; Procedure Menu_tco(i : integer); -procedure Affiche_fenetre_TCO(i : integer); +procedure Affiche_Fenetre_TCO(i : integer;laisseOuvert : boolean); procedure positionne_elements(i : integer); implementation @@ -1940,6 +1947,7 @@ begin result:=Index_Accessoire[adresse]; end; +{ function Index_com(NumPort : integer) : integer; var i : integer; trouve : boolean; @@ -1952,6 +1960,7 @@ begin until (trouve) or (i>10); if trouve then result:=i; end; +} // dessine l'aspect du feu en fonction de son adresse dans la partie droite de droite procedure Dessine_signal_mx(CanvasDest : Tcanvas;x,y : integer;FrX,frY : real;adresse : integer;orientation : integer); @@ -2064,7 +2073,7 @@ begin align:=alNone; Parent:=Formprinc.ScrollBox1; // dire que l'image est dans la scrollBox1 //formprinc.ScrollBox1.Color:=ClGreen; - Name:='ImageFeu'+IntToSTR(adresse); // nom de l'image - sert à identifier le composant si on fait clic droit. + Name:='ImageFeu'+IntToSTR(rang); // nom de l'image - sert à identifier le composant si on fait clic droit. Top:=(HtImg+espY+20)*((rang-1) div NbreImagePLigne); // détermine les points d'origine Left:=10+ (LargImg+5)*((rang-1) mod (NbreImagePLigne)); width:=LargImg; @@ -10096,7 +10105,7 @@ end; // traitement des évènements actionneurs (detecteurs aussi) // adr adr2 : pour mémoire de zone procedure Event_act(adr,adr2,etat : integer;trainDecl : string); -var typ,i,v,etatAct,Af,Ao,Access,sortie,dZ1F,dZ2F,dZ1O,dZ2O,index : integer; +var typ,i,v,etatAct,Af,Ao,Access,sortie,dZ1F,dZ2F,dZ1O,dZ2O,index,numacc : integer; s,st,trainDest : string; fm,fd,adresseOk,etatvalide : boolean; Ts : TAccessoire; @@ -10190,10 +10199,12 @@ begin // commande COM/USB if adresseOK and (Tablo_actionneur[i].cde) and ((s=trainDecl) or (s='X') or (trainDecl='X') or (trainDecl='')) and (etatValide) then begin - v:=Tablo_actionneur[i].fonction; // numéro du port com (ex12) - index:=index_COM(v); - if index=0 then exit; - if Tablo_com_cde[index].PortOuvert then + numacc:=Tablo_actionneur[i].fonction; // numéro d'accessoire + if numacc=0 then exit; + v:=Tablo_acc_COMUSB[numacc].NumCom; // numéro de com + + if v=0 then exit; + if Tablo_com_cde[numacc].PortOuvert then begin trainDest:=Tablo_actionneur[i].trainDest; if avecCR=1 then trainDest:=TrainDest+#13; @@ -11478,22 +11489,24 @@ end; // connecte un port usb pour la comm actionneurs. Si le port n'est pas ouvert, renvoie false +// index= index du tableau tablo_com_cde function connecte_port_usb_cde(index : integer) : boolean; var i,j,numport : integer; trouve : boolean; s,sc : string; com : TMSComm; begin - if (index<0) or (index>10) then + if (index<0) or (index>MaxComUSBCde) then begin - affiche('Erreur index portCom cde acc',clred); + affiche('Le nombre maxi de portCom acc comusb est atteint - Le port COM'+inttostr(tablo_acc_comusb[index].NumCom)+' ne sera pas ouvert',clred); + result:=false; exit; end; - numport:=tablo_com_cde[index].NumPort; + numport:=tablo_acc_comusb[index].NumCom; if (numport<1) or (numport>255) then begin - affiche('Erreur portCom cde acc',clred); + affiche('Erreur portCom cde acc <0 ou >255',clred); exit; end; trouve:=false; @@ -12316,6 +12329,7 @@ begin EnvAigDccpp:=0; debugtrames:=false; algo_Unisemaf:=1; + NbAcc_USBCOM:=0; MaxPortCom:=30; roulage:=false; espY:=15; @@ -12401,9 +12415,10 @@ begin // ouvre com commandes actionneurs, car on a lu les com dans la config for i:=1 to NbreComCde do begin + //index:=tablo_acc_comUSB[i].NumAcc; // numéro d'accessoire if connecte_port_usb_cde(i) then - Affiche('COM'+intToSTR(tablo_com_cde[i].numport)+' commande actionneurs ouvert',clLime) - else Affiche('COM'+intToSTR(tablo_com_cde[i].numport)+' commande actionneurs non ouvert',clOrange); + Affiche('COM'+intToSTR(tablo_acc_comusb[i].numcom)+' commande actionneurs ouvert',clLime) + else Affiche('COM'+intToSTR(tablo_acc_comusb[i].numcom)+' commande actionneurs non ouvert',clOrange); end; Menu_tco(NbreTCO); @@ -12545,12 +12560,11 @@ begin end; - if (PosSplitter>0) and (PosSPlitter0) and (PosSPlitter20); - TcoCree:=false; - Application.processmessages; - } - if avecTCO then Affiche_Fenetre_TCO(index); + Affiche_Fenetre_TCO(index,avecTCO); //tcocree:=true; end; @@ -12892,7 +12895,7 @@ begin end; // signaux du TCO----------------------------------------------- - if TCOActive then // évite d'accéder à la variable FormTCO si elle est pas encore ouverte + if false and TCOActive then // évite d'accéder à la variable FormTCO si elle est pas encore ouverte begin for IndexTCO:=1 to NbreTCO do begin @@ -12900,6 +12903,7 @@ begin for y:=1 to NbreCellY[indexTCO] do for x:=1 to NbreCellX[indexTCO] do begin + //affiche(intToSTR(indexTCO),clred); PcanvasTCO[IndexTCO].pen.mode:=pmCOpy; BImage:=TCO[indexTCO,x,y].bImage; if Bimage=Id_signal then @@ -13325,7 +13329,7 @@ begin tablo_com_cde[index].PortOuvert:=false; if index=1 then Formprinc.MscommCde1.Portopen:=false; if index=2 then Formprinc.MscommCde2.Portopen:=false; - if debug>0 then Affiche('Port COM'+intToSTR(tablo_com_cde[index].NumPort)+' actionneurs déconnecté',clyellow); + if debug>0 then Affiche('Port COM'+intToSTR(tablo_acc_comusb[index].NumCom)+' actionneurs déconnecté',clyellow); Formprinc.StatusBar1.Panels[3].Text:=''; end; end; @@ -14901,16 +14905,15 @@ end; procedure TFormPrinc.Informationsdusignal1Click(Sender: TObject); var s: string; - nation,etat,index,i,aspect,n,combine,adresse,aig,trainReserve,AdrSignalsuivant,voie,AdrTrainRes : integer; + nation,etat,i,aspect,n,combine,adresse,aig,trainReserve,AdrSignalsuivant,voie,AdrTrainRes : integer; reserveTrainTiers : boolean; code : word; begin clicliste:=false; s:=((Tpopupmenu(Tmenuitem(sender).GetParentMenu).PopupComponent) as TImage).name; // nom du composant, pout récupérer l'adresse du feu (ex: ImageFeu260) - //Affiche(s,clOrange); // nom de l'image du signal (ex: ImageFeu260) - adresse:=extract_int(s); // extraire l'adresse (ex 260) - - i:=Index_Signal(Adresse); + //Affiche(s,clOrange); // nom de l'image du signal (ex: ImageFeu2) + i:=extract_int(s); // extraire l'index (ex 2) + adresse:=feux[i].adresse; n:=feux[i].aspect; if (n>10) and (n<20) then exit; if n=20 then nation:=2 else nation:=1; @@ -15741,70 +15744,72 @@ begin end; end; -procedure Affiche_Fenetre_TCO(i : integer); +procedure Affiche_Fenetre_TCO(i : integer;laisseOuvert : boolean); var e : integer; begin if (i<1) or (i>NbreTCO) then exit; e:=ecranTCO[i]; if e>Screen.MonitorCount then e:=1; - formTCO[i].show; - formTCO[i].BringToFront; + formTCO[i].show; // on est obligé d'afficher la fenetre TCO pour provoquer OnActivate pour valider les pointeurs + formTCO[i].Left:=Ecran[e].x0; formTCO[i].Top:=Ecran[e].y0; formTCO[i].windowState:=wsMaximized; + formTCO[i].BringToFront; + if not(laisseOuvert) then formTCO[i].Close; // .. et si on en veut pas, on la ferme. end; procedure TFormPrinc.AfficherTCO11Click(Sender: TObject); begin - Affiche_Fenetre_TCO(1); + Affiche_Fenetre_TCO(1,true); end; procedure TFormPrinc.AfficherTCO21Click(Sender: TObject); begin - Affiche_Fenetre_TCO(2); + Affiche_Fenetre_TCO(2,true); end; procedure TFormPrinc.AfficherTCO31Click(Sender: TObject); begin - Affiche_Fenetre_TCO(3); + Affiche_Fenetre_TCO(3,true); end; procedure TFormPrinc.AfficherTCO41Click(Sender: TObject); begin - Affiche_Fenetre_TCO(4); + Affiche_Fenetre_TCO(4,true); end; procedure TFormPrinc.AfficherTCO51Click(Sender: TObject); begin - Affiche_Fenetre_TCO(5); + Affiche_Fenetre_TCO(5,true); end; procedure TFormPrinc.AfficherTCO61Click(Sender: TObject); begin - Affiche_Fenetre_TCO(6); + Affiche_Fenetre_TCO(6,true); end; procedure TFormPrinc.AfficherTCO71Click(Sender: TObject); begin - Affiche_Fenetre_TCO(7); + Affiche_Fenetre_TCO(7,true); end; procedure TFormPrinc.AfficherTCO81Click(Sender: TObject); begin - Affiche_Fenetre_TCO(8); + Affiche_Fenetre_TCO(8,true); end; procedure TFormPrinc.AfficherTCO91Click(Sender: TObject); begin - Affiche_Fenetre_TCO(9); + Affiche_Fenetre_TCO(9,true); end; procedure TFormPrinc.AfficherTCO101Click(Sender: TObject); begin - Affiche_Fenetre_TCO(10); + Affiche_Fenetre_TCO(10,true); end; // mise à jour des menus TCO diff --git a/UnitTCO.pas b/UnitTCO.pas index f475167..e4b227f 100644 --- a/UnitTCO.pas +++ b/UnitTCO.pas @@ -4835,7 +4835,7 @@ begin act:=tco[indexTCO,x,y].PiedFeu; if act=1 then begin - s:='TCO'+intToSTR(tco[indexTCO,x,y].FeuOriente); + s:='TCO'+intToSTR(tco[indexTCO,x,y].FeuOriente); // feuoriente contient le numéro du TCO tco[indexTCO,x,y].texte:=s; tco[indexTCO,x,y].TailleFonte:=8; @@ -9194,7 +9194,8 @@ begin IndexTCOCourant:=indexTCO; if affevt then Affiche('Form TCO'+intToSTR(indexTCO)+' activate',clyellow); Caption:='TCO'+intToSTR(indexTCO)+' : '+NomFichierTCO[indexTCO]; - if not(Forminit[indexTCO]) then + + //if not(Forminit[indexTCO]) then begin Button1.Visible:=not(Diffusion); @@ -10737,7 +10738,7 @@ begin begin i:=tco[indextco,xclic,yclic].piedfeu; n:=tco[indextco,xclic,yclic].feuoriente; - if i=1 then Affiche_fenetre_TCO(n); + if i=1 then Affiche_fenetre_TCO(n,true); if i=2 then with formprinc do begin windowState:=wsNormal; //Maximized;