From 6750cb9c1a3705264f6f749d0003e4b989120f87 Mon Sep 17 00:00:00 2001 From: Dorin Marian Iancu Date: Mon, 18 Mar 2024 15:11:07 +0200 Subject: [PATCH 1/2] many fixes --- growth-program/output/growth-program.abi.json | 30 +++++++--- .../output/growth-program.mxsc.json | 32 ++++++++--- growth-program/output/growth-program.wasm | Bin 20837 -> 21390 bytes growth-program/src/lib.rs | 6 +- growth-program/src/price_query.rs | 2 +- growth-program/src/project.rs | 5 +- growth-program/src/rewards/claim.rs | 17 ++++-- growth-program/src/rewards/common_rewards.rs | 28 +++++++-- growth-program/src/rewards/deposit.rs | 44 +++++++------- growth-program/src/rewards/energy.rs | 54 +++++++++++++++--- .../src/rewards/week_timekeeping.rs | 5 +- growth-program/src/rewards/withdraw.rs | 6 +- .../tests/growth_program_setup/mod.rs | 20 ++----- growth-program/tests/test.rs | 49 ++++++++++------ growth-program/wasm/src/lib.rs | 5 +- 15 files changed, 210 insertions(+), 93 deletions(-) diff --git a/growth-program/output/growth-program.abi.json b/growth-program/output/growth-program.abi.json index 844fffc..41d183f 100644 --- a/growth-program/output/growth-program.abi.json +++ b/growth-program/output/growth-program.abi.json @@ -10,7 +10,7 @@ "contractCrate": { "name": "growth-program", "version": "0.0.0", - "gitVersion": "v1.0.2-158-g6a49882" + "gitVersion": "v1.0.2-161-g027030c" }, "framework": { "name": "multiversx-sc", @@ -21,7 +21,10 @@ "constructor": { "docs": [ "Arguments:", - "min_reward_dollars_per_energy: Scaled to PRECISION const.", + "min_reward_dollars_per_energy is a value scaled to PRECISION*PRECISION.", + "For example, if the desired RDPE is that 10^18 units of energy give 10^{-15} dollars of rewards,", + "then we should provide the argument 10^{-15}*10^{-18}*PRECISION*PRECISION = 10^3.", + "", "alpha: Percentage, scaled to MAX_PERCENTAGE const.", "beta: Percentage, scaled to MAX_PERCENTAGE const." ], @@ -188,10 +191,6 @@ "name": "end_week", "type": "u32" }, - { - "name": "initial_rewards_dollar_per_energy", - "type": "BigUint" - }, { "name": "signer", "type": "Address" @@ -261,6 +260,11 @@ "outputs": [] }, { + "docs": [ + "min_reward_dollars_per_energy is a value scaled to PRECISION*PRECISION.", + "For example, if the desired RDPE is that 10^18 units of energy give 10^{-15} dollars of rewards,", + "then we should provide the argument 10^{-15}*10^{-18}*PRECISION*PRECISION = 10^3." + ], "name": "setMinRewardDollarsPerEnergy", "onlyOwner": true, "mutability": "mutable", @@ -272,6 +276,18 @@ ], "outputs": [] }, + { + "name": "setInitialRdpeFromApr", + "onlyOwner": true, + "mutability": "mutable", + "inputs": [ + { + "name": "apr", + "type": "BigUint" + } + ], + "outputs": [] + }, { "name": "setNextWeekRewardDollarsPerEnergy", "onlyOwner": true, @@ -282,7 +298,7 @@ "type": "u32" }, { - "name": "new_min", + "name": "rew_dollars_per_energy", "type": "BigUint" } ], diff --git a/growth-program/output/growth-program.mxsc.json b/growth-program/output/growth-program.mxsc.json index 055763f..f1ec949 100644 --- a/growth-program/output/growth-program.mxsc.json +++ b/growth-program/output/growth-program.mxsc.json @@ -21,7 +21,10 @@ "constructor": { "docs": [ "Arguments:", - "min_reward_dollars_per_energy: Scaled to PRECISION const.", + "min_reward_dollars_per_energy is a value scaled to PRECISION*PRECISION.", + "For example, if the desired RDPE is that 10^18 units of energy give 10^{-15} dollars of rewards,", + "then we should provide the argument 10^{-15}*10^{-18}*PRECISION*PRECISION = 10^3.", + "", "alpha: Percentage, scaled to MAX_PERCENTAGE const.", "beta: Percentage, scaled to MAX_PERCENTAGE const." ], @@ -188,10 +191,6 @@ "name": "end_week", "type": "u32" }, - { - "name": "initial_rewards_dollar_per_energy", - "type": "BigUint" - }, { "name": "signer", "type": "Address" @@ -261,6 +260,11 @@ "outputs": [] }, { + "docs": [ + "min_reward_dollars_per_energy is a value scaled to PRECISION*PRECISION.", + "For example, if the desired RDPE is that 10^18 units of energy give 10^{-15} dollars of rewards,", + "then we should provide the argument 10^{-15}*10^{-18}*PRECISION*PRECISION = 10^3." + ], "name": "setMinRewardDollarsPerEnergy", "onlyOwner": true, "mutability": "mutable", @@ -272,6 +276,18 @@ ], "outputs": [] }, + { + "name": "setInitialRdpeFromApr", + "onlyOwner": true, + "mutability": "mutable", + "inputs": [ + { + "name": "apr", + "type": "BigUint" + } + ], + "outputs": [] + }, { "name": "setNextWeekRewardDollarsPerEnergy", "onlyOwner": true, @@ -282,7 +298,7 @@ "type": "u32" }, { - "name": "new_min", + "name": "rew_dollars_per_energy", "type": "BigUint" } ], @@ -742,6 +758,6 @@ } } }, - "size": 20837, - "code": "0061736d0100000001a8011b60000060017f017f60027f7f0060027f7f017f6000017f60017f0060037f7f7f0060037f7f7f017f60047f7f7f7f0060057f7f7f7f7f0060027f7e0060047f7f7f7f017f60027f7e017f60017f017e6000017e60027f7f017e60017e0060027e7f0060057f7f7e7f7f017f60067e7f7f7f7f7f017f60057e7f7f7f7f017f60047f7f7f7e0060017e017f60047f7e7f7f0060037f7f7e017f60047f7f7f7e017f60037f7e7f017f02bb093303656e760e626967496e74536574496e743634000a03656e7609626967496e74416464000603656e760b7369676e616c4572726f72000203656e760a6d4275666665724e6577000403656e760d6d427566666572417070656e64000303656e76096d4275666665724571000303656e760d6d42756666657246696e697368000103656e76106d4275666665724765744c656e677468000103656e76226d616e616765644d756c74695472616e73666572455344544e465445786563757465001203656e761b6d616e61676564457865637574654f6e44657374436f6e74657874001303656e760d6d616e6167656443616c6c6572000503656e76106d616e61676564534341646472657373000503656e76136d616e616765644f776e657241646472657373000503656e760f6d4275666665724765744279746573000303656e760f6973536d617274436f6e7472616374000103656e76126d427566666572476574417267756d656e74000303656e76126d427566666572417070656e644279746573000703656e76126d616e616765645369676e616c4572726f72000503656e7611676574417267756d656e744c656e677468000103656e761b736d616c6c496e74476574556e7369676e6564417267756d656e74000d03656e7619626967496e74476574556e7369676e6564417267756d656e74000203656e760f6765744e756d417267756d656e7473000403656e7614626967496e7446696e697368556e7369676e6564000503656e7614736d616c6c496e7446696e6973685369676e6564001003656e7609626967496e74537562000603656e7609626967496e74436d70000303656e760f6d4275666665725365744279746573000703656e760a626967496e7454446976000603656e7609626967496e744d756c000603656e76196d42756666657246726f6d426967496e74556e7369676e6564000303656e76176d427566666572546f426967496e74556e7369676e6564000303656e760a626967496e7453717274000203656e76146d427566666572436f707942797465536c696365000b03656e76126d42756666657253746f726167654c6f6164000303656e76136d42756666657253746f7261676553746f7265000303656e760a6765744761734c656674000e03656e760f636c65616e52657475726e44617461000003656e7611676574426c6f636b54696d657374616d70000e03656e761c6d616e616765644765744d756c74694553445443616c6c56616c7565000503656e761776616c6964617465546f6b656e4964656e746966696572000103656e760e636865636b4e6f5061796d656e74000003656e7609626967496e74506f77000603656e7616736d616c6c496e7446696e697368556e7369676e6564001003656e76146d616e6167656456657269667945643235353139000703656e760d676574426c6f636b45706f6368000e03656e761d6d42756666657253746f726167654c6f616446726f6d41646472657373000603656e76156d427566666572546f426967496e745369676e6564000303656e7609626967496e74416273000203656e760f6d616e6167656457726974654c6f67000203656e760a626967496e745369676e000103656e76136d42756666657247657442797465536c696365000b03f001ee01010409000103050102040205020804030203010101020102020202010201021404040400010807020707070107010705050500050105010601090602010a090b030f081508090209010b0a090f08020701010206010302030303020101030104160201010b080b0605010d010102020503020202170602020206020a02010101030c110f0c0a0c06060a0707180404041904090d020201010504080403040301020103030303030403040505040506000403050402020211060504080505010604060c0c1a040400000000000000000000000000000000000000000000000000000000000000000000000000000005030100030616037f01418080080b7f0041f9df080b7f004180e0080b07c30629066d656d6f7279020004696e697400fa01077570677261646500fb010a61646450726f6a65637400fc010f73657450726f6a6563744f776e657200fd010c706175736550726f6a65637400fe010e756e706175736550726f6a65637400ff010f697350726f6a656374416374697665008002137365744d696e52657761726473506572696f64008102187365744d696e5765656b6c795265776172647356616c7565008202156465706f736974496e697469616c52657761726473008302186465706f7369744164646974696f6e616c526577617264730084021773657446656573436f6c6c6563746f7241646472657373008502146f776e65725769746864726177526577617264730086020d66696e69736850726f6772616d0087021c7365744d696e526577617264446f6c6c617273506572456e65726779008802217365744e6578745765656b526577617264446f6c6c617273506572456e6572677900890208736574416c706861008a020773657442657461008b021c736574546f74616c456e65726779466f7243757272656e745765656b008c021c676574546f74616c456e65726779466f7243757272656e745765656b008d020c636c61696d52657761726473008e02176765744578656d707465645061727469636970616e7473008f020e67657455736572436c61696d65640090020d757064617465526577617264730091020e67657452657761726473496e666f0092021567657452657761726473546f74616c416d6f756e74009302196765745265776172647352656d61696e696e67416d6f756e740094020f6765744e6f746573486973746f72790095020c6368616e67655369676e65720096020e67657443757272656e745765656b0097021e67657454696d657374616d70735374617274416e64456e644f665765656b0098021a67657446697273745765656b537461727454696d657374616d7000990217736574456e65726779466163746f727941646472657373009a0217676574456e65726779466163746f727941646472657373009b02057061757365009c0207756e7061757365009d02086973506175736564009e020863616c6c4261636b009f020a5f5f646174615f656e6403010b5f5f686561705f6261736503020ae67dee011601017f1034220142001000200120012000100120010b1901017f41b8910841b8910828020041016b220036020020000b2e000240200120024d0440200220044d0d011036000b1036000b2000200220016b3602042000200120036a3602000b060010a002000b0f01017f10032201200010041a20010b0b0020002001100541004a0b19002000103a45044041f58008410f103b000b103c2000103d0b1400200041d9df08100d1a41d9df08100e41004a0b0900200020011002000b0a0041e98b08411410420b09002000200110a0010b6c01027f230041106b220124002000027f41d0df082d0000220245044041d0df0841013a000041ccdf084100360200200141086a4100103f2001280208200128020c41a891084100104010410c010b41a89108410010420b360200200020024101733a0004200141106a24000b3e01017f230041106b22022400200241086a41bc91084190ce00200110ee01200228020c21012000200228020836020020002001360204200241106a24000bb50201067f200120034604402001220341104f04402000410020006b41037122046a210520040440200221010340200020012d00003a0000200141016a2101200041016a22002005490d000b0b2005200320046b2203417c7122066a21000240200220046a22044103710440200641004c0d012004410374220141187121072004417c71220841046a2102410020016b4118712109200828020021010340200520012007762002280200220120097472360200200241046a2102200541046a22052000490d000b0c010b200641004c0d0020042102034020052002280200360200200241046a2102200541046a22052000490d000b0b20034103712103200420066a21020b20030440200020036a21010340200020022d00003a0000200241016a2102200041016a22002001490d000b0b0f0b1036000b1301017f1034220041a891084100101a1a20000b1101017f1034220220002001101a1a20020b0b0020002001104410061a0b4901017f230041106b22022400200220013a000c20022000360208200241086a109b01200228020820022d000c044041ccdf08410036020041d0df0841003a00000b200241106a24000b08002000104610470b7101047f230041106b220124002001410036020c20002001410c6a2202410441db8208410b107e200120002802082000280200220320024104107fa722021080012001280200410147044041db8208410b41e68208410f1058000b20012802042000200220036a360200200141106a24000b0d00200010342200101e1a20000b0a00200010492001104a0b0f01017f103422012000101d1a20010bb40101037f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410ba010240024020012d000404402000100722044190ce0041ccdf0828020022036b4b0d0120022003200320046a220110bb012000410020022802002002280204107c1a41ccdf0820013602000c020b200128020020001089010c010b2001109b01200128020020001089010b200241106a24000b0a00200010492001104c0b5101027f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410860120012000108901200241106a24000b3701017f2001104e220210072101200041106a41003a00002000410c6a20013602002000200236020820002001360204200041003602000b0d0020001034220010211a20000b6902057f017e200128020c220410504504402001290300210710412105104121062001280208230041106b22012400104121031037210220012004103336020c20012007370300200120023602082003200110512000200342002005200610081a200141106a24000b0b0c00200010870141ff0171450bd20102027f017e230041106b2203240020032001280208220241187420024180fe03714108747220024108764180fe0371200241187672723602002003200128020c220241187420024180fe03714108747220024108764180fe03712002411876727236020c20032001290300220442388620044280fe0383422886842004428080fc0783421886200442808080f80f834208868484200442088842808080f80f832004421888428080fc07838420044228884280fe0383200442388884848437020420002003411010101a200341106a24000b1500200020012002200320041034220110091a20010b0c01017f10342200100a20000b0c01017f10342200100b20000b0c01017f10342200100c20000b150010551053103804400f0b41f4900841241002000b0d00200010342200100f1a20000b2e01017f41a681084117104222042000200110101a200441bd8108410310101a20042002200310101a20041011000b0c00200020012002105b10570b4601017f230041106b220224002002200141187420014180fe03714108747220014108764180fe03712001411876727236020c20002002410c6a410410101a200241106a24000b2f01017f2000280200220341d4df082802004e04402001200241c0810841111058000b2000200341016a36020020030b2501017e20001013220342ffffffff0f5804402003a70f0b2001200241998008410e1058000b2f01017f230041106b22032400200341003a000f20002003410f6a410120012002107e20032d000f200341106a24000b2601017e2000101322014280808080105a0440418a8408410a41998008410e1058000b2001a70b1f00200010572200100741204704402001200241908b0841101058000b20000b0c00200010342200101420000b0a00200020012002105c0b1900200041d4df082802004e04400f0b41d1810841121002000b1400101520004604400f0b41e3810841191002000b1900200041d4df082802004c04400f0b41c0810841111002000b0b0041d4df0810153602000b08002000106710160b08002000104e10470b090020001069ad10170b3001017e027f02402000109d012201420158044041002001a741016b0d021a0c010b41a88b084112108501000b41010b0b1f0020002001200210182000106b41ff017104400f0b41fc810841301002000b1500410241012000103122001b4100200041004e1b0b9f0202087f017e230041406a22052400200541206a41ac82084114106d20052802202108200528022422062003106e2004106f2103104122092003ad107020062009105a20041007210a200541306a210b410021030340200a200341106a2209490440200520082006200120021071200528020421012000200528020036020020002001360204200541406b240005200b42003703002005420037032820042003200541286a2207411010721a2005410036023c20072005413c6a220c107321032007200c1074210d200541286a2005413c6a10732107200541186a2008200620031075200541106a2005280218200528021c200d1076200541086a2005280210200528021420071077200528020c210620052802082108200921030c010b0b0b1800200120021042210120001041360204200020013602000b100010411a200020012802001037105a0b0900200010074104760b3801017f230041106b2202240020024200370308200220014100200241086a10a701200020022802002002280204101a1a200241106a24000b900101037f230041106b2205240002402003107b0d00200220031079200410072106410021030340200341046a220720064b0d012005410036020c200420032005410c6a4104107c1a2002200528020c220341187420034180fe03714108747220034108764180fe0371200341187672721079200721030c000b000b2000200236020420002001360200200541106a24000b0f00200020012003200210324100470b7201017f230041106b220224002002410036020c2002200020012802002200200041046a22001098012002410c6a410420022802002002280204104020012000360200200228020c2100200241106a2400200041187420004180fe03714108747220004108764180fe0371200041187672720ba60102017e017f230041106b22032400200342003703082003200020012802002200200041086a2200109801200341086a41082003280200200328020410402001200036020020032903082102200341106a2400200242388620024280fe0383422886842002428080fc0783421886200242808080f80f834208868484200242088842808080f80f832002421888428080fc07838420024228884280fe038320024238888484840b160020022003107920002002360204200020013602000b160020022003107d20002002360204200020013602000b1b0010411a200220031049105a20002002360204200020013602000b9c0101027f230041306b22052400200541286a41c08208410f106d200541206a2005280228200528022c20042802081075200541186a2005280220200528022420042903001076200541106a2005280218200528021c200428020c1077200528021021042005280214220620031079200541086a20042006200120021071200528020c21012000200528020836020020002001360204200541306a24000b0d0010411a200020011037105a0b7101017f230041206b22052400200541186a41cf8208410c106d200541106a2005280218200528021c20031075200541086a200528021020052802142004107720052005280208200528020c200120021071200528020421012000200528020036020020002001360204200541206a24000b070020001007450b0c00200020012002200310720b1201017f104122022001107020002002105a0b1c002000200120022003200410c5012000200028020020026a3602000b3401017e02402001450d0003402001450d01200141016b210120003100002002420886842102200041016a21000c000b000b20020b1f0020012002200310032201102021022000200136020420002002453602000b920101037f230041106b220224002002410036020c024020012002410c6a220341041082012204450440200220012802082001280200220420034104107fa722031080012000027f20022802004101460440200020022802043602042001200320046a36020041000c010b2000410f36020441e682080b3602000c010b2000410f360204200020043602000b200241106a24000b3201017f41e682082103200041086a200028020020012002109901047f41e68208052000200028020020026a36020041000b0b5501047f230041106b2201240020001084012102200141086a20002802082000280200220320021080012001280208410147044041e68208410f108501000b200128020c2000200220036a360200200141106a24000b5502017f017e230041106b220124002001410036020c200041086a20002802002001410c6a4104109901044041e68208410f108501000b2000200028020041046a3602002001410c6a4104107f200141106a2400a70b1a01017f41ea83084116104222022000200110101a20021011000b0b0020002001200210101a0b09002000106b41016b0b1500417f200020011019220041004720004100481b0b09002000200110041a0b0c00200020002001100120000b0c00200020002001101b20000b0c00200020002001101c20000b0a0020002000200110010b11002000200041a08d06108f01101b20000b0b0041722000ad100041720b0f00200020002001108f01101c20000b0e01017f103422012000101f20010b0e01017f103422004200100020000b1b002000420053044041f5820841111002000b41722000100041720b810102047f017e230041206b22022400200241106a42003703002002420037030820014100200241086a22034110107c2002410036021c20032002411c6a2204107321052003200410742106200241086a2002411c6a10732103044041868308411d1002000b2000200336020c2000200536020820002006370300200241206a24000b1900200041feffffff074604404180800841191002000b20000b5f01027f230041206b22012400200010074120460440200141186a4200370300200141106a4200370300200141086a420037030020014200370300200041002001412010721a2001412041a38308412010970121020b200141206a240020020b5301027f2001200346047f4100210302402001450d00034020002d0000220420022d00002205460440200041016a2100200241016a2102200141016b22010d010c020b0b200420056b21030b20030541010b450b2f000240200220034d0440200341104b0d012000200320026b3602042000200120026a3602000f0b1036000b1036000bb30101037f230041106b22042400027f024020002d000845044020002802002205100722064190ce004b0d0141d0df082d00000d0141ccdf08200636020041d0df0841013a0000200441086a2006103f200541002004280208200428020c107c1a200041013a00080b4101200120036a220041ccdf082802004b0d011a200420012000109a012002200320042802002004280204104041000c010b200041003a00082005200120022003107c0b200441106a24000b32000240200120024d044020024190ce004d0d011036000b1036000b2000200220016b3602042000200141bc91086a3602000b5801027f230041106b2201240020002d0004200041003a00040440200141086a410041ccdf08280200109a0120002802002001280208200128020c10101a41ccdf08410036020041d0df0841003a00000b200141106a24000b2201017e2000109d0122014280808080105a044041998008410e108501000b2001a70b5e02027f017e230041106b22012400200142003703082000104e22001007220241094f044041998008410e108501000b2001200141086a200210eb0120004100200128020022002001280204220210721a20002002107f200141106a24000b1c002000104e22001007412047044041908b084110108501000b20000b0d002000416710211a416710070b09002000200110221a0b0b0020002001104910221a0b1400416c41a891084100101a1a2000416c10221a0b1a0020001037220041d48308410510101a2001200010a40120000b09002000200110d3010ba60101057f230041206b220224002002410c6a22032001104d200310830121012002410c6a10830110472104200310840121032002410c6a10840121052002410c6a10840121062002280210200228020c4604402002411c6a2d0000044041ccdf08410036020041d0df0841003a00000b200020063602102000200536020c200020033602082000200436020420002001360200200241206a24000f0b41998008410e108501000b3901017f230041106b220224002002420037030820022001ad4101200241086a10a70120002002280200200228020410a801200241106a24000b900202047f017e2003200142388620014280fe0383422886842001428080fc0783421886200142808080f80f834208868484200142088842808080f80f832001421888428080fc0783842001423888220820014228884280fe03838484843700000240200150044041a8910821030c010b200204402001427f510440200341076a2103410121040c020b2008a7c022054107752106200541004821050b200641ff0171210603400240024020044108470440200320046a2d000022072006460d02200245200741077620054672450440200441016b220441094f0d020b200320046a2103410820046b21040c040b1036000b10a002000b200441016a21040c000b000b20002004360204200020033602000b0d00200020012002104210221a0b080020002001103d0b7001027f230041106b220224002002103e200220022d00043a000c200220022802003602082001280200200241086a2203104a2001280204200310482001280208200310ab01200128020c200310ab012001280210200310ab012000200228020820022d000c10ac01200241106a24000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a410410ba01200241106a24000b0d00200020012002104410221a0b0a0020002001ad10ae010b3801017f230041106b2202240020024200370308200220014100200241086a10a70120002002280200200228020410a801200241106a24000b09002000200110a1010b0d01017f20001067200010a2010b08002000109f01450b130020001037220041a29108410610101a20000b1a00200010372200419e9108410410101a2000200110890120000b1a0020001037220041989108410610101a2001200010b50120000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a4108108601200241106a24000b0c002000200110b301109d010b1a0020001037220041e48308410610101a2001200010b50120000b5001037f20002802082203200110b90145044020002802042202109c0121042000280200200441016a220010a301200110ae0120022000ad10ae012002109c0121002003200110b7012000ad10ae010b0b0f002000200110b701109c014100470b800101027f230041106b220324000240024020002d000404404190ce0041ccdf0828020022046b2002490d01200341086a2004200220046a220010bb012003280208200328020c20012002104041ccdf0820003602000c020b20002802002001200210101a0c010b2000109b0120002802002001200210101a0b200341106a24000b3f01017f230041106b22032400200341086a2001200241bc91084190ce001035200328020c21012000200328020836020020002001360204200341106a24000b2201017f1034220242001000200010920136020c20002001370300200020023602080b910101037f230041106b220324002000109501210441a38e0841071042210510412200200110792000200210791092012101102320042001200520001052210010242000100721012003410036020c2003200036020420032001410276360208200341046a41db8208410b10be01103722001007412047044041db8208410b41908b0841101058000b200341106a240020000b7b01027f230041106b22032400200028020821042003410036020c200028020020044102742003410c6a4104107c450440200328020c21012000200441016a360208200141187420014180fe03714108747220014108764180fe0371200141187672721037200341106a24000f0b2001200241c0810841111058000b8f0101057f20001037210310c001104e210410c101104e210510c201109e0122061037200310372004103710bd01220710960145044020062004200510bd012203109601044041948408412b103b000b200310c001104e200720002001200210c301200210c3010f0b20062003200510bd012203109601450440200320002001200210c3010f0b41bf8408412b103b000b0a0041818d08410c10420b0a0041e98c08410b10420b0a0041f48c08410d10420bd10201047f230041306b2204240010c401109e01109501210641cc8b08411d10422107104122052000107920052003107d2001104110372200104c4200200010b50120022000104b20052000105a109201210010232006200020072005105221001024200010072101200441003602142004200036020c200420014102763602102004410c6a41db8208410b10be01220110072100200441286a41003a0000200441246a2000360200200420013602202004200036021c200441003602182004410036022c200441186a2004412c6a410441db8208410b10c501024020042d002f044020042d002c450d010b200441186a41db8208410b105d1a0b200441186a220010461a200010c6011a200010452100200428021c200428021846044020042d0028044041ccdf08410036020041d0df0841003a00000b200441306a240020000f0b41db8208410b41998008410e1058000b0a00418d8d08410d10420b2300200041086a20002802002001200210990104402003200441e68208410f1058000b0b3602017f017e230041106b22012400200142003703082000200141086a2200410841db8208410b107e20004108107f200141106a24000b13001053200010c801200010c901200110a6010b1b002000200110ca01109e01103845044041e085084129103b000b0b1300200041bc8c08410d1042220010d30120000b1300200041b08c08410c1042220010d30120000b170010cc01109c012000490440418986084112103b000b0b0a0041c98c08410d10420bb90101037f024010ce0122052003280208490d00200328020c220420054f0d00200420032802102206460d002005200220046a2202200520022005491b20011b2201200620012006491b22012004200120044b1b210510920121020340200420054604400240200641016b20014d044020032802042002108d010c010b2000200110cf012200106722042002108d012000200410af010b2003200136020c0520022000200410cf0110b001108d01200441016a21040c010b0b0b0b2b01027e1025220010d001109d01220154044041bc9008411a103b000b200020017d4280f52480a741016a0b1a00200041d98f0841161042220010d3012001200010a40120000b0a0041ef8f08411710420b1b002000200141ff0171410274418890086a280200109001108e010b980301097f230041306b2205240010ce0121012000419a8d0841121042220610d3012001200610a4010240200610b1014504402006106721000c010b200541086a200010d40110a5012000200110d50110672101200528020820014280a30510bf010240200010ce01220310d601220710b1014504402007106721010c010b2000200341016b220210d70110672000200210d8011067108a0121082000200210d901106721042000200210d70110672201105045044020042000200210d80110672004108c012001108b01108a011a0b10da0110672101200810500d00200410500d002005411c6a200010d40110a5012000200310d50110672103200528021c20034280a30510bf0121032000200210db0110672003108c01109101210220082004108c01109101210410dc0110672200200042808090bbbad6adf00d109301101c200720002002108c01200441a08d06109001108b01220020012000200110880141ff01714101461b220110a1010b2001108c012200200042808090bbbad6adf00d109301101b2006200010a1010b200541306a240020000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a4104108601200241106a24000b1300200041978f08410b1042220010d30120000b1a00200041b28f0841121042220010d3012001200010a40120000b1a00200041b98d0841131042220010d3012001200010a40120000b1a00200041f98d0841141042220010d3012001200010a40120000b1a002000418d8e0841161042220010d3012001200010a40120000b1a00200041e28d0841171042220010d3012001200010a40120000b0a0041cc8d08411610420b1a00200041ac8d08410d1042220010d3012001200010a40120000b0a0041ca8508410510420b0a0010da01200010af010b0a0010df01200010af010b0a0041c68508410410420b0a0010dc01200010af010ba605020c7f017e230041306b2203240010e201200010cb01416b2107024041d8df082d000022040440416b41ffffffff0720041b21070c010b41d8df0841013a0000416b10260b4101210802402007106f410146044020071007210d200341206a210e4100210403402004210b200541106a2206200d4b0d02200e42003703002003420037031820072005200341186a2205411010721a200341003602004101210420082005200310732109200520031074210f200341186a20031073210a20062105410021080d000b1036000b4184810841221002000b02400240024002400240200f5004401053220b200010c80120012002492206450d0110ce0120014f0d02200220016b220c108f01210410342205200a2004101b20091037200510334280f52410bf0110e301106710e401450d030240200010d401220810b101450440200341186a200810a501200341106a200341286a2802002204200220022004491b3602002003200328022422042001200120044b1b360224200341086a200341206a29020037030020032003290218220f370300200fa721040c010b2009103721041092012107200320023602102003200136020c2003200136020820032007360204200320043602000b200920041038450d04200041012003200310cd012002200120061b2102034020012002460d062000200110d5012204106722062005108d012004200610af012000200110cf012204106722062005108d012004200610af01200141016a21010c000b000b419b8908411d103b000b41f888084114103b000b41aa90084112103b000b41be8808410f103b000b418c8908410f103b000b200c108f0121001034220120052000101c200a200a2001106a2003200a3602242003420037031820032009360220200b200341186a104f2008200310aa01200341306a24000b130010ed011069044041ba8b084112103b000b0b0a0041c48f08411510420b10002000200110880141ff01714102490b1b002000103a45044041ee8a08411e103b000b10e601200010a9010b0a0041da8e08411410420b8a0101047f230041106b220324002001280204220241046a220420012802084b047f41000520012802002003410036020c28020020022003410c6a4104107c1a200328020c210220012004360204200241187420024180fe03714108747220024108764180fe037120024118767272210241010b21012000200236020420002001360200200341106a24000b2e01027f200110372102200110372203418c8b08410410101a2000200336020420002001360200200020023602080b2701017f230041106b22022400200220003a000f20012002410f6a4101108601200241106a24000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a410810ba01200241106a24000b3a01017f230041106b22032400200341086a20014108200210ee01200328020c21012000200328020836020020002001360204200341106a24000b0a0010ed01200010a6010b0a0041d68c08411310420b3b01017f230041106b22042400200441086a41002003200120021035200428020c21012000200428020836020020002001360204200441106a24000b1d00024020001096014504402000103a0d010b418e8c084112103b000b0b13002000102745044041a08c084110103b000b0b1300200041e0880841061042220010d30120000b1f00200141aa8e08410b1042220110d3012002200110a4012000200110e8010b0a0041b58e08411110420b1f00200141c68e0841141042220110d3012002200110a4012000200110e8010b1a00200041ee8e08410e1042220010d3012001200010b50120000b1a00200041fc8e0841101042220010d3012001200010b50120000b21002000418c8f0841041042220010d3012001200010b5012002200010a40120000b0a0041908f08410710420b0a0041a28f08411010420b8a02020a7f017e1028410a106341001060410110602106410210602107410341b88508410e105f2100410441a98508410f105f21014105419385084116105f4106418085084113105f2102410741ea84084116105f410810572103410910572104200010ef01200110ef01200210ef01200310f001200410f00110c201200010a90110c401200110a90110f301200210a90110e50110c101200310a00110c001200410a001103910dd01200610e001200710de0110f901421a10ae011034220042e807100010342201420a10001034220220014106108f01102920002002108c01210010e301200010af011025210a10d001200a200a4280b4caae067d4280f524827d10ae01410110ec010b08001028410010630b4002027f017e1028105641011063410041d08608410d105f210110cc01109c01210010cc01200041016a2200ad220210ae01200010ca01200110a9012002102a0b2401027f10281056410210634100105e410141dd86084109105f210110ca01200110a9010b11001028410110634100105e410010c7010b11001028410110634100105e410110c7010b11001028410110634100105e10c90110680b2001017f1028105641011063410041d8880841081061210010f901200010ad010b1a01017f102810564101106341001060210010e301200010af010b900101057f410510634100105e2100410141ee8808410a10612101410241e68808410810612102410310602103410441e088084106105f21040240200010d40110b101044010f901109c01200220016b4b0d0120002001200210e1012000200110d601200310af01200010f101200410a901200010c901410110a6010f0b41b889084121103b000b41d989084114103b000ba30101057f230041206b22002400410310634100105e2102410141ee8808410a10612103410241e68808410810612104024002400240200210d401220110b1014504402000410c6a200110a50110ce01200028021c22014f0d0120012003490d02200028021820044b0d0320022003200410e101200041206a24000f0b41928a084122103b000b41ed89084115103b000b41aa90084112103b000b41828a084110103b000b17001028105641011063410041ea84084116105f10e5010ba80201087f230041306b2200240010281056410210634100105e2102410141ee8808410a10612103200210cb012000410c6a2205200210d401220610a501024010ce012204200028021c2201490440200120034d200028021820034f720d01200320044d0d01200241012001200510cd01410021051092012107200028021c21042003210103402005200120044b7245044020072002200110cf0110b001108d012002200110d50110a201200120044f2105200120012004496a21010c010b0b1055200028020c103721022000200736022c2000420037032020002002360228200041206a104f0240200320002802184704402000200336021c20062000410c6a10aa010c010b200610a2010b200041306a24000f0b41d78a084117103b000b41aa90084112103b000be50302077f017e230041e0006b220024001028410110634100105e210210e2012000411c6a2201200210d401220310a501200310a20110ce01200028022c4f0440200241012000200110cd0102402000280220220510500d00200028021c210610e601109e01109501210241b48a08410f1042210410412101104121032000200536023c20002006360238200042003703302003200041306a1051200020023602402000427f37033820002001360234200020043602302000109201220536024802400240024002402003106f0e020200010b200041d0006a2003109401027f2000290350500440200041086a200420012000280258200028025c107a200028020c210120002802080c010b1054200041106a200420012002200041d0006a107820002802142101210220002802100b210410920121050c010b10542102200020042001200041406b2003106c20002903382107200028020421012000280200210410920121052007427f520d010b102321070b200720022005200420011052210210244100210420021007210320004100360238200020023602302000200341027622013602340340200120044d0d01200041306a41db8208410b10be011a20002802342101200028023821040c000b000b200041e0006a24000f0b41c38a084114103b000b110010281056410110634100106010dd010b2d01027f10281056410210634100105e2100410110602101200010cb01200010ce0141016a10d601200110af010b110010281056410110634100106010e0010b110010281056410110634100106010de010b8e0202037f017e230041206b2200240010281065410010642000410036020c2000410c6a2102104121010340200228020041d4df082802004804402001200241cd8808410b1059105a0c010b0b200028020c1062200110072102200041003602142000200241027622023602102000200136020c4100210102400340200120024904402000410c6a41a08b08410810be0121012000420037031820011007220241094f0d022000200041186a200210eb0120014100200028020022012000280204220210721a20012002107f22034280808080105a0d022003a7220110cb01200110d2011a20002802102102200028021421010c010b0b200041206a24000f0b41a08b08410841998008410e1058000b1a01017f1028410110634100105e220010cb01200010d20110160bc114020e7f037e230041a0016b2200240010281065410310644100105e2105410110602108027f230041206b2201240002400240024041021012450440410321020c010b410210572204100721022001411c6a41003a0000200141186a200236020020012004360214200120023602102001410036020c41032102024002402001410c6a41a38708410a105d41ff01710e020100040b2001410c6a41a38708410a105d220241ff017141034f0d030b2001280210200128020c470d0120012d001c450d0041ccdf08410036020041d0df0841003a00000b200141206a240020020c020b41a38708410a41998008410e1058000b41a38708410a41a78008410d1058000b210a20004103360234200041ec006a2102410021040240200041346a2207220128020041d4df082802004e0440410121040c010b2001418d87084116105921032001418d87084116105b10572201100741c000460d00418d8708411641908b0841101058000b20022001360208200220033602042002200436020020002802341062200028026c2106200028027021022000280274210910e201200510cb0110ce0121042007200510d401220b10a5010240024002400240024002400240200028024420044b0440200041c8006a2005200410f20120001053220736025410f8012201200710b301109d01220e500440200110b201109d01210e2001200710b301200e42017c220e10ae012001200e10b4012007103d200e500d02200110b201200e10ae010b2000280250200e10b9010d06200041e8006a22032005200410f40102402000280270200e10b9010d00200510c9011069450d0320060d04411e1041220110a401200141d69008411e10101a2005200110d3012004200110a4012001200710041a200020021007220641187420064180fe03714108747220064108764180fe03712006411876727236026820012003410410101a2001200210041a200510f101109e0120012009102b1a20021007410b4f0d052005200e2005200e10f6012206109c01220110f701200041286a103e200020002d002c3a006c2000200028022836026820022003104a2004200310ab01200028026820002d006c10ac012006200141016a10ad0120014114490d002005200e2005200e10f5012201109c01220210f70110a2012001200241016a10ad010b200541012000200041346a10cd01200041c8006a200e10b801200510d20121062005200410d50110672109102c210f103c109f01450d0541a09008410a10422201200710041a103c109e0120014167102d416710372201107b450440200110072102200041f8006a41003a0000200041f4006a2002360200200020013602702000200236026c2000410036026820004188016a2201200041e8006a220310810102402000280288010d00200028028c0110342202102e1a20004200370388012003200141081082010d0020014108107f2110200120031081012000280288010d00200028028c0110472101200028026c2000280268470d0020002d0078044041ccdf08410036020041d0df0841003a00000b0240200f2010510d00200110870141ff01714101470d00200110332103200f2010580d00200f20107d109301210c1034220d2003200c101c20022002200d10180b20002001360274200020023602702000200f3703680c090b20002d0078044041ccdf08410036020041d0df0841003a00000b41cb8008412a103b000b200041e8006a200f10bc010c070b41b98708412e103b000b41d98308410b1002000b41cf85084111103b000b41f68708411f103b000b41ea8608410f103b000b200041e8006a200f10bc010c010b41e78708410f103b000b024020002802702201106b41ff017141014d044010920121030c010b103422032001102f0b20092003108c012006108b01210220002802341037210102400240024002400240200a41ff0171410346044010df01106721072005200410cf011067200210880141ff017141ff01470d0220081050450d032005200410d8012206106722082003108d012006200810af01200120072002108c01108e0142901c10bf0121032005200410db012201106722072003108d012001200710af01200041e8006a22032005200441016a10f4012003200e10b8010c010b2005200410cf0122061067220920022002200910880141ff01714101461b22091033200a10d1012202200810e401450d0320061067220820082002106a2006200810af012005200410d7012206106722082003108d012006200810af012003200a10d10121032005200410d9012206106722082003108d012006200810af0120011037200942901c10bf0121032005200410db012204106722062003108d012004200610af014207210f024002400240200a41ff017141016b0e020100020b420e210f0b200020023602644200210e2000420037035820002001360260200710372107200210500d01102c210e10f301109e01109501210141b48008410a1042210310412204200e200f7c107d20042007107910412207200041d8006a1051200020013602782000427f3703702000200436026c20002003360268200010920122023602800102400240024002402007106f0e020200010b20004188016a2007109401027f200029038801500440200041186a20032004200028029001200028029401107a20002802182103200028021c0c010b1054200041206a20032004200120004188016a107820002802202103210120002802240b210410920121020c010b10542101200041106a20032004200041f8006a2007106c2000290370210e20002802142104200028021021031092012102200e427f520d010b1023210e0b200e2001200220032004105221011024200110072102200041003602900120002001360288012000200241027636028c0120004188016a41db8208410b10be01220210072101200041f8006a41003a0000200041f4006a2001360200200020023602702000200136026c20004100360268200041e8006a10462201100741044604402000410036029c01200141002000419c016a2202410410721a41feffffff0720012002410441d0830841041097011b21010b200041e8006a220210c601210e200210452102200028026c2000280268470d0520002d0078044041ccdf08410036020041d0df0841003a00000b200141feffffff07470d0141c38308410d1002000b200020023602644200210e20004200370358200020013602602007200041d8006a104f0b200b200041346a10aa01027f200a41ff01714103470440200210330c010b1092010b1041220441fd8b0841111042105a2004200041d4006a106e200510411037220510d3012005104b0240200a41ff0171220341034704404101200510e9012003410274419490086a2802002d0000200510e901200420051030200041086a103e200020002d000c3a006c200020002802083602682001200041e8006a2201104a200e200110ea01200220011048200028026820002d006c10430c010b4100200510e9012004200510300b200041a0016a24000f0b419588084116103b000b41ab88084113103b000b41be8808410f103b000b41db8208410b41998008410e1058000bd20101087f230041206b220024001028410210634100105e2101410141f9860841041061210210f801210410412103200041146a2001200210f4012000280218109c01210520002802142106410121010340200120054b45044020042006200110a301109d0110b4012207109f0104402007109e0121020b200320021079200141016a21010c010b0b2000200336021020002003100736021c200041003602182000200041106a3602140340200041086a200041146a10e70120002802080440200028020c10061a0c010b0b200041206a24000b6402047f017e230041106b22002400102841031063410041ad8708410c105f21014101105e2102410241f9860841041061210310f801200110b601220450047e420005200041046a2002200310f201200028020c200410b901ad0b1017200041106a24000b9e0101067f230041206b2200240010281065410110644100105e21042000410136020c02402000410c6a2203220128020041d4df082802004e0440410121020c010b200141fd86084110105b41fd86084110105c21010b20002001360204200020023602002000280204210520002802002101200028020c10622003200410d401220210a501200420012005200310cd012002200310aa01200041206a24000b850101027f230041306b22002400102841011063200041146a4100105e10d40110a501200041086a103e200020002d000c3a002c200020002802083602282000280214200041286a2201104a200028021820011048200028021c200110ab012000280220200110ab012000280224200110ab01200028022820002d002c1043200041306a24000b1b001028410210634100105e410141f986084104106110d50110660b1b001028410210634100105e410141f986084104106110cf0110660b990202077f017e230041206b220024001028410210634100105e2102410141e686084104105f2101200210cb01104121050240024010f801200110b6012207500d002002200710f501109c0121062002200710f601109c0121010340200120064d0d012000410c6a220320022007200141016b220110f701104d2003108301200310840121032000280210200028020c470d0220002d001c044041ccdf08410036020041d0df0841003a00000b104110372204104c2003200410a40120052004105a0c000b000b20002005360208200020051007360214200041003602102000200041086a36020c034020002000410c6a10e70120002802000440200028020410061a0c010b0b200041206a24000f0b41998008410e108501000b5001047f1028410210634100105e2100410141808408410a105f2102105321011055210302402001200010ca01109e0110380d002001200310380d00419b86084135103b000b200010f101200210a9010b0e0010284100106310ce01ad102a0b7302027f017e230041106b22002400102841011063410041f9860841041061210110d001109d012000103e200020002d00043a000c200020002802003602082001ad4280f5247e7c2202200041086a220110ea01200242fff4247c200110ea01200028020820002d000c1043200041106a24000b100010284100106310d001109d01102a0b16001028105641011063410041c18008410a105f10390b1000102841001063103c109e0110061a0b0f001028105641001063410110ec010b0f001028105641001063410010ec010b0d0010284100106310ed0110680b02000b0b0041a89108410e1002000b0bb2110300418080080ba303726563697069656e742061646472657373206e6f7420736574696e70757420746f6f206c6f6e67696e76616c69642076616c75656c6f636b546f6b656e7300010273635f616464726573734661696c6564206465636f64696e6720726573756c742066726f6d20656e6572677920666163746f7279496e76616c69642061646472657373696e636f7272656374206e756d626572206f662045534454207472616e7366657273617267756d656e74206465636f6465206572726f722028293a20746f6f2066657720617267756d656e7473746f6f206d616e7920617267756d656e747377726f6e67206e756d626572206f6620617267756d656e747363616e6e6f74207375627472616374206265636175736520726573756c7420776f756c64206265206e656761746976654d756c7469455344544e46545472616e73666572455344544e46545472616e73666572455344545472616e7366657273796e6320726573756c74696e70757420746f6f2073686f72746361737420746f20693634206572726f724d616e6167656456656320696e646578206f7574206f662072616e67650041c383080bf30d4553445420657870656374656445474c442e6974656d4944204f766572666c6f772e696e64657873746f72616765206465636f6465206572726f723a206e65775f7369676e657270726f6a6563745f6964496e76616c6964205745474c442d55534443207061697220616464726573732066726f6d20726f75746572496e76616c696420544f4b454e2d55534443207061697220616464726573732066726f6d20726f75746572666565735f636f6c6c6563746f725f6164647265737373696d706c655f6c6f636b5f61646472657373656e657267795f666163746f72795f61646472657373736166655f70726963655f70616972726f757465725f6164647265737362657461616c70686150726f6a656374206973207061757365644f6e6c792070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e74496e76616c69642070726f6a6563742049444f6e6c79207363206f776e6572206f722070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e7470726f6a6563745f6f776e65726e65775f6f776e6572757365724c656e67746820746f6f206c6f6e677765656b6f70745f6d61785f6e725f7765656b736f70745f6e6f74655f616e645f7369676e6174757265636c61696d5f74797065757365725f616464726573734d6179206e6f7420636c61696d207265776172647320666f7220746869732070726f6a65637420616e796d6f7265416c726561647920636c61696d65644d7573742070726f76696465206e6f746520616e64207369676e617475726543616e20636c61696d2066756c6c2072657761726473496e76616c6964206d696e2072657761726473546f6f20666577207265776172647370726f6a6563745f6964736e725f7765656b737369676e6572656e645f7765656b73746172745f7765656b496e76616c6964207765656b206e756d62657273496e76616c6964207061796d656e744f6e6c792066756e6769626c6520746f6b656e73206163636570746564496e697469616c207265776172647320616c7265616479206465706f7369746564546f6f2066657720726577617264207765656b7350726f6a65637420616c726561647920656e646564496e76616c696420656e64207765656b4d757374206465706f73697420696e697469616c20726577617264732066697273746465706f7369745377617046656573456e64207765656b206e6f74207265616368656443616e6e6f7420776974686472617720616e796d6f7265496e76616c6964206665657320636f6c6c6563746f7220616464726573732e6c656e626164206172726179206c656e6774687661722061726773696e707574206f7574206f662072616e6765436f6e747261637420697320706175736564676574536166655072696365427954696d657374616d704f6666736574656e65726779466163746f727941646472657373636c61696d526577617264734576656e74496e76616c69642053432061646472657373496e76616c696420746f6b656e20494470726f6a6563744f776e657270726f6a6563744163746976656c61737450726f6a656374496470617573655f6d6f64756c653a70617573656475736463546f6b656e4964726f75746572416464726573737765676c64546f6b656e496473616665507269636550616972746f74616c456e65726779466f725765656b726567526577446f6c6c617273726577446f6c6c617273506572456e657267796d696e526577446f6c6c617273506572456e65726779696e74456e65726779466f72526577436c61696d657273726567456e65726779526577436c61696d657273726567456e657267794578656d70436c61696d6572736765745061697275736572436c61696d656473696d706c654c6f636b416464726573736578656d707465645061727469636970616e747366656573436f6c6c6563746f724164647265737366697273744e6f7465496e64657863757272656e744e6f7465496e6465786e6f74657573657249647372657761726473496e666f6d696e52657761726473506572696f6472657761726473546f74616c416d6f756e746d696e5765656b6c795265776172647356616c75657265776172647352656d61696e696e67416d6f756e7466697273745765656b537461727454696d657374616d700000a861000050c30000a08601003e0002003f0002004000020075736572456e65726779496e76616c6964207374617274207765656b5765656b2030206973206e6f7420612076616c6964207765656b7845786368616e676547726f77746856315461736b436f6d706c65746564456e64706f696e742063616e206f6e6c792062652063616c6c6564206279206f776e6572616464724964616464726c617374496470616e6963206f636375727265640041b891080b049cffffff" + "size": 21390, + "code": "0061736d0100000001a8011b60000060017f017f60027f7f0060027f7f017f6000017f60017f0060037f7f7f0060037f7f7f017f60047f7f7f7f0060027f7e0060057f7f7f7f7f0060047f7f7f7f017f60027f7e017f60017f017e6000017e60027f7f017e60017e0060017e017f60027e7f0060057f7f7e7f7f017f60067e7f7f7f7f7f017f60057e7f7f7f7f017f60047f7f7f7e0060047f7e7f7f0060037f7f7e017f60047f7f7f7e017f60037f7e7f017f02bb093303656e760e626967496e74536574496e743634000903656e7609626967496e74416464000603656e760b7369676e616c4572726f72000203656e760a6d4275666665724e6577000403656e760d6d427566666572417070656e64000303656e76096d4275666665724571000303656e760d6d42756666657246696e697368000103656e76106d4275666665724765744c656e677468000103656e76226d616e616765644d756c74695472616e73666572455344544e465445786563757465001303656e761b6d616e61676564457865637574654f6e44657374436f6e74657874001403656e760d6d616e6167656443616c6c6572000503656e76106d616e61676564534341646472657373000503656e76136d616e616765644f776e657241646472657373000503656e760f6d4275666665724765744279746573000303656e760f6973536d617274436f6e7472616374000103656e76126d427566666572476574417267756d656e74000303656e76126d427566666572417070656e644279746573000703656e76126d616e616765645369676e616c4572726f72000503656e7611676574417267756d656e744c656e677468000103656e761b736d616c6c496e74476574556e7369676e6564417267756d656e74000d03656e7619626967496e74476574556e7369676e6564417267756d656e74000203656e760f6765744e756d417267756d656e7473000403656e7614626967496e7446696e697368556e7369676e6564000503656e7614736d616c6c496e7446696e6973685369676e6564001003656e7609626967496e74537562000603656e7609626967496e74436d70000303656e760f6d4275666665725365744279746573000703656e760a626967496e7454446976000603656e7609626967496e744d756c000603656e76196d42756666657246726f6d426967496e74556e7369676e6564000303656e76176d427566666572546f426967496e74556e7369676e6564000303656e7609626967496e74506f77000603656e760a626967496e7453717274000203656e76146d427566666572436f707942797465536c696365000b03656e76126d42756666657253746f726167654c6f6164000303656e76136d42756666657253746f7261676553746f7265000303656e760a6765744761734c656674000e03656e760f636c65616e52657475726e44617461000003656e7611676574426c6f636b54696d657374616d70000e03656e761c6d616e616765644765744d756c74694553445443616c6c56616c7565000503656e761776616c6964617465546f6b656e4964656e746966696572000103656e760e636865636b4e6f5061796d656e74000003656e7616736d616c6c496e7446696e697368556e7369676e6564001003656e761d6d42756666657253746f726167654c6f616446726f6d41646472657373000603656e76146d616e6167656456657269667945643235353139000703656e760d676574426c6f636b45706f6368000e03656e76156d427566666572546f426967496e745369676e6564000303656e7609626967496e74416273000203656e760f6d616e6167656457726974654c6f67000203656e760a626967496e745369676e000103656e76136d42756666657247657442797465536c696365000b03f801f60101040a0004110901030501020402050208040302030101010201020202020102010215040404000108070207070701070107050505000501050106010a060201090a0b030f0816080a020a010b090a0f08020701010206010302030303020101030c110101040201010b080b0605010d010102020602020503020202170602020902010101030c120f0c090c06060907071804040419040a0d0205020104010804030301040301020303030304030405050405060004030504020202120605040108050501040604060c0c1a04040000000000000000000000000000000000000000000000000000000000000000000000000000000005030100030616037f01418080080b7f004185e1080b7f004190e1080b07dc062a066d656d6f7279020004696e697400810207757067726164650082020a61646450726f6a6563740083020f73657450726f6a6563744f776e65720084020c706175736550726f6a6563740085020e756e706175736550726f6a6563740086020f697350726f6a656374416374697665008702137365744d696e52657761726473506572696f64008802187365744d696e5765656b6c795265776172647356616c7565008902156465706f736974496e697469616c52657761726473008a02186465706f7369744164646974696f6e616c52657761726473008b021773657446656573436f6c6c6563746f7241646472657373008c02146f776e6572576974686472617752657761726473008d020d66696e69736850726f6772616d008e021c7365744d696e526577617264446f6c6c617273506572456e65726779008f0215736574496e697469616c5264706546726f6d417072009002217365744e6578745765656b526577617264446f6c6c617273506572456e6572677900910208736574416c70686100920207736574426574610093021c736574546f74616c456e65726779466f7243757272656e745765656b0094021c676574546f74616c456e65726779466f7243757272656e745765656b0095020c636c61696d52657761726473009602176765744578656d707465645061727469636970616e74730097020e67657455736572436c61696d65640098020d757064617465526577617264730099020e67657452657761726473496e666f009a021567657452657761726473546f74616c416d6f756e74009b02196765745265776172647352656d61696e696e67416d6f756e74009c020f6765744e6f746573486973746f7279009d020c6368616e67655369676e6572009e020e67657443757272656e745765656b009f021e67657454696d657374616d70735374617274416e64456e644f665765656b00a0021a67657446697273745765656b537461727454696d657374616d7000a10217736574456e65726779466163746f72794164647265737300a20217676574456e65726779466163746f72794164647265737300a30205706175736500a40207756e706175736500a50208697350617573656400a6020863616c6c4261636b00a7020a5f5f646174615f656e6403010b5f5f686561705f6261736503020ae18001f6011601017f1034220142001000200120012000100120010b1901017f41c4920841c4920828020041016b220036020020000b2e000240200120024d0440200220044d0d011036000b1036000b2000200220016b3602042000200120036a3602000b060010a802000b0e01017f10342200420a100020000b0e01017f103422012000103920010b19002001420053044041f5820841111002000b2000200110000b0f01017f10032201200010041a20010b0b0020002001100541004a0b19002000103d45044041f58008410f103e000b103f200010400b1400200041e5e008100d1a41e5e008100e41004a0b0900200020011002000b0a0041ca8c08411410450b09002000200110a8010b6c01027f230041106b220124002000027f41dce0082d0000220245044041dce00841013a000041d8e0084100360200200141086a410010422001280208200128020c41b492084100104310440c010b41b49208410010450b360200200020024101733a0004200141106a24000b3e01017f230041106b22022400200241086a41c892084190ce00200110f401200228020c21012000200228020836020020002001360204200241106a24000bb50201067f200120034604402001220341104f04402000410020006b41037122046a210520040440200221010340200020012d00003a0000200141016a2101200041016a22002005490d000b0b2005200320046b2203417c7122066a21000240200220046a22044103710440200641004c0d012004410374220141187121072004417c71220841046a2102410020016b4118712109200828020021010340200520012007762002280200220120097472360200200241046a2102200541046a22052000490d000b0c010b200641004c0d0020042102034020052002280200360200200241046a2102200541046a22052000490d000b0b20034103712103200420066a21020b20030440200020036a21010340200020022d00003a0000200241016a2102200041016a22002001490d000b0b0f0b1036000b1301017f1034220041b492084100101a1a20000b1101017f1034220220002001101a1a20020b0b0020002001104710061a0b4901017f230041106b22022400200220013a000c20022000360208200241086a10a001200228020820022d000c044041d8e008410036020041dce00841003a00000b200241106a24000b080020001049104a0b7301047f230041106b220124002001410036020c20002001410c6a2202410441db8208410b108101200120002802082000280200220320024104108201a722021083012001280200410147044041db8208410b41e68208410f105b000b20012802042000200220036a360200200141106a24000b0d00200010342200101e1a20000b0a002000104c2001104d0b0f01017f103422012000101d1a20010bb40101037f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410bf010240024020012d000404402000100722044190ce0041d8e00828020022036b4b0d0120022003200320046a220110c0012000410020022802002002280204107f1a41d8e00820013602000c020b20012802002000108c010c010b200110a00120012802002000108c010b200241106a24000b0a002000104c2001104f0b5101027f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410890120012000108c01200241106a24000b3701017f20011051220210072101200041106a41003a00002000410c6a20013602002000200236020820002001360204200041003602000b0d0020001034220010221a20000b6902057f017e200128020c220410534504402001290300210710442105104421062001280208230041106b2201240010442103103a210220012004103336020c20012007370300200120023602082003200110542000200342002005200610081a200141106a24000b0b0c002000108a0141ff0171450bd20102027f017e230041106b2203240020032001280208220241187420024180fe03714108747220024108764180fe0371200241187672723602002003200128020c220241187420024180fe03714108747220024108764180fe03712002411876727236020c20032001290300220442388620044280fe0383422886842004428080fc0783421886200442808080f80f834208868484200442088842808080f80f832004421888428080fc07838420044228884280fe0383200442388884848437020420002003411010101a200341106a24000b1500200020012002200320041034220110091a20010b0c01017f10342200100a20000b0c01017f10342200100b20000b0c01017f10342200100c20000b150010581056103b04400f0b4180920841241002000b0d00200010342200100f1a20000b2e01017f41a681084117104522042000200110101a200441bd8108410310101a20042002200310101a20041011000b0c00200020012002105e105a0b4601017f230041106b220224002002200141187420014180fe03714108747220014108764180fe03712001411876727236020c20002002410c6a410410101a200241106a24000b2f01017f2000280200220341e0e0082802004e04402001200241c081084111105b000b2000200341016a36020020030b2501017e20001013220342ffffffff0f5804402003a70f0b2001200241998008410e105b000b3001017f230041106b22032400200341003a000f20002003410f6a41012001200210810120032d000f200341106a24000b2601017e2000101322014280808080105a0440418a8408410a41998008410e105b000b2001a70b1f002000105a2200100741204704402001200241f18b084110105b000b20000b0c00200010342200101420000b0a00200020012002105f0b1900200041e0e0082802004e04400f0b41d1810841121002000b1400101520004604400f0b41e3810841191002000b1900200041e0e0082802004c04400f0b41c0810841111002000b0b0041e0e00810153602000b08002000106a10160b080020001051104a0b09002000106cad10170b3001017e027f0240200010a2012201420158044041002001a741016b0d021a0c010b41898c084112108801000b41010b0b1f0020002001200210182000106e41ff017104400f0b41fc810841301002000b1500410241012000103122001b4100200041004e1b0b9f0202087f017e230041406a22052400200541206a41ac820841141070200528022021082005280224220620031071200410722103104422092003ad107320062009105d20041007210a200541306a210b410021030340200a200341106a2209490440200520082006200120021074200528020421012000200528020036020020002001360204200541406b240005200b42003703002005420037032820042003200541286a2207411010751a2005410036023c20072005413c6a220c107621032007200c1077210d200541286a2005413c6a10762107200541186a2008200620031078200541106a2005280218200528021c200d1079200541086a200528021020052802142007107a200528020c210620052802082108200921030c010b0b0b1800200120021045210120001044360204200020013602000b100010441a20002001280200103a105d0b0900200010074104760b3801017f230041106b2202240020024200370308200220014100200241086a10af01200020022802002002280204101a1a200241106a24000b900101037f230041106b2205240002402003107e0d0020022003107c200410072106410021030340200341046a220720064b0d012005410036020c200420032005410c6a4104107f1a2002200528020c220341187420034180fe03714108747220034108764180fe037120034118767272107c200721030c000b000b2000200236020420002001360200200541106a24000b0f00200020012003200210324100470b7201017f230041106b220224002002410036020c2002200020012802002200200041046a2200109d012002410c6a410420022802002002280204104320012000360200200228020c2100200241106a2400200041187420004180fe03714108747220004108764180fe0371200041187672720ba60102017e017f230041106b22032400200342003703082003200020012802002200200041086a2200109d01200341086a41082003280200200328020410432001200036020020032903082102200341106a2400200242388620024280fe0383422886842002428080fc0783421886200242808080f80f834208868484200242088842808080f80f832002421888428080fc07838420024228884280fe038320024238888484840b160020022003107c20002002360204200020013602000b17002002200310800120002002360204200020013602000b1b0010441a20022003104c105d20002002360204200020013602000b9c0101027f230041306b22052400200541286a41c08208410f1070200541206a2005280228200528022c20042802081078200541186a2005280220200528022420042903001079200541106a2005280218200528021c200428020c107a20052802102104200528021422062003107c200541086a20042006200120021074200528020c21012000200528020836020020002001360204200541306a24000b0d0010441a20002001103a105d0b7101017f230041206b22052400200541186a41cf8208410c1070200541106a2005280218200528021c20031078200541086a200528021020052802142004107a20052005280208200528020c200120021074200528020421012000200528020036020020002001360204200541206a24000b070020001007450b0c00200020012002200310750b1201017f104422022001107320002002105d0b1c002000200120022003200410ca012000200028020020026a3602000b3401017e02402001450d0003402001450d01200141016b210120003100002002420886842102200041016a21000c000b000b20020b1f0020012002200310032201102121022000200136020420002002453602000b930101037f230041106b220224002002410036020c024020012002410c6a220341041085012204450440200220012802082001280200220420034104108201a722031083012000027f20022802004101460440200020022802043602042001200320046a36020041000c010b2000410f36020441e682080b3602000c010b2000410f360204200020043602000b200241106a24000b3201017f41e682082103200041086a200028020020012002109e01047f41e68208052000200028020020026a36020041000b0b5501047f230041106b2201240020001087012102200141086a20002802082000280200220320021083012001280208410147044041e68208410f108801000b200128020c2000200220036a360200200141106a24000b5602017f017e230041106b220124002001410036020c200041086a20002802002001410c6a4104109e01044041e68208410f108801000b2000200028020041046a3602002001410c6a4104108201200141106a2400a70b1a01017f41ea83084116104522022000200110101a20021011000b0b0020002001200210101a0b09002000106e41016b0b1500417f200020011019220041004720004100481b0b09002000200110041a0b0c00200020002001100120000b0c00200020002001101b20000b0c00200020002001101c20000b0a0020002000200110010b11002000200041a08d06109201101b20000b0b0041722000ad100041720b0f00200020002001109201101c20000b0f00200020002001109501101c20000b0a0041722000103941720b1301017f1034220120004106109201101f20010b0e01017f103422012000102020010b0e01017f103422004200100020000b810102047f017e230041206b22022400200241106a42003703002002420037030820014100200241086a22034110107f2002410036021c20032002411c6a2204107621052003200410772106200241086a2002411c6a10762103044041868308411d1002000b2000200336020c2000200536020820002006370300200241206a24000b1900200041feffffff074604404180800841191002000b20000b5f01027f230041206b22012400200010074120460440200141186a4200370300200141106a4200370300200141086a420037030020014200370300200041002001412010751a2001412041a383084120109c0121020b200141206a240020020b5301027f2001200346047f4100210302402001450d00034020002d0000220420022d00002205460440200041016a2100200241016a2102200141016b22010d010c020b0b200420056b21030b20030541010b450b2f000240200220034d0440200341104b0d012000200320026b3602042000200120026a3602000f0b1036000b1036000bb30101037f230041106b22042400027f024020002d000845044020002802002205100722064190ce004b0d0141dce0082d00000d0141d8e008200636020041dce00841013a0000200441086a20061042200541002004280208200428020c107f1a200041013a00080b4101200120036a220041d8e0082802004b0d011a200420012000109f012002200320042802002004280204104341000c010b200041003a00082005200120022003107f0b200441106a24000b32000240200120024d044020024190ce004d0d011036000b1036000b2000200220016b3602042000200141c892086a3602000b5801027f230041106b2201240020002d0004200041003a00040440200141086a410041d8e008280200109f0120002802002001280208200128020c10101a41d8e008410036020041dce00841003a00000b200141106a24000b2201017e200010a20122014280808080105a044041998008410e108801000b2001a70b5f02027f017e230041106b22012400200142003703082000105122001007220241094f044041998008410e108801000b2001200141086a200210f00120004100200128020022002001280204220210751a20002002108201200141106a24000b1c002000105122001007412047044041f18b084110108801000b20000b0d002000416710221a416710070b7001027f230041106b2202240020021041200220022d00043a000c200220022802003602082001280200200241086a2203104d20012802042003104b2001280208200310a601200128020c200310a6012001280210200310a6012000200228020820022d000c10a701200241106a24000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a410410bf01200241106a24000b0d00200020012002104710231a0b09002000200110231a0b0b0020002001104c10231a0b1400416c41b492084100101a1a2000416c10231a0b1a002000103a220041d48308410510101a2001200010ac0120000b09002000200110da010ba60101057f230041206b220224002002410c6a220320011050200310860121012002410c6a108601104a2104200310870121032002410c6a10870121052002410c6a10870121062002280210200228020c4604402002411c6a2d0000044041d8e008410036020041dce00841003a00000b200020063602102000200536020c200020033602082000200436020420002001360200200241206a24000f0b41998008410e108801000b3901017f230041106b220224002002420037030820022001ad4101200241086a10af0120002002280200200228020410b001200241106a24000b900202047f017e2003200142388620014280fe0383422886842001428080fc0783421886200142808080f80f834208868484200142088842808080f80f832001421888428080fc0783842001423888220820014228884280fe03838484843700000240200150044041b4920821030c010b200204402001427f510440200341076a2103410121040c020b2008a7c022054107752106200541004821050b200641ff0171210603400240024020044108470440200320046a2d000022072006460d02200245200741077620054672450440200441016b220441094f0d020b200320046a2103410820046b21040c040b1036000b10a802000b200441016a21040c000b000b20002004360204200020033602000b0d00200020012002104510231a0b08002000200110400b0a0020002001ad10b3010b3801017f230041106b2202240020024200370308200220014100200241086a10af0120002002280200200228020410b001200241106a24000b09002000200110a9010b0d01017f2000106a200010aa010b0800200010a401450b13002000103a220041ae9208410610101a20000b1a002000103a220041aa9208410410101a20002001108c0120000b1a002000103a220041a49208410610101a2001200010ba0120000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a4108108901200241106a24000b0c002000200110b80110a2010b1a002000103a220041e48308410610101a2001200010ba0120000b5001037f20002802082203200110be014504402000280204220210a10121042000280200200441016a220010ab01200110b30120022000ad10b301200210a10121002003200110bc012000ad10b3010b0b0f002000200110bc0110a1014100470b800101027f230041106b220324000240024020002d000404404190ce0041d8e00828020022046b2002490d01200341086a2004200220046a220010c0012003280208200328020c20012002104341d8e00820003602000c020b20002802002001200210101a0c010b200010a00120002802002001200210101a0b200341106a24000b3f01017f230041106b22032400200341086a2001200241c892084190ce001035200328020c21012000200328020836020020002001360204200341106a24000b2201017f1034220242001000200010980136020c20002001370300200020023602080b910101037f230041106b220324002000109a01210441a08f08410710452105104422002001107c20002002107c1098012101102420042001200520001055210010252000100721012003410036020c2003200036020420032001410276360208200341046a41db8208410b10c301103a22001007412047044041db8208410b41f18b084110105b000b200341106a240020000b7b01027f230041106b22032400200028020821042003410036020c200028020020044102742003410c6a4104107f450440200328020c21012000200441016a360208200141187420014180fe03714108747220014108764180fe037120014118767272103a200341106a24000f0b2001200241c081084111105b000b8f0101057f2000103a210310c5011051210410c6011051210510c70110a3012206103a2003103a2004103a10c2012207109b0145044020062004200510c2012203109b01044041948408412b103e000b200310c5011051200720002001200210c801200210c8010f0b20062003200510c2012203109b01450440200320002001200210c8010f0b41bf8408412b103e000b0a0041e28d08410c10450b0a0041ca8d08410b10450b0a0041d58d08410d10450bd20201047f230041306b2204240010c90110a301109a01210641ad8c08411d10452107104422052000107c2005200310800120011044103a2200104f4200200010ba0120022000104e20052000105d109801210010242006200020072005105521001025200010072101200441003602142004200036020c200420014102763602102004410c6a41db8208410b10c301220110072100200441286a41003a0000200441246a2000360200200420013602202004200036021c200441003602182004410036022c200441186a2004412c6a410441db8208410b10ca01024020042d002f044020042d002c450d010b200441186a41db8208410b10601a0b200441186a220010491a200010cb011a200010482100200428021c200428021846044020042d0028044041d8e008410036020041dce00841003a00000b200441306a240020000f0b41db8208410b41998008410e105b000b0a0041ee8d08410d10450b2300200041086a200028020020012002109e0104402003200441e68208410f105b000b0b3802017f017e230041106b22012400200142003703082000200141086a2200410841db8208410b10810120004108108201200141106a24000b1800200010cd011056200010ce01200010cf01200110ae010b170010d00110a1012000490440418986084112103e000b0b2a01017f1058210202402000200110d10110a301103b0d0020002002103b0d00419b86084135103e000b0b13002000419d8d08410d1045220010da0120000b0a0041aa8d08410d10450b1300200041918d08410c1045220010da0120000bd90101047f024010d30122052003280208490d00200328020c220420054f0d00200420032802102206460d002005200220046a2202200520022005491b20011b2205200620052006491b22012004200120044b1b210710980121020340200420074604400240200520064f0440200328020420021090010c010b2000200110d4012204106a220520021090012004200510b4012000200110d5012204106a220520021090012004200510b4010b2003200136020c0520022000200410d40110b501109001200441016a21040c010b0b0b200010d601200310a5010b2b01027e1026220010d70110a201220154044041c89108411a103e000b200020017d4280f52480a741016a0b1a00200041d6900841161045220010da012001200010ac0120000b1a00200041af900841121045220010da012001200010ac0120000b1300200041949008410b1045220010da0120000b0a0041ec9008411710450b1b002000200141ff0171410274418491086a2802001093011091010bbc0301097f230041306b2204240010d3012101200041fb8d0841121045220510da012001200510ac010240200510b6014504402005106a21000c010b200441086a200010d60110ad012000200110d501106a2101200428020820014280a30510c40121090240200010d301220310db01220710b6014504402007106a21010c010b2000200341016b220210dc01106a2000200210dd01106a108d0121082000200210de01106a21062000200210dc01106a2201105345044020062000200210dd01106a2006108f012001108e01108d011a0b10df01106a2101200810530d00200610530d002004411c6a200010d60110ad012000200310d501106a2103200428021c20034280a30510c40121032000200210e001106a2003108f01109701210020082006108f011097012102200710e101106a42808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108f01200241a08d06109301108e011037109601108e012200200120002001108b0141ff01714101461b220110a9010b20011037109601108f0121002005200942808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108e01220010a9010b200441306a240020000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a4104108901200241106a24000b1a002000419a8e0841131045220010da012001200010ac0120000b1a00200041da8e0841141045220010da012001200010ac0120000b1a002000418a8f0841161045220010da012001200010ac0120000b1a00200041c38e0841171045220010da012001200010ac0120000b0a0041ad8e08411610450b1a002000418d8e08410d1045220010da012001200010ac0120000b0a0041ca8508410510450b0a0010df01200010b4010b0a0010e401200010b4010b0a0041c68508410410450b0a0010e101200010b4010bc305020c7f017e230041306b2203240010e701200010cd01416b2108024041e4e0082d000022050440416b41ffffffff0720051b21080c010b41e4e00841013a0000416b10270b4101210402402008107241014604404100210520081007210d200341206a210e034020092107200541106a220c200d4b0d02200e42003703002003420037031820082005200341186a2205411010751a20034100360200410121092004200520031076210a200520031077210f200341186a20031076210b200c2105410021040d000b1036000b4184810841221002000b024002400240024002400240200f50044010562209200010d10110a301103b044020012002492207450d0210d30120014f0d03200220016b220c109201210410342205200b2004101b200a103a200510334280a30510c40110e801106a10e901450d04200010d601220410b6010d05200341186a200410ad01200a2003280218103b450d06200341206a2204200428020022062001200120064b1b360200200341106a200341286a2802002206200220022006491b3602002003200328022422062001200120064b1b360224200341086a2004290200370300200320032902183703000c070b41e085084129103e000b41d08908411d103e000b41ad89084114103e000b41b691084112103e000b41f38808410f103e000b200a103a21041098012106200320023602102003200136020c2003200136020820032006360204200320043602000c010b41c18908410f103e000b200041012003200310d2012002200120071b2102034020012002464504402000200110d5012204106a220720051090012004200710b4012000200110d4012204106a220720051090012004200710b401200141016a21010c010b0b200c10920121001034220120052000101c200b200b2001106d2003200b360224200342003703182003200a3602202009200341186a1052200341306a24000b130010f201106c0440419b8c084112103e000b0b0a0041c19008411510450b100020002001108b0141ff01714102490b1b002000103d45044041cf8b08411e103e000b10eb01200010b1010b0a0041d78f08411410450b8a0101047f230041106b220324002001280204220241046a220420012802084b047f41000520012802002003410036020c28020020022003410c6a4104107f1a200328020c210220012004360204200241187420024180fe03714108747220024108764180fe037120024118767272210241010b21012000200236020420002001360200200341106a24000b2e01027f2001103a21022001103a220341ed8b08410410101a2000200336020420002001360200200020023602080b2701017f230041106b22022400200220003a000f20012002410f6a4101108901200241106a24000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a410810bf01200241106a24000b3a01017f230041106b22032400200341086a20014108200210f401200328020c21012000200328020836020020002001360204200341106a24000b0a0010f201200010ae010b0a0041b78d08411310450b0e002000108a0141ff01714101460b3b01017f230041106b22042400200441086a41002003200120021035200428020c21012000200428020836020020002001360204200441106a24000b1d0002402000109b014504402000103d0d010b41ef8c084112103e000b0b13002000102845044041818d084110103e000b0b130020004195890841061045220010da0120000b0a0041ee8e08411c10450b1f00200141a78f08410b1045220110da012002200110ac012000200110ed010b0a0041b28f08411110450b1f00200141c38f0841141045220110da012002200110ac012000200110ed010b1a00200041eb8f08410e1045220010da012001200010ba0120000b1a00200041f98f0841101045220010da012001200010ba0120000b210020004189900841041045220010da012001200010ba012002200010ac0120000b0a00418d9008410710450b0a00419f9008411010450bf201020a7f017e1029410a106641001063410110632106410210632107410341b88508410e10622100410441a98508410f1062210141054193850841161062410641808508411310622102410741ea8408411610624108105a21034109105a2104200010f501200110f501200210f501200310f601200410f60110c701200010b10110c901200110b10110fa01200210b10110ea0110c601200310a80110c501200410a801103c10e201200610e501200710e301108002421a10b30142e80710381037109601108f01210010e801200010b4011026210a10d701200a200a4280b4caae067d4280f524827d10b301410110f1010b08001029410010660b4002027f017e1029105941011066410041d08608410d1062210110d00110a101210010d001200041016a2200ad220210b301200010d101200110b1012002102a0b2d01027f1029105941021066410010612100410141dd8608410910622101200010cd01200010d101200110b1010b110010294101106641001061410010cc010b110010294101106641001061410110cc010b11001029410110664100106110cf01106b0b2001017f10291059410110664100418d8908410810642100108002200010b2010b1a01017f102910594101106641001063210010e801200010b4010ba30101047f41041066410010612100410141a38908410a106421024102419b890841081064210141034195890841061062210302400240200010d60110b601044010800210a101200120026b4b0d0120002002200110e60110f801106a220110f301450d022000200210db01200110b401200010f701200310b101200010cf01410110ae010f0b41ed89084121103e000b418e8a084114103e000b41a28a08412c103e000ba30101057f230041206b2200240041031066410010612102410141a38908410a106421034102419b8908410810642104024002400240200210d601220110b6014504402000410c6a200110ad0110d301200028021c22014f0d0120012003490d02200028021820044b0d0320022003200410e601200041206a24000f0b41f38a084122103e000b41ce8a084115103e000b41b691084112103e000b41e38a084110103e000b17001029105941011066410041ea84084116106210ea010ba80201087f230041306b220024001029105941021066410010612102410141a38908410a10642103200210cd012000410c6a2205200210d601220610ad01024010d3012204200028021c2201490440200120034d200028021820034b720d01200320044d0d01200241012001200510d201410021051098012107200028021c21042003210103402005200120044b7245044020072002200110d40110b5011090012002200110d50110aa01200120044f2105200120012004496a21010c010b0b1058200028020c103a21022000200736022c2000420037032020002002360228200041206a10520240200320002802184704402000200336021c20062000410c6a10a5010c010b200610aa010b200041306a24000f0b41b88b084117103e000b41b691084112103e000be50302077f017e230041e0006b2200240010294101106641001061210210e7012000411c6a2201200210d601220310ad0110d301200028022c4f0440200241012000200110d201200310aa0102402000280220220510530d00200028021c210610eb0110a301109a01210241958b08410f1045210410442101104421032000200536023c20002006360238200042003703302003200041306a1054200020023602402000427f3703382000200136023420002004360230200010980122053602480240024002400240200310720e020200010b200041d0006a2003109901027f2000290350500440200041086a200420012000280258200028025c107d200028020c210120002802080c010b1057200041106a200420012002200041d0006a107b20002802142101210220002802100b210410980121050c010b10572102200020042001200041406b2003106f20002903382107200028020421012000280200210410980121052007427f520d010b102421070b200720022005200420011055210210254100210420021007210320004100360238200020023602302000200341027622013602340340200120044d0d01200041306a41db8208410b10c3011a20002802342101200028023821040c000b000b200041e0006a24000f0b41a48b084114103e000b110010291059410110664100106310e2010b910101037f1029105941011066410010634280c8afa025103842808090bbbad6adf00d109401210041a69108411010452102103f10a30120024167102b4167103a200010334280a30510c401108f0142808090bbbad6adf00d10940142808090bbbad6adf00d109401103710960141a08d06109301413410930142a00b1094012000108f01108e01210010f801200010b4010b2d01027f1029105941021066410010612100410110632101200010cd01200010d30141016a10db01200110b4010b110010291059410110664100106310e5010b110010291059410110664100106310e3010b8f0202037f017e230041206b2200240010291068410010672000410036020c2000410c6a2102104421010340200228020041e0e0082802004804402001200241828908410b105c105d0c010b0b200028020c1065200110072102200041003602142000200241027622023602102000200136020c4100210102400340200120024904402000410c6a41818c08410810c30121012000420037031820011007220241094f0d022000200041186a200210f00120014100200028020022012000280204220210751a2001200210820122034280808080105a0d022003a7220110cd01200110d9011a20002802102102200028021421010c010b0b200041206a24000f0b41818c08410841998008410e105b000b1a01017f10294101106641001061220010cd01200010d90110160bdb14020d7f037e230041a0016b220024001029106841031067410010612105410110632108027f230041206b2201240002400240024041021012450440410321020c010b4102105a2203100721022001411c6a41003a0000200141186a200236020020012003360214200120023602102001410036020c41032102024002402001410c6a41af8708410a106041ff01710e020100040b2001410c6a41af8708410a1060220241ff017141034f0d030b2001280210200128020c470d0120012d001c450d0041d8e008410036020041dce00841003a00000b200141206a240020020c020b41af8708410a41998008410e105b000b41af8708410a41a78008410d105b000b210a20004103360234200041ec006a2102410021030240200041346a2206220128020041e0e0082802004e0440410121030c010b2001419987084116105c21042001419987084116105e105a2201100741c000460d0041998708411641f18b084110105b000b20022001360208200220043602042002200336020020002802341065200028026c2107200028027021032000280274210910e701200510cd0110d30121022006200510d60110ad0102400240024002400240024002400240200028023c20024d0440200220002802444f0d01200041c8006a2005200210f90120001056220636025410ff012201200610b80110a201220d500440200110b70110a201210d2001200610b801200d42017c220d10b3012001200d10b90120061040200d500d03200110b701200d10b3010b2000280250200d10be010d07200041e8006a22042005200210fb0102402000280270200d10be010d00200510cf01106c450d0420070d05411e1044220110ac01200141e29108411e10101a2005200110da012002200110ac012001200610041a200020031007220741187420074180fe03714108747220074108764180fe03712007411876727236026820012004410410101a2001200310041a200510f70110a30120012009102c1a20031007410b4f0d062005200d2005200d10fd01220710a101220110fe01200041286a1041200020002d002c3a006c2000200028022836026820032004104d2002200410a601200028026820002d006c10a7012007200141016a10b20120014114490d002005200d2005200d10fc01220110a101220310fe0110aa012001200341016a10b2010b200541012000200041346a10d201200041c8006a200d10bd01200510d90121072005200210d501106a2109102d210e103f10a401450d06419c9108410a10452201200610041a103f10a30120014167102b4167103a2201107e450440200110072103200041f8006a41003a0000200041f4006a2003360200200020013602702000200336026c2000410036026820004188016a2201200041e8006a220410840102402000280288010d00200028028c0110342203102e1a20004200370388012004200141081085010d0020014108108201210f200120041084012000280288010d00200028028c01104a2101200028026c2000280268470d0020002d0078044041d8e008410036020041dce00841003a00000b0240200e200f510d00200110f301450d00200110332104200e200f580d00200e200f7d109501210b1034220c2004200b101c20032003200c10180b20002001360274200020033602702000200e3703680c0a0b20002d0078044041d8e008410036020041dce00841003a00000b41cb8008412a103e000b200041e8006a200e10c1010c080b41c587084117103e000b41dc8708412e103e000b41d98308410b1002000b41cf85084111103e000b41998808411f103e000b41ea8608410f103e000b200041e8006a200e10c1010c010b418a8808410f103e000b024020002802702201106e41ff017141014d044010980121040c010b103422042001102f0b027f2007105304401098010c010b20092004108f012007108e010b21032000280234103a21010240024002400240027f0240200a41ff0171410346044010e401106a21062005200210d401106a2003108b0141ff017141ff01470d03200810530d0141ce88084113103e000b2005200210d4012207106a220910f301450d032009200320032009108b0141ff01714101461b22091033200a10d8012203200810e901450d042007106a220820082003106d2007200810b4012005200210dc012207106a220820041090012007200810b4012004200a10d80121042005200210de012207106a220820041090012007200810b4012001103a200942901c10c40121042005200210e0012202106a220720041090012002200710b4014207210e0240024002400240200a41ff017141016b0e020100020b420e210e0b200020033602644200210d20004200370358200020013602602006103a2102200310530d01102d210d10fa0110a301109a01210141b48008410a1045210610442203200d200e7c10800120032002107c10442202200041d8006a1054200020013602782000427f3703702000200336026c2000200636026820001098012204360280010240024002400240200210720e020200010b20004188016a2002109901027f200029038801500440200041186a20062003200028029001200028029401107d20002802182106200028021c0c010b1057200041206a20062003200120004188016a107b20002802202106210120002802240b210310980121040c010b10572101200041106a20062003200041f8006a2002106f2000290370210d20002802142103200028021021061098012104200d427f520d010b1024210d0b200d2001200420062003105521011025200110072102200041003602900120002001360288012000200241027636028c0120004188016a41db8208410b10c301220210072101200041f8006a41003a0000200041f4006a2001360200200020023602702000200136026c20004100360268200041e8006a10492201100741044604402000410036029c01200141002000419c016a2202410410751a41feffffff0720012002410441d083084104109c011b21010b200041e8006a220210cb01210d200210482103200028026c2000280268470d0720002d0078044041d8e008410036020041dce00841003a00000b200141feffffff07470d0141c38308410d1002000b200020033602644200210d20004200370358200020013602602006200041d8006a10520b200310330c010b2005200210dd012207106a220820041090012007200810b401200120062003108f0110910142901c10c40121042005200210e0012201106a220320041090012001200310b401200041e8006a22042005200241016a10fb012004200d10bd011098010b1044220441de8c0841111045105d2004200041d4006a107120051044103a220210da012002104e0240200a41ff0171220541034704404101200210ee012005410274419091086a2802002d0000200210ee01200420021030200041086a1041200020002d000c3a006c200020002802083602682001200041e8006a2201104d200d200110ef0120032001104b200028026820002d006c10460c010b4100200210ee012004200210300b200041a0016a24000f0b41b888084116103e000b41e188084112103e000b41f38808410f103e000b41db8208410b41998008410e105b000bd20101087f230041206b22002400102941021066410010612101410141f9860841041064210210ff01210410442103200041146a2001200210fb01200028021810a101210520002802142106410121010340200120054b45044020042006200110ab0110a20110b901220710a4010440200710a30121020b20032002107c200141016a21010c010b0b2000200336021020002003100736021c200041003602182000200041106a3602140340200041086a200041146a10ec0120002802080440200028020c10061a0c010b0b200041206a24000b6402047f017e230041106b22002400102941031066410041b98708410c10622101410110612102410241f9860841041064210310ff01200110bb01220450047e420005200041046a2002200310f901200028020c200410be01ad0b1017200041106a24000b950101057f230041206b2200240010291068410110674100106121032000410136020c02402000410c6a2204220128020041e0e0082802004e0440410121020c010b200141fd86084110105e41fd86084110105f21010b20002001360204200020023602002000280204210120002802002102200028020c10652004200310d60110ad01200320022001200410d201200041206a24000b850101027f230041306b22002400102941011066200041146a4100106110d60110ad01200041086a1041200020002d000c3a002c200020002802083602282000280214200041286a2201104d20002802182001104b200028021c200110a6012000280220200110a6012000280224200110a601200028022820002d002c1046200041306a24000b1b0010294102106641001061410141f986084104106410d50110690b1b0010294102106641001061410141f986084104106410d40110690b990202077f017e230041206b22002400102941021066410010612102410141e68608410410622101200210cd01104421050240024010ff01200110bb012207500d002002200710fc0110a10121062002200710fd0110a10121010340200120064d0d012000410c6a220320022007200141016b220110fe0110502003108601200310870121032000280210200028020c470d0220002d001c044041d8e008410036020041dce00841003a00000b1044103a2204104f2003200410ac0120052004105d0c000b000b20002005360208200020051007360214200041003602102000200041086a36020c034020002000410c6a10ec0120002802000440200028020410061a0c010b0b200041206a24000f0b41998008410e108801000b2d01027f102941021066410010612100410141808408410a106221011056200010ce01200010f701200110b1010b0e0010294100106610d301ad102a0b830102027f017e230041106b22002400102941011066410041f98608410410642201450440418d8708410c103e000b10d70110a20120001041200020002d00043a000c200020002802003602082001ad4280f5247e7c22024280f5247d200041086a220110ef01200242017d200110ef01200028020820002d000c1046200041106a24000b100010294100106610d70110a201102a0b16001029105941011066410041c18008410a1062103c0b1000102941001066103f10a30110061a0b0f001029105941001066410110f1010b0f001029105941001066410010f1010b0d0010294100106610f201106b0b02000b0b0041b49208410e1002000b0bbe120300418080080ba303726563697069656e742061646472657373206e6f7420736574696e70757420746f6f206c6f6e67696e76616c69642076616c75656c6f636b546f6b656e7300010273635f616464726573734661696c6564206465636f64696e6720726573756c742066726f6d20656e6572677920666163746f7279496e76616c69642061646472657373696e636f7272656374206e756d626572206f662045534454207472616e7366657273617267756d656e74206465636f6465206572726f722028293a20746f6f2066657720617267756d656e7473746f6f206d616e7920617267756d656e747377726f6e67206e756d626572206f6620617267756d656e747363616e6e6f74207375627472616374206265636175736520726573756c7420776f756c64206265206e656761746976654d756c7469455344544e46545472616e73666572455344544e46545472616e73666572455344545472616e7366657273796e6320726573756c74696e70757420746f6f2073686f72746361737420746f20693634206572726f724d616e6167656456656320696e646578206f7574206f662072616e67650041c383080bff0e4553445420657870656374656445474c442e6974656d4944204f766572666c6f772e696e64657873746f72616765206465636f6465206572726f723a206e65775f7369676e657270726f6a6563745f6964496e76616c6964205745474c442d55534443207061697220616464726573732066726f6d20726f75746572496e76616c696420544f4b454e2d55534443207061697220616464726573732066726f6d20726f75746572666565735f636f6c6c6563746f725f6164647265737373696d706c655f6c6f636b5f61646472657373656e657267795f666163746f72795f61646472657373736166655f70726963655f70616972726f757465725f6164647265737362657461616c70686150726f6a656374206973207061757365644f6e6c792070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e74496e76616c69642070726f6a6563742049444f6e6c79207363206f776e6572206f722070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e7470726f6a6563745f6f776e65726e65775f6f776e6572757365724c656e67746820746f6f206c6f6e677765656b6f70745f6d61785f6e725f7765656b73496e76616c6964207765656b6f70745f6e6f74655f616e645f7369676e6174757265636c61696d5f74797065757365725f6164647265737350726f6a656374206e6f742073746172746564207965744d6179206e6f7420636c61696d207265776172647320666f7220746869732070726f6a65637420616e796d6f7265416c726561647920636c61696d65644d7573742070726f76696465206e6f746520616e64207369676e617475726543616e20636c61696d2066756c6c2072657761726473496e76616c6964206d696e20726577617264734e6f7420656e6f7567682072657761726473546f6f20666577207265776172647370726f6a6563745f6964736e725f7765656b737369676e6572656e645f7765656b73746172745f7765656b496e76616c6964207765656b206e756d62657273496e76616c6964207061796d656e744f6e6c792066756e6769626c6520746f6b656e73206163636570746564496e697469616c207265776172647320616c7265616479206465706f7369746564546f6f2066657720726577617264207765656b734669727374207765656b207265776172647320646f6c6c61722070657220656e65726779206e6f742073657450726f6a65637420616c726561647920656e646564496e76616c696420656e64207765656b4d757374206465706f73697420696e697469616c20726577617264732066697273746465706f7369745377617046656573456e64207765656b206e6f74207265616368656443616e6e6f7420776974686472617720616e796d6f7265496e76616c6964206665657320636f6c6c6563746f7220616464726573732e6c656e626164206172726179206c656e6774687661722061726773696e707574206f7574206f662072616e6765436f6e747261637420697320706175736564676574536166655072696365427954696d657374616d704f6666736574656e65726779466163746f727941646472657373636c61696d526577617264734576656e74496e76616c69642053432061646472657373496e76616c696420746f6b656e20494470726f6a6563744f776e657270726f6a6563744163746976656c61737450726f6a656374496470617573655f6d6f64756c653a70617573656475736463546f6b656e4964726f75746572416464726573737765676c64546f6b656e496473616665507269636550616972746f74616c456e65726779466f725765656b726567526577446f6c6c617273726577446f6c6c617273506572456e657267796d696e526577446f6c6c617273506572456e65726779696e74456e65726779466f72526577436c61696d657273726567456e65726779526577436c61696d65727366697273745765656b526577446f6c6c617273506572456e65726779726567456e657267794578656d70436c61696d6572736765745061697275736572436c61696d656473696d706c654c6f636b416464726573736578656d707465645061727469636970616e747366656573436f6c6c6563746f724164647265737366697273744e6f7465496e64657863757272656e744e6f7465496e6465786e6f74657573657249647372657761726473496e666f6d696e52657761726473506572696f6472657761726473546f74616c416d6f756e746d696e5765656b6c795265776172647356616c75657265776172647352656d61696e696e67416d6f756e7466697273745765656b537461727454696d657374616d7000a861000050c30000a08601003e0002003f0002004000020075736572456e65726779626173654173736574546f6b656e4964496e76616c6964207374617274207765656b5765656b2030206973206e6f7420612076616c6964207765656b7845786368616e676547726f77746856315461736b436f6d706c65746564456e64706f696e742063616e206f6e6c792062652063616c6c6564206279206f776e6572616464724964616464726c617374496470616e6963206f636375727265640041c492080b049cffffff" } diff --git a/growth-program/output/growth-program.wasm b/growth-program/output/growth-program.wasm index 92d9a464167493db3e5effb753a1f2889dd61d71..4be734e4caa71733335eb2b411d53b26f1e92cf5 100755 GIT binary patch literal 21390 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 literal 20837 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 jKN9q { #[multiversx_sc::module] pub trait PriceQueryModule { - fn get_dollar_value( + fn get_usdc_value( &self, token_id: TokenIdentifier, amount: BigUint, diff --git a/growth-program/src/project.rs b/growth-program/src/project.rs index 301cd61..d4cf9ae 100644 --- a/growth-program/src/project.rs +++ b/growth-program/src/project.rs @@ -19,6 +19,7 @@ pub trait ProjectsModule { #[only_owner] #[endpoint(setProjectOwner)] fn set_project_owner(&self, project_id: ProjectId, new_owner: ManagedAddress) { + self.require_valid_project_id(project_id); self.project_owner(project_id).set(new_owner); } @@ -33,8 +34,10 @@ pub trait ProjectsModule { } fn pause_common(&self, project_id: ProjectId, pause_status: bool) { + self.require_valid_project_id(project_id); + let caller = self.blockchain().get_caller(); - self.require_is_project_owner(&caller, project_id); + self.require_sc_owner_or_project_owner(&caller, project_id); self.project_active(project_id).set(pause_status); } diff --git a/growth-program/src/rewards/claim.rs b/growth-program/src/rewards/claim.rs index 2dc5241..7f3fb1a 100644 --- a/growth-program/src/rewards/claim.rs +++ b/growth-program/src/rewards/claim.rs @@ -42,6 +42,10 @@ pub trait ClaimRewardsModule: let current_week = self.get_current_week(); let info_mapper = self.rewards_info(project_id); let mut rewards_info = info_mapper.get(); + require!( + current_week >= rewards_info.start_week, + "Project not started yet" + ); require!( current_week < rewards_info.end_week, "May not claim rewards for this project anymore" @@ -69,7 +73,11 @@ pub trait ClaimRewardsModule: let total_rewards = self.rewards_total_amount(project_id, current_week).get(); let user_original_energy = self.get_energy_amount(&caller); - let rew_advertised = total_rewards * &user_original_energy / total_energy; + let rew_advertised = if total_energy != 0 { + total_rewards * &user_original_energy / total_energy + } else { + BigUint::zero() + }; let opt_rewards = match claim_type { ClaimType::Exemption => { let claim_exemption_args = ClaimExemptionArgs { @@ -103,8 +111,6 @@ pub trait ClaimRewardsModule: } }; - info_mapper.set(rewards_info); - let total_rewards = match &opt_rewards { OptionalValue::Some(payment) => payment.amount.clone(), OptionalValue::None => BigUint::zero(), @@ -200,7 +206,7 @@ pub trait ClaimRewardsModule: let rew_available = beta * args.rew_advertised / MAX_PERCENTAGE; let rew_available_dollar_value = - self.get_dollar_value(args.reward_token_id, rew_available, HOUR_IN_SECONDS); + self.get_usdc_value(args.reward_token_id, rew_available, HOUR_IN_SECONDS); self.registered_rewards_dollars(args.project_id, args.current_week) .update(|reg_rew_dollars| *reg_rew_dollars += rew_available_dollar_value); @@ -212,6 +218,7 @@ pub trait ClaimRewardsModule: fn claim_rewards_normal(&self, args: ClaimRewardsArgs) -> EsdtTokenPayment { let rem_rewards_mapper = self.rewards_remaining_amount(args.project_id, args.current_week); let remaining_rewards = rem_rewards_mapper.get(); + require!(remaining_rewards > 0, "Not enough rewards"); let rew_available = core::cmp::min(args.rew_advertised, remaining_rewards); let user_rewards = @@ -229,7 +236,7 @@ pub trait ClaimRewardsModule: .update(|int_energy| *int_energy += &user_adjusted_energy); let rew_available_dollar_value = - self.get_dollar_value(args.reward_token_id.clone(), rew_available, HOUR_IN_SECONDS); + self.get_usdc_value(args.reward_token_id.clone(), rew_available, HOUR_IN_SECONDS); self.registered_rewards_dollars(args.project_id, args.current_week) .update(|reg_rew_dollars| *reg_rew_dollars += rew_available_dollar_value); diff --git a/growth-program/src/rewards/common_rewards.rs b/growth-program/src/rewards/common_rewards.rs index 9652e12..e082ca4 100644 --- a/growth-program/src/rewards/common_rewards.rs +++ b/growth-program/src/rewards/common_rewards.rs @@ -14,6 +14,18 @@ pub struct RewardsInfo { pub end_week: Week, } +impl RewardsInfo { + pub fn new(reward_token_id: TokenIdentifier, start_week: Week, end_week: Week) -> Self { + RewardsInfo { + reward_token_id, + undistributed_rewards: BigUint::zero(), + start_week, + last_update_week: start_week, + end_week, + } + } +} + #[multiversx_sc::module] pub trait CommonRewardsModule: super::week_timekeeping::WeekTimekeepingModule { #[endpoint(updateRewards)] @@ -22,9 +34,8 @@ pub trait CommonRewardsModule: super::week_timekeeping::WeekTimekeepingModule { project_id: ProjectId, opt_max_nr_weeks: OptionalValue, ) { - self.rewards_info(project_id).update(|rewards_info| { - self.update_rewards(project_id, opt_max_nr_weeks, rewards_info); - }); + let mut rewards_info = self.rewards_info(project_id).get(); + self.update_rewards(project_id, opt_max_nr_weeks, &mut rewards_info); } fn update_rewards( @@ -35,14 +46,17 @@ pub trait CommonRewardsModule: super::week_timekeeping::WeekTimekeepingModule { ) { let current_week = self.get_current_week(); if rewards_info.start_week > current_week { + self.rewards_info(project_id).set(rewards_info); return; } if rewards_info.last_update_week >= current_week { + self.rewards_info(project_id).set(rewards_info); return; } if rewards_info.last_update_week == rewards_info.end_week { + self.rewards_info(project_id).set(rewards_info); return; } @@ -61,14 +75,18 @@ pub trait CommonRewardsModule: super::week_timekeeping::WeekTimekeepingModule { total_undistributed_rewards += undistributed_rewards; } - if last_week < rewards_info.end_week - 1 { + if last_week < rewards_info.end_week { self.rewards_remaining_amount(project_id, last_week) - .update(|rem_rew| *rem_rew += total_undistributed_rewards); + .update(|rem_rew| *rem_rew += &total_undistributed_rewards); + self.rewards_total_amount(project_id, last_week) + .update(|rew_total| *rew_total += total_undistributed_rewards); } else { rewards_info.undistributed_rewards += total_undistributed_rewards; } rewards_info.last_update_week = last_week; + + self.rewards_info(project_id).set(rewards_info); } #[storage_mapper("minRewardsPeriod")] diff --git a/growth-program/src/rewards/deposit.rs b/growth-program/src/rewards/deposit.rs index ac129cd..33ce0ac 100644 --- a/growth-program/src/rewards/deposit.rs +++ b/growth-program/src/rewards/deposit.rs @@ -3,7 +3,7 @@ use super::week_timekeeping::Week; use crate::{ project::{ProjectId, PROJECT_UNPAUSED}, rewards::common_rewards::RewardsInfo, - WEEK_IN_SECONDS, + DAY_IN_SECONDS, }; multiversx_sc::imports!(); @@ -19,6 +19,7 @@ pub trait DepositRewardsModule: + super::week_timekeeping::WeekTimekeepingModule + crate::validation::ValidationModule + multiversx_sc_modules::pause::PauseModule + + energy_query::EnergyQueryModule { #[only_owner] #[endpoint(setMinRewardsPeriod)] @@ -39,7 +40,6 @@ pub trait DepositRewardsModule: project_id: ProjectId, start_week: Week, end_week: Week, - initial_rewards_dollar_per_energy: BigUint, signer: ManagedAddress, ) { require!( @@ -53,8 +53,14 @@ pub trait DepositRewardsModule: self.deposit_rewards_common(project_id, start_week, end_week); + let first_week_rdpe = self.first_week_reward_dollars_per_energy().get(); + require!( + first_week_rdpe > 0, + "First week rewards dollar per energy not set" + ); + self.rewards_dollars_per_energy(project_id, start_week) - .set(initial_rewards_dollar_per_energy); + .set(first_week_rdpe); self.signer(project_id).set(signer); self.project_active(project_id).set(PROJECT_UNPAUSED); } @@ -103,37 +109,35 @@ pub trait DepositRewardsModule: let week_diff = end_week - start_week; let rewards_per_week = &payment.amount / week_diff as u32; - let dollar_value = self.get_dollar_value( + let dollar_value = self.get_usdc_value( payment.token_identifier.clone(), rewards_per_week.clone(), - WEEK_IN_SECONDS, + DAY_IN_SECONDS, ); let min_weekly_rewards_value = self.min_weekly_rewards_value().get(); require!(dollar_value >= min_weekly_rewards_value, "Too few rewards"); let info_mapper = self.rewards_info(project_id); - let mut rewards_info = if info_mapper.is_empty() { - RewardsInfo { - reward_token_id: payment.token_identifier.clone(), - undistributed_rewards: BigUint::zero(), - start_week, - last_update_week: start_week, - end_week, - } - } else { + let mut rewards_info = if !info_mapper.is_empty() { let mut rewards_info = info_mapper.get(); + require!( + payment.token_identifier == rewards_info.reward_token_id, + "Invalid payment" + ); + rewards_info.last_update_week = core::cmp::min(rewards_info.last_update_week, start_week); rewards_info.end_week = core::cmp::max(rewards_info.end_week, end_week); + if current_week < start_week && start_week < rewards_info.start_week { + rewards_info.start_week = start_week; + } + rewards_info + } else { + RewardsInfo::new(payment.token_identifier.clone(), start_week, end_week) }; - require!( - payment.token_identifier == rewards_info.reward_token_id, - "Invalid payment" - ); - self.update_rewards(project_id, OptionalValue::None, &mut rewards_info); for week in start_week..end_week { @@ -147,7 +151,5 @@ pub trait DepositRewardsModule: let surplus_payment = EsdtTokenPayment::new(payment.token_identifier, 0, surplus_amount); self.send() .direct_non_zero_esdt_payment(&caller, &surplus_payment); - - info_mapper.set(rewards_info); } } diff --git a/growth-program/src/rewards/energy.rs b/growth-program/src/rewards/energy.rs index a271585..e220c5f 100644 --- a/growth-program/src/rewards/energy.rs +++ b/growth-program/src/rewards/energy.rs @@ -1,31 +1,63 @@ use super::week_timekeeping::Week; -use crate::{project::ProjectId, DAY_IN_SECONDS, MAX_PERCENTAGE, PRECISION}; +use crate::{ + project::ProjectId, DAY_IN_SECONDS, MAX_PERCENTAGE, PRECISION, USDC_DECIMALS, WEEKS_PER_YEAR, +}; multiversx_sc::imports!(); multiversx_sc::derive_imports!(); +pub const ENERGY_FOUR_YEARS_MEX: u64 = 4 * 360; +pub const MEX_AMOUNT_FOR_APR_MATH: u64 = 10_000_000_000; + #[multiversx_sc::module] pub trait EnergyModule: super::common_rewards::CommonRewardsModule + crate::price_query::PriceQueryModule + crate::project::ProjectsModule + super::week_timekeeping::WeekTimekeepingModule + + energy_query::EnergyQueryModule { + /// min_reward_dollars_per_energy is a value scaled to PRECISION*PRECISION. + /// For example, if the desired RDPE is that 10^18 units of energy give 10^{-15} dollars of rewards, + /// then we should provide the argument 10^{-15}*10^{-18}*PRECISION*PRECISION = 10^3. #[only_owner] #[endpoint(setMinRewardDollarsPerEnergy)] fn set_min_reward_dollars_per_energy(&self, min_value: BigUint) { self.min_reward_dollars_per_energy().set(min_value); } + // The APR should be expressed in MAX_PERC units, e.g. 500 represents 5%. + // Here the base investment for this APR is MEX locked for 4 years. + #[only_owner] + #[endpoint(setInitialRdpeFromApr)] + fn set_initial_rdpe_from_apr(&self, apr: BigUint) { + let mex_amount = BigUint::from(MEX_AMOUNT_FOR_APR_MATH) * PRECISION; + let mex_token_id = self.get_base_token_id(); + let mex_price = self.get_usdc_value(mex_token_id, mex_amount.clone(), DAY_IN_SECONDS); + let num = apr * mex_price * PRECISION * PRECISION; + let den = BigUint::from(10u32).pow(USDC_DECIMALS) + * MAX_PERCENTAGE + * WEEKS_PER_YEAR + * ENERGY_FOUR_YEARS_MEX + * mex_amount; + let first_week_reward_dollars_per_energy = num / den; + self.first_week_reward_dollars_per_energy() + .set(first_week_reward_dollars_per_energy); + } + #[only_owner] #[endpoint(setNextWeekRewardDollarsPerEnergy)] - fn set_next_week_reward_dollars_per_energy(&self, project_id: ProjectId, new_min: BigUint) { + fn set_next_week_reward_dollars_per_energy( + &self, + project_id: ProjectId, + rew_dollars_per_energy: BigUint, + ) { self.require_valid_project_id(project_id); let week = self.get_current_week() + 1; self.rewards_dollars_per_energy(project_id, week) - .set(new_min); + .set(rew_dollars_per_energy); } #[only_owner] @@ -66,9 +98,10 @@ pub trait EnergyModule: let rewards_info = self.rewards_info(project_id).get(); let total_rewards = self.rewards_total_amount(project_id, current_week).get(); let rewards_value = - self.get_dollar_value(rewards_info.reward_token_id, total_rewards, DAY_IN_SECONDS); - let energy_per_rew_dollar = self.get_reward_dollar_per_energy(project_id); - let total_energy = rewards_value * energy_per_rew_dollar / PRECISION; + self.get_usdc_value(rewards_info.reward_token_id, total_rewards, DAY_IN_SECONDS); + let reward_per_dollar_energy = + self.get_reward_dollar_per_energy(project_id) * BigUint::from(10u32).pow(USDC_DECIMALS); + let total_energy = rewards_value * PRECISION * PRECISION / reward_per_dollar_energy; mapper.set(&total_energy); total_energy @@ -99,7 +132,7 @@ pub trait EnergyModule: let rewards_info = self.rewards_info(project_id).get(); let total_rewards_current_week = self.rewards_total_amount(project_id, current_week).get(); - let rewards_value_current_week = self.get_dollar_value( + let rewards_value_current_week = self.get_usdc_value( rewards_info.reward_token_id, total_rewards_current_week, DAY_IN_SECONDS, @@ -112,7 +145,9 @@ pub trait EnergyModule: let den = (registered_energy_prev_week * interested_energy_prev_week).sqrt(); let alpha = self.alpha().get(); - let calculated_value = alpha * PRECISION * num / (den * MAX_PERCENTAGE); + let calculated_value = alpha * PRECISION * PRECISION * num + / (den * MAX_PERCENTAGE) + / BigUint::from(10u32).pow(USDC_DECIMALS); let rdpe_for_week = core::cmp::max(calculated_value, min_reward_dollar_per_energy); mapper.set(&rdpe_for_week); @@ -175,6 +210,9 @@ pub trait EnergyModule: week: Week, ) -> SingleValueMapper; + #[storage_mapper("firstWeekRewDollarsPerEnergy")] + fn first_week_reward_dollars_per_energy(&self) -> SingleValueMapper; + #[storage_mapper("rewDollarsPerEnergy")] fn rewards_dollars_per_energy( &self, diff --git a/growth-program/src/rewards/week_timekeeping.rs b/growth-program/src/rewards/week_timekeeping.rs index a3cf466..5ff5f35 100644 --- a/growth-program/src/rewards/week_timekeeping.rs +++ b/growth-program/src/rewards/week_timekeeping.rs @@ -3,7 +3,6 @@ use crate::{Timestamp, WEEK_IN_SECONDS}; multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -pub const FIRST_WEEK: Week = 1; pub const MONDAY_19_02_2024_GMT_TIMESTAMP: u64 = 1_708_300_800; static INVALID_WEEK_ERR_MSG: &[u8] = b"Week 0 is not a valid week"; @@ -27,8 +26,10 @@ pub trait WeekTimekeepingModule { #[view(getTimestampsStartAndEndOfWeek)] fn get_timestamps_start_and_end_of_week(&self, week: Week) -> StartEndWeekTimestampPair { + require!(week > 0, "Invalid week"); + let first_week_start_timestamp = self.first_week_start_timestamp().get(); - let start = first_week_start_timestamp + week as u64 * WEEK_IN_SECONDS; + let start = first_week_start_timestamp + (week as u64 - 1) * WEEK_IN_SECONDS; let end = start + WEEK_IN_SECONDS - 1; StartEndWeekTimestampPair { start, end } diff --git a/growth-program/src/rewards/withdraw.rs b/growth-program/src/rewards/withdraw.rs index 648860d..1e2822d 100644 --- a/growth-program/src/rewards/withdraw.rs +++ b/growth-program/src/rewards/withdraw.rs @@ -44,7 +44,7 @@ pub trait WithdrawRewardsModule: "Cannot withdraw anymore" ); require!( - start_week > rewards_info.last_update_week, + start_week >= rewards_info.last_update_week, INVALID_START_WEEK_ERR_MSG ); require!( @@ -80,7 +80,8 @@ pub trait WithdrawRewardsModule: fn finish_program(&self, project_id: ProjectId) { self.require_not_paused(); - let mut rewards_info = self.rewards_info(project_id).take(); + let rewards_mapper = self.rewards_info(project_id); + let mut rewards_info = rewards_mapper.get(); let current_week = self.get_current_week(); require!( current_week >= rewards_info.end_week, @@ -88,6 +89,7 @@ pub trait WithdrawRewardsModule: ); self.update_rewards(project_id, OptionalValue::None, &mut rewards_info); + rewards_mapper.clear(); if rewards_info.undistributed_rewards == 0 { return; diff --git a/growth-program/tests/growth_program_setup/mod.rs b/growth-program/tests/growth_program_setup/mod.rs index 66a2d65..24206b3 100644 --- a/growth-program/tests/growth_program_setup/mod.rs +++ b/growth-program/tests/growth_program_setup/mod.rs @@ -7,6 +7,7 @@ use growth_program::{ claim::ClaimRewardsModule, claim_types::{ClaimType, LockOption}, deposit::DepositRewardsModule, + energy::EnergyModule, week_timekeeping::{Epoch, MONDAY_19_02_2024_GMT_TIMESTAMP}, }, GrowthProgram, Timestamp, DEFAULT_MIN_REWARDS_PERIOD, MAX_PERCENTAGE, PRECISION, @@ -320,6 +321,9 @@ where managed_token_id!(WEGLD_TOKEN_ID), ); + sc.first_week_reward_dollars_per_energy() + .set(managed_biguint!(DEFAULT_ENERGY_PER_DOLLAR) * PRECISION * PRECISION); + sc.set_paused(false); }) .assert_ok(); @@ -377,13 +381,7 @@ where |sc| { let signer_addr = managed_address!(&Address::from(&SIGNER_ADDRESS)); - sc.deposit_initial_rewards( - 1, - 2, - 2 + DEFAULT_MIN_REWARDS_PERIOD, - managed_biguint!(DEFAULT_ENERGY_PER_DOLLAR) * PRECISION, - signer_addr, - ); + sc.deposit_initial_rewards(1, 2, 2 + DEFAULT_MIN_REWARDS_PERIOD, signer_addr); }, ) .assert_ok(); @@ -398,13 +396,7 @@ where |sc| { let signer_addr = managed_address!(&Address::from(&SIGNER_ADDRESS)); - sc.deposit_initial_rewards( - 2, - 2, - 2 + DEFAULT_MIN_REWARDS_PERIOD, - managed_biguint!(DEFAULT_ENERGY_PER_DOLLAR), - signer_addr, - ); + sc.deposit_initial_rewards(2, 2, 2 + DEFAULT_MIN_REWARDS_PERIOD, signer_addr); }, ) .assert_ok(); diff --git a/growth-program/tests/test.rs b/growth-program/tests/test.rs index 555ff7a..5790991 100644 --- a/growth-program/tests/test.rs +++ b/growth-program/tests/test.rs @@ -3,7 +3,8 @@ pub mod growth_program_setup; use growth_program::{ rewards::{ - claim_types::LockOption, + claim::ClaimRewardsModule, + claim_types::{ClaimType, LockOption}, common_rewards::{CommonRewardsModule, RewardsInfo}, deposit::DepositRewardsModule, energy::EnergyModule, @@ -11,11 +12,15 @@ use growth_program::{ DEFAULT_MIN_REWARDS_PERIOD, }; use growth_program_setup::*; -use multiversx_sc::types::Address; +use multiversx_sc::{ + codec::multi_types::OptionalValue, + types::{Address, ManagedByteArray}, +}; use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_token_id, managed_token_id_wrapped, rust_biguint, - DebugApi, + managed_address, managed_biguint, managed_buffer, managed_token_id, managed_token_id_wrapped, + rust_biguint, DebugApi, }; +use num_traits::FromPrimitive; use simple_lock::locked_token::LockedTokenAttributes; #[test] @@ -65,7 +70,7 @@ fn deposit_too_few_rewards_test() { |sc| { let signer_addr = managed_address!(&Address::from(&SIGNER_ADDRESS)); - sc.deposit_initial_rewards(1, 2, 28, managed_biguint!(1), signer_addr); + sc.deposit_initial_rewards(1, 2, 28, signer_addr); }, ) .assert_user_error("Too few rewards"); @@ -96,7 +101,7 @@ fn deposit_wrong_week_amount_test() { |sc| { let signer_addr = managed_address!(&Address::from(&SIGNER_ADDRESS)); - sc.deposit_initial_rewards(1, 2, 5, managed_biguint!(1), signer_addr); + sc.deposit_initial_rewards(1, 2, 5, signer_addr); }, ) .assert_user_error("Too few reward weeks"); @@ -230,7 +235,7 @@ fn claim_ok_first_week_unlocked_test() { .b_mock .execute_query(&setup.gp_wrapper, |sc| { let total_energy = sc.total_energy_for_week(1, 2).get(); - assert_eq!(total_energy, managed_biguint!(192307692307690)); + assert_eq!(total_energy, managed_biguint!(7692307)); let interested_energy = sc.interested_energy_rewards_claimers(1, 2).get(); assert_eq!(interested_energy, managed_biguint!(348000) / 4u32); // 25% for full unlocked @@ -240,7 +245,7 @@ fn claim_ok_first_week_unlocked_test() { setup.b_mock.check_esdt_balance( &setup.first_user_addr, FIRST_PROJ_TOKEN, - &rust_biguint!(17400000000000208), + &num_bigint::BigUint::from_u128(435000039150003523500317).unwrap(), ); // first user try claim again @@ -286,7 +291,7 @@ fn claim_ok_first_week_locked_test() { .b_mock .execute_query(&setup.gp_wrapper, |sc| { let total_energy = sc.total_energy_for_week(1, 2).get(); - assert_eq!(total_energy, managed_biguint!(192307692307690)); + assert_eq!(total_energy, managed_biguint!(7692307)); let interested_energy = sc.interested_energy_rewards_claimers(1, 2).get(); assert_eq!(interested_energy, managed_biguint!(348000) / 2u32); // 50% for one week lock @@ -298,7 +303,7 @@ fn claim_ok_first_week_locked_test() { &setup.first_user_addr, LOCKED_TOKEN_ID, 1, - &rust_biguint!(34800000000000417), + &num_bigint::BigUint::from_u128(870000078300007047000634).unwrap(), Some(&LockedTokenAttributes:: { original_token_id: managed_token_id_wrapped!(FIRST_PROJ_TOKEN), original_token_nonce: 0, @@ -325,12 +330,24 @@ fn claim_too_many_rewards_test() { let sig_first_user_week_2 = hex_literal::hex!("3360e54f357cbb67b1c34771b633d0f7ad9779019a0dcee252d972315c1edb8178012f057c94714e52b3d461ef333cb3020c29e3f98e467a4d3341880891690e"); setup - .claim( - &setup.first_user_addr.clone(), - 1, - LockOption::None, - 17400000000000209, - &sig_first_user_week_2, + .b_mock + .execute_tx( + &setup.first_user_addr, + &setup.gp_wrapper, + &rust_biguint!(0), + |sc| { + let multi_value_arg = ( + managed_buffer!(b"lala"), + ManagedByteArray::new_from_bytes(&sig_first_user_week_2), + ) + .into(); + let _ = sc.claim_rewards( + 1, + multiversx_sc::types::BigUint::from(870000078300007047000634u128) + 1u32, + ClaimType::Rewards(LockOption::None), + OptionalValue::Some(multi_value_arg), + ); + }, ) .assert_user_error("Too few rewards"); } diff --git a/growth-program/wasm/src/lib.rs b/growth-program/wasm/src/lib.rs index 04c70c8..d41fe78 100644 --- a/growth-program/wasm/src/lib.rs +++ b/growth-program/wasm/src/lib.rs @@ -5,9 +5,9 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 36 +// Endpoints: 37 // Async Callback (empty): 1 -// Total number of exported functions: 38 +// Total number of exported functions: 39 #![no_std] #![allow(internal_features)] @@ -34,6 +34,7 @@ multiversx_sc_wasm_adapter::endpoints! { ownerWithdrawRewards => owner_withdraw_rewards finishProgram => finish_program setMinRewardDollarsPerEnergy => set_min_reward_dollars_per_energy + setInitialRdpeFromApr => set_initial_rdpe_from_apr setNextWeekRewardDollarsPerEnergy => set_next_week_reward_dollars_per_energy setAlpha => set_alpha setBeta => set_beta From 34489d54abd5a834ce3d8fadeb5796454415e9ee Mon Sep 17 00:00:00 2001 From: Dorin Marian Iancu Date: Mon, 18 Mar 2024 15:17:28 +0200 Subject: [PATCH 2/2] small fix --- growth-program/output/growth-program.abi.json | 2 +- .../output/growth-program.mxsc.json | 2 +- growth-program/output/growth-program.wasm | Bin 21390 -> 21390 bytes growth-program/src/rewards/claim.rs | 3 ++- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/growth-program/output/growth-program.abi.json b/growth-program/output/growth-program.abi.json index 41d183f..5a4dcb4 100644 --- a/growth-program/output/growth-program.abi.json +++ b/growth-program/output/growth-program.abi.json @@ -10,7 +10,7 @@ "contractCrate": { "name": "growth-program", "version": "0.0.0", - "gitVersion": "v1.0.2-161-g027030c" + "gitVersion": "v1.0.2-162-g6750cb9" }, "framework": { "name": "multiversx-sc", diff --git a/growth-program/output/growth-program.mxsc.json b/growth-program/output/growth-program.mxsc.json index f1ec949..e970f5b 100644 --- a/growth-program/output/growth-program.mxsc.json +++ b/growth-program/output/growth-program.mxsc.json @@ -759,5 +759,5 @@ } }, "size": 21390, - "code": "0061736d0100000001a8011b60000060017f017f60027f7f0060027f7f017f6000017f60017f0060037f7f7f0060037f7f7f017f60047f7f7f7f0060027f7e0060057f7f7f7f7f0060047f7f7f7f017f60027f7e017f60017f017e6000017e60027f7f017e60017e0060017e017f60027e7f0060057f7f7e7f7f017f60067e7f7f7f7f7f017f60057e7f7f7f7f017f60047f7f7f7e0060047f7e7f7f0060037f7f7e017f60047f7f7f7e017f60037f7e7f017f02bb093303656e760e626967496e74536574496e743634000903656e7609626967496e74416464000603656e760b7369676e616c4572726f72000203656e760a6d4275666665724e6577000403656e760d6d427566666572417070656e64000303656e76096d4275666665724571000303656e760d6d42756666657246696e697368000103656e76106d4275666665724765744c656e677468000103656e76226d616e616765644d756c74695472616e73666572455344544e465445786563757465001303656e761b6d616e61676564457865637574654f6e44657374436f6e74657874001403656e760d6d616e6167656443616c6c6572000503656e76106d616e61676564534341646472657373000503656e76136d616e616765644f776e657241646472657373000503656e760f6d4275666665724765744279746573000303656e760f6973536d617274436f6e7472616374000103656e76126d427566666572476574417267756d656e74000303656e76126d427566666572417070656e644279746573000703656e76126d616e616765645369676e616c4572726f72000503656e7611676574417267756d656e744c656e677468000103656e761b736d616c6c496e74476574556e7369676e6564417267756d656e74000d03656e7619626967496e74476574556e7369676e6564417267756d656e74000203656e760f6765744e756d417267756d656e7473000403656e7614626967496e7446696e697368556e7369676e6564000503656e7614736d616c6c496e7446696e6973685369676e6564001003656e7609626967496e74537562000603656e7609626967496e74436d70000303656e760f6d4275666665725365744279746573000703656e760a626967496e7454446976000603656e7609626967496e744d756c000603656e76196d42756666657246726f6d426967496e74556e7369676e6564000303656e76176d427566666572546f426967496e74556e7369676e6564000303656e7609626967496e74506f77000603656e760a626967496e7453717274000203656e76146d427566666572436f707942797465536c696365000b03656e76126d42756666657253746f726167654c6f6164000303656e76136d42756666657253746f7261676553746f7265000303656e760a6765744761734c656674000e03656e760f636c65616e52657475726e44617461000003656e7611676574426c6f636b54696d657374616d70000e03656e761c6d616e616765644765744d756c74694553445443616c6c56616c7565000503656e761776616c6964617465546f6b656e4964656e746966696572000103656e760e636865636b4e6f5061796d656e74000003656e7616736d616c6c496e7446696e697368556e7369676e6564001003656e761d6d42756666657253746f726167654c6f616446726f6d41646472657373000603656e76146d616e6167656456657269667945643235353139000703656e760d676574426c6f636b45706f6368000e03656e76156d427566666572546f426967496e745369676e6564000303656e7609626967496e74416273000203656e760f6d616e6167656457726974654c6f67000203656e760a626967496e745369676e000103656e76136d42756666657247657442797465536c696365000b03f801f60101040a0004110901030501020402050208040302030101010201020202020102010215040404000108070207070701070107050505000501050106010a060201090a0b030f0816080a020a010b090a0f08020701010206010302030303020101030c110101040201010b080b0605010d010102020602020503020202170602020902010101030c120f0c090c06060907071804040419040a0d0205020104010804030301040301020303030304030405050405060004030504020202120605040108050501040604060c0c1a04040000000000000000000000000000000000000000000000000000000000000000000000000000000005030100030616037f01418080080b7f004185e1080b7f004190e1080b07dc062a066d656d6f7279020004696e697400810207757067726164650082020a61646450726f6a6563740083020f73657450726f6a6563744f776e65720084020c706175736550726f6a6563740085020e756e706175736550726f6a6563740086020f697350726f6a656374416374697665008702137365744d696e52657761726473506572696f64008802187365744d696e5765656b6c795265776172647356616c7565008902156465706f736974496e697469616c52657761726473008a02186465706f7369744164646974696f6e616c52657761726473008b021773657446656573436f6c6c6563746f7241646472657373008c02146f776e6572576974686472617752657761726473008d020d66696e69736850726f6772616d008e021c7365744d696e526577617264446f6c6c617273506572456e65726779008f0215736574496e697469616c5264706546726f6d417072009002217365744e6578745765656b526577617264446f6c6c617273506572456e6572677900910208736574416c70686100920207736574426574610093021c736574546f74616c456e65726779466f7243757272656e745765656b0094021c676574546f74616c456e65726779466f7243757272656e745765656b0095020c636c61696d52657761726473009602176765744578656d707465645061727469636970616e74730097020e67657455736572436c61696d65640098020d757064617465526577617264730099020e67657452657761726473496e666f009a021567657452657761726473546f74616c416d6f756e74009b02196765745265776172647352656d61696e696e67416d6f756e74009c020f6765744e6f746573486973746f7279009d020c6368616e67655369676e6572009e020e67657443757272656e745765656b009f021e67657454696d657374616d70735374617274416e64456e644f665765656b00a0021a67657446697273745765656b537461727454696d657374616d7000a10217736574456e65726779466163746f72794164647265737300a20217676574456e65726779466163746f72794164647265737300a30205706175736500a40207756e706175736500a50208697350617573656400a6020863616c6c4261636b00a7020a5f5f646174615f656e6403010b5f5f686561705f6261736503020ae18001f6011601017f1034220142001000200120012000100120010b1901017f41c4920841c4920828020041016b220036020020000b2e000240200120024d0440200220044d0d011036000b1036000b2000200220016b3602042000200120036a3602000b060010a802000b0e01017f10342200420a100020000b0e01017f103422012000103920010b19002001420053044041f5820841111002000b2000200110000b0f01017f10032201200010041a20010b0b0020002001100541004a0b19002000103d45044041f58008410f103e000b103f200010400b1400200041e5e008100d1a41e5e008100e41004a0b0900200020011002000b0a0041ca8c08411410450b09002000200110a8010b6c01027f230041106b220124002000027f41dce0082d0000220245044041dce00841013a000041d8e0084100360200200141086a410010422001280208200128020c41b492084100104310440c010b41b49208410010450b360200200020024101733a0004200141106a24000b3e01017f230041106b22022400200241086a41c892084190ce00200110f401200228020c21012000200228020836020020002001360204200241106a24000bb50201067f200120034604402001220341104f04402000410020006b41037122046a210520040440200221010340200020012d00003a0000200141016a2101200041016a22002005490d000b0b2005200320046b2203417c7122066a21000240200220046a22044103710440200641004c0d012004410374220141187121072004417c71220841046a2102410020016b4118712109200828020021010340200520012007762002280200220120097472360200200241046a2102200541046a22052000490d000b0c010b200641004c0d0020042102034020052002280200360200200241046a2102200541046a22052000490d000b0b20034103712103200420066a21020b20030440200020036a21010340200020022d00003a0000200241016a2102200041016a22002001490d000b0b0f0b1036000b1301017f1034220041b492084100101a1a20000b1101017f1034220220002001101a1a20020b0b0020002001104710061a0b4901017f230041106b22022400200220013a000c20022000360208200241086a10a001200228020820022d000c044041d8e008410036020041dce00841003a00000b200241106a24000b080020001049104a0b7301047f230041106b220124002001410036020c20002001410c6a2202410441db8208410b108101200120002802082000280200220320024104108201a722021083012001280200410147044041db8208410b41e68208410f105b000b20012802042000200220036a360200200141106a24000b0d00200010342200101e1a20000b0a002000104c2001104d0b0f01017f103422012000101d1a20010bb40101037f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410bf010240024020012d000404402000100722044190ce0041d8e00828020022036b4b0d0120022003200320046a220110c0012000410020022802002002280204107f1a41d8e00820013602000c020b20012802002000108c010c010b200110a00120012802002000108c010b200241106a24000b0a002000104c2001104f0b5101027f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410890120012000108c01200241106a24000b3701017f20011051220210072101200041106a41003a00002000410c6a20013602002000200236020820002001360204200041003602000b0d0020001034220010221a20000b6902057f017e200128020c220410534504402001290300210710442105104421062001280208230041106b2201240010442103103a210220012004103336020c20012007370300200120023602082003200110542000200342002005200610081a200141106a24000b0b0c002000108a0141ff0171450bd20102027f017e230041106b2203240020032001280208220241187420024180fe03714108747220024108764180fe0371200241187672723602002003200128020c220241187420024180fe03714108747220024108764180fe03712002411876727236020c20032001290300220442388620044280fe0383422886842004428080fc0783421886200442808080f80f834208868484200442088842808080f80f832004421888428080fc07838420044228884280fe0383200442388884848437020420002003411010101a200341106a24000b1500200020012002200320041034220110091a20010b0c01017f10342200100a20000b0c01017f10342200100b20000b0c01017f10342200100c20000b150010581056103b04400f0b4180920841241002000b0d00200010342200100f1a20000b2e01017f41a681084117104522042000200110101a200441bd8108410310101a20042002200310101a20041011000b0c00200020012002105e105a0b4601017f230041106b220224002002200141187420014180fe03714108747220014108764180fe03712001411876727236020c20002002410c6a410410101a200241106a24000b2f01017f2000280200220341e0e0082802004e04402001200241c081084111105b000b2000200341016a36020020030b2501017e20001013220342ffffffff0f5804402003a70f0b2001200241998008410e105b000b3001017f230041106b22032400200341003a000f20002003410f6a41012001200210810120032d000f200341106a24000b2601017e2000101322014280808080105a0440418a8408410a41998008410e105b000b2001a70b1f002000105a2200100741204704402001200241f18b084110105b000b20000b0c00200010342200101420000b0a00200020012002105f0b1900200041e0e0082802004e04400f0b41d1810841121002000b1400101520004604400f0b41e3810841191002000b1900200041e0e0082802004c04400f0b41c0810841111002000b0b0041e0e00810153602000b08002000106a10160b080020001051104a0b09002000106cad10170b3001017e027f0240200010a2012201420158044041002001a741016b0d021a0c010b41898c084112108801000b41010b0b1f0020002001200210182000106e41ff017104400f0b41fc810841301002000b1500410241012000103122001b4100200041004e1b0b9f0202087f017e230041406a22052400200541206a41ac820841141070200528022021082005280224220620031071200410722103104422092003ad107320062009105d20041007210a200541306a210b410021030340200a200341106a2209490440200520082006200120021074200528020421012000200528020036020020002001360204200541406b240005200b42003703002005420037032820042003200541286a2207411010751a2005410036023c20072005413c6a220c107621032007200c1077210d200541286a2005413c6a10762107200541186a2008200620031078200541106a2005280218200528021c200d1079200541086a200528021020052802142007107a200528020c210620052802082108200921030c010b0b0b1800200120021045210120001044360204200020013602000b100010441a20002001280200103a105d0b0900200010074104760b3801017f230041106b2202240020024200370308200220014100200241086a10af01200020022802002002280204101a1a200241106a24000b900101037f230041106b2205240002402003107e0d0020022003107c200410072106410021030340200341046a220720064b0d012005410036020c200420032005410c6a4104107f1a2002200528020c220341187420034180fe03714108747220034108764180fe037120034118767272107c200721030c000b000b2000200236020420002001360200200541106a24000b0f00200020012003200210324100470b7201017f230041106b220224002002410036020c2002200020012802002200200041046a2200109d012002410c6a410420022802002002280204104320012000360200200228020c2100200241106a2400200041187420004180fe03714108747220004108764180fe0371200041187672720ba60102017e017f230041106b22032400200342003703082003200020012802002200200041086a2200109d01200341086a41082003280200200328020410432001200036020020032903082102200341106a2400200242388620024280fe0383422886842002428080fc0783421886200242808080f80f834208868484200242088842808080f80f832002421888428080fc07838420024228884280fe038320024238888484840b160020022003107c20002002360204200020013602000b17002002200310800120002002360204200020013602000b1b0010441a20022003104c105d20002002360204200020013602000b9c0101027f230041306b22052400200541286a41c08208410f1070200541206a2005280228200528022c20042802081078200541186a2005280220200528022420042903001079200541106a2005280218200528021c200428020c107a20052802102104200528021422062003107c200541086a20042006200120021074200528020c21012000200528020836020020002001360204200541306a24000b0d0010441a20002001103a105d0b7101017f230041206b22052400200541186a41cf8208410c1070200541106a2005280218200528021c20031078200541086a200528021020052802142004107a20052005280208200528020c200120021074200528020421012000200528020036020020002001360204200541206a24000b070020001007450b0c00200020012002200310750b1201017f104422022001107320002002105d0b1c002000200120022003200410ca012000200028020020026a3602000b3401017e02402001450d0003402001450d01200141016b210120003100002002420886842102200041016a21000c000b000b20020b1f0020012002200310032201102121022000200136020420002002453602000b930101037f230041106b220224002002410036020c024020012002410c6a220341041085012204450440200220012802082001280200220420034104108201a722031083012000027f20022802004101460440200020022802043602042001200320046a36020041000c010b2000410f36020441e682080b3602000c010b2000410f360204200020043602000b200241106a24000b3201017f41e682082103200041086a200028020020012002109e01047f41e68208052000200028020020026a36020041000b0b5501047f230041106b2201240020001087012102200141086a20002802082000280200220320021083012001280208410147044041e68208410f108801000b200128020c2000200220036a360200200141106a24000b5602017f017e230041106b220124002001410036020c200041086a20002802002001410c6a4104109e01044041e68208410f108801000b2000200028020041046a3602002001410c6a4104108201200141106a2400a70b1a01017f41ea83084116104522022000200110101a20021011000b0b0020002001200210101a0b09002000106e41016b0b1500417f200020011019220041004720004100481b0b09002000200110041a0b0c00200020002001100120000b0c00200020002001101b20000b0c00200020002001101c20000b0a0020002000200110010b11002000200041a08d06109201101b20000b0b0041722000ad100041720b0f00200020002001109201101c20000b0f00200020002001109501101c20000b0a0041722000103941720b1301017f1034220120004106109201101f20010b0e01017f103422012000102020010b0e01017f103422004200100020000b810102047f017e230041206b22022400200241106a42003703002002420037030820014100200241086a22034110107f2002410036021c20032002411c6a2204107621052003200410772106200241086a2002411c6a10762103044041868308411d1002000b2000200336020c2000200536020820002006370300200241206a24000b1900200041feffffff074604404180800841191002000b20000b5f01027f230041206b22012400200010074120460440200141186a4200370300200141106a4200370300200141086a420037030020014200370300200041002001412010751a2001412041a383084120109c0121020b200141206a240020020b5301027f2001200346047f4100210302402001450d00034020002d0000220420022d00002205460440200041016a2100200241016a2102200141016b22010d010c020b0b200420056b21030b20030541010b450b2f000240200220034d0440200341104b0d012000200320026b3602042000200120026a3602000f0b1036000b1036000bb30101037f230041106b22042400027f024020002d000845044020002802002205100722064190ce004b0d0141dce0082d00000d0141d8e008200636020041dce00841013a0000200441086a20061042200541002004280208200428020c107f1a200041013a00080b4101200120036a220041d8e0082802004b0d011a200420012000109f012002200320042802002004280204104341000c010b200041003a00082005200120022003107f0b200441106a24000b32000240200120024d044020024190ce004d0d011036000b1036000b2000200220016b3602042000200141c892086a3602000b5801027f230041106b2201240020002d0004200041003a00040440200141086a410041d8e008280200109f0120002802002001280208200128020c10101a41d8e008410036020041dce00841003a00000b200141106a24000b2201017e200010a20122014280808080105a044041998008410e108801000b2001a70b5f02027f017e230041106b22012400200142003703082000105122001007220241094f044041998008410e108801000b2001200141086a200210f00120004100200128020022002001280204220210751a20002002108201200141106a24000b1c002000105122001007412047044041f18b084110108801000b20000b0d002000416710221a416710070b7001027f230041106b2202240020021041200220022d00043a000c200220022802003602082001280200200241086a2203104d20012802042003104b2001280208200310a601200128020c200310a6012001280210200310a6012000200228020820022d000c10a701200241106a24000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a410410bf01200241106a24000b0d00200020012002104710231a0b09002000200110231a0b0b0020002001104c10231a0b1400416c41b492084100101a1a2000416c10231a0b1a002000103a220041d48308410510101a2001200010ac0120000b09002000200110da010ba60101057f230041206b220224002002410c6a220320011050200310860121012002410c6a108601104a2104200310870121032002410c6a10870121052002410c6a10870121062002280210200228020c4604402002411c6a2d0000044041d8e008410036020041dce00841003a00000b200020063602102000200536020c200020033602082000200436020420002001360200200241206a24000f0b41998008410e108801000b3901017f230041106b220224002002420037030820022001ad4101200241086a10af0120002002280200200228020410b001200241106a24000b900202047f017e2003200142388620014280fe0383422886842001428080fc0783421886200142808080f80f834208868484200142088842808080f80f832001421888428080fc0783842001423888220820014228884280fe03838484843700000240200150044041b4920821030c010b200204402001427f510440200341076a2103410121040c020b2008a7c022054107752106200541004821050b200641ff0171210603400240024020044108470440200320046a2d000022072006460d02200245200741077620054672450440200441016b220441094f0d020b200320046a2103410820046b21040c040b1036000b10a802000b200441016a21040c000b000b20002004360204200020033602000b0d00200020012002104510231a0b08002000200110400b0a0020002001ad10b3010b3801017f230041106b2202240020024200370308200220014100200241086a10af0120002002280200200228020410b001200241106a24000b09002000200110a9010b0d01017f2000106a200010aa010b0800200010a401450b13002000103a220041ae9208410610101a20000b1a002000103a220041aa9208410410101a20002001108c0120000b1a002000103a220041a49208410610101a2001200010ba0120000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a4108108901200241106a24000b0c002000200110b80110a2010b1a002000103a220041e48308410610101a2001200010ba0120000b5001037f20002802082203200110be014504402000280204220210a10121042000280200200441016a220010ab01200110b30120022000ad10b301200210a10121002003200110bc012000ad10b3010b0b0f002000200110bc0110a1014100470b800101027f230041106b220324000240024020002d000404404190ce0041d8e00828020022046b2002490d01200341086a2004200220046a220010c0012003280208200328020c20012002104341d8e00820003602000c020b20002802002001200210101a0c010b200010a00120002802002001200210101a0b200341106a24000b3f01017f230041106b22032400200341086a2001200241c892084190ce001035200328020c21012000200328020836020020002001360204200341106a24000b2201017f1034220242001000200010980136020c20002001370300200020023602080b910101037f230041106b220324002000109a01210441a08f08410710452105104422002001107c20002002107c1098012101102420042001200520001055210010252000100721012003410036020c2003200036020420032001410276360208200341046a41db8208410b10c301103a22001007412047044041db8208410b41f18b084110105b000b200341106a240020000b7b01027f230041106b22032400200028020821042003410036020c200028020020044102742003410c6a4104107f450440200328020c21012000200441016a360208200141187420014180fe03714108747220014108764180fe037120014118767272103a200341106a24000f0b2001200241c081084111105b000b8f0101057f2000103a210310c5011051210410c6011051210510c70110a3012206103a2003103a2004103a10c2012207109b0145044020062004200510c2012203109b01044041948408412b103e000b200310c5011051200720002001200210c801200210c8010f0b20062003200510c2012203109b01450440200320002001200210c8010f0b41bf8408412b103e000b0a0041e28d08410c10450b0a0041ca8d08410b10450b0a0041d58d08410d10450bd20201047f230041306b2204240010c90110a301109a01210641ad8c08411d10452107104422052000107c2005200310800120011044103a2200104f4200200010ba0120022000104e20052000105d109801210010242006200020072005105521001025200010072101200441003602142004200036020c200420014102763602102004410c6a41db8208410b10c301220110072100200441286a41003a0000200441246a2000360200200420013602202004200036021c200441003602182004410036022c200441186a2004412c6a410441db8208410b10ca01024020042d002f044020042d002c450d010b200441186a41db8208410b10601a0b200441186a220010491a200010cb011a200010482100200428021c200428021846044020042d0028044041d8e008410036020041dce00841003a00000b200441306a240020000f0b41db8208410b41998008410e105b000b0a0041ee8d08410d10450b2300200041086a200028020020012002109e0104402003200441e68208410f105b000b0b3802017f017e230041106b22012400200142003703082000200141086a2200410841db8208410b10810120004108108201200141106a24000b1800200010cd011056200010ce01200010cf01200110ae010b170010d00110a1012000490440418986084112103e000b0b2a01017f1058210202402000200110d10110a301103b0d0020002002103b0d00419b86084135103e000b0b13002000419d8d08410d1045220010da0120000b0a0041aa8d08410d10450b1300200041918d08410c1045220010da0120000bd90101047f024010d30122052003280208490d00200328020c220420054f0d00200420032802102206460d002005200220046a2202200520022005491b20011b2205200620052006491b22012004200120044b1b210710980121020340200420074604400240200520064f0440200328020420021090010c010b2000200110d4012204106a220520021090012004200510b4012000200110d5012204106a220520021090012004200510b4010b2003200136020c0520022000200410d40110b501109001200441016a21040c010b0b0b200010d601200310a5010b2b01027e1026220010d70110a201220154044041c89108411a103e000b200020017d4280f52480a741016a0b1a00200041d6900841161045220010da012001200010ac0120000b1a00200041af900841121045220010da012001200010ac0120000b1300200041949008410b1045220010da0120000b0a0041ec9008411710450b1b002000200141ff0171410274418491086a2802001093011091010bbc0301097f230041306b2204240010d3012101200041fb8d0841121045220510da012001200510ac010240200510b6014504402005106a21000c010b200441086a200010d60110ad012000200110d501106a2101200428020820014280a30510c40121090240200010d301220310db01220710b6014504402007106a21010c010b2000200341016b220210dc01106a2000200210dd01106a108d0121082000200210de01106a21062000200210dc01106a2201105345044020062000200210dd01106a2006108f012001108e01108d011a0b10df01106a2101200810530d00200610530d002004411c6a200010d60110ad012000200310d501106a2103200428021c20034280a30510c40121032000200210e001106a2003108f01109701210020082006108f011097012102200710e101106a42808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108f01200241a08d06109301108e011037109601108e012200200120002001108b0141ff01714101461b220110a9010b20011037109601108f0121002005200942808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108e01220010a9010b200441306a240020000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a4104108901200241106a24000b1a002000419a8e0841131045220010da012001200010ac0120000b1a00200041da8e0841141045220010da012001200010ac0120000b1a002000418a8f0841161045220010da012001200010ac0120000b1a00200041c38e0841171045220010da012001200010ac0120000b0a0041ad8e08411610450b1a002000418d8e08410d1045220010da012001200010ac0120000b0a0041ca8508410510450b0a0010df01200010b4010b0a0010e401200010b4010b0a0041c68508410410450b0a0010e101200010b4010bc305020c7f017e230041306b2203240010e701200010cd01416b2108024041e4e0082d000022050440416b41ffffffff0720051b21080c010b41e4e00841013a0000416b10270b4101210402402008107241014604404100210520081007210d200341206a210e034020092107200541106a220c200d4b0d02200e42003703002003420037031820082005200341186a2205411010751a20034100360200410121092004200520031076210a200520031077210f200341186a20031076210b200c2105410021040d000b1036000b4184810841221002000b024002400240024002400240200f50044010562209200010d10110a301103b044020012002492207450d0210d30120014f0d03200220016b220c109201210410342205200b2004101b200a103a200510334280a30510c40110e801106a10e901450d04200010d601220410b6010d05200341186a200410ad01200a2003280218103b450d06200341206a2204200428020022062001200120064b1b360200200341106a200341286a2802002206200220022006491b3602002003200328022422062001200120064b1b360224200341086a2004290200370300200320032902183703000c070b41e085084129103e000b41d08908411d103e000b41ad89084114103e000b41b691084112103e000b41f38808410f103e000b200a103a21041098012106200320023602102003200136020c2003200136020820032006360204200320043602000c010b41c18908410f103e000b200041012003200310d2012002200120071b2102034020012002464504402000200110d5012204106a220720051090012004200710b4012000200110d4012204106a220720051090012004200710b401200141016a21010c010b0b200c10920121001034220120052000101c200b200b2001106d2003200b360224200342003703182003200a3602202009200341186a1052200341306a24000b130010f201106c0440419b8c084112103e000b0b0a0041c19008411510450b100020002001108b0141ff01714102490b1b002000103d45044041cf8b08411e103e000b10eb01200010b1010b0a0041d78f08411410450b8a0101047f230041106b220324002001280204220241046a220420012802084b047f41000520012802002003410036020c28020020022003410c6a4104107f1a200328020c210220012004360204200241187420024180fe03714108747220024108764180fe037120024118767272210241010b21012000200236020420002001360200200341106a24000b2e01027f2001103a21022001103a220341ed8b08410410101a2000200336020420002001360200200020023602080b2701017f230041106b22022400200220003a000f20012002410f6a4101108901200241106a24000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a410810bf01200241106a24000b3a01017f230041106b22032400200341086a20014108200210f401200328020c21012000200328020836020020002001360204200341106a24000b0a0010f201200010ae010b0a0041b78d08411310450b0e002000108a0141ff01714101460b3b01017f230041106b22042400200441086a41002003200120021035200428020c21012000200428020836020020002001360204200441106a24000b1d0002402000109b014504402000103d0d010b41ef8c084112103e000b0b13002000102845044041818d084110103e000b0b130020004195890841061045220010da0120000b0a0041ee8e08411c10450b1f00200141a78f08410b1045220110da012002200110ac012000200110ed010b0a0041b28f08411110450b1f00200141c38f0841141045220110da012002200110ac012000200110ed010b1a00200041eb8f08410e1045220010da012001200010ba0120000b1a00200041f98f0841101045220010da012001200010ba0120000b210020004189900841041045220010da012001200010ba012002200010ac0120000b0a00418d9008410710450b0a00419f9008411010450bf201020a7f017e1029410a106641001063410110632106410210632107410341b88508410e10622100410441a98508410f1062210141054193850841161062410641808508411310622102410741ea8408411610624108105a21034109105a2104200010f501200110f501200210f501200310f601200410f60110c701200010b10110c901200110b10110fa01200210b10110ea0110c601200310a80110c501200410a801103c10e201200610e501200710e301108002421a10b30142e80710381037109601108f01210010e801200010b4011026210a10d701200a200a4280b4caae067d4280f524827d10b301410110f1010b08001029410010660b4002027f017e1029105941011066410041d08608410d1062210110d00110a101210010d001200041016a2200ad220210b301200010d101200110b1012002102a0b2d01027f1029105941021066410010612100410141dd8608410910622101200010cd01200010d101200110b1010b110010294101106641001061410010cc010b110010294101106641001061410110cc010b11001029410110664100106110cf01106b0b2001017f10291059410110664100418d8908410810642100108002200010b2010b1a01017f102910594101106641001063210010e801200010b4010ba30101047f41041066410010612100410141a38908410a106421024102419b890841081064210141034195890841061062210302400240200010d60110b601044010800210a101200120026b4b0d0120002002200110e60110f801106a220110f301450d022000200210db01200110b401200010f701200310b101200010cf01410110ae010f0b41ed89084121103e000b418e8a084114103e000b41a28a08412c103e000ba30101057f230041206b2200240041031066410010612102410141a38908410a106421034102419b8908410810642104024002400240200210d601220110b6014504402000410c6a200110ad0110d301200028021c22014f0d0120012003490d02200028021820044b0d0320022003200410e601200041206a24000f0b41f38a084122103e000b41ce8a084115103e000b41b691084112103e000b41e38a084110103e000b17001029105941011066410041ea84084116106210ea010ba80201087f230041306b220024001029105941021066410010612102410141a38908410a10642103200210cd012000410c6a2205200210d601220610ad01024010d3012204200028021c2201490440200120034d200028021820034b720d01200320044d0d01200241012001200510d201410021051098012107200028021c21042003210103402005200120044b7245044020072002200110d40110b5011090012002200110d50110aa01200120044f2105200120012004496a21010c010b0b1058200028020c103a21022000200736022c2000420037032020002002360228200041206a10520240200320002802184704402000200336021c20062000410c6a10a5010c010b200610aa010b200041306a24000f0b41b88b084117103e000b41b691084112103e000be50302077f017e230041e0006b2200240010294101106641001061210210e7012000411c6a2201200210d601220310ad0110d301200028022c4f0440200241012000200110d201200310aa0102402000280220220510530d00200028021c210610eb0110a301109a01210241958b08410f1045210410442101104421032000200536023c20002006360238200042003703302003200041306a1054200020023602402000427f3703382000200136023420002004360230200010980122053602480240024002400240200310720e020200010b200041d0006a2003109901027f2000290350500440200041086a200420012000280258200028025c107d200028020c210120002802080c010b1057200041106a200420012002200041d0006a107b20002802142101210220002802100b210410980121050c010b10572102200020042001200041406b2003106f20002903382107200028020421012000280200210410980121052007427f520d010b102421070b200720022005200420011055210210254100210420021007210320004100360238200020023602302000200341027622013602340340200120044d0d01200041306a41db8208410b10c3011a20002802342101200028023821040c000b000b200041e0006a24000f0b41a48b084114103e000b110010291059410110664100106310e2010b910101037f1029105941011066410010634280c8afa025103842808090bbbad6adf00d109401210041a69108411010452102103f10a30120024167102b4167103a200010334280a30510c401108f0142808090bbbad6adf00d10940142808090bbbad6adf00d109401103710960141a08d06109301413410930142a00b1094012000108f01108e01210010f801200010b4010b2d01027f1029105941021066410010612100410110632101200010cd01200010d30141016a10db01200110b4010b110010291059410110664100106310e5010b110010291059410110664100106310e3010b8f0202037f017e230041206b2200240010291068410010672000410036020c2000410c6a2102104421010340200228020041e0e0082802004804402001200241828908410b105c105d0c010b0b200028020c1065200110072102200041003602142000200241027622023602102000200136020c4100210102400340200120024904402000410c6a41818c08410810c30121012000420037031820011007220241094f0d022000200041186a200210f00120014100200028020022012000280204220210751a2001200210820122034280808080105a0d022003a7220110cd01200110d9011a20002802102102200028021421010c010b0b200041206a24000f0b41818c08410841998008410e105b000b1a01017f10294101106641001061220010cd01200010d90110160bdb14020d7f037e230041a0016b220024001029106841031067410010612105410110632108027f230041206b2201240002400240024041021012450440410321020c010b4102105a2203100721022001411c6a41003a0000200141186a200236020020012003360214200120023602102001410036020c41032102024002402001410c6a41af8708410a106041ff01710e020100040b2001410c6a41af8708410a1060220241ff017141034f0d030b2001280210200128020c470d0120012d001c450d0041d8e008410036020041dce00841003a00000b200141206a240020020c020b41af8708410a41998008410e105b000b41af8708410a41a78008410d105b000b210a20004103360234200041ec006a2102410021030240200041346a2206220128020041e0e0082802004e0440410121030c010b2001419987084116105c21042001419987084116105e105a2201100741c000460d0041998708411641f18b084110105b000b20022001360208200220043602042002200336020020002802341065200028026c2107200028027021032000280274210910e701200510cd0110d30121022006200510d60110ad0102400240024002400240024002400240200028023c20024d0440200220002802444f0d01200041c8006a2005200210f90120001056220636025410ff012201200610b80110a201220d500440200110b70110a201210d2001200610b801200d42017c220d10b3012001200d10b90120061040200d500d03200110b701200d10b3010b2000280250200d10be010d07200041e8006a22042005200210fb0102402000280270200d10be010d00200510cf01106c450d0420070d05411e1044220110ac01200141e29108411e10101a2005200110da012002200110ac012001200610041a200020031007220741187420074180fe03714108747220074108764180fe03712007411876727236026820012004410410101a2001200310041a200510f70110a30120012009102c1a20031007410b4f0d062005200d2005200d10fd01220710a101220110fe01200041286a1041200020002d002c3a006c2000200028022836026820032004104d2002200410a601200028026820002d006c10a7012007200141016a10b20120014114490d002005200d2005200d10fc01220110a101220310fe0110aa012001200341016a10b2010b200541012000200041346a10d201200041c8006a200d10bd01200510d90121072005200210d501106a2109102d210e103f10a401450d06419c9108410a10452201200610041a103f10a30120014167102b4167103a2201107e450440200110072103200041f8006a41003a0000200041f4006a2003360200200020013602702000200336026c2000410036026820004188016a2201200041e8006a220410840102402000280288010d00200028028c0110342203102e1a20004200370388012004200141081085010d0020014108108201210f200120041084012000280288010d00200028028c01104a2101200028026c2000280268470d0020002d0078044041d8e008410036020041dce00841003a00000b0240200e200f510d00200110f301450d00200110332104200e200f580d00200e200f7d109501210b1034220c2004200b101c20032003200c10180b20002001360274200020033602702000200e3703680c0a0b20002d0078044041d8e008410036020041dce00841003a00000b41cb8008412a103e000b200041e8006a200e10c1010c080b41c587084117103e000b41dc8708412e103e000b41d98308410b1002000b41cf85084111103e000b41998808411f103e000b41ea8608410f103e000b200041e8006a200e10c1010c010b418a8808410f103e000b024020002802702201106e41ff017141014d044010980121040c010b103422042001102f0b027f2007105304401098010c010b20092004108f012007108e010b21032000280234103a21010240024002400240027f0240200a41ff0171410346044010e401106a21062005200210d401106a2003108b0141ff017141ff01470d03200810530d0141ce88084113103e000b2005200210d4012207106a220910f301450d032009200320032009108b0141ff01714101461b22091033200a10d8012203200810e901450d042007106a220820082003106d2007200810b4012005200210dc012207106a220820041090012007200810b4012004200a10d80121042005200210de012207106a220820041090012007200810b4012001103a200942901c10c40121042005200210e0012202106a220720041090012002200710b4014207210e0240024002400240200a41ff017141016b0e020100020b420e210e0b200020033602644200210d20004200370358200020013602602006103a2102200310530d01102d210d10fa0110a301109a01210141b48008410a1045210610442203200d200e7c10800120032002107c10442202200041d8006a1054200020013602782000427f3703702000200336026c2000200636026820001098012204360280010240024002400240200210720e020200010b20004188016a2002109901027f200029038801500440200041186a20062003200028029001200028029401107d20002802182106200028021c0c010b1057200041206a20062003200120004188016a107b20002802202106210120002802240b210310980121040c010b10572101200041106a20062003200041f8006a2002106f2000290370210d20002802142103200028021021061098012104200d427f520d010b1024210d0b200d2001200420062003105521011025200110072102200041003602900120002001360288012000200241027636028c0120004188016a41db8208410b10c301220210072101200041f8006a41003a0000200041f4006a2001360200200020023602702000200136026c20004100360268200041e8006a10492201100741044604402000410036029c01200141002000419c016a2202410410751a41feffffff0720012002410441d083084104109c011b21010b200041e8006a220210cb01210d200210482103200028026c2000280268470d0720002d0078044041d8e008410036020041dce00841003a00000b200141feffffff07470d0141c38308410d1002000b200020033602644200210d20004200370358200020013602602006200041d8006a10520b200310330c010b2005200210dd012207106a220820041090012007200810b401200120062003108f0110910142901c10c40121042005200210e0012201106a220320041090012001200310b401200041e8006a22042005200241016a10fb012004200d10bd011098010b1044220441de8c0841111045105d2004200041d4006a107120051044103a220210da012002104e0240200a41ff0171220541034704404101200210ee012005410274419091086a2802002d0000200210ee01200420021030200041086a1041200020002d000c3a006c200020002802083602682001200041e8006a2201104d200d200110ef0120032001104b200028026820002d006c10460c010b4100200210ee012004200210300b200041a0016a24000f0b41b888084116103e000b41e188084112103e000b41f38808410f103e000b41db8208410b41998008410e105b000bd20101087f230041206b22002400102941021066410010612101410141f9860841041064210210ff01210410442103200041146a2001200210fb01200028021810a101210520002802142106410121010340200120054b45044020042006200110ab0110a20110b901220710a4010440200710a30121020b20032002107c200141016a21010c010b0b2000200336021020002003100736021c200041003602182000200041106a3602140340200041086a200041146a10ec0120002802080440200028020c10061a0c010b0b200041206a24000b6402047f017e230041106b22002400102941031066410041b98708410c10622101410110612102410241f9860841041064210310ff01200110bb01220450047e420005200041046a2002200310f901200028020c200410be01ad0b1017200041106a24000b950101057f230041206b2200240010291068410110674100106121032000410136020c02402000410c6a2204220128020041e0e0082802004e0440410121020c010b200141fd86084110105e41fd86084110105f21010b20002001360204200020023602002000280204210120002802002102200028020c10652004200310d60110ad01200320022001200410d201200041206a24000b850101027f230041306b22002400102941011066200041146a4100106110d60110ad01200041086a1041200020002d000c3a002c200020002802083602282000280214200041286a2201104d20002802182001104b200028021c200110a6012000280220200110a6012000280224200110a601200028022820002d002c1046200041306a24000b1b0010294102106641001061410141f986084104106410d50110690b1b0010294102106641001061410141f986084104106410d40110690b990202077f017e230041206b22002400102941021066410010612102410141e68608410410622101200210cd01104421050240024010ff01200110bb012207500d002002200710fc0110a10121062002200710fd0110a10121010340200120064d0d012000410c6a220320022007200141016b220110fe0110502003108601200310870121032000280210200028020c470d0220002d001c044041d8e008410036020041dce00841003a00000b1044103a2204104f2003200410ac0120052004105d0c000b000b20002005360208200020051007360214200041003602102000200041086a36020c034020002000410c6a10ec0120002802000440200028020410061a0c010b0b200041206a24000f0b41998008410e108801000b2d01027f102941021066410010612100410141808408410a106221011056200010ce01200010f701200110b1010b0e0010294100106610d301ad102a0b830102027f017e230041106b22002400102941011066410041f98608410410642201450440418d8708410c103e000b10d70110a20120001041200020002d00043a000c200020002802003602082001ad4280f5247e7c22024280f5247d200041086a220110ef01200242017d200110ef01200028020820002d000c1046200041106a24000b100010294100106610d70110a201102a0b16001029105941011066410041c18008410a1062103c0b1000102941001066103f10a30110061a0b0f001029105941001066410110f1010b0f001029105941001066410010f1010b0d0010294100106610f201106b0b02000b0b0041b49208410e1002000b0bbe120300418080080ba303726563697069656e742061646472657373206e6f7420736574696e70757420746f6f206c6f6e67696e76616c69642076616c75656c6f636b546f6b656e7300010273635f616464726573734661696c6564206465636f64696e6720726573756c742066726f6d20656e6572677920666163746f7279496e76616c69642061646472657373696e636f7272656374206e756d626572206f662045534454207472616e7366657273617267756d656e74206465636f6465206572726f722028293a20746f6f2066657720617267756d656e7473746f6f206d616e7920617267756d656e747377726f6e67206e756d626572206f6620617267756d656e747363616e6e6f74207375627472616374206265636175736520726573756c7420776f756c64206265206e656761746976654d756c7469455344544e46545472616e73666572455344544e46545472616e73666572455344545472616e7366657273796e6320726573756c74696e70757420746f6f2073686f72746361737420746f20693634206572726f724d616e6167656456656320696e646578206f7574206f662072616e67650041c383080bff0e4553445420657870656374656445474c442e6974656d4944204f766572666c6f772e696e64657873746f72616765206465636f6465206572726f723a206e65775f7369676e657270726f6a6563745f6964496e76616c6964205745474c442d55534443207061697220616464726573732066726f6d20726f75746572496e76616c696420544f4b454e2d55534443207061697220616464726573732066726f6d20726f75746572666565735f636f6c6c6563746f725f6164647265737373696d706c655f6c6f636b5f61646472657373656e657267795f666163746f72795f61646472657373736166655f70726963655f70616972726f757465725f6164647265737362657461616c70686150726f6a656374206973207061757365644f6e6c792070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e74496e76616c69642070726f6a6563742049444f6e6c79207363206f776e6572206f722070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e7470726f6a6563745f6f776e65726e65775f6f776e6572757365724c656e67746820746f6f206c6f6e677765656b6f70745f6d61785f6e725f7765656b73496e76616c6964207765656b6f70745f6e6f74655f616e645f7369676e6174757265636c61696d5f74797065757365725f6164647265737350726f6a656374206e6f742073746172746564207965744d6179206e6f7420636c61696d207265776172647320666f7220746869732070726f6a65637420616e796d6f7265416c726561647920636c61696d65644d7573742070726f76696465206e6f746520616e64207369676e617475726543616e20636c61696d2066756c6c2072657761726473496e76616c6964206d696e20726577617264734e6f7420656e6f7567682072657761726473546f6f20666577207265776172647370726f6a6563745f6964736e725f7765656b737369676e6572656e645f7765656b73746172745f7765656b496e76616c6964207765656b206e756d62657273496e76616c6964207061796d656e744f6e6c792066756e6769626c6520746f6b656e73206163636570746564496e697469616c207265776172647320616c7265616479206465706f7369746564546f6f2066657720726577617264207765656b734669727374207765656b207265776172647320646f6c6c61722070657220656e65726779206e6f742073657450726f6a65637420616c726561647920656e646564496e76616c696420656e64207765656b4d757374206465706f73697420696e697469616c20726577617264732066697273746465706f7369745377617046656573456e64207765656b206e6f74207265616368656443616e6e6f7420776974686472617720616e796d6f7265496e76616c6964206665657320636f6c6c6563746f7220616464726573732e6c656e626164206172726179206c656e6774687661722061726773696e707574206f7574206f662072616e6765436f6e747261637420697320706175736564676574536166655072696365427954696d657374616d704f6666736574656e65726779466163746f727941646472657373636c61696d526577617264734576656e74496e76616c69642053432061646472657373496e76616c696420746f6b656e20494470726f6a6563744f776e657270726f6a6563744163746976656c61737450726f6a656374496470617573655f6d6f64756c653a70617573656475736463546f6b656e4964726f75746572416464726573737765676c64546f6b656e496473616665507269636550616972746f74616c456e65726779466f725765656b726567526577446f6c6c617273726577446f6c6c617273506572456e657267796d696e526577446f6c6c617273506572456e65726779696e74456e65726779466f72526577436c61696d657273726567456e65726779526577436c61696d65727366697273745765656b526577446f6c6c617273506572456e65726779726567456e657267794578656d70436c61696d6572736765745061697275736572436c61696d656473696d706c654c6f636b416464726573736578656d707465645061727469636970616e747366656573436f6c6c6563746f724164647265737366697273744e6f7465496e64657863757272656e744e6f7465496e6465786e6f74657573657249647372657761726473496e666f6d696e52657761726473506572696f6472657761726473546f74616c416d6f756e746d696e5765656b6c795265776172647356616c75657265776172647352656d61696e696e67416d6f756e7466697273745765656b537461727454696d657374616d7000a861000050c30000a08601003e0002003f0002004000020075736572456e65726779626173654173736574546f6b656e4964496e76616c6964207374617274207765656b5765656b2030206973206e6f7420612076616c6964207765656b7845786368616e676547726f77746856315461736b436f6d706c65746564456e64706f696e742063616e206f6e6c792062652063616c6c6564206279206f776e6572616464724964616464726c617374496470616e6963206f636375727265640041c492080b049cffffff" + "code": "0061736d0100000001a8011b60000060017f017f60027f7f0060027f7f017f6000017f60017f0060037f7f7f0060037f7f7f017f60047f7f7f7f0060027f7e0060057f7f7f7f7f0060047f7f7f7f017f60027f7e017f60017f017e6000017e60027f7f017e60017e0060017e017f60027e7f0060057f7f7e7f7f017f60067e7f7f7f7f7f017f60057e7f7f7f7f017f60047f7f7f7e0060047f7e7f7f0060037f7f7e017f60047f7f7f7e017f60037f7e7f017f02bb093303656e760e626967496e74536574496e743634000903656e7609626967496e74416464000603656e760b7369676e616c4572726f72000203656e760a6d4275666665724e6577000403656e760d6d427566666572417070656e64000303656e76096d4275666665724571000303656e760d6d42756666657246696e697368000103656e76106d4275666665724765744c656e677468000103656e76226d616e616765644d756c74695472616e73666572455344544e465445786563757465001303656e761b6d616e61676564457865637574654f6e44657374436f6e74657874001403656e760d6d616e6167656443616c6c6572000503656e76106d616e61676564534341646472657373000503656e76136d616e616765644f776e657241646472657373000503656e760f6d4275666665724765744279746573000303656e760f6973536d617274436f6e7472616374000103656e76126d427566666572476574417267756d656e74000303656e76126d427566666572417070656e644279746573000703656e76126d616e616765645369676e616c4572726f72000503656e7611676574417267756d656e744c656e677468000103656e761b736d616c6c496e74476574556e7369676e6564417267756d656e74000d03656e7619626967496e74476574556e7369676e6564417267756d656e74000203656e760f6765744e756d417267756d656e7473000403656e7614626967496e7446696e697368556e7369676e6564000503656e7614736d616c6c496e7446696e6973685369676e6564001003656e7609626967496e74537562000603656e7609626967496e74436d70000303656e760f6d4275666665725365744279746573000703656e760a626967496e7454446976000603656e7609626967496e744d756c000603656e76196d42756666657246726f6d426967496e74556e7369676e6564000303656e76176d427566666572546f426967496e74556e7369676e6564000303656e7609626967496e74506f77000603656e760a626967496e7453717274000203656e76146d427566666572436f707942797465536c696365000b03656e76126d42756666657253746f726167654c6f6164000303656e76136d42756666657253746f7261676553746f7265000303656e760a6765744761734c656674000e03656e760f636c65616e52657475726e44617461000003656e7611676574426c6f636b54696d657374616d70000e03656e761c6d616e616765644765744d756c74694553445443616c6c56616c7565000503656e761776616c6964617465546f6b656e4964656e746966696572000103656e760e636865636b4e6f5061796d656e74000003656e7616736d616c6c496e7446696e697368556e7369676e6564001003656e761d6d42756666657253746f726167654c6f616446726f6d41646472657373000603656e76146d616e6167656456657269667945643235353139000703656e760d676574426c6f636b45706f6368000e03656e76156d427566666572546f426967496e745369676e6564000303656e7609626967496e74416273000203656e760f6d616e6167656457726974654c6f67000203656e760a626967496e745369676e000103656e76136d42756666657247657442797465536c696365000b03f801f60101040a0004110901030501020402050208040302030101010201020202020102010215040404000108070207070701070107050505000501050106010a060201090a0b030f0816080a020a010b090a0f08020701010206010302030303020101030c110101040201010b080b0605010d010102020602020503020202170602020902010101030c120f0c090c06060907071804040419040a0d0205020104010804030301040301020303030304030405050405060004030504020202120605040108050501040604060c0c1a04040000000000000000000000000000000000000000000000000000000000000000000000000000000005030100030616037f01418080080b7f004185e1080b7f004190e1080b07dc062a066d656d6f7279020004696e697400810207757067726164650082020a61646450726f6a6563740083020f73657450726f6a6563744f776e65720084020c706175736550726f6a6563740085020e756e706175736550726f6a6563740086020f697350726f6a656374416374697665008702137365744d696e52657761726473506572696f64008802187365744d696e5765656b6c795265776172647356616c7565008902156465706f736974496e697469616c52657761726473008a02186465706f7369744164646974696f6e616c52657761726473008b021773657446656573436f6c6c6563746f7241646472657373008c02146f776e6572576974686472617752657761726473008d020d66696e69736850726f6772616d008e021c7365744d696e526577617264446f6c6c617273506572456e65726779008f0215736574496e697469616c5264706546726f6d417072009002217365744e6578745765656b526577617264446f6c6c617273506572456e6572677900910208736574416c70686100920207736574426574610093021c736574546f74616c456e65726779466f7243757272656e745765656b0094021c676574546f74616c456e65726779466f7243757272656e745765656b0095020c636c61696d52657761726473009602176765744578656d707465645061727469636970616e74730097020e67657455736572436c61696d65640098020d757064617465526577617264730099020e67657452657761726473496e666f009a021567657452657761726473546f74616c416d6f756e74009b02196765745265776172647352656d61696e696e67416d6f756e74009c020f6765744e6f746573486973746f7279009d020c6368616e67655369676e6572009e020e67657443757272656e745765656b009f021e67657454696d657374616d70735374617274416e64456e644f665765656b00a0021a67657446697273745765656b537461727454696d657374616d7000a10217736574456e65726779466163746f72794164647265737300a20217676574456e65726779466163746f72794164647265737300a30205706175736500a40207756e706175736500a50208697350617573656400a6020863616c6c4261636b00a7020a5f5f646174615f656e6403010b5f5f686561705f6261736503020ae18001f6011601017f1034220142001000200120012000100120010b1901017f41c4920841c4920828020041016b220036020020000b2e000240200120024d0440200220044d0d011036000b1036000b2000200220016b3602042000200120036a3602000b060010a802000b0e01017f10342200420a100020000b0e01017f103422012000103920010b19002001420053044041f5820841111002000b2000200110000b0f01017f10032201200010041a20010b0b0020002001100541004a0b19002000103d45044041f58008410f103e000b103f200010400b1400200041e5e008100d1a41e5e008100e41004a0b0900200020011002000b0a0041ca8c08411410450b09002000200110a8010b6c01027f230041106b220124002000027f41dce0082d0000220245044041dce00841013a000041d8e0084100360200200141086a410010422001280208200128020c41b492084100104310440c010b41b49208410010450b360200200020024101733a0004200141106a24000b3e01017f230041106b22022400200241086a41c892084190ce00200110f401200228020c21012000200228020836020020002001360204200241106a24000bb50201067f200120034604402001220341104f04402000410020006b41037122046a210520040440200221010340200020012d00003a0000200141016a2101200041016a22002005490d000b0b2005200320046b2203417c7122066a21000240200220046a22044103710440200641004c0d012004410374220141187121072004417c71220841046a2102410020016b4118712109200828020021010340200520012007762002280200220120097472360200200241046a2102200541046a22052000490d000b0c010b200641004c0d0020042102034020052002280200360200200241046a2102200541046a22052000490d000b0b20034103712103200420066a21020b20030440200020036a21010340200020022d00003a0000200241016a2102200041016a22002001490d000b0b0f0b1036000b1301017f1034220041b492084100101a1a20000b1101017f1034220220002001101a1a20020b0b0020002001104710061a0b4901017f230041106b22022400200220013a000c20022000360208200241086a10a001200228020820022d000c044041d8e008410036020041dce00841003a00000b200241106a24000b080020001049104a0b7301047f230041106b220124002001410036020c20002001410c6a2202410441db8208410b108101200120002802082000280200220320024104108201a722021083012001280200410147044041db8208410b41e68208410f105b000b20012802042000200220036a360200200141106a24000b0d00200010342200101e1a20000b0a002000104c2001104d0b0f01017f103422012000101d1a20010bb40101037f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410bf010240024020012d000404402000100722044190ce0041d8e00828020022036b4b0d0120022003200320046a220110c0012000410020022802002002280204107f1a41d8e00820013602000c020b20012802002000108c010c010b200110a00120012802002000108c010b200241106a24000b0a002000104c2001104f0b5101027f230041106b22022400200220001007220341187420034180fe03714108747220034108764180fe03712003411876727236020c20012002410c6a410410890120012000108c01200241106a24000b3701017f20011051220210072101200041106a41003a00002000410c6a20013602002000200236020820002001360204200041003602000b0d0020001034220010221a20000b6902057f017e200128020c220410534504402001290300210710442105104421062001280208230041106b2201240010442103103a210220012004103336020c20012007370300200120023602082003200110542000200342002005200610081a200141106a24000b0b0c002000108a0141ff0171450bd20102027f017e230041106b2203240020032001280208220241187420024180fe03714108747220024108764180fe0371200241187672723602002003200128020c220241187420024180fe03714108747220024108764180fe03712002411876727236020c20032001290300220442388620044280fe0383422886842004428080fc0783421886200442808080f80f834208868484200442088842808080f80f832004421888428080fc07838420044228884280fe0383200442388884848437020420002003411010101a200341106a24000b1500200020012002200320041034220110091a20010b0c01017f10342200100a20000b0c01017f10342200100b20000b0c01017f10342200100c20000b150010581056103b04400f0b4180920841241002000b0d00200010342200100f1a20000b2e01017f41a681084117104522042000200110101a200441bd8108410310101a20042002200310101a20041011000b0c00200020012002105e105a0b4601017f230041106b220224002002200141187420014180fe03714108747220014108764180fe03712001411876727236020c20002002410c6a410410101a200241106a24000b2f01017f2000280200220341e0e0082802004e04402001200241c081084111105b000b2000200341016a36020020030b2501017e20001013220342ffffffff0f5804402003a70f0b2001200241998008410e105b000b3001017f230041106b22032400200341003a000f20002003410f6a41012001200210810120032d000f200341106a24000b2601017e2000101322014280808080105a0440418a8408410a41998008410e105b000b2001a70b1f002000105a2200100741204704402001200241f18b084110105b000b20000b0c00200010342200101420000b0a00200020012002105f0b1900200041e0e0082802004e04400f0b41d1810841121002000b1400101520004604400f0b41e3810841191002000b1900200041e0e0082802004c04400f0b41c0810841111002000b0b0041e0e00810153602000b08002000106a10160b080020001051104a0b09002000106cad10170b3001017e027f0240200010a2012201420158044041002001a741016b0d021a0c010b41898c084112108801000b41010b0b1f0020002001200210182000106e41ff017104400f0b41fc810841301002000b1500410241012000103122001b4100200041004e1b0b9f0202087f017e230041406a22052400200541206a41ac820841141070200528022021082005280224220620031071200410722103104422092003ad107320062009105d20041007210a200541306a210b410021030340200a200341106a2209490440200520082006200120021074200528020421012000200528020036020020002001360204200541406b240005200b42003703002005420037032820042003200541286a2207411010751a2005410036023c20072005413c6a220c107621032007200c1077210d200541286a2005413c6a10762107200541186a2008200620031078200541106a2005280218200528021c200d1079200541086a200528021020052802142007107a200528020c210620052802082108200921030c010b0b0b1800200120021045210120001044360204200020013602000b100010441a20002001280200103a105d0b0900200010074104760b3801017f230041106b2202240020024200370308200220014100200241086a10af01200020022802002002280204101a1a200241106a24000b900101037f230041106b2205240002402003107e0d0020022003107c200410072106410021030340200341046a220720064b0d012005410036020c200420032005410c6a4104107f1a2002200528020c220341187420034180fe03714108747220034108764180fe037120034118767272107c200721030c000b000b2000200236020420002001360200200541106a24000b0f00200020012003200210324100470b7201017f230041106b220224002002410036020c2002200020012802002200200041046a2200109d012002410c6a410420022802002002280204104320012000360200200228020c2100200241106a2400200041187420004180fe03714108747220004108764180fe0371200041187672720ba60102017e017f230041106b22032400200342003703082003200020012802002200200041086a2200109d01200341086a41082003280200200328020410432001200036020020032903082102200341106a2400200242388620024280fe0383422886842002428080fc0783421886200242808080f80f834208868484200242088842808080f80f832002421888428080fc07838420024228884280fe038320024238888484840b160020022003107c20002002360204200020013602000b17002002200310800120002002360204200020013602000b1b0010441a20022003104c105d20002002360204200020013602000b9c0101027f230041306b22052400200541286a41c08208410f1070200541206a2005280228200528022c20042802081078200541186a2005280220200528022420042903001079200541106a2005280218200528021c200428020c107a20052802102104200528021422062003107c200541086a20042006200120021074200528020c21012000200528020836020020002001360204200541306a24000b0d0010441a20002001103a105d0b7101017f230041206b22052400200541186a41cf8208410c1070200541106a2005280218200528021c20031078200541086a200528021020052802142004107a20052005280208200528020c200120021074200528020421012000200528020036020020002001360204200541206a24000b070020001007450b0c00200020012002200310750b1201017f104422022001107320002002105d0b1c002000200120022003200410ca012000200028020020026a3602000b3401017e02402001450d0003402001450d01200141016b210120003100002002420886842102200041016a21000c000b000b20020b1f0020012002200310032201102121022000200136020420002002453602000b930101037f230041106b220224002002410036020c024020012002410c6a220341041085012204450440200220012802082001280200220420034104108201a722031083012000027f20022802004101460440200020022802043602042001200320046a36020041000c010b2000410f36020441e682080b3602000c010b2000410f360204200020043602000b200241106a24000b3201017f41e682082103200041086a200028020020012002109e01047f41e68208052000200028020020026a36020041000b0b5501047f230041106b2201240020001087012102200141086a20002802082000280200220320021083012001280208410147044041e68208410f108801000b200128020c2000200220036a360200200141106a24000b5602017f017e230041106b220124002001410036020c200041086a20002802002001410c6a4104109e01044041e68208410f108801000b2000200028020041046a3602002001410c6a4104108201200141106a2400a70b1a01017f41ea83084116104522022000200110101a20021011000b0b0020002001200210101a0b09002000106e41016b0b1500417f200020011019220041004720004100481b0b09002000200110041a0b0c00200020002001100120000b0c00200020002001101b20000b0c00200020002001101c20000b0a0020002000200110010b11002000200041a08d06109201101b20000b0b0041722000ad100041720b0f00200020002001109201101c20000b0f00200020002001109501101c20000b0a0041722000103941720b1301017f1034220120004106109201101f20010b0e01017f103422012000102020010b0e01017f103422004200100020000b810102047f017e230041206b22022400200241106a42003703002002420037030820014100200241086a22034110107f2002410036021c20032002411c6a2204107621052003200410772106200241086a2002411c6a10762103044041868308411d1002000b2000200336020c2000200536020820002006370300200241206a24000b1900200041feffffff074604404180800841191002000b20000b5f01027f230041206b22012400200010074120460440200141186a4200370300200141106a4200370300200141086a420037030020014200370300200041002001412010751a2001412041a383084120109c0121020b200141206a240020020b5301027f2001200346047f4100210302402001450d00034020002d0000220420022d00002205460440200041016a2100200241016a2102200141016b22010d010c020b0b200420056b21030b20030541010b450b2f000240200220034d0440200341104b0d012000200320026b3602042000200120026a3602000f0b1036000b1036000bb30101037f230041106b22042400027f024020002d000845044020002802002205100722064190ce004b0d0141dce0082d00000d0141d8e008200636020041dce00841013a0000200441086a20061042200541002004280208200428020c107f1a200041013a00080b4101200120036a220041d8e0082802004b0d011a200420012000109f012002200320042802002004280204104341000c010b200041003a00082005200120022003107f0b200441106a24000b32000240200120024d044020024190ce004d0d011036000b1036000b2000200220016b3602042000200141c892086a3602000b5801027f230041106b2201240020002d0004200041003a00040440200141086a410041d8e008280200109f0120002802002001280208200128020c10101a41d8e008410036020041dce00841003a00000b200141106a24000b2201017e200010a20122014280808080105a044041998008410e108801000b2001a70b5f02027f017e230041106b22012400200142003703082000105122001007220241094f044041998008410e108801000b2001200141086a200210f00120004100200128020022002001280204220210751a20002002108201200141106a24000b1c002000105122001007412047044041f18b084110108801000b20000b0d002000416710221a416710070b7001027f230041106b2202240020021041200220022d00043a000c200220022802003602082001280200200241086a2203104d20012802042003104b2001280208200310a601200128020c200310a6012001280210200310a6012000200228020820022d000c10a701200241106a24000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a410410bf01200241106a24000b0d00200020012002104710231a0b09002000200110231a0b0b0020002001104c10231a0b1400416c41b492084100101a1a2000416c10231a0b1a002000103a220041d48308410510101a2001200010ac0120000b09002000200110da010ba60101057f230041206b220224002002410c6a220320011050200310860121012002410c6a108601104a2104200310870121032002410c6a10870121052002410c6a10870121062002280210200228020c4604402002411c6a2d0000044041d8e008410036020041dce00841003a00000b200020063602102000200536020c200020033602082000200436020420002001360200200241206a24000f0b41998008410e108801000b3901017f230041106b220224002002420037030820022001ad4101200241086a10af0120002002280200200228020410b001200241106a24000b900202047f017e2003200142388620014280fe0383422886842001428080fc0783421886200142808080f80f834208868484200142088842808080f80f832001421888428080fc0783842001423888220820014228884280fe03838484843700000240200150044041b4920821030c010b200204402001427f510440200341076a2103410121040c020b2008a7c022054107752106200541004821050b200641ff0171210603400240024020044108470440200320046a2d000022072006460d02200245200741077620054672450440200441016b220441094f0d020b200320046a2103410820046b21040c040b1036000b10a802000b200441016a21040c000b000b20002004360204200020033602000b0d00200020012002104510231a0b08002000200110400b0a0020002001ad10b3010b3801017f230041106b2202240020024200370308200220014100200241086a10af0120002002280200200228020410b001200241106a24000b09002000200110a9010b0d01017f2000106a200010aa010b0800200010a401450b13002000103a220041ae9208410610101a20000b1a002000103a220041aa9208410410101a20002001108c0120000b1a002000103a220041a49208410610101a2001200010ba0120000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a4108108901200241106a24000b0c002000200110b80110a2010b1a002000103a220041e48308410610101a2001200010ba0120000b5001037f20002802082203200110be014504402000280204220210a10121042000280200200441016a220010ab01200110b30120022000ad10b301200210a10121002003200110bc012000ad10b3010b0b0f002000200110bc0110a1014100470b800101027f230041106b220324000240024020002d000404404190ce0041d8e00828020022046b2002490d01200341086a2004200220046a220010c0012003280208200328020c20012002104341d8e00820003602000c020b20002802002001200210101a0c010b200010a00120002802002001200210101a0b200341106a24000b3f01017f230041106b22032400200341086a2001200241c892084190ce001035200328020c21012000200328020836020020002001360204200341106a24000b2201017f1034220242001000200010980136020c20002001370300200020023602080b910101037f230041106b220324002000109a01210441a08f08410710452105104422002001107c20002002107c1098012101102420042001200520001055210010252000100721012003410036020c2003200036020420032001410276360208200341046a41db8208410b10c301103a22001007412047044041db8208410b41f18b084110105b000b200341106a240020000b7b01027f230041106b22032400200028020821042003410036020c200028020020044102742003410c6a4104107f450440200328020c21012000200441016a360208200141187420014180fe03714108747220014108764180fe037120014118767272103a200341106a24000f0b2001200241c081084111105b000b8f0101057f2000103a210310c5011051210410c6011051210510c70110a3012206103a2003103a2004103a10c2012207109b0145044020062004200510c2012203109b01044041948408412b103e000b200310c5011051200720002001200210c801200210c8010f0b20062003200510c2012203109b01450440200320002001200210c8010f0b41bf8408412b103e000b0a0041e28d08410c10450b0a0041ca8d08410b10450b0a0041d58d08410d10450bd20201047f230041306b2204240010c90110a301109a01210641ad8c08411d10452107104422052000107c2005200310800120011044103a2200104f4200200010ba0120022000104e20052000105d109801210010242006200020072005105521001025200010072101200441003602142004200036020c200420014102763602102004410c6a41db8208410b10c301220110072100200441286a41003a0000200441246a2000360200200420013602202004200036021c200441003602182004410036022c200441186a2004412c6a410441db8208410b10ca01024020042d002f044020042d002c450d010b200441186a41db8208410b10601a0b200441186a220010491a200010cb011a200010482100200428021c200428021846044020042d0028044041d8e008410036020041dce00841003a00000b200441306a240020000f0b41db8208410b41998008410e105b000b0a0041ee8d08410d10450b2300200041086a200028020020012002109e0104402003200441e68208410f105b000b0b3802017f017e230041106b22012400200142003703082000200141086a2200410841db8208410b10810120004108108201200141106a24000b1800200010cd011056200010ce01200010cf01200110ae010b170010d00110a1012000490440418986084112103e000b0b2a01017f1058210202402000200110d10110a301103b0d0020002002103b0d00419b86084135103e000b0b13002000419d8d08410d1045220010da0120000b0a0041aa8d08410d10450b1300200041918d08410c1045220010da0120000bd90101047f024010d30122052003280208490d00200328020c220420054f0d00200420032802102206460d002005200220046a2202200520022005491b20011b2205200620052006491b22012004200120044b1b210710980121020340200420074604400240200520064f0440200328020420021090010c010b2000200110d4012204106a220520021090012004200510b4012000200110d5012204106a220520021090012004200510b4010b2003200136020c0520022000200410d40110b501109001200441016a21040c010b0b0b200010d601200310a5010b2b01027e1026220010d70110a201220154044041c89108411a103e000b200020017d4280f52480a741016a0b1a00200041d6900841161045220010da012001200010ac0120000b1a00200041af900841121045220010da012001200010ac0120000b1300200041949008410b1045220010da0120000b0a0041ec9008411710450b1b002000200141ff0171410274418491086a2802001093011091010bbc0301097f230041306b2204240010d3012101200041fb8d0841121045220510da012001200510ac010240200510b6014504402005106a21000c010b200441086a200010d60110ad012000200110d501106a2101200428020820014280a30510c40121090240200010d301220310db01220710b6014504402007106a21010c010b2000200341016b220210dc01106a2000200210dd01106a108d0121082000200210de01106a21062000200210dc01106a2201105345044020062000200210dd01106a2006108f012001108e01108d011a0b10df01106a2101200810530d00200610530d002004411c6a200010d60110ad012000200310d501106a2103200428021c20034280a30510c40121032000200210e001106a2003108f01109701210020082006108f011097012102200710e101106a42808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108f01200241a08d06109301108e011037109601108e012200200120002001108b0141ff01714101461b220110a9010b20011037109601108f0121002005200942808090bbbad6adf00d10940142808090bbbad6adf00d1094012000108e01220010a9010b200441306a240020000b4601017f230041106b220224002002200041187420004180fe03714108747220004108764180fe03712000411876727236020c20012002410c6a4104108901200241106a24000b1a002000419a8e0841131045220010da012001200010ac0120000b1a00200041da8e0841141045220010da012001200010ac0120000b1a002000418a8f0841161045220010da012001200010ac0120000b1a00200041c38e0841171045220010da012001200010ac0120000b0a0041ad8e08411610450b1a002000418d8e08410d1045220010da012001200010ac0120000b0a0041ca8508410510450b0a0010df01200010b4010b0a0010e401200010b4010b0a0041c68508410410450b0a0010e101200010b4010bc305020c7f017e230041306b2203240010e701200010cd01416b2108024041e4e0082d000022050440416b41ffffffff0720051b21080c010b41e4e00841013a0000416b10270b4101210402402008107241014604404100210520081007210d200341206a210e034020092107200541106a220c200d4b0d02200e42003703002003420037031820082005200341186a2205411010751a20034100360200410121092004200520031076210a200520031077210f200341186a20031076210b200c2105410021040d000b1036000b4184810841221002000b024002400240024002400240200f50044010562209200010d10110a301103b044020012002492207450d0210d30120014f0d03200220016b220c109201210410342205200b2004101b200a103a200510334280a30510c40110e801106a10e901450d04200010d601220410b6010d05200341186a200410ad01200a2003280218103b450d06200341206a2204200428020022062001200120064b1b360200200341106a200341286a2802002206200220022006491b3602002003200328022422062001200120064b1b360224200341086a2004290200370300200320032902183703000c070b41e085084129103e000b41d08908411d103e000b41ad89084114103e000b41b691084112103e000b41f38808410f103e000b200a103a21041098012106200320023602102003200136020c2003200136020820032006360204200320043602000c010b41c18908410f103e000b200041012003200310d2012002200120071b2102034020012002464504402000200110d5012204106a220720051090012004200710b4012000200110d4012204106a220720051090012004200710b401200141016a21010c010b0b200c10920121001034220120052000101c200b200b2001106d2003200b360224200342003703182003200a3602202009200341186a1052200341306a24000b130010f201106c0440419b8c084112103e000b0b0a0041c19008411510450b100020002001108b0141ff01714102490b1b002000103d45044041cf8b08411e103e000b10eb01200010b1010b0a0041d78f08411410450b8a0101047f230041106b220324002001280204220241046a220420012802084b047f41000520012802002003410036020c28020020022003410c6a4104107f1a200328020c210220012004360204200241187420024180fe03714108747220024108764180fe037120024118767272210241010b21012000200236020420002001360200200341106a24000b2e01027f2001103a21022001103a220341ed8b08410410101a2000200336020420002001360200200020023602080b2701017f230041106b22022400200220003a000f20012002410f6a4101108901200241106a24000b7801017f230041106b220224002002200042388620004280fe0383422886842000428080fc0783421886200042808080f80f834208868484200042088842808080f80f832000421888428080fc07838420004228884280fe038320004238888484843703082001200241086a410810bf01200241106a24000b3a01017f230041106b22032400200341086a20014108200210f401200328020c21012000200328020836020020002001360204200341106a24000b0a0010f201200010ae010b0a0041b78d08411310450b0e002000108a0141ff01714101460b3b01017f230041106b22042400200441086a41002003200120021035200428020c21012000200428020836020020002001360204200441106a24000b1d0002402000109b014504402000103d0d010b41ef8c084112103e000b0b13002000102845044041818d084110103e000b0b130020004195890841061045220010da0120000b0a0041ee8e08411c10450b1f00200141a78f08410b1045220110da012002200110ac012000200110ed010b0a0041b28f08411110450b1f00200141c38f0841141045220110da012002200110ac012000200110ed010b1a00200041eb8f08410e1045220010da012001200010ba0120000b1a00200041f98f0841101045220010da012001200010ba0120000b210020004189900841041045220010da012001200010ba012002200010ac0120000b0a00418d9008410710450b0a00419f9008411010450bf201020a7f017e1029410a106641001063410110632106410210632107410341b88508410e10622100410441a98508410f1062210141054193850841161062410641808508411310622102410741ea8408411610624108105a21034109105a2104200010f501200110f501200210f501200310f601200410f60110c701200010b10110c901200110b10110fa01200210b10110ea0110c601200310a80110c501200410a801103c10e201200610e501200710e301108002421a10b30142e80710381037109601108f01210010e801200010b4011026210a10d701200a200a4280b4caae067d4280f524827d10b301410110f1010b08001029410010660b4002027f017e1029105941011066410041d08608410d1062210110d00110a101210010d001200041016a2200ad220210b301200010d101200110b1012002102a0b2d01027f1029105941021066410010612100410141dd8608410910622101200010cd01200010d101200110b1010b110010294101106641001061410010cc010b110010294101106641001061410110cc010b11001029410110664100106110cf01106b0b2001017f10291059410110664100418d8908410810642100108002200010b2010b1a01017f102910594101106641001063210010e801200010b4010ba30101047f41041066410010612100410141a38908410a106421024102419b890841081064210141034195890841061062210302400240200010d60110b601044010800210a101200120026b4b0d0120002002200110e60110f801106a220110f301450d022000200210db01200110b401200010f701200310b101200010cf01410110ae010f0b41ed89084121103e000b418e8a084114103e000b41a28a08412c103e000ba30101057f230041206b2200240041031066410010612102410141a38908410a106421034102419b8908410810642104024002400240200210d601220110b6014504402000410c6a200110ad0110d301200028021c22014f0d0120012003490d02200028021820044b0d0320022003200410e601200041206a24000f0b41f38a084122103e000b41ce8a084115103e000b41b691084112103e000b41e38a084110103e000b17001029105941011066410041ea84084116106210ea010ba80201087f230041306b220024001029105941021066410010612102410141a38908410a10642103200210cd012000410c6a2205200210d601220610ad01024010d3012204200028021c2201490440200120034d200028021820034b720d01200320044d0d01200241012001200510d201410021051098012107200028021c21042003210103402005200120044b7245044020072002200110d40110b5011090012002200110d50110aa01200120044f2105200120012004496a21010c010b0b1058200028020c103a21022000200736022c2000420037032020002002360228200041206a10520240200320002802184704402000200336021c20062000410c6a10a5010c010b200610aa010b200041306a24000f0b41b88b084117103e000b41b691084112103e000be50302077f017e230041e0006b2200240010294101106641001061210210e7012000411c6a2201200210d601220310ad0110d301200028022c4f0440200241012000200110d201200310aa0102402000280220220510530d00200028021c210610eb0110a301109a01210241958b08410f1045210410442101104421032000200536023c20002006360238200042003703302003200041306a1054200020023602402000427f3703382000200136023420002004360230200010980122053602480240024002400240200310720e020200010b200041d0006a2003109901027f2000290350500440200041086a200420012000280258200028025c107d200028020c210120002802080c010b1057200041106a200420012002200041d0006a107b20002802142101210220002802100b210410980121050c010b10572102200020042001200041406b2003106f20002903382107200028020421012000280200210410980121052007427f520d010b102421070b200720022005200420011055210210254100210420021007210320004100360238200020023602302000200341027622013602340340200120044d0d01200041306a41db8208410b10c3011a20002802342101200028023821040c000b000b200041e0006a24000f0b41a48b084114103e000b110010291059410110664100106310e2010b910101037f1029105941011066410010634280c8afa025103842808090bbbad6adf00d109401210041a69108411010452102103f10a30120024167102b4167103a200010334280a30510c401108f0142808090bbbad6adf00d10940142808090bbbad6adf00d109401103710960141a08d06109301413410930142a00b1094012000108f01108e01210010f801200010b4010b2d01027f1029105941021066410010612100410110632101200010cd01200010d30141016a10db01200110b4010b110010291059410110664100106310e5010b110010291059410110664100106310e3010b8f0202037f017e230041206b2200240010291068410010672000410036020c2000410c6a2102104421010340200228020041e0e0082802004804402001200241828908410b105c105d0c010b0b200028020c1065200110072102200041003602142000200241027622023602102000200136020c4100210102400340200120024904402000410c6a41818c08410810c30121012000420037031820011007220241094f0d022000200041186a200210f00120014100200028020022012000280204220210751a2001200210820122034280808080105a0d022003a7220110cd01200110d9011a20002802102102200028021421010c010b0b200041206a24000f0b41818c08410841998008410e105b000b1a01017f10294101106641001061220010cd01200010d90110160bdb14020d7f037e230041a0016b220024001029106841031067410010612105410110632108027f230041206b2201240002400240024041021012450440410321020c010b4102105a2203100721022001411c6a41003a0000200141186a200236020020012003360214200120023602102001410036020c41032102024002402001410c6a41af8708410a106041ff01710e020100040b2001410c6a41af8708410a1060220241ff017141034f0d030b2001280210200128020c470d0120012d001c450d0041d8e008410036020041dce00841003a00000b200141206a240020020c020b41af8708410a41998008410e105b000b41af8708410a41a78008410d105b000b210a20004103360234200041ec006a2102410021030240200041346a2206220128020041e0e0082802004e0440410121030c010b2001419987084116105c21042001419987084116105e105a2201100741c000460d0041998708411641f18b084110105b000b20022001360208200220043602042002200336020020002802341065200028026c2107200028027021032000280274210910e701200510cd0110d30121022006200510d60110ad0102400240024002400240024002400240200028023c20024d0440200220002802444f0d01200041c8006a2005200210f90120001056220636025410ff012201200610b80110a201220d500440200110b70110a201210d2001200610b801200d42017c220d10b3012001200d10b90120061040200d500d03200110b701200d10b3010b2000280250200d10be010d07200510cf01106c450d03200041e8006a22042005200210fb0102402000280270200d10be010d0020070d05411e1044220110ac01200141e29108411e10101a2005200110da012002200110ac012001200610041a200020031007220741187420074180fe03714108747220074108764180fe03712007411876727236026820012004410410101a2001200310041a200510f70110a30120012009102c1a20031007410b4f0d062005200d2005200d10fd01220710a101220110fe01200041286a1041200020002d002c3a006c2000200028022836026820032004104d2002200410a601200028026820002d006c10a7012007200141016a10b20120014114490d002005200d2005200d10fc01220110a101220310fe0110aa012001200341016a10b2010b200541012000200041346a10d201200041c8006a200d10bd01200510d90121072005200210d501106a2109102d210e103f10a401450d06419c9108410a10452201200610041a103f10a30120014167102b4167103a2201107e450440200110072103200041f8006a41003a0000200041f4006a2003360200200020013602702000200336026c2000410036026820004188016a2201200041e8006a220410840102402000280288010d00200028028c0110342203102e1a20004200370388012004200141081085010d0020014108108201210f200120041084012000280288010d00200028028c01104a2101200028026c2000280268470d0020002d0078044041d8e008410036020041dce00841003a00000b0240200e200f510d00200110f301450d00200110332104200e200f580d00200e200f7d109501210b1034220c2004200b101c20032003200c10180b20002001360274200020033602702000200e3703680c0a0b20002d0078044041d8e008410036020041dce00841003a00000b41cb8008412a103e000b200041e8006a200e10c1010c080b41c587084117103e000b41dc8708412e103e000b41d98308410b1002000b41cf85084111103e000b41998808411f103e000b41ea8608410f103e000b200041e8006a200e10c1010c010b418a8808410f103e000b024020002802702201106e41ff017141014d044010980121040c010b103422042001102f0b027f2007105304401098010c010b20092004108f012007108e010b21032000280234103a21010240024002400240027f0240200a41ff0171410346044010e401106a21062005200210d401106a2003108b0141ff017141ff01470d03200810530d0141ce88084113103e000b2005200210d4012207106a220910f301450d032009200320032009108b0141ff01714101461b22091033200a10d8012203200810e901450d042007106a220820082003106d2007200810b4012005200210dc012207106a220820041090012007200810b4012004200a10d80121042005200210de012207106a220820041090012007200810b4012001103a200942901c10c40121042005200210e0012202106a220720041090012002200710b4014207210e0240024002400240200a41ff017141016b0e020100020b420e210e0b200020033602644200210d20004200370358200020013602602006103a2102200310530d01102d210d10fa0110a301109a01210141b48008410a1045210610442203200d200e7c10800120032002107c10442202200041d8006a1054200020013602782000427f3703702000200336026c2000200636026820001098012204360280010240024002400240200210720e020200010b20004188016a2002109901027f200029038801500440200041186a20062003200028029001200028029401107d20002802182106200028021c0c010b1057200041206a20062003200120004188016a107b20002802202106210120002802240b210310980121040c010b10572101200041106a20062003200041f8006a2002106f2000290370210d20002802142103200028021021061098012104200d427f520d010b1024210d0b200d2001200420062003105521011025200110072102200041003602900120002001360288012000200241027636028c0120004188016a41db8208410b10c301220210072101200041f8006a41003a0000200041f4006a2001360200200020023602702000200136026c20004100360268200041e8006a10492201100741044604402000410036029c01200141002000419c016a2202410410751a41feffffff0720012002410441d083084104109c011b21010b200041e8006a220210cb01210d200210482103200028026c2000280268470d0720002d0078044041d8e008410036020041dce00841003a00000b200141feffffff07470d0141c38308410d1002000b200020033602644200210d20004200370358200020013602602006200041d8006a10520b200310330c010b2005200210dd012207106a220820041090012007200810b401200120062003108f0110910142901c10c40121042005200210e0012201106a220320041090012001200310b401200041e8006a22042005200241016a10fb012004200d10bd011098010b1044220441de8c0841111045105d2004200041d4006a107120051044103a220210da012002104e0240200a41ff0171220541034704404101200210ee012005410274419091086a2802002d0000200210ee01200420021030200041086a1041200020002d000c3a006c200020002802083602682001200041e8006a2201104d200d200110ef0120032001104b200028026820002d006c10460c010b4100200210ee012004200210300b200041a0016a24000f0b41b888084116103e000b41e188084112103e000b41f38808410f103e000b41db8208410b41998008410e105b000bd20101087f230041206b22002400102941021066410010612101410141f9860841041064210210ff01210410442103200041146a2001200210fb01200028021810a101210520002802142106410121010340200120054b45044020042006200110ab0110a20110b901220710a4010440200710a30121020b20032002107c200141016a21010c010b0b2000200336021020002003100736021c200041003602182000200041106a3602140340200041086a200041146a10ec0120002802080440200028020c10061a0c010b0b200041206a24000b6402047f017e230041106b22002400102941031066410041b98708410c10622101410110612102410241f9860841041064210310ff01200110bb01220450047e420005200041046a2002200310f901200028020c200410be01ad0b1017200041106a24000b950101057f230041206b2200240010291068410110674100106121032000410136020c02402000410c6a2204220128020041e0e0082802004e0440410121020c010b200141fd86084110105e41fd86084110105f21010b20002001360204200020023602002000280204210120002802002102200028020c10652004200310d60110ad01200320022001200410d201200041206a24000b850101027f230041306b22002400102941011066200041146a4100106110d60110ad01200041086a1041200020002d000c3a002c200020002802083602282000280214200041286a2201104d20002802182001104b200028021c200110a6012000280220200110a6012000280224200110a601200028022820002d002c1046200041306a24000b1b0010294102106641001061410141f986084104106410d50110690b1b0010294102106641001061410141f986084104106410d40110690b990202077f017e230041206b22002400102941021066410010612102410141e68608410410622101200210cd01104421050240024010ff01200110bb012207500d002002200710fc0110a10121062002200710fd0110a10121010340200120064d0d012000410c6a220320022007200141016b220110fe0110502003108601200310870121032000280210200028020c470d0220002d001c044041d8e008410036020041dce00841003a00000b1044103a2204104f2003200410ac0120052004105d0c000b000b20002005360208200020051007360214200041003602102000200041086a36020c034020002000410c6a10ec0120002802000440200028020410061a0c010b0b200041206a24000f0b41998008410e108801000b2d01027f102941021066410010612100410141808408410a106221011056200010ce01200010f701200110b1010b0e0010294100106610d301ad102a0b830102027f017e230041106b22002400102941011066410041f98608410410642201450440418d8708410c103e000b10d70110a20120001041200020002d00043a000c200020002802003602082001ad4280f5247e7c22024280f5247d200041086a220110ef01200242017d200110ef01200028020820002d000c1046200041106a24000b100010294100106610d70110a201102a0b16001029105941011066410041c18008410a1062103c0b1000102941001066103f10a30110061a0b0f001029105941001066410110f1010b0f001029105941001066410010f1010b0d0010294100106610f201106b0b02000b0b0041b49208410e1002000b0bbe120300418080080ba303726563697069656e742061646472657373206e6f7420736574696e70757420746f6f206c6f6e67696e76616c69642076616c75656c6f636b546f6b656e7300010273635f616464726573734661696c6564206465636f64696e6720726573756c742066726f6d20656e6572677920666163746f7279496e76616c69642061646472657373696e636f7272656374206e756d626572206f662045534454207472616e7366657273617267756d656e74206465636f6465206572726f722028293a20746f6f2066657720617267756d656e7473746f6f206d616e7920617267756d656e747377726f6e67206e756d626572206f6620617267756d656e747363616e6e6f74207375627472616374206265636175736520726573756c7420776f756c64206265206e656761746976654d756c7469455344544e46545472616e73666572455344544e46545472616e73666572455344545472616e7366657273796e6320726573756c74696e70757420746f6f2073686f72746361737420746f20693634206572726f724d616e6167656456656320696e646578206f7574206f662072616e67650041c383080bff0e4553445420657870656374656445474c442e6974656d4944204f766572666c6f772e696e64657873746f72616765206465636f6465206572726f723a206e65775f7369676e657270726f6a6563745f6964496e76616c6964205745474c442d55534443207061697220616464726573732066726f6d20726f75746572496e76616c696420544f4b454e2d55534443207061697220616464726573732066726f6d20726f75746572666565735f636f6c6c6563746f725f6164647265737373696d706c655f6c6f636b5f61646472657373656e657267795f666163746f72795f61646472657373736166655f70726963655f70616972726f757465725f6164647265737362657461616c70686150726f6a656374206973207061757365644f6e6c792070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e74496e76616c69642070726f6a6563742049444f6e6c79207363206f776e6572206f722070726f6a656374206f776e6572206d61792063616c6c207468697320656e64706f696e7470726f6a6563745f6f776e65726e65775f6f776e6572757365724c656e67746820746f6f206c6f6e677765656b6f70745f6d61785f6e725f7765656b73496e76616c6964207765656b6f70745f6e6f74655f616e645f7369676e6174757265636c61696d5f74797065757365725f6164647265737350726f6a656374206e6f742073746172746564207965744d6179206e6f7420636c61696d207265776172647320666f7220746869732070726f6a65637420616e796d6f7265416c726561647920636c61696d65644d7573742070726f76696465206e6f746520616e64207369676e617475726543616e20636c61696d2066756c6c2072657761726473496e76616c6964206d696e20726577617264734e6f7420656e6f7567682072657761726473546f6f20666577207265776172647370726f6a6563745f6964736e725f7765656b737369676e6572656e645f7765656b73746172745f7765656b496e76616c6964207765656b206e756d62657273496e76616c6964207061796d656e744f6e6c792066756e6769626c6520746f6b656e73206163636570746564496e697469616c207265776172647320616c7265616479206465706f7369746564546f6f2066657720726577617264207765656b734669727374207765656b207265776172647320646f6c6c61722070657220656e65726779206e6f742073657450726f6a65637420616c726561647920656e646564496e76616c696420656e64207765656b4d757374206465706f73697420696e697469616c20726577617264732066697273746465706f7369745377617046656573456e64207765656b206e6f74207265616368656443616e6e6f7420776974686472617720616e796d6f7265496e76616c6964206665657320636f6c6c6563746f7220616464726573732e6c656e626164206172726179206c656e6774687661722061726773696e707574206f7574206f662072616e6765436f6e747261637420697320706175736564676574536166655072696365427954696d657374616d704f6666736574656e65726779466163746f727941646472657373636c61696d526577617264734576656e74496e76616c69642053432061646472657373496e76616c696420746f6b656e20494470726f6a6563744f776e657270726f6a6563744163746976656c61737450726f6a656374496470617573655f6d6f64756c653a70617573656475736463546f6b656e4964726f75746572416464726573737765676c64546f6b656e496473616665507269636550616972746f74616c456e65726779466f725765656b726567526577446f6c6c617273726577446f6c6c617273506572456e657267796d696e526577446f6c6c617273506572456e65726779696e74456e65726779466f72526577436c61696d657273726567456e65726779526577436c61696d65727366697273745765656b526577446f6c6c617273506572456e65726779726567456e657267794578656d70436c61696d6572736765745061697275736572436c61696d656473696d706c654c6f636b416464726573736578656d707465645061727469636970616e747366656573436f6c6c6563746f724164647265737366697273744e6f7465496e64657863757272656e744e6f7465496e6465786e6f74657573657249647372657761726473496e666f6d696e52657761726473506572696f6472657761726473546f74616c416d6f756e746d696e5765656b6c795265776172647356616c75657265776172647352656d61696e696e67416d6f756e7466697273745765656b537461727454696d657374616d7000a861000050c30000a08601003e0002003f0002004000020075736572456e65726779626173654173736574546f6b656e4964496e76616c6964207374617274207765656b5765656b2030206973206e6f7420612076616c6964207765656b7845786368616e676547726f77746856315461736b436f6d706c65746564456e64706f696e742063616e206f6e6c792062652063616c6c6564206279206f776e6572616464724964616464726c617374496470616e6963206f636375727265640041c492080b049cffffff" } diff --git a/growth-program/output/growth-program.wasm b/growth-program/output/growth-program.wasm index 4be734e4caa71733335eb2b411d53b26f1e92cf5..6a5453b89da58747603e3882557a0f8faaa2911c 100755 GIT binary patch delta 28 jcmeBM&e*q{af6>NC#%4DMu8kxUgpWZwsM delta 28 jcmeBM&e*q{af6@j2XyeykbY^B5ii0cSJ diff --git a/growth-program/src/rewards/claim.rs b/growth-program/src/rewards/claim.rs index 7f3fb1a..cb0ef7b 100644 --- a/growth-program/src/rewards/claim.rs +++ b/growth-program/src/rewards/claim.rs @@ -154,6 +154,8 @@ pub trait ClaimRewardsModule: } fn check_signature(&self, args: CheckSignatureArgs) { + self.require_project_active(args.project_id); + if self .exempted_participants(args.project_id, args.current_week) .contains(&args.user_id) @@ -161,7 +163,6 @@ pub trait ClaimRewardsModule: return; } - self.require_project_active(args.project_id); require!( args.opt_note_and_signature.is_some(), "Must provide note and signature"