From 8d79a1277468e9a7bc4a9e8c2bbd9ac2c532a4b2 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 26 Jun 2023 10:40:43 +0200 Subject: [PATCH 01/27] transaction router --- __tests__/transactionRouter.test.ts | 31 +++++++++++++++++++++ package.json | 3 +- src/utils/transactionRouter.ts | 43 +++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 __tests__/transactionRouter.test.ts create mode 100644 src/utils/transactionRouter.ts diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts new file mode 100644 index 0000000..eec24e4 --- /dev/null +++ b/__tests__/transactionRouter.test.ts @@ -0,0 +1,31 @@ +import TransactionRouter from "../src/utils/transactionRouter"; +import { ApiPromise, Keyring, WsProvider } from '@polkadot/api'; +import { KeyringPair } from "@polkadot/keyring/types"; + +const wsProvider = new WsProvider("ws://127.0.0.1:9944"); +const keyring = new Keyring({ type: 'sr25519' }); + +describe("TransactionRouter",() => { + let api: ApiPromise; + let alice: KeyringPair; + let bob: KeyringPair; + + beforeEach(async function (): Promise { + api = await ApiPromise.create({ provider: wsProvider, noInitWarn: true }); + alice = keyring.addFromUri('//Alice'); + bob = keyring.addFromUri('//Bob'); + }); + + test("Can't send tokens to yourself", () => { + const sender = alice; + const receiver = alice; + expect(() => TransactionRouter.sendTokens( + sender.address, + "polkadot", + receiver.address, + "polkadot", + "dot", + 1000 + )).toThrow("Cannot send tokens to yourself"); + }); +}); diff --git a/package.json b/package.json index f53d773..4f4a08b 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,10 @@ "@mui/icons-material": "^5.2.5", "@mui/lab": "^5.0.0-alpha.134", "@mui/material": "^5.2.8", - "@polkadot/api": "^10.8.1", + "@polkadot/api": "^10.9.1", "@polkadot/api-contract": "^10.8.1", "@polkadot/extension-inject": "^0.46.4", + "@polkadot/keyring": "^12.3.2", "@polkadot/types": "^10.8.1", "@polkadot/util": "^12.3.1", "@scio-labs/use-inkathon": "^0.0.1-alpha.44", diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts new file mode 100644 index 0000000..3394cbd --- /dev/null +++ b/src/utils/transactionRouter.ts @@ -0,0 +1,43 @@ +class TransactionRouter { + public static sendTokens( + sender: string, + originChain: string, + receiver: string, + destinationChain: string, + token: string, + amount: number + ): any { + if(originChain == destinationChain && sender == receiver) { + throw new Error("Cannot send tokens to yourself"); + } + + if(originChain == destinationChain) { + this.sendOnSameBlockchain(sender, receiver, originChain, token, amount); + }else { + this.sendViaXcm(sender, originChain, receiver, destinationChain, token, amount); + } + } + + private static sendOnSameBlockchain( + sender: string, + receiver: string, + chain: string, + token: string, + amount: number + ): any { + + } + + private static sendViaXcm( + sender: string, + originChain: string, + receiver: string, + destinationChain: string, + token: string, + amount: number + ) { + + } +} + +export default TransactionRouter; From 1bc36c67126f07d59af729f3386e4733e5c07dbf Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Thu, 29 Jun 2023 09:17:48 +0200 Subject: [PATCH 02/27] generate types & more boilerplate --- __tests__/transactionRouter.test.ts | 36 +- artifacts/address_book.contract | 1 + artifacts/address_book.json | 887 ++++++++++ artifacts/identity.contract | 1 + artifacts/identity.json | 2045 ++++++++++++++++++++++++ config.json | 6 + local_network.toml | 33 + package.json | 3 + src/utils/transactionRouter.ts | 49 +- types/build-extrinsic/address_book.ts | 105 ++ types/build-extrinsic/identity.ts | 221 +++ types/constructors/address_book.ts | 53 + types/constructors/identity.ts | 81 + types/contract-info/address_book.ts | 2 + types/contract-info/identity.ts | 2 + types/contracts/address_book.ts | 107 ++ types/contracts/identity.ts | 107 ++ types/data/address_book.json | 3 + types/data/identity.json | 3 + types/event-data/address_book.json | 3 + types/event-data/identity.json | 3 + types/event-types/address_book.ts | 22 + types/event-types/identity.ts | 50 + types/events/address_book.ts | 100 ++ types/events/identity.ts | 170 ++ types/mixed-methods/address_book.ts | 139 ++ types/mixed-methods/identity.ts | 274 ++++ types/query/address_book.ts | 121 ++ types/query/identity.ts | 246 +++ types/shared/utils.ts | 38 + types/tx-sign-and-send/address_book.ts | 127 ++ types/tx-sign-and-send/identity.ts | 261 +++ types/types-arguments/address_book.ts | 17 + types/types-arguments/identity.ts | 27 + types/types-returns/address_book.ts | 18 + types/types-returns/identity.ts | 28 + 36 files changed, 5369 insertions(+), 20 deletions(-) create mode 100644 artifacts/address_book.contract create mode 100644 artifacts/address_book.json create mode 100644 artifacts/identity.contract create mode 100644 artifacts/identity.json create mode 100644 config.json create mode 100644 local_network.toml create mode 100644 types/build-extrinsic/address_book.ts create mode 100644 types/build-extrinsic/identity.ts create mode 100644 types/constructors/address_book.ts create mode 100644 types/constructors/identity.ts create mode 100644 types/contract-info/address_book.ts create mode 100644 types/contract-info/identity.ts create mode 100644 types/contracts/address_book.ts create mode 100644 types/contracts/identity.ts create mode 100644 types/data/address_book.json create mode 100644 types/data/identity.json create mode 100644 types/event-data/address_book.json create mode 100644 types/event-data/identity.json create mode 100644 types/event-types/address_book.ts create mode 100644 types/event-types/identity.ts create mode 100644 types/events/address_book.ts create mode 100644 types/events/identity.ts create mode 100644 types/mixed-methods/address_book.ts create mode 100644 types/mixed-methods/identity.ts create mode 100644 types/query/address_book.ts create mode 100644 types/query/identity.ts create mode 100644 types/shared/utils.ts create mode 100644 types/tx-sign-and-send/address_book.ts create mode 100644 types/tx-sign-and-send/identity.ts create mode 100644 types/types-arguments/address_book.ts create mode 100644 types/types-arguments/identity.ts create mode 100644 types/types-returns/address_book.ts create mode 100644 types/types-returns/identity.ts diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index eec24e4..e15c949 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -1,6 +1,8 @@ import TransactionRouter from "../src/utils/transactionRouter"; import { ApiPromise, Keyring, WsProvider } from '@polkadot/api'; import { KeyringPair } from "@polkadot/keyring/types"; +import IdentityContractFactory from "../types/constructors/identity"; +import IdentityContract from "../types/contracts/identity"; const wsProvider = new WsProvider("ws://127.0.0.1:9944"); const keyring = new Keyring({ type: 'sr25519' }); @@ -9,23 +11,51 @@ describe("TransactionRouter",() => { let api: ApiPromise; let alice: KeyringPair; let bob: KeyringPair; + let identityContract: any; beforeEach(async function (): Promise { api = await ApiPromise.create({ provider: wsProvider, noInitWarn: true }); alice = keyring.addFromUri('//Alice'); bob = keyring.addFromUri('//Bob'); + + const factory = new IdentityContractFactory(api, alice); + identityContract = new IdentityContract( + ( + await factory.new() + ).address, + alice, + api + ); }); test("Can't send tokens to yourself", () => { const sender = alice; const receiver = alice; expect(() => TransactionRouter.sendTokens( - sender.address, - "polkadot", + api, + identityContract, + sender, + 0, // origin network receiver.address, - "polkadot", + 0, // destination network "dot", 1000 )).toThrow("Cannot send tokens to yourself"); }); + + test("Sending native asset on the same network works", () => { + const sender = alice; + const receiver = bob; + + TransactionRouter.sendTokens( + api, + identityContract, + sender, + 0, // origin network + receiver.address, + 0, // destination network + "unit", + 1000 + ); + }) }); diff --git a/artifacts/address_book.contract b/artifacts/address_book.contract new file mode 100644 index 0000000..72cb5d7 --- /dev/null +++ b/artifacts/address_book.contract @@ -0,0 +1 @@ +{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210036160000101010005000403050301010103010102010806030303050601060101010306050b0c030602030403030101010601030103010802010108020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c003f066465706c6f7900430916010041010b101c5b5a31404d664f63644e46484965500a8aa301602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a20012002410141ec800410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c41ccb004102320032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341fca9044180810410690b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341b4aa04360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e00200020012002419c9a04106a0bc50601067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241a481043602182002200129000037021c2002410036024820024280800137027c200241a0b10436027841eee7a015200241f8006a22071017200241186a4104722007101820022002290378370340200241106a200241406b2002280280011019200228021421042002280210210520022802402101200220022802442206360278200520042001200710002104200241086a20022802782001200641d486041014024002400240024002400240410c20042004410c4f1b0e0400050501050b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00410421032002280254410476220420022802042201200120044b1b22040440200441ffffff3f4b0d042004410474220741036a417c7122052007490d034198b104280200220320056a22062003490d05419cb1042802002006490440200541ffff036a22032005490d062003411076220640002203417f46200341ffff0371200347720d062003411074220320064110746a22062003490d06419cb1042006360200200320056a22062003490d060b4198b10420063602002003450d050b41002105200241003602602002200336025c2002200436025820010440200241f8006a41047221030340200241f8006a200241d0006a101a20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101b200141016b22010d000b2002280260210520022802582104200228025c21030b20030d010b200241003a005820024184016a41013602002002418c016a4101360200200241c8810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41b88204101d000b20002005360208200020033602042000200436020020024190016a24000f0b41e0a904411c41c4a9041013000b101e000b2007101f000b20024184016a41013602002002418c016a4100360200200241e4870436028001200241b4aa043602880120024100360278200241f8006a41ec8704101d000b2601017f230041106b220224002002200036020c20012002410c6a4104102a200241106a24000b0a00200120004120102a0b4501017f2002200128020422034b044041dcaa04412341d0ac041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d012004200310292004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741d4a2046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41a09204411c41c4a2041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10332002280200450d01200241086a280200450d022002280204101f000b41808404412141c48d041013000b200228020421032000200436020020002003360204200241206a24000c010b101e000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041e08304411c418092041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b4101210020012802002203418fae0441062001280204220528020c22041100000d0c024020012d00184104714504402003418c9404410120041100000d0e200341dcb00441052004110000450d010c0e0b2003418a9404410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241dcb0044105105e0d0d2002418894044102105e0d0d0b200341e192044101200411000021000c0c0b20012802004182ae04410d200128020428020c11000021000c0b0b200128020041f4ad04410e200128020428020c11000021000c0a0b200128020041e9ad04410b200128020428020c11000021000c090b200128020041cfad04411a200128020428020c11000021000c080b200128020041c1ad04410e200128020428020c11000021000c070b200128020041b1ad044110200128020428020c11000021000c060b200128020041a5ad04410c200128020428020c11000021000c050b2001280200419aad04410b200128020428020c11000021000c040b20012802004193ad044107200128020428020c11000021000c030b20012802004184ad04410f200128020428020c11000021000c020b200128020041f3ac044111200128020428020c11000021000c010b200128020041e0ac044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a00182002200136021420022000360210200241c0930436020c200241b4aa04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a36022041002100410421020240024002400240024003402000200020024180ab046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103620014100360218200120012903003703102001410136023c2001410236023420014180ab04360230200141003602282001200141206a360238200141106a200141286a10440d0141a0b1052d000045044041a1b1052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41f08b04411c41a0a7041013000b41c08f044133200141286a41b48c0441f09004102c000b41a0b10541013a00000b41a1b10541013a00000b000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041e88d04360210200041b4aa0436021820004100360208200041086a41f08d04101d000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141a08f04360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41b08f04101d000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341a481043602182003200029000037021c20034100360248200342808001370254200341a0b10436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102120032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102520010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021032200041106a22002001470d000b0b0bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041b8830410142003280208200328020c2001200241c8830410230b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a09d0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241fc8704101020014100360218200120012903083703104102200141106a10252002200220012802186a22044b044041e08304411c418c88041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410270c010b200041ffff004d0440200220004102744101723b010e20012002410e6a4102102a0c010b200041ffffffff034d04402000410274410272200110170c010b2001410310272000200110170b200241106a24000b08002000410110270ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a410636020020004194930436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a41b0ac04101d000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d012001101f000b101e000b2000200336020420002001360200200241106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241a0ac04102320002004360208200341106a24000f0b41c0aa04411c4180ac041013000b200420064190ac041015000ba70101017f230041306b2201240020014180800136020041a0b1042001100420014180800136022c200141a0b1043602282001200141286a102820012d00000440200141003a000041e4860441c100200141a4840441a88704102c000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541f4930436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101d000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241fc9904106a0b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c0a704360208200141003602002001410436021c200120003602182001200141186a360210200141f88a04101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c0a7043602102002410036020820024103360224200220002d0000410274220041f0b0046a28020036022c200220004184b1046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d0020004504402002410010270f0b20024101102720002001200210340b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d0120014198b104280200220620086a22072006490d031a2003280200210a419cb1042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d03419cb10420033602002001200620086a22072006490d041a0b4198b104200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41e0a904411c41c4a9041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1000200120021025200220002001102a0b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021036200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a20011029200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241a0b1043602002002410010272002200141ff0171410647047f20024101102720010541000b102720002002280208102e103a000b4601017f230041106b22022400200242808001370204200241a0b104360200024020014504402002410010270c010b200241011027200210260b20002002280208102e103a000ba20102057f017e230041306b2201240020014100360218200142808001370224200141a0b1043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041a0b1042001100a000bf60102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441c0ac04102f000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000bf80102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420042002280208411f102a20032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000ba52f020f7f017e230041b0036b22002400024002400240102d41ff017141054604402000418080013602e80141a0b104200041e8016a22011003200041a0016a20002802e80141a0b1044180800141d486041014200020002903a0013703b002200041003602e801200041b0026a2001410410110d0220002802e8012207411876210120074110762102200741087621030240024002400240024002400240200741ff0171220741076b0e020103000b2007411f460d0120074129460d04200741c800460d03200741e900470440200741830147200341ff017141b0014772200241ff017141e40047200141194772720d09200041e8016a200041b0026a101a20002802e8010d09200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410321010c080b200341ff0171410847200241ff0171411947722001412647720d08410021010c070b200341ff017141c10047200241ff0171411b4772200141af0147720d07410121010c060b200341ff017141e00147200241ff01714181014772200141ef0047720d06410221010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004198016a200041b0026a100e2000280298010d05200028029c012102410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041e8016a200041b0026a102820002d00e8010d032000200041fc016a2902003703f002200020004181026a2900003700f502200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec01210220002f01ea01210620002d00e901210c410621010c020b200041e8016a200041b0026a101a20002802e8010d02200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410521010c010b200041043a00e801200041e8016a1030000b200041b0016a200041f8026a290300370300200020002903f0023703a801200041003602f8022000428080013702ec01200041a0b1043602e8014100200041e8016a22071017200020002903e8013703f00220004190016a200041f0026a20002802f0011019200028029401210820002802900120002802f0022103200020002802f402220b3602e8012008200320071000210720004188016a20002802e8012003200b41d4860410140240024002400240410c20072007410c4f1b0e0401000002000b200041f4016a4101360200200041fc016a4100360200200041e487043602f001200041b4aa043602f801200041003602e801200041e8016a41ec8704101d000b200028028c01210320002000280288013602b002200020033602b402200041e8016a200041b0026a102820002d00e801450d01200041f4016a4101360200200041fc016a4100360200200041b08b043602f0010c030b200041f4016a4101360200200041fc016a4100360200200041d08b043602f0010c020b200041c0016a2203200041f2016a220b290100370300200041c8016a2208200041fa016a220d290100370300200041cf016a220a20004181026a220e290000370000200020002901ea013703b80120002d00e90121070240024002400240027f024002400240024002400240024002400240024002400240200141016b0e06040300020109050b200041b0026a102b20004180026a2203200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f40222010440200020002d00f3023a00db01200020002f00f1023b00d901200020002802f80222083602e001200020013602dc01200020002d00f0023a00d801200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a29000037000020004190026a420037030020004198026a4200370300200020073a00e801200020002903b8013700e901200041003602a802200042003703880220002002ad42208642cbfdefe70e843703a00220004100360298032000428080013702f402200041a0b1043602f002200041e8016a200041f0026a22031018200020002903f00237039003200041e8006a20004190036a220620002802f80210192000280268210a200029039003210f200041003602a8032000200f3703a003200042003703f802200042003703f002200041a0036a20034110102a200020002903a00337039003200041e0006a200620002802a80310192000280260210c200029039003210f200041003602f8022000200f3703f0022003200041a0026a4104102a200220031017200020002903f00237039003200041d8006a200620002802f8021019200028025c210b2000280258210d20002802900321062000200028029403220e3602f0024100200a4200200c200d200b2006200310022103200041d0006a20002802f0022006200e41d486041014410c20032003410c4f1b2203410d710d0620002802542103200020002802503602f002200020033602f402200041c8006a200041f0026a100d02400240024020002d00484101710d000240024020002d00490e020001020b200041386a200041f0026a100d20002d00384101710d014102210320002d0039220641024f0d0120060d030c120b200041406b200041f0026a100d20002d00404101710d0020002d00414101460d010b410021010c0f0b2000410136029003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041053602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41c88504101d000b20084104742103024003402003450d01200341106b210320012802002108200141106a210120022008470d000b410421030c0f0b200041e8016a200520041035024020002802ec01450d0020002802f0014111490d00410521030c0f0b200041f4016a2004360200200041f0016a22012005360200200020093602ec01200020023602e801200041d8016a200041e8016a2204101b20004180026a2203200041c8026a2205290300370300200041f8016a2206200041c0026a22092903003703002001200041b8026a2208290300370300200020002903b0023703e801200420002802dc0120002802e0011020200320052903003703002006200929030037030020012008290300370300200020002903b0023703e80120002002360288022000428080013702f402200041a0b1043602f002200041f0026a22021024200041e8026a2204200041f8026a2205280200360200200020002903f0023703e00220004190036a2206200041e0026a103c200029039003210f41002101200041003602f8022000200f3703f00241b4aa04410020021034200241c28904411a102a200020002903f00237039003200041306a200620002802f80210192002200028023020002802341022200041286a20002802e002220620002802e4022004280200220441fc87041010200041003602a803200020002903283703a0032002200041a0036a10182004200420002802a8036a22024b0d07200041d8026a2002360200200020063602e002200020002903e0023703d002200041213602a403200041dc89043602a0032000200041e8016a22023602a80320004190036a2204200041d0026a200041a0036a2206103b200041f0026a22092004103e200041a8036a2005280200360200200020002903f002220f3703a00320004180036a280200210420002802fc02200041003602f8022000200f3703f002200220091041200020002903f0023703a003200041206a200620002802f80210192004200028022020002802241007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a290000370000200020073a00e801200020002903b8013700e90120021039410621030c100b410121030c0e0b200041b0026a102b20004180026a200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f402220c450440410121060c0a0b20002802f802210a200041f0026a200520041035200041e8016a20002802f40220002802f8021035024020002802ec01450d0020002802f0014111490d00410521060c0a0b41032106200a450d09200a410474210b4100210141002103034020022001200c6a2208280200470440200341016a2103200141106a2201200b470d010c0b0b0b200841086a2802001a20082002360200200841046a20002903f0023702002008410c6a200041f8026a220328020036020020004180026a2201200041c8026a2206290300370300200041f8016a2208200041c0026a220b290300370300200041f0016a220d200041b8026a220e290300370300200020002903b0023703e801200041e8016a200c200a1020200120062903003703002008200b290300370300200d200e290300370300200020002903b0023703e801200020043602940220002005360290022000200936028c0220002002360288022000428080013702f402200041a0b1043602f002200041f0026a22011024200041e8026a22022003280200360200200020002903f0023703e00220004190036a2203200041e0026a103c200029039003210f200041003602f8022000200f3703f00241b4aa04410020011034200141fd8904411c102a200020002903f0023703900320004180016a200320002802f802101920012000280280012000280284011022200041f8006a20002802e002220320002802e4022002280200220241fc87041010200041003602a803200020002903783703a0032001200041a0036a10182002200220002802a8036a22014b0d06200041d8026a2001360200200020033602e002200020002903e0023703d002200041233602a403200041998a043602a0032000200041e8016a22013602a80320004190036a2202200041d0026a200041a0036a2203103b200041f0026a22042002103e200041a8036a200041f8026a280200360200200020002903f002220f3703a00320004180036a280200210220002802fc02200041003602f8022000200f3703f002200120041042200020002903f0023703a003200041f0006a200320002802f802101920022000280270200028027410072000280290021a200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200110394106210641000c0a0b200041f1016a2003290300370000200041f9016a200829030037000020004180026a200a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410041001038000b200041f0026a102b20004180026a220420004188036a2205290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a1016027f20002802b4022206044020004184026a2005290300370200200041fc016a20004180036a2209290300370200200041f4016a200041f8026a2208290300370200200020002903f0023702ec01200041a481043602e801200041003602a8032000428080013702b402200041a0b1043602b00241eee7a015200041b0026a22011017200041e8016a220241047220011018200020002903b0023703a003200041186a200041a0036a220320002802b80210192000280218200028021c10091a20042005290300370300200041f8016a2009290300370300200041f0016a2008290300370300200020002903f0023703e8012000428080013702b402200041a0b1043602b00220011024200041a8036a2205200041b8026a2209280200360200200020002903b0023703a0032001200341908904103d200041263602a4032000419c89043602a003200020023602a80320004190036a220820012003103b20012008103e20052009280200360200200020002903b002220f3703a003200041c0026a280200210520002802bc02200041003602b8022000200f3703b002200220011018200020002903b0023703a003200041106a200320002802b80210192005200028021020002802141007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002004200041cf016a290000370000200020073a00e801200020002903b8013700e9012002103941060c010b41010b210020064520001037000b200041f0026a102b20004180026a220220004188036a2201290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a101620002802b40222030440410021010c060b20022001290300370300200041f8016a20004180036a2202290300370300200041f0016a200041f8026a2204290300370300200020002903f0023703e801200041e8016a2205410441001020200041f1016a2004290300370000200041f9016a200229030037000020004181026a2001290300370000200041003a00e801200020002903f0023700e9012000428080013702b402200041a0b1043602b002200041b0026a22011024200041a8036a2204200041b8026a2206280200360200200020002903b0023703a0032001200041a0036a220941bc8804103d2000200541017222023602a803200041263602a403200041c888043602a00320004190036a220520012009103b20012005103e20042006280200360200200020002903b002220f3703a003200041c0026a280200210120002802bc02200041003602b8022000200f3703b0020240024002400240024020002d00e80141016b0e03010203000b200041b0026a2205410010272002200510180c030b200041b0026a2205410110272002200510180c020b200041b0026a220241021027200041e8016a410472200210410c010b200041b0026a220241031027200041e8016a410472200210420b200020002903b0023703a003200041086a200041a0036a20002802b802101920012000280208200028020c1007200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410621010c050b200b2003290300370100200d2008290300370100200e200a290000370000200020073a00e901200020002903b8013701ea01200041003a00e801230041106b22012400200142808001370204200141a0b1043602000240200041e8016a22002d0000450440200141001027200041016a200110180c010b200141011027200110260b41002001280208102e103a000b200341e0b0046a2d000021010c060b41e08304411c418c88041013000b41e08304411c418c88041013000b20004180026a20002900ad01370000200020043600f701200020053600f301200020093600ef01200020023600eb01200020063b00e9012000200c3a00e801200020002903a8013700fb01230041306b22012400200141286a200041e8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002104200041f0026a220320012802084100200128020422021b36020820032002410420021b36020420032004410020021b360200200141306a240020002802f402210120002802f8022102230041106b22002400200042808001370204200041a0b10436020002402001044020004100102720012002200010210c010b200041011027200010260b41002000280208102e103a000b200341004720011037000b41010b20061037000b200020013a009003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041013602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41d88504101d000b4101210120060d010b410121010b200120031037000b410141011038000b200041b4aa043602f801200041003602e801200041e8016a41f88a04101d000b180020012802004195ae044111200128020428020c1100000b11002000200110182000280220200110170b2500200020011018200028022020011017200041286a2802002000412c6a280200200110320be30202047f027e230041e0006b220024000240102d41ff01712201410546044020004180800136023841a0b104200041386a22011003200041086a200028023841a0b1044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102820002d0038450d020b410141011038000b200020013a0038200041386a1030000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a1039230041106b22002400200042808001370204200041a0b10436020020004100102720004100102741002000280208102e103a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41d88b04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041f08b04411c419092041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41f08b04411c418092041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103320042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41908c04412141c48d041013000b1f00024020014181808080784704402001450d012000101f000b0f0b101e000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d04404198b104280200220220056a22042002490d02419cb1042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d0241002103419cb1042004360200200220056a22042002490d030b4198b1042004360200200221030c020b41e0a904411c41c4a9041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e2206410174418b95046a2f00003b0000200241026b2004200641e4006c6b41ffff0371410174418b95046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff0371410174418b95046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a2002410174418b95046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041b4aa042104200241b4aa0441b4aa04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41a09204411c41d497041013000b41c09204412141b0a7041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341a8af0441c0920410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41b09b041055200328020c21052003280208210820032003280200200328020422002000417c7141c09c041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a09204411c41c89e041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a09204411c41f89e041013000b41a09204411c41d89e041013000b41a09204411c41e89e041013000b41a09204411c41b89e041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a09204411c41a0a7041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41dcaa04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a09204411c41e497041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41a09204411c4188a0041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041f898041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41c09204412141d8a5041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241a899041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041a09204411c41b899041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a2003280278200941044188a604105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a09204411c418899041013000b41a09204411c41e8a5041013000b41a09204411c41f8a5041013000b41a09204411c419899041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d012007418494044104200628020c110000450d010c020b41c0920441214198a0041013000b2003410a36028c0120082002047f200320002002200241016b41d09c0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341aca10441c0920410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041dcb0044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441d09304410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241e0930436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241e09304360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241a893043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341fca9044190aa0410690b1400200020012002200341a8af0441c0af0410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bcd300700418080040bd5032f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e72730000000001006a000000420000002600000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20a8000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273d0000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000480101006d0000009d00000011000000480101006d0000009d000000300041e083040bf41f617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000001000000010000000100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000480101006d0000006b0100000e000000480101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000480101006d000000ed00000017000000901501006e000000c100000037000000901501006e000000c40000000900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640034150100000000001c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f76656400000034150100000000006e04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656441646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e65722f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e72733c0501003c0000002f00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900880501002700000073746f7261676520656e7472792077617320656d70747900b8050100170000000b00000004000000040000000c0000000d0000000e000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300440601007f0000008a0100001c0000006361706163697479206f766572666c6f77000000d406010011000000440601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564007d07010015000000920701000d000000000701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000f30701007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300800801007f000000300700000d000000800801007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320620901002000000082090100120000003a0000003415010000000000a409010001000000a4090100010000000b00000000000000010000001000000070616e69636b65642061742027272c20dc09010001000000dd090100030000003a2000003415010000000000f009010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000530b01007e0000005d0500000d000000530b01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300f40b0100830000004e0000002f000000f40b0100830000005a0000001f000000f40b0100830000006300000009000000f40b0100830000006800000027000000f40b010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820c80c010012000000da0c01002200000072616e676520656e6420696e646578200c0d010010000000da0c0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000002c0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273c00d010080000000fe0300002f000000c00d010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028600e010015000000750e01002b00000061090100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273b80e0100800000004700000015000000b80e0100800000005400000011000000b80e0100800000005a00000009000000b80e0100800000006400000011000000b80e010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300880f01007f0000009100000011000000880f01007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000002810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e72730000bc10010086000000e5000000150000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101004196a4040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041d4a4040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300005412010082000000a1010000470000005412010082000000b4010000200000005412010082000000b4010000110000005412010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273181301008800000095000000010000000d0a01007e000000cd0100000500000034150100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730040140100830000002f010000180041e0a9040b51617474656d707420746f206164642077697468206f766572666c6f772617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041c0aa040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a34150100000000007f150100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000901501006e0000005a0000001c000000901501006e0000005a00000009000000901501006e0000005a00000031000000901501006e0000006500000009000000901501006e000000830000001a000000901501006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273261701008200000082010000470041c0af040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000e117010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000271401000b140100f5130100e1130100c81301","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of `Identity` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/artifacts/address_book.json b/artifacts/address_book.json new file mode 100644 index 0000000..9fcd0a9 --- /dev/null +++ b/artifacts/address_book.json @@ -0,0 +1,887 @@ +{ + "source": { + "hash": "0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21", + "language": "ink! 4.2.0", + "compiler": "rustc 1.68.0-nightly", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.0.1", + "rust_toolchain": "nightly-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "address_book", + "version": "0.1.0", + "authors": [ + "Master Union " + ] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "identity_contract", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + "Constructor", + "Instantiate with the address of `Identity` contract" + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 8 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 5 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 16 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 2 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 19 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 17 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 18 + } + }, + "events": [ + { + "args": [ + { + "docs": [ + " The owner of the newly created address book." + ], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "docs": [], + "label": "AddressBookCreated" + }, + { + "args": [ + { + "docs": [ + " The owner of the removed address book." + ], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "docs": [], + "label": "AddressBookRemoved" + }, + { + "args": [ + { + "docs": [ + " The owner of the address book." + ], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [ + " The identity added to the address book." + ], + "indexed": false, + "label": "identity", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "docs": [], + "label": "IdentityAdded" + }, + { + "args": [ + { + "docs": [ + " The owner of the address book." + ], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [ + " The identity that received a new nickname." + ], + "indexed": false, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "docs": [ + " The new nickname." + ], + "indexed": false, + "label": "new_nickname", + "type": { + "displayName": [ + "Option" + ], + "type": 3 + } + } + ], + "docs": [], + "label": "NickNameUpdated" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 10 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Returns the address of the identity contract." + ], + "label": "identity_contract", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 11 + }, + "selector": "0x69081926" + }, + { + "args": [], + "default": false, + "docs": [ + " Creates an address book for the caller." + ], + "label": "create_address_book", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 12 + }, + "selector": "0x07411baf" + }, + { + "args": [], + "default": false, + "docs": [ + " Removes the address book of the caller." + ], + "label": "remove_address_book", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 12 + }, + "selector": "0x1fe0816f" + }, + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "label": "nickname", + "type": { + "displayName": [ + "Option" + ], + "type": 3 + } + } + ], + "default": false, + "docs": [ + " Adds an identity to the user's address book." + ], + "label": "add_identity", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 12 + }, + "selector": "0x83b06419" + }, + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Removes an identity from the user's address book." + ], + "label": "remove_identity", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 8 + }, + "selector": "0x08026740" + }, + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "label": "new_nickname", + "type": { + "displayName": [ + "Option" + ], + "type": 3 + } + } + ], + "default": false, + "docs": [ + " Update nickname of an identity." + ], + "label": "update_nickname", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 12 + }, + "selector": "0x484daeb1" + }, + { + "args": [ + { + "label": "account", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the identities stored in the address book of a user." + ], + "label": "identities_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 15 + }, + "selector": "0x29daba02" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x02a833ee", + "ty": 0 + } + }, + "name": "identities" + } + ], + "name": "AddressBookInfo" + } + }, + "root_key": "0x02a833ee" + } + }, + "name": "address_book_of" + }, + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 5 + } + }, + "name": "identity_contract" + } + ], + "name": "AddressBook" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "sequence": { + "type": 1 + } + } + } + }, + { + "id": 1, + "type": { + "def": { + "tuple": [ + 2, + 3 + ] + } + } + }, + { + "id": 2, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 4 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 9, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 5 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 13 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 13, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 14 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 14 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "AddressBookAlreadyCreated" + }, + { + "index": 1, + "name": "AddressBookDoesntExist" + }, + { + "index": 2, + "name": "IdentityDoesntExist" + }, + { + "index": 3, + "name": "IdentityNotAdded" + }, + { + "index": 4, + "name": "IdentityAlreadyAdded" + }, + { + "index": 5, + "name": "NickNameTooLong" + } + ] + } + }, + "path": [ + "address_book", + "Error" + ] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 16, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 17, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 19, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} \ No newline at end of file diff --git a/artifacts/identity.contract b/artifacts/identity.contract new file mode 100644 index 0000000..684af58 --- /dev/null +++ b/artifacts/identity.contract @@ -0,0 +1 @@ +{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017e6000017f60017f017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003840182010101000000010601040306030000000003000000050200000000030300000003000503060500050000030005060a0002040008050000000005030b030502000000030003000000050300000303030800000305000008000302080201010302020403020502090604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005f066465706c6f7900630919010041010b0f1f7a79476c85016e820183016d66686984016f0ac8ed0182012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108701200120022003280208200328020c418cb404102d2003200220042006108701200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041088010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a360208200320021020000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d04108a010b9a0102067f017e230041206b220324000240024020012802002202200128020422044904402004200220022004491b2105200341086a410472210603402001200241016a2204360200200620021017200328021022070d02200422022005470d000b0b200041003602080c010b200335020c21082000200329021437020c2000200736020820002002ad2008422086843702000b200341206a24000b910302067f017e230041406a220224002002410036021820024280800137022c200241d4b40436022841f7e698f407200241286a2205101920012005101920022002290328370310200241086a200241106a2002280230101a200228020c210320022802082002280210210120022002280214220736022820032001200510002103200220022802282001200741b086041014024002400240410c20032003410c4f1b0e0401000002000b200241346a41013602002002413c6a4100360200200241c0870436023020024184ae0436023820024100360228200241286a41c887041020000b200228020021012002200228020436022420022001360220200241286a200241206a1021200228022c2204044020022903302108200228022821010c010b200241003a0020200241346a41013602002002413c6a410136020020024190820436023020024100360228200241013602142002200241106a3602382002200241206a360210200241286a418083041020000b200020083702082000200436020420002001360200200241406b24000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101a200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101b0240200104400340200241d8006a200241306a101c20022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a101d200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a101e0b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a418083041020000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b2601017f230041106b220224002002200036020c20012002410c6a41041033200241106a24000b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110322002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f20002802082202200028020046044020002002104a200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107d0d0d200241d897044102107d0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104e20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10640d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000b7802027f017e230041206b22022400200241106a2001104f0240200228021404402002290214210420022802102103200241086a2001104920022f010845044020022f010a21012000200437020420002003360200200020013b010c0c020b200041003602040c010b200041003602040b200241206a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241ec8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005102320022002290358370348200241186a200241c8006a2002280260101a200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a418083041020000b0a0020012000412010330bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101a200328020c21002003280208200329031021072003410036022820032007370320200120022004102520032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000b430020012002104c20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104b200041106a22002001470d000b0b0bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101a200228020c2100200228020820022903102106200241003602282002200637032020012003102720022002290320370310200220042002280228101a20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104b20002f010c200110340b0c0041e081042000200110290ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101a200328020c2100200328020820032903102106200341003602282003200637032020022004102320032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241ec81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003102320022002290350370340200241106a200241406b22042002280258101a20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101a20002002280208200228020c10071a200241e0006a24000bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141ec81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a41047220001023200120012903403703302001200141306a2001280248101a2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a20041020000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d8870410102001410036021820012001290308370310200141106a4108102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041061000b080020004101102f0b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003105020022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001086012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000b2601017f230041106b22022400200220003b010e20012002410e6a41021033200241106a24000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103120012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041020000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141089010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106b2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106b20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c091041020000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a418093041020000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a102220002002290308370300200241306a24000b910101017f230041d0006b22022400200241086a41e081042001105b20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a418083041020000b2000200241086a4121100a1a200241d0006a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101089010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d04108a010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e041020000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107c200241306a24000b0b002000280200200110190b4801027f230041106b22022400200241003b010e024020012002410e6a4102101145044020022f010e21010c010b410121030b200020013b0102200020033b0100200241106a24000bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002104c20022000200110330b50002000413f4d044020012000410274102f0f0b200041ffff004d04402000410274410172200110340f0b200041ffffffff034d04402000410274410272200110190f0b20014103102f2000200110190bed0101087f230041106b2206240020002002101b20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104e2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a20011050200228020c21012000200228020836020020002001360204200241106a24000bc60501097f230041106b2205240020052001103202402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106b200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041052200141f0006a220320001053200129037021052001410036028801200120053703800141ec880441202002104b200141286a410472200210232001200129038001370370200141106a2003200128028801101a200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a0012002200410232000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10540c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410552001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310562000200210540c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410572001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310562000200210540c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410572001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310562000200210540c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410522001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310562000200210540c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410552001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310562000200210540c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410572001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310562000200210540c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410572001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310562000200210540c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105320012903702105200141003602880120012005370380014184ae0441002002104b2002418c8d04411c10332001200129038001370370200141206a2003200128028801101a200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a10232000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105620014180016a200010540b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a22024100102f200141286a41047220021023200141cc006a280200200210190c080b20014180016a22024101102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c070b20014180016a22024102102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c060b20014180016a22024103102f200128022c20021019200141306a280200200210190c050b20014180016a22024104102f200128022c200210190c040b20014180016a22024105102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c030b20014180016a22024106102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c020b20014180016a22024107102f200128022c200210190c010b20014180016a22024108102f200128022c20021019200141306a200210230b20012001290380013703a0012001200141a0016a200128028801101a200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108b010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001086012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101a20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108b010bf90102037f017e230041d0006b22032400200341106a22052001105320032903102106200341003602282003200637032020022802002002280204200341206a2204104b20022802082802002004101920032003290320370310200341086a20052003280228101a20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b10232002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108b010b3501017f230041106b22002400200042808001370204200041d4b40436020020004101102f20001030410120002802081044105e000b4c01017f230041106b22022400200242808001370204200241d4b40436020020024100102f2002200141ff0171410747047f20024101102f20010541000b102f200020022802081044105e000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100102f200345044020024100102f2001280204200210190c020b20024101102f200220012d0001102f0c010b20024101102f200210300b200020022802081044105e000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101a200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c887041020000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103120032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101a200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002102320002802242002101920012001290320370310200120032001280228101a20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101a2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b9e4702137f037e230041b0036b22002400024002400240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d8016a20002802880341d4b4044180800141b086041014200020002903d8013703d8022000410036028803200041d8026a2001410410110d01200028028803220741187621012007411076210520074108762102024002400240024002400240027f02400240200741ff0171220741106b0e05040a0a0a01000b0240024002400240024002400240024002400240024020074197016b0e03091401000b0240200741cf016b0e050a1414140d000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200241ff01714189014772200541ff0171413647200141e4004772720d14410621010c150b200241ff017141fe0147200541ff017141fb014772200141ec0147720d13200041f8006a200041d8026a100e20002802780d13200028027c2204410876210641002107410021010c150b200241ff017141f20047200541ff0171410c47722001411e47720d1220004180016a200041d8026a100e2000280280010d122000280284012204410876210641010c0a0b200241ff01712203413c460d0f200341cc0147200541ff017141f90047722001418d0147720d1120004188036a200041d8026a101c200028029003220a450d11200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410721010c130b200241ff017141ff0147200541ff017141c60147722001411c47720d1020004188016a200041d8026a100e2000280288010d10200028028c012204410876210641030c080b200241ff017141d50047200541ff017141054772200141e40147720d0f20004198016a200041d8026a100e2000280298010d0f200028029c01210420004190016a200041d8026a100e2000280290010d0f2004410876210620002802940122074110762108410421010c110b200241ff017141dd0047200541ff017141df014772200141cd0147720d0e410521010c0f0b200241ff0171412f47200541ff017141f5004772200141e40147720d0d20004188036a200041d8026a101c200028029003220a450d0d200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410821010c0f0b200241ff017141a70147200541ff017141a60147722001410f47720d0c200041a0016a200041d8026a100e20002802a0010d0c20002802a4012204410876210641090c040b200241ff0171410247200541ff017141e7004772200141c00047720d0b410a21010c0c0b200241ff017141a30147200541ff017141ee0147722001410947720d0a20004188036a200041d8026a1021200028028c032207450d0a2007411076210820002f00890320002d008b034110747221062000280294032103200028029003210a20002d0088032104410b21010c0c0b200241ff017141be0147200541ff0171418b014772200141cc0147720d09200041c0016a200041d8026a100e20002802c0010d0920002802c4012104200041b8016a200041d8026a100d20002d00b8014101710d0920002d00b90122070e020605090b200241ff017141b10147200541ff017141fd004772200141be0147720d08200041c8016a200041d8026a100e20002802c8010d0820002802cc0122044108762106410d0b2101410021070c090b200241ff017141b90147200541ff0171413447720d0620014103460d010c060b200241ff017141fe0047200541ff017141334772200141ea0147720d05200041d0016a200041d8026a100e20002802d0010d0520002802d401210420004188036a200041d8026a103120002d0088030d05200041f8016a200041a1036a290000370300200020004199036a2900003703f001200028008903220741107621082004410876210620004195036a280000210920004191036a2800002103200028008d03210a410f21010c070b20004188036a200041d8026a103120002d0088030d04200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410e21010c060b200041b0016a200041d8026a104920002f01b0010d034101210720002f01b20121080b200041a8016a200041d8026a100d20002d00a8014101710d020240024020002d00a90122030e020100040b20004188036a200041d8026a104f200028028c032203450d032000280290032109200028028803210a0b20044108762106410c21010c040b200541ff017141a201472001413247720d0120004188036a200041d8026a103120002d0088030d01200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410221010c030b200041043a00880320004188036a1046000b1058000b410021070b200041e8016a200041f8016a290300370300200020002903f0013703e001200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2202101920002000290388033703b802200041f0006a200041b8026a200028029003101a2000280274210d200028027020002802b8022105200020002802bc02220f36028803200d2005200210002102200041e8006a2000280288032005200f41b08604101402400240024002400240024002400240024002400240024002400240027f02400240024002400240410c20022002410c4f1b0e0400030301030b200028026c210520002000280268360298022000200536029c02200041e0006a20004198026a100e024020002802600d002000280264210220004188036a20004198026a103120002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a220f200041a1036a2900003700002000200029018a033703d80220002d0089032110200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c100b20004194036a41013602002000419c036a4100360200200041e48e04360290030c0f0b200441ff01712006410874722105200028025c210420004188026a200f29000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200236029002200020103a00f0012000200436029402024002400240024002400240024002400240200141016b0e0f010203040c0d050607101514131211000b200041d8026a2005101820004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a280200220445044020014100102f0c020b20014101102f20042003410c6a280200200110250c010b20014101102f200110300b0c180b200041d8026a22032005103f20004188036a220141017220034121100a1a200041003a008803230041106b22032400200342808001370204200341d4b404360200024020012d000045044020034100102f20012d000145044020034100102f0c020b20034101102f200141026a200310230c010b20034101102f200310300b410020032802081044105e000b200041a7036a200041e8016a2d00003a00002000200936009b0320002003360097032000200a360093032000200536008b032000200b3b0089032000200c3a008803200020002903e00137009f032000200741ffff037120084110747236008f03230041306b22012400200141286a20004188036a220341186a290000370300200141206a200341106a290000370300200141186a200341086a29000037030020012003290000370310200141086a200141106a103e200041086a2001290308370300200141306a240020002802082103200028020c2104230041106b22012400200142808001370204200141d4b40436020020014100102f0240200345044020014100102f0c010b20014101102f2004200110190b0c160b200041d8026a2005101720004194036a200041e0026a290300370200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a28020045044020014100102f0c020b20014101102f200341046a200110270c010b20014101102f200110300b0c150b20004188036a20051018200028028c032201450d052000280290032104200020002802880336028803200020013602940320002001200441047422036a220536029003027f0240027f024020040440200741ffff0371200841107472210620004188036a410472210403402000200128020822023602d8022002450d02200620012902002213a7460d04200141106a2101200341106b22030d000b0b2000200536028c03200041d8026a210441000c010b200141106a0b210120042001360200410021024100210641030c010b2000200141106a36028c032013422888a72106200128020c21012013422088a70b210320004188036a10422002450c060b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220629030037030020004190036a2209200041e0026a220b290300370300200020002903d80237038803200041206a20004188036a1022410021010240027f024002402000280220450d0020002802242104200041a0036a200041f0026a290300370300200220062903003703002009200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2003104e20002802182106200028021c200a2003100a210b4104210120034180014d0440200041b8026a200028029c0220002802a002104d200020002802bc02220136029403200020002802b802360288032000200120002802c002220941047422026a220c3602900302402009044020004188036a4104722109034020002001280208220d3602b802200d450d0520012802002005460d02200141106a2101200241106b22020d000b0b2000200c36028c03200041b8026a210941000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a101e0b41012102200141ff01714107460d020c150b200141106a0b21012009200136020020004188036a2201104220004194036a2202200336020020004190036a2209200b3602002000200636028c03200020053602880320004198026a22062001101d2004200028029c0220002802a00210242000419c036a200336020020004198036a200a3602002002200741ffff0371200841107472360200200920053602002000200436028c032000410136028803200110512006101e0b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c120b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2204200041e8026a220229030037030020004190036a2206200041e0026a220b290300370300200020002903d80237038803200041306a20004188036a10224100210102402000280230450d0020002802342109200041a0036a200041f0026a290300370300200420022903003703002006200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220b3602a0022000200236029c02200020013a009802200041286a2003104e2000280228210e200028022c200a2003100a210f024020034180014d0440200041b8026a200028029c02221020002802a0022211104d200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422126a220d36029003027f024002402001450d00410021014100210603402001200c6a220441086a280200044020042802002005460d03200641016a21062012200141106a2201470d010c020b0b200441106a210d0b2000200d36028c034100210241030c010b2000200441106a36028c032006200b4f0d05200120026a220120053602002001410c6a2003360200200141086a200f360200200141046a200e3602004101210241070b210120004188036a10422002450d0120092010201110242000419c036a200336020020004198036a200a36020020004194036a200741ffff037120084110747236020020004190036a20053602002000200936028c03200041023602880320004188036a105120004198026a101e0c120b410421010b20004198026a101e0b41012102200141ff01714107460d0f0c110b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2204200041e0026a2202290300370300200020002903d80237038803200041386a20004188036a10222000280238047f200028023c2107200041a0036a200041f0026a2903003703002001200329030037030020042002290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022203450d07200020002d00bb023a009b02200020002f00b9023b0099022000200336029c02200020013a009802024020002802c00222060440410021022003210103402005200128020046044041012104200241016a220104402001200647044003400240024002402005200320014104746a2202280200460440200141016a2201450d01200441016a22040d0341a08104411c41f484041013000b20012004490d012003200120046b4104746a22082002290200370200200841086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012006470d000b0b024020044100200420064b1b450440200420064d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200620046b22013602a0022004450d04200720032001102420004190036a20053602002000200736028c03200041033602880320004188036a105120004198026a101e0c0d0b41a08104411c41e484041013000b200141106a21012006200241016a2202470d000b0b200020063602a0020b20004198026a101e41030541000b2101410121020c100b2006200b41b488041061000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c887041020000b41002106410121034100210241010b20004194036a200136020020004190036a200236020020004100360288032000200341ff017120064108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a2802002205044020014100102f20052003410c6a2802002001104b0c020b20014101102f200120032d0004102f0c010b20014101102f200110300b20012802081044105e000b20004188036a2107230041f0006b22022400200041f0016a22012802242103200220013602202002200336021c20024100360218200241386a200241186a101602400240024002400240024020022802404504402007410036020820074280808080c0003702000c010b200241106a4104103820022802142203450d01200228021022014100480d012001200310392206450d0220062002290338370200200641106a200241c8006a220a280200360200200641086a200241406b2209290300370200200241306a200241206a28020036020020022002290318370328200241386a200241286a10160240200228024045044041042103410121040c010b41042101410121050340200541016a22044521080240200120054704402006200541146c6a22032002290338370200200341106a200a280200360200200341086a200929030037020020080d08200121030c010b027f20080440417f21032004210541000c010b200120016a22032001490d07200241086a410420032004200320044b1b2203200341044d1b22031038200228020c210b200228020821052002200110382002200636026020022002290300370264200241d0006a2005200b200241e0006a103a2002280250450440200228025421064181808080780c010b200228025421052001210320022802580b210b2005200b103b2006200141146c6a22012002290338370200200141106a200a280200360200200141086a200929030037020020080d070b200241386a200241286a1016200321012004210520022802400d000b0b2007200436020820072006360204200720033602000b200241f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321032000280290032104230041106b22012400200142808001370204200141d4b40436020002402003044020014100102f20042001104c2004450d012003200441146c6a21040340200328020020011019200341046a20011027200341146a22032004470d000b0c010b20014101102f200110300b0c0c0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1022200020002802102206410146047e42810c05200041003602c00220004280808080c0003703b8022002410441001024200041a0036a200041f0026a22072903003703002001200329030037030020052004290300370300200020002903d8023703880320004188036a22012002102a2002200041d8026a10282000200241016a2205417f20051b36029002200041a4036a20072903003702002000419c036a200329030037020020004194036a2004290300370200200041ac036a2002360200200020002903d80237028c03200041003602880320011051200041b8026a101e2001200041f0016a4128100a1a2001105c2002ad42208642800c840b37038803200641014620004188036a105a000b41012102200141ff01714107470d090b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c080b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2203200041e8026a220429030037030020004190036a2205200041e0026a2202290300370300200020002903d80237038803200041406b20004188036a102220002802402206047f20002802442101200041a0036a200041f0026a2903003703002003200429030037030020052002290300370300200020002903d8023703880320004188036a2203102b41e081042001105d41dc81042001105d20004104360288032000200136028c03200310512003200041f0016a4128100a1a2003105c41070541000b210120064520011059000b200041b0026a200041e8016a290300370300200020093602a402200020033602a0022000200a36029c02200020002903e0013703a8022000200741ffff037120084110747236029802200041b8026a103520004188036a41e481042005105b20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106241017321020b20004188036a2005103f027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1062410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103e410620002802504101460d011a200041a0036a2203200041f0026a29030037030020004198036a2204200041e8026a29030037030020004190036a2202200041e0026a290300370300200020002903d8023703880320004188036a2201102b2003200041b0026a2903003703002004200041a8026a2903003703002002200041a0026a29030037030020002000290398023703880320012005102a200520004198026a10282001200041f0016a4128100a1a2001105c4107210141000c020b41000b210141010b20011059000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a418083041020000b200041d7026a200041e8016a2d00003a0000200020093600cb02200020033600c7022000200a3600c302200020053600bb022000200b3b00b9022000200c3a00b802200020002903e0013700cf022000200741ffff03712008411074723600bf02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a29030037030020004190036a2203200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a102220002802482204047f41e48104200028024c2205200041b8026a1029200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000410836028803200320002903b8023703002001200041c0026a2903003703002000200536028c0320004188036a220110512001200041f0016a4128100a1a2001105c41070541000b210120044520011059000b200041d8026a2203103541002101027f02402003200041f0016a10620440200041b8026a2005101720002802bc020d01410321010b41010c010b41e881042005105d4107210120004107360288032000200536028c0320004188036a220310512003200041f0016a4128100a1a2003105c41000b20011059000b200041d8026a22011035027f027f41002001200041f0016a1062450d001a20004188036a20051017200028028c0322010440200020002f0089033b00b902200020002d008b033a00bb02200020002903900322133703c002200020013602bc02200020002d0088033a00b8020240024002402003044020094180014b0d01200020093602c002200020033602bc022000200a3602b8020b200741ffff03714101460d012013422088a721080c020b41050c030b200020083b01c4020b2005200041b8026a102620004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20083b01002000200536028c03200041063602880320004188036a220110512001200041f0016a4128100a1a2001105c4107210141000c020b41030b210141010b20011059000b200020033602c4022000200a3602c002200020053602b8022000200741ffff03712008411074723602bc02200041d8026a22011035027f02402001200041f0016a1062044042800a2113200a418101490d010b4201211441010c010b2004200041b8026a10262000200441016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20033b01002000200436028c03200041053602880320004188036a220110512001200041f0016a4128100a1a2004ad42208621152001105c4200211341000b2000201342800e832014842015843703880320004188036a105a000b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c010b20004184ae0436029803200041003602880320004188036a418c8e041020000b200220011059000b410020012802081044105e000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1022024020022802080440200241106a200228020c10182002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a20021020000b0b00200020014120100b450bc708020e7f017e23004180016b22002400024002400240024002400240103741ff01712201410546044020004180800136024841d4b404200041c8006a22011002200041106a200028024841d4b4044180800141b0860410142000200029031037037020004100360248200041f0006a2001410410110d032000280248220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041206a22011035200042003703400c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041086a200041f0006a100c20002802080d03200041206a20002802744104762201200028020c220220012002491b101b2002450d010340200041c8006a200041f0006a102102400240200028024c220304402000290350210e20002802482107200028022822012000280220460d010c020b200041206a101e0c060b200041206a2001104a200028022821010b2000280224220520014104746a2204200e3702082004200336020420042007360200200141016a2203044020002003360228200241016b22020d010c040b0b41a08104411c41d095041013000b200020013a0048200041c8006a1046000b20002802282103200028022421050b2000411e6a220120002d00233a0000200020002f00213b011c2005450d0020002d002021042000411a6a20012d000022013a0000200020002f011c22023b0118200020043a0070200020023b0071200020013a00732000200336027820002005360274200041c8006a2003101b2000280248220720002802502201490d01200028024c210402402003452001200746720d00200420014104746a210a200120076b41016a2102200341047441106b210b410021010340200120056a220841046a28020021062000200841086a2802002209104e2000280200210c200028020420062009100a210d2001200a6a2206410c6a2008410c6a2f01003b0100200641086a2009360200200641046a200d3602002006200c3602002002450d01200241016a21022001200b47200141106a21010d000b0b02402003450d0020034104742102410021052004210103402001280204450d01200041286a200141086a290200220e37030020002001290200370320200ea74181014f0d04200141106a21012005200041206a1026200541016a2105200241106b22020d000b0b200720041040200041206a220110352000200336024420004100360240200041f0006a101e0c030b1058000b41808004412141b485041013000b200041d4006a4101360200200041dc006a4100360200200041848f0436025020004184ae0436025820004100360248200041c8006a418c8f041020000b200041c8006a220420014128100a1a2004105c230041106b22012400200142808001370204200141d4b40436020020014100102f20014100102f410020012802081044105e000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a419c8f04200241086a1065200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107b20032003290310370320200341086a2005200141046a107b20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002106a2004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10670c020b230041106b22042400200441086a200020034101106a2004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1064200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107220026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410750d02200341106a2001200920026b4101107620032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10770d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011076200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410750d00200220082006200128020c1101000d00200520022001107721000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011071200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041088010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010732206200020016a22082004417c716a200441037110736a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041074200328020c21052003280208210820032003280200200328020422002000417c714190a0041074200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107321020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021071200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107222024b0440200941086a2001200020026b4100107641012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107721000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1065200341206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041078200341c8006a200420032802502003280254107f20032802484101470d02200328024c21010c050b200341306a200420012000107f2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c041070200341386a200420032802402003280244107f410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107e20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410782002200020032802202003280224108001450d05200341186a200328026020032802702200200c10810120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108101200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a00410702003418c016a4101200328020020032802041080010541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011071200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041088010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1065200241206a24000b0b002000280200200110790b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107c450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107c0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107c21000b200241406b240020000b1500200020012002200341ccad0441e0ad041088010b1500200020012002200341e8b2044180b3041088010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a20021020000bf80102037f017e230041d0006b22042400200441106a22062001105320042903102107200441003602282004200737032020022802002002280204200441206a2205104b200520022802082003103320042004290320370310200441086a20062004280228101a20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b10232002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0bfd330700418080040bb10f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f00000059060000240000003b605e7d00e945ca6dbd73337733867eb16cd67c4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002a00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b206e616d6520697320746f6f206c6f6e676c07010018000000d106010038000000c6000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The `IdentityNo` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The `NetworkId` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The `Ss58Prefix` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The `NetworkId` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The `Ss58Prefix` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The `NetworkId` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the `IdentityInfo` of an identity that is associated with"," the provided `IdentityNo`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified `NetworkId`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a `NetworkId`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the `IdentityNo`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/artifacts/identity.json b/artifacts/identity.json new file mode 100644 index 0000000..bc6e89e --- /dev/null +++ b/artifacts/identity.json @@ -0,0 +1,2045 @@ +{ + "source": { + "hash": "0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90", + "language": "ink! 4.2.0", + "compiler": "rustc 1.68.0-nightly", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.0.1", + "rust_toolchain": "nightly-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "identity", + "version": "0.1.0", + "authors": [ + "Master Union " + ] + }, + "spec": { + "constructors": [ + { + "args": [], + "default": false, + "docs": [], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 9 + }, + "selector": "0x9bae9d5e" + }, + { + "args": [ + { + "label": "networks", + "type": { + "displayName": [ + "Vec" + ], + "type": 12 + } + } + ], + "default": false, + "docs": [], + "label": "init_with_networks", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 9 + }, + "selector": "0x056543ac" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 5 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 35 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 2 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 38 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 36 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 37 + } + }, + "events": [ + { + "args": [ + { + "docs": [ + " Owner of the created identity." + ], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [ + " The `IdentityNo` associated with the created identity." + ], + "indexed": false, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "docs": [ + "Events" + ], + "label": "IdentityCreated" + }, + { + "args": [ + { + "docs": [ + " The `IdentityNo` of the identity that got updated." + ], + "indexed": true, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "docs": [ + " The network on which a new address has been added." + ], + "indexed": false, + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "docs": [ + " The newly added address." + ], + "indexed": false, + "label": "address", + "type": { + "displayName": [ + "NetworkAddress" + ], + "type": 3 + } + } + ], + "docs": [], + "label": "AddressAdded" + }, + { + "args": [ + { + "docs": [ + " The `IdentityNo` of the identity that got updated." + ], + "indexed": true, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "docs": [ + " The network on which the address has been updated." + ], + "indexed": false, + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "docs": [ + " The updated address value." + ], + "indexed": false, + "label": "updated_address", + "type": { + "displayName": [ + "NetworkAddress" + ], + "type": 3 + } + } + ], + "docs": [], + "label": "AddressUpdated" + }, + { + "args": [ + { + "docs": [ + " The `IdentityNo` of the identity that got updated." + ], + "indexed": true, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "docs": [ + " The network on which the address has been removed." + ], + "indexed": false, + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "docs": [], + "label": "AddressRemoved" + }, + { + "args": [ + { + "docs": [ + " The `IdentityNo` of the identity that got removed." + ], + "indexed": true, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "docs": [], + "label": "IdentityRemoved" + }, + { + "args": [ + { + "docs": [ + " The `NetworkId` that is associated with the newly added network." + ], + "indexed": true, + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "docs": [ + " The name of the network name that got added." + ], + "indexed": false, + "label": "name", + "type": { + "displayName": [ + "String" + ], + "type": 7 + } + }, + { + "docs": [ + " The `Ss58Prefix` of the network that got added." + ], + "indexed": false, + "label": "ss58_prefix", + "type": { + "displayName": [ + "Ss58Prefix" + ], + "type": 8 + } + } + ], + "docs": [], + "label": "NetworkAdded" + }, + { + "args": [ + { + "docs": [ + " The `NetworkId` that is associated with the updated network." + ], + "indexed": true, + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "docs": [ + " The name of the updated network." + ], + "indexed": false, + "label": "name", + "type": { + "displayName": [ + "String" + ], + "type": 7 + } + }, + { + "docs": [ + " The `Ss58Prefix` of the updated network." + ], + "indexed": false, + "label": "ss58_prefix", + "type": { + "displayName": [ + "Ss58Prefix" + ], + "type": 8 + } + } + ], + "docs": [], + "label": "NetworkUpdated" + }, + { + "args": [ + { + "docs": [ + " The `NetworkId` that is associated with the network that got", + " removed." + ], + "indexed": true, + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "docs": [], + "label": "NetworkRemoved" + }, + { + "args": [ + { + "docs": [ + " The `IdentityNo` of the identity that set a recovery account." + ], + "indexed": true, + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "docs": [ + " The newly set recovery account." + ], + "indexed": false, + "label": "recovery_account", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "docs": [], + "label": "RecoveryAccountSet" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 11 + }, + "messages": [ + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the `IdentityInfo` of an identity that is associated with", + " the provided `IdentityNo`." + ], + "label": "identity", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 14 + }, + "selector": "0xcbfefbec" + }, + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the owner of an identity." + ], + "label": "owner_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x99720c1e" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the owner of an identity." + ], + "label": "identity_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 19 + }, + "selector": "0x713ca232" + }, + { + "args": [ + { + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the network name that is associated with the specified `NetworkId`." + ], + "label": "network_info_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 21 + }, + "selector": "0x3dffc61c" + }, + { + "args": [ + { + "label": "receiver", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the destination address of a transaction that needs to be", + " routed to the specified identity on the specified network." + ], + "label": "transaction_destination", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 23 + }, + "selector": "0x525505e4" + }, + { + "args": [], + "default": false, + "docs": [ + " A list of all the available networks each associated with a `NetworkId`." + ], + "label": "available_networks", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 26 + }, + "selector": "0xbd5ddfcd" + }, + { + "args": [], + "default": false, + "docs": [ + " Creates an identity and returns the `IdentityNo`.", + "", + " A user can only create one identity." + ], + "label": "create_identity", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 29 + }, + "selector": "0xfb893664" + }, + { + "args": [ + { + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "label": "address", + "type": { + "displayName": [ + "NetworkAddress" + ], + "type": 3 + } + } + ], + "default": false, + "docs": [ + " Adds an address for a given network" + ], + "label": "add_address", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0x71cc798d" + }, + { + "args": [ + { + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "label": "address", + "type": { + "displayName": [ + "NetworkAddress" + ], + "type": 3 + } + } + ], + "default": false, + "docs": [ + " Updates the address of the given network" + ], + "label": "update_address", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0x892f75e4" + }, + { + "args": [ + { + "label": "network", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Removes the address by network" + ], + "label": "remove_address", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0xdca7a60f" + }, + { + "args": [], + "default": false, + "docs": [ + " Removes an identity" + ], + "label": "remove_identity", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0x08026740" + }, + { + "args": [ + { + "label": "info", + "type": { + "displayName": [ + "NetworkInfo" + ], + "type": 13 + } + } + ], + "default": false, + "docs": [], + "label": "add_network", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 29 + }, + "selector": "0x97a3ee09" + }, + { + "args": [ + { + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + }, + { + "label": "new_prefix", + "type": { + "displayName": [ + "Option" + ], + "type": 33 + } + }, + { + "label": "new_name", + "type": { + "displayName": [ + "Option" + ], + "type": 34 + } + } + ], + "default": false, + "docs": [], + "label": "update_network", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0xcfbe8bcc" + }, + { + "args": [ + { + "label": "network_id", + "type": { + "displayName": [ + "NetworkId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [], + "label": "remove_network", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0x14b17dbe" + }, + { + "args": [ + { + "label": "recovery_account", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Sets the recovery account that will be able to change the ownership", + " of the identity.", + "", + " Only callable by the identity owner." + ], + "label": "set_recovery_account", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0xd3b93403" + }, + { + "args": [ + { + "label": "identity_no", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + }, + { + "label": "new_owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Transfers the ownership of an identity to another account.", + "", + " Only callable by the identity owner or any account that the identity", + " owner added as a proxy." + ], + "label": "transfer_ownership", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 31 + }, + "selector": "0x107e33ea" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x7d5e603b", + "ty": 0 + } + }, + "name": "addresses" + } + ], + "name": "IdentityInfo" + } + }, + "root_key": "0x7d5e603b" + } + }, + "name": "number_to_identity" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xca45e900", + "ty": 5 + } + }, + "root_key": "0xca45e900" + } + }, + "name": "owner_of" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x7cd66cb1", + "ty": 2 + } + }, + "root_key": "0x7cd66cb1" + } + }, + "name": "identity_of" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x3373bd6d", + "ty": 5 + } + }, + "root_key": "0x3373bd6d" + } + }, + "name": "recovery_account_of" + }, + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 2 + } + }, + "name": "latest_identity_no" + }, + { + "layout": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x7e863377", + "ty": 7 + } + }, + "name": "name" + }, + { + "layout": { + "leaf": { + "key": "0x7e863377", + "ty": 8 + } + }, + "name": "ss58_prefix" + } + ], + "name": "NetworkInfo" + } + }, + "root_key": "0x7e863377" + } + }, + "name": "network_info_of" + }, + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 5 + } + }, + "name": "admin" + }, + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 2 + } + }, + "name": "network_id_count" + } + ], + "name": "Identity" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "sequence": { + "type": 1 + } + } + } + }, + { + "id": 1, + "type": { + "def": { + "tuple": [ + 2, + 3 + ] + } + } + }, + { + "id": 2, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 3, + "type": { + "def": { + "sequence": { + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u16" + } + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 10 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 10 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "sequence": { + "type": 13 + } + } + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "name", + "type": 7, + "typeName": "String" + }, + { + "name": "ss58_prefix", + "type": 8, + "typeName": "Ss58Prefix" + } + ] + } + }, + "path": [ + "common", + "types", + "NetworkInfo" + ] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 15 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 15 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 16 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 16 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 16, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "addresses", + "type": 0, + "typeName": "Vec<(NetworkId, NetworkAddress)>" + } + ] + } + }, + "path": [ + "identity", + "types", + "IdentityInfo" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 20 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 20 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 21, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 22 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 22 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 22, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 13 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 23, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 24 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 24 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 24, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 25 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 25 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 25, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "NotAllowed" + }, + { + "index": 1, + "name": "IdentityDoesntExist" + }, + { + "index": 2, + "name": "AddressAlreadyAdded" + }, + { + "index": 3, + "name": "InvalidNetwork" + }, + { + "index": 4, + "name": "AddressSizeExceeded" + }, + { + "index": 5, + "name": "NetworkNameTooLong" + }, + { + "index": 6, + "name": "AlreadyIdentityOwner" + } + ] + } + }, + "path": [ + "identity", + "Error" + ] + } + }, + { + "id": 26, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 27 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 27 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 27, + "type": { + "def": { + "sequence": { + "type": 28 + } + } + } + }, + { + "id": 28, + "type": { + "def": { + "tuple": [ + 2, + 13 + ] + } + } + }, + { + "id": 29, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 30 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 30 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 30, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 25 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 25 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 31, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 32 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 32 + }, + { + "name": "E", + "type": 11 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 32, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 10 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 25 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 10 + }, + { + "name": "E", + "type": 25 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 33, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 8 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 34, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 7 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 7 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 35, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 36, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 37, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 38, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..db3b207 --- /dev/null +++ b/config.json @@ -0,0 +1,6 @@ +{ + "projectFiles": ["../dotflow-ink/contracts/**/*"], + "typechainGeneratedPath": "types", + "isWorkspace": true, + "workspacePath": "../dotflow-ink/" +} \ No newline at end of file diff --git a/local_network.toml b/local_network.toml new file mode 100644 index 0000000..dc4b79e --- /dev/null +++ b/local_network.toml @@ -0,0 +1,33 @@ +[relaychain] +default_command = "../bin/polkadot-v0.9.37" +default_args = [ "-lparachain=debug" ] + +chain = "rococo-local" + # relaychain nodes are by default validators + [[relaychain.nodes]] + name = "alice" + + [[relaychain.nodes]] + name = "bob" + + [[relaychain.nodes]] + name = "charlie" + + [[relaychain.nodes]] + name = "dave" + +[[parachains]] +id = 1000 +cumulus_based = true + + [parachains.collator] + name = "parachain-A-1000-collator-01" + command = "../bin/parachain-template-node-v0.9.37" + +[[parachains]] +id = 1001 +cumulus_based = true + + [parachains.collator] + name = "parachain-B-1001-collator-01" + command = "../bin/parachain-template-node-v0.9.37" diff --git a/package.json b/package.json index 4f4a08b..f63770f 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "dotflow-ui", "private": true, "scripts": { + "compile": "typechain-compiler --toolchain nightly-2023-01-04", "dev": "next dev", "start": "next start", "build": "next build", @@ -35,6 +36,8 @@ "sharp": "^0.32.1" }, "devDependencies": { + "@727-ventures/typechain-compiler": "^0.5.18", + "@727-ventures/typechain-types": "^1.1.0", "@babel/core": "^7.16.7", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 3394cbd..ab0fca2 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -1,38 +1,53 @@ +import { KeyringPair } from "@polkadot/keyring/types"; +import IdentityContract from "../../types/contracts/identity"; + class TransactionRouter { public static sendTokens( - sender: string, - originChain: string, + api: any, + contract: IdentityContract, + sender: KeyringPair, + originNetwork: number, receiver: string, - destinationChain: string, - token: string, + destinationNetwork: number, + token: string, amount: number ): any { - if(originChain == destinationChain && sender == receiver) { + if(originNetwork == destinationNetwork && sender.address == receiver) { throw new Error("Cannot send tokens to yourself"); } - - if(originChain == destinationChain) { - this.sendOnSameBlockchain(sender, receiver, originChain, token, amount); + if(originNetwork == destinationNetwork) { + this.sendOnSameBlockchain(api, contract, sender, receiver, originNetwork, token, amount); }else { - this.sendViaXcm(sender, originChain, receiver, destinationChain, token, amount); + this.sendViaXcm(sender, originNetwork, receiver, destinationNetwork, token, amount); } } - private static sendOnSameBlockchain( - sender: string, + private static async sendOnSameBlockchain( + api: any, + contract: IdentityContract, + sender: KeyringPair, receiver: string, - chain: string, + network: number, token: string, amount: number - ): any { - + ): Promise { + // Just a simple transfer. + const chainInfo = await api.registry.getChainProperties() + const receiverAddress = await contract.query.transactionDestination(receiver, network); + + const nativeToken = chainInfo.tokenSymbol.toString()? chainInfo.tokenSymbol.toString().toLowerCase() : "unit"; + + console.log(receiverAddress); + if(token == nativeToken) { + }else { + } } private static sendViaXcm( - sender: string, - originChain: string, + sender: KeyringPair, + originNetwork: number, receiver: string, - destinationChain: string, + destinationNetwork: number, token: string, amount: number ) { diff --git a/types/build-extrinsic/address_book.ts b/types/build-extrinsic/address_book.ts new file mode 100644 index 0000000..2566d5d --- /dev/null +++ b/types/build-extrinsic/address_book.ts @@ -0,0 +1,105 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type BN from 'bn.js'; +import type { ApiPromise } from '@polkadot/api'; + + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + + constructor( + nativeContract : ContractPromise, + apiPromise: ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__apiPromise = apiPromise; + } + /** + * identityContract + * + */ + "identityContract" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identityContract", [], __options); + } + + /** + * createAddressBook + * + */ + "createAddressBook" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "createAddressBook", [], __options); + } + + /** + * removeAddressBook + * + */ + "removeAddressBook" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeAddressBook", [], __options); + } + + /** + * addIdentity + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } nickname, + */ + "addIdentity" ( + identityNo: (number | string | BN), + nickname: string | null, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addIdentity", [identityNo, nickname], __options); + } + + /** + * removeIdentity + * + * @param { (number | string | BN) } identityNo, + */ + "removeIdentity" ( + identityNo: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeIdentity", [identityNo], __options); + } + + /** + * updateNickname + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } newNickname, + */ + "updateNickname" ( + identityNo: (number | string | BN), + newNickname: string | null, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNickname", [identityNo, newNickname], __options); + } + + /** + * identitiesOf + * + * @param { ArgumentTypes.AccountId } account, + */ + "identitiesOf" ( + account: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identitiesOf", [account], __options); + } + +} \ No newline at end of file diff --git a/types/build-extrinsic/identity.ts b/types/build-extrinsic/identity.ts new file mode 100644 index 0000000..6488f9a --- /dev/null +++ b/types/build-extrinsic/identity.ts @@ -0,0 +1,221 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type BN from 'bn.js'; +import type { ApiPromise } from '@polkadot/api'; + + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + + constructor( + nativeContract : ContractPromise, + apiPromise: ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__apiPromise = apiPromise; + } + /** + * identity + * + * @param { (number | string | BN) } identityNo, + */ + "identity" ( + identityNo: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identity", [identityNo], __options); + } + + /** + * ownerOf + * + * @param { (number | string | BN) } identityNo, + */ + "ownerOf" ( + identityNo: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "ownerOf", [identityNo], __options); + } + + /** + * identityOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + "identityOf" ( + owner: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identityOf", [owner], __options); + } + + /** + * networkInfoOf + * + * @param { (number | string | BN) } networkId, + */ + "networkInfoOf" ( + networkId: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "networkInfoOf", [networkId], __options); + } + + /** + * transactionDestination + * + * @param { (number | string | BN) } receiver, + * @param { (number | string | BN) } network, + */ + "transactionDestination" ( + receiver: (number | string | BN), + network: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "transactionDestination", [receiver, network], __options); + } + + /** + * availableNetworks + * + */ + "availableNetworks" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "availableNetworks", [], __options); + } + + /** + * createIdentity + * + */ + "createIdentity" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "createIdentity", [], __options); + } + + /** + * addAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + */ + "addAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addAddress", [network, address], __options); + } + + /** + * updateAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + */ + "updateAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateAddress", [network, address], __options); + } + + /** + * removeAddress + * + * @param { (number | string | BN) } network, + */ + "removeAddress" ( + network: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeAddress", [network], __options); + } + + /** + * removeIdentity + * + */ + "removeIdentity" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeIdentity", [], __options); + } + + /** + * addNetwork + * + * @param { ArgumentTypes.NetworkInfo } info, + */ + "addNetwork" ( + info: ArgumentTypes.NetworkInfo, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addNetwork", [info], __options); + } + + /** + * updateNetwork + * + * @param { (number | string | BN) } networkId, + * @param { (number | string | BN) | null } newPrefix, + * @param { string | null } newName, + */ + "updateNetwork" ( + networkId: (number | string | BN), + newPrefix: (number | string | BN) | null, + newName: string | null, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNetwork", [networkId, newPrefix, newName], __options); + } + + /** + * removeNetwork + * + * @param { (number | string | BN) } networkId, + */ + "removeNetwork" ( + networkId: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeNetwork", [networkId], __options); + } + + /** + * setRecoveryAccount + * + * @param { ArgumentTypes.AccountId } recoveryAccount, + */ + "setRecoveryAccount" ( + recoveryAccount: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "setRecoveryAccount", [recoveryAccount], __options); + } + + /** + * transferOwnership + * + * @param { (number | string | BN) } identityNo, + * @param { ArgumentTypes.AccountId } newOwner, + */ + "transferOwnership" ( + identityNo: (number | string | BN), + newOwner: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "transferOwnership", [identityNo, newOwner], __options); + } + +} \ No newline at end of file diff --git a/types/constructors/address_book.ts b/types/constructors/address_book.ts new file mode 100644 index 0000000..5b88358 --- /dev/null +++ b/types/constructors/address_book.ts @@ -0,0 +1,53 @@ +import {CodePromise} from "@polkadot/api-contract"; +import type {KeyringPair} from "@polkadot/keyring/types"; +import type {ApiPromise} from "@polkadot/api"; +import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; +import type {ConstructorOptions} from "@727-ventures/typechain-types"; +import type {WeightV2} from "@polkadot/types/interfaces"; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import { ContractFile } from '../contract-info/address_book'; +import type BN from 'bn.js'; + +export default class Constructors { + readonly nativeAPI: ApiPromise; + readonly signer: KeyringPair; + + constructor( + nativeAPI: ApiPromise, + signer: KeyringPair, + ) { + this.nativeAPI = nativeAPI; + this.signer = signer; + } + + /** + * new + * + * @param { ArgumentTypes.AccountId } identityContract, + */ + async "new" ( + identityContract: ArgumentTypes.AccountId, + __options ? : ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + + const storageDepositLimit = __options?.storageDepositLimit; + const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, identityContract); + let response; + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + console.log(error); + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + }; + } +} \ No newline at end of file diff --git a/types/constructors/identity.ts b/types/constructors/identity.ts new file mode 100644 index 0000000..7887d46 --- /dev/null +++ b/types/constructors/identity.ts @@ -0,0 +1,81 @@ +import {CodePromise} from "@polkadot/api-contract"; +import type {KeyringPair} from "@polkadot/keyring/types"; +import type {ApiPromise} from "@polkadot/api"; +import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; +import type {ConstructorOptions} from "@727-ventures/typechain-types"; +import type {WeightV2} from "@polkadot/types/interfaces"; +import type * as ArgumentTypes from '../types-arguments/identity'; +import { ContractFile } from '../contract-info/identity'; +import type BN from 'bn.js'; + +export default class Constructors { + readonly nativeAPI: ApiPromise; + readonly signer: KeyringPair; + + constructor( + nativeAPI: ApiPromise, + signer: KeyringPair, + ) { + this.nativeAPI = nativeAPI; + this.signer = signer; + } + + /** + * new + * + */ + async "new" ( + __options ? : ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + + const storageDepositLimit = __options?.storageDepositLimit; + const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, ); + let response; + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + console.log(error); + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + }; + } + /** + * initWithNetworks + * + * @param { Array } networks, + */ + async "initWithNetworks" ( + networks: Array, + __options ? : ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + + const storageDepositLimit = __options?.storageDepositLimit; + const tx = code.tx["initWithNetworks"]!({ gasLimit, storageDepositLimit, value: __options?.value }, networks); + let response; + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + console.log(error); + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + }; + } +} \ No newline at end of file diff --git a/types/contract-info/address_book.ts b/types/contract-info/address_book.ts new file mode 100644 index 0000000..45d894c --- /dev/null +++ b/types/contract-info/address_book.ts @@ -0,0 +1,2 @@ +export const ContractAbi = `{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210036160000101010005000403050301010103010102010806030303050601060101010306050b0c030602030403030101010601030103010802010108020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c003f066465706c6f7900430916010041010b101c5b5a31404d664f63644e46484965500a8aa301602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a20012002410141ec800410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c41ccb004102320032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341fca9044180810410690b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341b4aa04360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e00200020012002419c9a04106a0bc50601067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241a481043602182002200129000037021c2002410036024820024280800137027c200241a0b10436027841eee7a015200241f8006a22071017200241186a4104722007101820022002290378370340200241106a200241406b2002280280011019200228021421042002280210210520022802402101200220022802442206360278200520042001200710002104200241086a20022802782001200641d486041014024002400240024002400240410c20042004410c4f1b0e0400050501050b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00410421032002280254410476220420022802042201200120044b1b22040440200441ffffff3f4b0d042004410474220741036a417c7122052007490d034198b104280200220320056a22062003490d05419cb1042802002006490440200541ffff036a22032005490d062003411076220640002203417f46200341ffff0371200347720d062003411074220320064110746a22062003490d06419cb1042006360200200320056a22062003490d060b4198b10420063602002003450d050b41002105200241003602602002200336025c2002200436025820010440200241f8006a41047221030340200241f8006a200241d0006a101a20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101b200141016b22010d000b2002280260210520022802582104200228025c21030b20030d010b200241003a005820024184016a41013602002002418c016a4101360200200241c8810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41b88204101d000b20002005360208200020033602042000200436020020024190016a24000f0b41e0a904411c41c4a9041013000b101e000b2007101f000b20024184016a41013602002002418c016a4100360200200241e4870436028001200241b4aa043602880120024100360278200241f8006a41ec8704101d000b2601017f230041106b220224002002200036020c20012002410c6a4104102a200241106a24000b0a00200120004120102a0b4501017f2002200128020422034b044041dcaa04412341d0ac041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d012004200310292004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741d4a2046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41a09204411c41c4a2041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10332002280200450d01200241086a280200450d022002280204101f000b41808404412141c48d041013000b200228020421032000200436020020002003360204200241206a24000c010b101e000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041e08304411c418092041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b4101210020012802002203418fae0441062001280204220528020c22041100000d0c024020012d00184104714504402003418c9404410120041100000d0e200341dcb00441052004110000450d010c0e0b2003418a9404410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241dcb0044105105e0d0d2002418894044102105e0d0d0b200341e192044101200411000021000c0c0b20012802004182ae04410d200128020428020c11000021000c0b0b200128020041f4ad04410e200128020428020c11000021000c0a0b200128020041e9ad04410b200128020428020c11000021000c090b200128020041cfad04411a200128020428020c11000021000c080b200128020041c1ad04410e200128020428020c11000021000c070b200128020041b1ad044110200128020428020c11000021000c060b200128020041a5ad04410c200128020428020c11000021000c050b2001280200419aad04410b200128020428020c11000021000c040b20012802004193ad044107200128020428020c11000021000c030b20012802004184ad04410f200128020428020c11000021000c020b200128020041f3ac044111200128020428020c11000021000c010b200128020041e0ac044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a00182002200136021420022000360210200241c0930436020c200241b4aa04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a36022041002100410421020240024002400240024003402000200020024180ab046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103620014100360218200120012903003703102001410136023c2001410236023420014180ab04360230200141003602282001200141206a360238200141106a200141286a10440d0141a0b1052d000045044041a1b1052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41f08b04411c41a0a7041013000b41c08f044133200141286a41b48c0441f09004102c000b41a0b10541013a00000b41a1b10541013a00000b000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041e88d04360210200041b4aa0436021820004100360208200041086a41f08d04101d000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141a08f04360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41b08f04101d000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341a481043602182003200029000037021c20034100360248200342808001370254200341a0b10436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102120032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102520010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021032200041106a22002001470d000b0b0bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041b8830410142003280208200328020c2001200241c8830410230b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a09d0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241fc8704101020014100360218200120012903083703104102200141106a10252002200220012802186a22044b044041e08304411c418c88041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410270c010b200041ffff004d0440200220004102744101723b010e20012002410e6a4102102a0c010b200041ffffffff034d04402000410274410272200110170c010b2001410310272000200110170b200241106a24000b08002000410110270ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a410636020020004194930436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a41b0ac04101d000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d012001101f000b101e000b2000200336020420002001360200200241106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241a0ac04102320002004360208200341106a24000f0b41c0aa04411c4180ac041013000b200420064190ac041015000ba70101017f230041306b2201240020014180800136020041a0b1042001100420014180800136022c200141a0b1043602282001200141286a102820012d00000440200141003a000041e4860441c100200141a4840441a88704102c000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541f4930436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101d000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241fc9904106a0b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c0a704360208200141003602002001410436021c200120003602182001200141186a360210200141f88a04101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c0a7043602102002410036020820024103360224200220002d0000410274220041f0b0046a28020036022c200220004184b1046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d0020004504402002410010270f0b20024101102720002001200210340b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d0120014198b104280200220620086a22072006490d031a2003280200210a419cb1042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d03419cb10420033602002001200620086a22072006490d041a0b4198b104200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41e0a904411c41c4a9041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1000200120021025200220002001102a0b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021036200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a20011029200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241a0b1043602002002410010272002200141ff0171410647047f20024101102720010541000b102720002002280208102e103a000b4601017f230041106b22022400200242808001370204200241a0b104360200024020014504402002410010270c010b200241011027200210260b20002002280208102e103a000ba20102057f017e230041306b2201240020014100360218200142808001370224200141a0b1043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041a0b1042001100a000bf60102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441c0ac04102f000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000bf80102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420042002280208411f102a20032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000ba52f020f7f017e230041b0036b22002400024002400240102d41ff017141054604402000418080013602e80141a0b104200041e8016a22011003200041a0016a20002802e80141a0b1044180800141d486041014200020002903a0013703b002200041003602e801200041b0026a2001410410110d0220002802e8012207411876210120074110762102200741087621030240024002400240024002400240200741ff0171220741076b0e020103000b2007411f460d0120074129460d04200741c800460d03200741e900470440200741830147200341ff017141b0014772200241ff017141e40047200141194772720d09200041e8016a200041b0026a101a20002802e8010d09200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410321010c080b200341ff0171410847200241ff0171411947722001412647720d08410021010c070b200341ff017141c10047200241ff0171411b4772200141af0147720d07410121010c060b200341ff017141e00147200241ff01714181014772200141ef0047720d06410221010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004198016a200041b0026a100e2000280298010d05200028029c012102410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041e8016a200041b0026a102820002d00e8010d032000200041fc016a2902003703f002200020004181026a2900003700f502200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec01210220002f01ea01210620002d00e901210c410621010c020b200041e8016a200041b0026a101a20002802e8010d02200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410521010c010b200041043a00e801200041e8016a1030000b200041b0016a200041f8026a290300370300200020002903f0023703a801200041003602f8022000428080013702ec01200041a0b1043602e8014100200041e8016a22071017200020002903e8013703f00220004190016a200041f0026a20002802f0011019200028029401210820002802900120002802f0022103200020002802f402220b3602e8012008200320071000210720004188016a20002802e8012003200b41d4860410140240024002400240410c20072007410c4f1b0e0401000002000b200041f4016a4101360200200041fc016a4100360200200041e487043602f001200041b4aa043602f801200041003602e801200041e8016a41ec8704101d000b200028028c01210320002000280288013602b002200020033602b402200041e8016a200041b0026a102820002d00e801450d01200041f4016a4101360200200041fc016a4100360200200041b08b043602f0010c030b200041f4016a4101360200200041fc016a4100360200200041d08b043602f0010c020b200041c0016a2203200041f2016a220b290100370300200041c8016a2208200041fa016a220d290100370300200041cf016a220a20004181026a220e290000370000200020002901ea013703b80120002d00e90121070240024002400240027f024002400240024002400240024002400240024002400240200141016b0e06040300020109050b200041b0026a102b20004180026a2203200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f40222010440200020002d00f3023a00db01200020002f00f1023b00d901200020002802f80222083602e001200020013602dc01200020002d00f0023a00d801200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a29000037000020004190026a420037030020004198026a4200370300200020073a00e801200020002903b8013700e901200041003602a802200042003703880220002002ad42208642cbfdefe70e843703a00220004100360298032000428080013702f402200041a0b1043602f002200041e8016a200041f0026a22031018200020002903f00237039003200041e8006a20004190036a220620002802f80210192000280268210a200029039003210f200041003602a8032000200f3703a003200042003703f802200042003703f002200041a0036a20034110102a200020002903a00337039003200041e0006a200620002802a80310192000280260210c200029039003210f200041003602f8022000200f3703f0022003200041a0026a4104102a200220031017200020002903f00237039003200041d8006a200620002802f8021019200028025c210b2000280258210d20002802900321062000200028029403220e3602f0024100200a4200200c200d200b2006200310022103200041d0006a20002802f0022006200e41d486041014410c20032003410c4f1b2203410d710d0620002802542103200020002802503602f002200020033602f402200041c8006a200041f0026a100d02400240024020002d00484101710d000240024020002d00490e020001020b200041386a200041f0026a100d20002d00384101710d014102210320002d0039220641024f0d0120060d030c120b200041406b200041f0026a100d20002d00404101710d0020002d00414101460d010b410021010c0f0b2000410136029003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041053602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41c88504101d000b20084104742103024003402003450d01200341106b210320012802002108200141106a210120022008470d000b410421030c0f0b200041e8016a200520041035024020002802ec01450d0020002802f0014111490d00410521030c0f0b200041f4016a2004360200200041f0016a22012005360200200020093602ec01200020023602e801200041d8016a200041e8016a2204101b20004180026a2203200041c8026a2205290300370300200041f8016a2206200041c0026a22092903003703002001200041b8026a2208290300370300200020002903b0023703e801200420002802dc0120002802e0011020200320052903003703002006200929030037030020012008290300370300200020002903b0023703e80120002002360288022000428080013702f402200041a0b1043602f002200041f0026a22021024200041e8026a2204200041f8026a2205280200360200200020002903f0023703e00220004190036a2206200041e0026a103c200029039003210f41002101200041003602f8022000200f3703f00241b4aa04410020021034200241c28904411a102a200020002903f00237039003200041306a200620002802f80210192002200028023020002802341022200041286a20002802e002220620002802e4022004280200220441fc87041010200041003602a803200020002903283703a0032002200041a0036a10182004200420002802a8036a22024b0d07200041d8026a2002360200200020063602e002200020002903e0023703d002200041213602a403200041dc89043602a0032000200041e8016a22023602a80320004190036a2204200041d0026a200041a0036a2206103b200041f0026a22092004103e200041a8036a2005280200360200200020002903f002220f3703a00320004180036a280200210420002802fc02200041003602f8022000200f3703f002200220091041200020002903f0023703a003200041206a200620002802f80210192004200028022020002802241007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a290000370000200020073a00e801200020002903b8013700e90120021039410621030c100b410121030c0e0b200041b0026a102b20004180026a200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f402220c450440410121060c0a0b20002802f802210a200041f0026a200520041035200041e8016a20002802f40220002802f8021035024020002802ec01450d0020002802f0014111490d00410521060c0a0b41032106200a450d09200a410474210b4100210141002103034020022001200c6a2208280200470440200341016a2103200141106a2201200b470d010c0b0b0b200841086a2802001a20082002360200200841046a20002903f0023702002008410c6a200041f8026a220328020036020020004180026a2201200041c8026a2206290300370300200041f8016a2208200041c0026a220b290300370300200041f0016a220d200041b8026a220e290300370300200020002903b0023703e801200041e8016a200c200a1020200120062903003703002008200b290300370300200d200e290300370300200020002903b0023703e801200020043602940220002005360290022000200936028c0220002002360288022000428080013702f402200041a0b1043602f002200041f0026a22011024200041e8026a22022003280200360200200020002903f0023703e00220004190036a2203200041e0026a103c200029039003210f200041003602f8022000200f3703f00241b4aa04410020011034200141fd8904411c102a200020002903f0023703900320004180016a200320002802f802101920012000280280012000280284011022200041f8006a20002802e002220320002802e4022002280200220241fc87041010200041003602a803200020002903783703a0032001200041a0036a10182002200220002802a8036a22014b0d06200041d8026a2001360200200020033602e002200020002903e0023703d002200041233602a403200041998a043602a0032000200041e8016a22013602a80320004190036a2202200041d0026a200041a0036a2203103b200041f0026a22042002103e200041a8036a200041f8026a280200360200200020002903f002220f3703a00320004180036a280200210220002802fc02200041003602f8022000200f3703f002200120041042200020002903f0023703a003200041f0006a200320002802f802101920022000280270200028027410072000280290021a200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200110394106210641000c0a0b200041f1016a2003290300370000200041f9016a200829030037000020004180026a200a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410041001038000b200041f0026a102b20004180026a220420004188036a2205290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a1016027f20002802b4022206044020004184026a2005290300370200200041fc016a20004180036a2209290300370200200041f4016a200041f8026a2208290300370200200020002903f0023702ec01200041a481043602e801200041003602a8032000428080013702b402200041a0b1043602b00241eee7a015200041b0026a22011017200041e8016a220241047220011018200020002903b0023703a003200041186a200041a0036a220320002802b80210192000280218200028021c10091a20042005290300370300200041f8016a2009290300370300200041f0016a2008290300370300200020002903f0023703e8012000428080013702b402200041a0b1043602b00220011024200041a8036a2205200041b8026a2209280200360200200020002903b0023703a0032001200341908904103d200041263602a4032000419c89043602a003200020023602a80320004190036a220820012003103b20012008103e20052009280200360200200020002903b002220f3703a003200041c0026a280200210520002802bc02200041003602b8022000200f3703b002200220011018200020002903b0023703a003200041106a200320002802b80210192005200028021020002802141007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002004200041cf016a290000370000200020073a00e801200020002903b8013700e9012002103941060c010b41010b210020064520001037000b200041f0026a102b20004180026a220220004188036a2201290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a101620002802b40222030440410021010c060b20022001290300370300200041f8016a20004180036a2202290300370300200041f0016a200041f8026a2204290300370300200020002903f0023703e801200041e8016a2205410441001020200041f1016a2004290300370000200041f9016a200229030037000020004181026a2001290300370000200041003a00e801200020002903f0023700e9012000428080013702b402200041a0b1043602b002200041b0026a22011024200041a8036a2204200041b8026a2206280200360200200020002903b0023703a0032001200041a0036a220941bc8804103d2000200541017222023602a803200041263602a403200041c888043602a00320004190036a220520012009103b20012005103e20042006280200360200200020002903b002220f3703a003200041c0026a280200210120002802bc02200041003602b8022000200f3703b0020240024002400240024020002d00e80141016b0e03010203000b200041b0026a2205410010272002200510180c030b200041b0026a2205410110272002200510180c020b200041b0026a220241021027200041e8016a410472200210410c010b200041b0026a220241031027200041e8016a410472200210420b200020002903b0023703a003200041086a200041a0036a20002802b802101920012000280208200028020c1007200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410621010c050b200b2003290300370100200d2008290300370100200e200a290000370000200020073a00e901200020002903b8013701ea01200041003a00e801230041106b22012400200142808001370204200141a0b1043602000240200041e8016a22002d0000450440200141001027200041016a200110180c010b200141011027200110260b41002001280208102e103a000b200341e0b0046a2d000021010c060b41e08304411c418c88041013000b41e08304411c418c88041013000b20004180026a20002900ad01370000200020043600f701200020053600f301200020093600ef01200020023600eb01200020063b00e9012000200c3a00e801200020002903a8013700fb01230041306b22012400200141286a200041e8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002104200041f0026a220320012802084100200128020422021b36020820032002410420021b36020420032004410020021b360200200141306a240020002802f402210120002802f8022102230041106b22002400200042808001370204200041a0b10436020002402001044020004100102720012002200010210c010b200041011027200010260b41002000280208102e103a000b200341004720011037000b41010b20061037000b200020013a009003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041013602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41d88504101d000b4101210120060d010b410121010b200120031037000b410141011038000b200041b4aa043602f801200041003602e801200041e8016a41f88a04101d000b180020012802004195ae044111200128020428020c1100000b11002000200110182000280220200110170b2500200020011018200028022020011017200041286a2802002000412c6a280200200110320be30202047f027e230041e0006b220024000240102d41ff01712201410546044020004180800136023841a0b104200041386a22011003200041086a200028023841a0b1044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102820002d0038450d020b410141011038000b200020013a0038200041386a1030000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a1039230041106b22002400200042808001370204200041a0b10436020020004100102720004100102741002000280208102e103a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41d88b04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041f08b04411c419092041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41f08b04411c418092041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103320042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41908c04412141c48d041013000b1f00024020014181808080784704402001450d012000101f000b0f0b101e000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d04404198b104280200220220056a22042002490d02419cb1042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d0241002103419cb1042004360200200220056a22042002490d030b4198b1042004360200200221030c020b41e0a904411c41c4a9041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e2206410174418b95046a2f00003b0000200241026b2004200641e4006c6b41ffff0371410174418b95046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff0371410174418b95046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a2002410174418b95046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041b4aa042104200241b4aa0441b4aa04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41a09204411c41d497041013000b41c09204412141b0a7041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341a8af0441c0920410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41b09b041055200328020c21052003280208210820032003280200200328020422002000417c7141c09c041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a09204411c41c89e041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a09204411c41f89e041013000b41a09204411c41d89e041013000b41a09204411c41e89e041013000b41a09204411c41b89e041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a09204411c41a0a7041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41dcaa04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a09204411c41e497041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41a09204411c4188a0041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041f898041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41c09204412141d8a5041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241a899041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041a09204411c41b899041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a2003280278200941044188a604105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a09204411c418899041013000b41a09204411c41e8a5041013000b41a09204411c41f8a5041013000b41a09204411c419899041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d012007418494044104200628020c110000450d010c020b41c0920441214198a0041013000b2003410a36028c0120082002047f200320002002200241016b41d09c0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341aca10441c0920410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041dcb0044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441d09304410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241e0930436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241e09304360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241a893043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341fca9044190aa0410690b1400200020012002200341a8af0441c0af0410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bcd300700418080040bd5032f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e72730000000001006a000000420000002600000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20a8000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273d0000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000480101006d0000009d00000011000000480101006d0000009d000000300041e083040bf41f617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000001000000010000000100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000480101006d0000006b0100000e000000480101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000480101006d000000ed00000017000000901501006e000000c100000037000000901501006e000000c40000000900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640034150100000000001c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f76656400000034150100000000006e04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656441646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e65722f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e72733c0501003c0000002f00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900880501002700000073746f7261676520656e7472792077617320656d70747900b8050100170000000b00000004000000040000000c0000000d0000000e000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300440601007f0000008a0100001c0000006361706163697479206f766572666c6f77000000d406010011000000440601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564007d07010015000000920701000d000000000701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000f30701007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300800801007f000000300700000d000000800801007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320620901002000000082090100120000003a0000003415010000000000a409010001000000a4090100010000000b00000000000000010000001000000070616e69636b65642061742027272c20dc09010001000000dd090100030000003a2000003415010000000000f009010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000530b01007e0000005d0500000d000000530b01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300f40b0100830000004e0000002f000000f40b0100830000005a0000001f000000f40b0100830000006300000009000000f40b0100830000006800000027000000f40b010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820c80c010012000000da0c01002200000072616e676520656e6420696e646578200c0d010010000000da0c0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000002c0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273c00d010080000000fe0300002f000000c00d010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028600e010015000000750e01002b00000061090100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273b80e0100800000004700000015000000b80e0100800000005400000011000000b80e0100800000005a00000009000000b80e0100800000006400000011000000b80e010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300880f01007f0000009100000011000000880f01007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000002810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e72730000bc10010086000000e5000000150000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101004196a4040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041d4a4040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300005412010082000000a1010000470000005412010082000000b4010000200000005412010082000000b4010000110000005412010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273181301008800000095000000010000000d0a01007e000000cd0100000500000034150100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730040140100830000002f010000180041e0a9040b51617474656d707420746f206164642077697468206f766572666c6f772617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041c0aa040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a34150100000000007f150100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000901501006e0000005a0000001c000000901501006e0000005a00000009000000901501006e0000005a00000031000000901501006e0000006500000009000000901501006e000000830000001a000000901501006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273261701008200000082010000470041c0af040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000e117010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000271401000b140100f5130100e1130100c81301","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/types/contract-info/identity.ts b/types/contract-info/identity.ts new file mode 100644 index 0000000..f90b989 --- /dev/null +++ b/types/contract-info/identity.ts @@ -0,0 +1,2 @@ +export const ContractAbi = `{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017e6000017f60017f017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003840182010101000000010601040306030000000003000000050200000000030300000003000503060500050000030005060a0002040008050000000005030b030502000000030003000000050300000303030800000305000008000302080201010302020403020502090604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005f066465706c6f7900630919010041010b0f1f7a79476c85016e820183016d66686984016f0ac8ed0182012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108701200120022003280208200328020c418cb404102d2003200220042006108701200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041088010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a360208200320021020000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d04108a010b9a0102067f017e230041206b220324000240024020012802002202200128020422044904402004200220022004491b2105200341086a410472210603402001200241016a2204360200200620021017200328021022070d02200422022005470d000b0b200041003602080c010b200335020c21082000200329021437020c2000200736020820002002ad2008422086843702000b200341206a24000b910302067f017e230041406a220224002002410036021820024280800137022c200241d4b40436022841f7e698f407200241286a2205101920012005101920022002290328370310200241086a200241106a2002280230101a200228020c210320022802082002280210210120022002280214220736022820032001200510002103200220022802282001200741b086041014024002400240410c20032003410c4f1b0e0401000002000b200241346a41013602002002413c6a4100360200200241c0870436023020024184ae0436023820024100360228200241286a41c887041020000b200228020021012002200228020436022420022001360220200241286a200241206a1021200228022c2204044020022903302108200228022821010c010b200241003a0020200241346a41013602002002413c6a410136020020024190820436023020024100360228200241013602142002200241106a3602382002200241206a360210200241286a418083041020000b200020083702082000200436020420002001360200200241406b24000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101a200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101b0240200104400340200241d8006a200241306a101c20022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a101d200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a101e0b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a418083041020000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b2601017f230041106b220224002002200036020c20012002410c6a41041033200241106a24000b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110322002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f20002802082202200028020046044020002002104a200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107d0d0d200241d897044102107d0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104e20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10640d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000b7802027f017e230041206b22022400200241106a2001104f0240200228021404402002290214210420022802102103200241086a2001104920022f010845044020022f010a21012000200437020420002003360200200020013b010c0c020b200041003602040c010b200041003602040b200241206a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241ec8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005102320022002290358370348200241186a200241c8006a2002280260101a200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a418083041020000b0a0020012000412010330bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101a200328020c21002003280208200329031021072003410036022820032007370320200120022004102520032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000b430020012002104c20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104b200041106a22002001470d000b0b0bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101a200228020c2100200228020820022903102106200241003602282002200637032020012003102720022002290320370310200220042002280228101a20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104b20002f010c200110340b0c0041e081042000200110290ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101a200328020c2100200328020820032903102106200341003602282003200637032020022004102320032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241ec81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003102320022002290350370340200241106a200241406b22042002280258101a20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101a20002002280208200228020c10071a200241e0006a24000bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141ec81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a41047220001023200120012903403703302001200141306a2001280248101a2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a20041020000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d8870410102001410036021820012001290308370310200141106a4108102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041061000b080020004101102f0b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003105020022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001086012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000b2601017f230041106b22022400200220003b010e20012002410e6a41021033200241106a24000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103120012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041020000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141089010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106b2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106b20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c091041020000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a418093041020000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a102220002002290308370300200241306a24000b910101017f230041d0006b22022400200241086a41e081042001105b20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a418083041020000b2000200241086a4121100a1a200241d0006a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101089010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d04108a010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e041020000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107c200241306a24000b0b002000280200200110190b4801027f230041106b22022400200241003b010e024020012002410e6a4102101145044020022f010e21010c010b410121030b200020013b0102200020033b0100200241106a24000bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002104c20022000200110330b50002000413f4d044020012000410274102f0f0b200041ffff004d04402000410274410172200110340f0b200041ffffffff034d04402000410274410272200110190f0b20014103102f2000200110190bed0101087f230041106b2206240020002002101b20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104e2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a20011050200228020c21012000200228020836020020002001360204200241106a24000bc60501097f230041106b2205240020052001103202402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106b200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041052200141f0006a220320001053200129037021052001410036028801200120053703800141ec880441202002104b200141286a410472200210232001200129038001370370200141106a2003200128028801101a200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a0012002200410232000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10540c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410552001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310562000200210540c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410572001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310562000200210540c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410572001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310562000200210540c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410522001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310562000200210540c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410552001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310562000200210540c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410572001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310562000200210540c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410572001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310562000200210540c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105320012903702105200141003602880120012005370380014184ae0441002002104b2002418c8d04411c10332001200129038001370370200141206a2003200128028801101a200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a10232000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105620014180016a200010540b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a22024100102f200141286a41047220021023200141cc006a280200200210190c080b20014180016a22024101102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c070b20014180016a22024102102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c060b20014180016a22024103102f200128022c20021019200141306a280200200210190c050b20014180016a22024104102f200128022c200210190c040b20014180016a22024105102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c030b20014180016a22024106102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c020b20014180016a22024107102f200128022c200210190c010b20014180016a22024108102f200128022c20021019200141306a200210230b20012001290380013703a0012001200141a0016a200128028801101a200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108b010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001086012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101a20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108b010bf90102037f017e230041d0006b22032400200341106a22052001105320032903102106200341003602282003200637032020022802002002280204200341206a2204104b20022802082802002004101920032003290320370310200341086a20052003280228101a20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b10232002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108b010b3501017f230041106b22002400200042808001370204200041d4b40436020020004101102f20001030410120002802081044105e000b4c01017f230041106b22022400200242808001370204200241d4b40436020020024100102f2002200141ff0171410747047f20024101102f20010541000b102f200020022802081044105e000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100102f200345044020024100102f2001280204200210190c020b20024101102f200220012d0001102f0c010b20024101102f200210300b200020022802081044105e000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101a200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c887041020000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103120032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101a200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002102320002802242002101920012001290320370310200120032001280228101a20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101a2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b9e4702137f037e230041b0036b22002400024002400240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d8016a20002802880341d4b4044180800141b086041014200020002903d8013703d8022000410036028803200041d8026a2001410410110d01200028028803220741187621012007411076210520074108762102024002400240024002400240027f02400240200741ff0171220741106b0e05040a0a0a01000b0240024002400240024002400240024002400240024020074197016b0e03091401000b0240200741cf016b0e050a1414140d000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200241ff01714189014772200541ff0171413647200141e4004772720d14410621010c150b200241ff017141fe0147200541ff017141fb014772200141ec0147720d13200041f8006a200041d8026a100e20002802780d13200028027c2204410876210641002107410021010c150b200241ff017141f20047200541ff0171410c47722001411e47720d1220004180016a200041d8026a100e2000280280010d122000280284012204410876210641010c0a0b200241ff01712203413c460d0f200341cc0147200541ff017141f90047722001418d0147720d1120004188036a200041d8026a101c200028029003220a450d11200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410721010c130b200241ff017141ff0147200541ff017141c60147722001411c47720d1020004188016a200041d8026a100e2000280288010d10200028028c012204410876210641030c080b200241ff017141d50047200541ff017141054772200141e40147720d0f20004198016a200041d8026a100e2000280298010d0f200028029c01210420004190016a200041d8026a100e2000280290010d0f2004410876210620002802940122074110762108410421010c110b200241ff017141dd0047200541ff017141df014772200141cd0147720d0e410521010c0f0b200241ff0171412f47200541ff017141f5004772200141e40147720d0d20004188036a200041d8026a101c200028029003220a450d0d200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410821010c0f0b200241ff017141a70147200541ff017141a60147722001410f47720d0c200041a0016a200041d8026a100e20002802a0010d0c20002802a4012204410876210641090c040b200241ff0171410247200541ff017141e7004772200141c00047720d0b410a21010c0c0b200241ff017141a30147200541ff017141ee0147722001410947720d0a20004188036a200041d8026a1021200028028c032207450d0a2007411076210820002f00890320002d008b034110747221062000280294032103200028029003210a20002d0088032104410b21010c0c0b200241ff017141be0147200541ff0171418b014772200141cc0147720d09200041c0016a200041d8026a100e20002802c0010d0920002802c4012104200041b8016a200041d8026a100d20002d00b8014101710d0920002d00b90122070e020605090b200241ff017141b10147200541ff017141fd004772200141be0147720d08200041c8016a200041d8026a100e20002802c8010d0820002802cc0122044108762106410d0b2101410021070c090b200241ff017141b90147200541ff0171413447720d0620014103460d010c060b200241ff017141fe0047200541ff017141334772200141ea0147720d05200041d0016a200041d8026a100e20002802d0010d0520002802d401210420004188036a200041d8026a103120002d0088030d05200041f8016a200041a1036a290000370300200020004199036a2900003703f001200028008903220741107621082004410876210620004195036a280000210920004191036a2800002103200028008d03210a410f21010c070b20004188036a200041d8026a103120002d0088030d04200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410e21010c060b200041b0016a200041d8026a104920002f01b0010d034101210720002f01b20121080b200041a8016a200041d8026a100d20002d00a8014101710d020240024020002d00a90122030e020100040b20004188036a200041d8026a104f200028028c032203450d032000280290032109200028028803210a0b20044108762106410c21010c040b200541ff017141a201472001413247720d0120004188036a200041d8026a103120002d0088030d01200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410221010c030b200041043a00880320004188036a1046000b1058000b410021070b200041e8016a200041f8016a290300370300200020002903f0013703e001200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2202101920002000290388033703b802200041f0006a200041b8026a200028029003101a2000280274210d200028027020002802b8022105200020002802bc02220f36028803200d2005200210002102200041e8006a2000280288032005200f41b08604101402400240024002400240024002400240024002400240024002400240027f02400240024002400240410c20022002410c4f1b0e0400030301030b200028026c210520002000280268360298022000200536029c02200041e0006a20004198026a100e024020002802600d002000280264210220004188036a20004198026a103120002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a220f200041a1036a2900003700002000200029018a033703d80220002d0089032110200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c100b20004194036a41013602002000419c036a4100360200200041e48e04360290030c0f0b200441ff01712006410874722105200028025c210420004188026a200f29000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200236029002200020103a00f0012000200436029402024002400240024002400240024002400240200141016b0e0f010203040c0d050607101514131211000b200041d8026a2005101820004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a280200220445044020014100102f0c020b20014101102f20042003410c6a280200200110250c010b20014101102f200110300b0c180b200041d8026a22032005103f20004188036a220141017220034121100a1a200041003a008803230041106b22032400200342808001370204200341d4b404360200024020012d000045044020034100102f20012d000145044020034100102f0c020b20034101102f200141026a200310230c010b20034101102f200310300b410020032802081044105e000b200041a7036a200041e8016a2d00003a00002000200936009b0320002003360097032000200a360093032000200536008b032000200b3b0089032000200c3a008803200020002903e00137009f032000200741ffff037120084110747236008f03230041306b22012400200141286a20004188036a220341186a290000370300200141206a200341106a290000370300200141186a200341086a29000037030020012003290000370310200141086a200141106a103e200041086a2001290308370300200141306a240020002802082103200028020c2104230041106b22012400200142808001370204200141d4b40436020020014100102f0240200345044020014100102f0c010b20014101102f2004200110190b0c160b200041d8026a2005101720004194036a200041e0026a290300370200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a28020045044020014100102f0c020b20014101102f200341046a200110270c010b20014101102f200110300b0c150b20004188036a20051018200028028c032201450d052000280290032104200020002802880336028803200020013602940320002001200441047422036a220536029003027f0240027f024020040440200741ffff0371200841107472210620004188036a410472210403402000200128020822023602d8022002450d02200620012902002213a7460d04200141106a2101200341106b22030d000b0b2000200536028c03200041d8026a210441000c010b200141106a0b210120042001360200410021024100210641030c010b2000200141106a36028c032013422888a72106200128020c21012013422088a70b210320004188036a10422002450c060b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220629030037030020004190036a2209200041e0026a220b290300370300200020002903d80237038803200041206a20004188036a1022410021010240027f024002402000280220450d0020002802242104200041a0036a200041f0026a290300370300200220062903003703002009200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2003104e20002802182106200028021c200a2003100a210b4104210120034180014d0440200041b8026a200028029c0220002802a002104d200020002802bc02220136029403200020002802b802360288032000200120002802c002220941047422026a220c3602900302402009044020004188036a4104722109034020002001280208220d3602b802200d450d0520012802002005460d02200141106a2101200241106b22020d000b0b2000200c36028c03200041b8026a210941000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a101e0b41012102200141ff01714107460d020c150b200141106a0b21012009200136020020004188036a2201104220004194036a2202200336020020004190036a2209200b3602002000200636028c03200020053602880320004198026a22062001101d2004200028029c0220002802a00210242000419c036a200336020020004198036a200a3602002002200741ffff0371200841107472360200200920053602002000200436028c032000410136028803200110512006101e0b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c120b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2204200041e8026a220229030037030020004190036a2206200041e0026a220b290300370300200020002903d80237038803200041306a20004188036a10224100210102402000280230450d0020002802342109200041a0036a200041f0026a290300370300200420022903003703002006200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220b3602a0022000200236029c02200020013a009802200041286a2003104e2000280228210e200028022c200a2003100a210f024020034180014d0440200041b8026a200028029c02221020002802a0022211104d200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422126a220d36029003027f024002402001450d00410021014100210603402001200c6a220441086a280200044020042802002005460d03200641016a21062012200141106a2201470d010c020b0b200441106a210d0b2000200d36028c034100210241030c010b2000200441106a36028c032006200b4f0d05200120026a220120053602002001410c6a2003360200200141086a200f360200200141046a200e3602004101210241070b210120004188036a10422002450d0120092010201110242000419c036a200336020020004198036a200a36020020004194036a200741ffff037120084110747236020020004190036a20053602002000200936028c03200041023602880320004188036a105120004198026a101e0c120b410421010b20004198026a101e0b41012102200141ff01714107460d0f0c110b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2204200041e0026a2202290300370300200020002903d80237038803200041386a20004188036a10222000280238047f200028023c2107200041a0036a200041f0026a2903003703002001200329030037030020042002290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022203450d07200020002d00bb023a009b02200020002f00b9023b0099022000200336029c02200020013a009802024020002802c00222060440410021022003210103402005200128020046044041012104200241016a220104402001200647044003400240024002402005200320014104746a2202280200460440200141016a2201450d01200441016a22040d0341a08104411c41f484041013000b20012004490d012003200120046b4104746a22082002290200370200200841086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012006470d000b0b024020044100200420064b1b450440200420064d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200620046b22013602a0022004450d04200720032001102420004190036a20053602002000200736028c03200041033602880320004188036a105120004198026a101e0c0d0b41a08104411c41e484041013000b200141106a21012006200241016a2202470d000b0b200020063602a0020b20004198026a101e41030541000b2101410121020c100b2006200b41b488041061000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c887041020000b41002106410121034100210241010b20004194036a200136020020004190036a200236020020004100360288032000200341ff017120064108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a2802002205044020014100102f20052003410c6a2802002001104b0c020b20014101102f200120032d0004102f0c010b20014101102f200110300b20012802081044105e000b20004188036a2107230041f0006b22022400200041f0016a22012802242103200220013602202002200336021c20024100360218200241386a200241186a101602400240024002400240024020022802404504402007410036020820074280808080c0003702000c010b200241106a4104103820022802142203450d01200228021022014100480d012001200310392206450d0220062002290338370200200641106a200241c8006a220a280200360200200641086a200241406b2209290300370200200241306a200241206a28020036020020022002290318370328200241386a200241286a10160240200228024045044041042103410121040c010b41042101410121050340200541016a22044521080240200120054704402006200541146c6a22032002290338370200200341106a200a280200360200200341086a200929030037020020080d08200121030c010b027f20080440417f21032004210541000c010b200120016a22032001490d07200241086a410420032004200320044b1b2203200341044d1b22031038200228020c210b200228020821052002200110382002200636026020022002290300370264200241d0006a2005200b200241e0006a103a2002280250450440200228025421064181808080780c010b200228025421052001210320022802580b210b2005200b103b2006200141146c6a22012002290338370200200141106a200a280200360200200141086a200929030037020020080d070b200241386a200241286a1016200321012004210520022802400d000b0b2007200436020820072006360204200720033602000b200241f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321032000280290032104230041106b22012400200142808001370204200141d4b40436020002402003044020014100102f20042001104c2004450d012003200441146c6a21040340200328020020011019200341046a20011027200341146a22032004470d000b0c010b20014101102f200110300b0c0c0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1022200020002802102206410146047e42810c05200041003602c00220004280808080c0003703b8022002410441001024200041a0036a200041f0026a22072903003703002001200329030037030020052004290300370300200020002903d8023703880320004188036a22012002102a2002200041d8026a10282000200241016a2205417f20051b36029002200041a4036a20072903003702002000419c036a200329030037020020004194036a2004290300370200200041ac036a2002360200200020002903d80237028c03200041003602880320011051200041b8026a101e2001200041f0016a4128100a1a2001105c2002ad42208642800c840b37038803200641014620004188036a105a000b41012102200141ff01714107470d090b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c080b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2203200041e8026a220429030037030020004190036a2205200041e0026a2202290300370300200020002903d80237038803200041406b20004188036a102220002802402206047f20002802442101200041a0036a200041f0026a2903003703002003200429030037030020052002290300370300200020002903d8023703880320004188036a2203102b41e081042001105d41dc81042001105d20004104360288032000200136028c03200310512003200041f0016a4128100a1a2003105c41070541000b210120064520011059000b200041b0026a200041e8016a290300370300200020093602a402200020033602a0022000200a36029c02200020002903e0013703a8022000200741ffff037120084110747236029802200041b8026a103520004188036a41e481042005105b20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106241017321020b20004188036a2005103f027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1062410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103e410620002802504101460d011a200041a0036a2203200041f0026a29030037030020004198036a2204200041e8026a29030037030020004190036a2202200041e0026a290300370300200020002903d8023703880320004188036a2201102b2003200041b0026a2903003703002004200041a8026a2903003703002002200041a0026a29030037030020002000290398023703880320012005102a200520004198026a10282001200041f0016a4128100a1a2001105c4107210141000c020b41000b210141010b20011059000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a418083041020000b200041d7026a200041e8016a2d00003a0000200020093600cb02200020033600c7022000200a3600c302200020053600bb022000200b3b00b9022000200c3a00b802200020002903e0013700cf022000200741ffff03712008411074723600bf02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a29030037030020004190036a2203200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a102220002802482204047f41e48104200028024c2205200041b8026a1029200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000410836028803200320002903b8023703002001200041c0026a2903003703002000200536028c0320004188036a220110512001200041f0016a4128100a1a2001105c41070541000b210120044520011059000b200041d8026a2203103541002101027f02402003200041f0016a10620440200041b8026a2005101720002802bc020d01410321010b41010c010b41e881042005105d4107210120004107360288032000200536028c0320004188036a220310512003200041f0016a4128100a1a2003105c41000b20011059000b200041d8026a22011035027f027f41002001200041f0016a1062450d001a20004188036a20051017200028028c0322010440200020002f0089033b00b902200020002d008b033a00bb02200020002903900322133703c002200020013602bc02200020002d0088033a00b8020240024002402003044020094180014b0d01200020093602c002200020033602bc022000200a3602b8020b200741ffff03714101460d012013422088a721080c020b41050c030b200020083b01c4020b2005200041b8026a102620004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20083b01002000200536028c03200041063602880320004188036a220110512001200041f0016a4128100a1a2001105c4107210141000c020b41030b210141010b20011059000b200020033602c4022000200a3602c002200020053602b8022000200741ffff03712008411074723602bc02200041d8026a22011035027f02402001200041f0016a1062044042800a2113200a418101490d010b4201211441010c010b2004200041b8026a10262000200441016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20033b01002000200436028c03200041053602880320004188036a220110512001200041f0016a4128100a1a2004ad42208621152001105c4200211341000b2000201342800e832014842015843703880320004188036a105a000b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c010b20004184ae0436029803200041003602880320004188036a418c8e041020000b200220011059000b410020012802081044105e000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1022024020022802080440200241106a200228020c10182002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a20021020000b0b00200020014120100b450bc708020e7f017e23004180016b22002400024002400240024002400240103741ff01712201410546044020004180800136024841d4b404200041c8006a22011002200041106a200028024841d4b4044180800141b0860410142000200029031037037020004100360248200041f0006a2001410410110d032000280248220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041206a22011035200042003703400c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041086a200041f0006a100c20002802080d03200041206a20002802744104762201200028020c220220012002491b101b2002450d010340200041c8006a200041f0006a102102400240200028024c220304402000290350210e20002802482107200028022822012000280220460d010c020b200041206a101e0c060b200041206a2001104a200028022821010b2000280224220520014104746a2204200e3702082004200336020420042007360200200141016a2203044020002003360228200241016b22020d010c040b0b41a08104411c41d095041013000b200020013a0048200041c8006a1046000b20002802282103200028022421050b2000411e6a220120002d00233a0000200020002f00213b011c2005450d0020002d002021042000411a6a20012d000022013a0000200020002f011c22023b0118200020043a0070200020023b0071200020013a00732000200336027820002005360274200041c8006a2003101b2000280248220720002802502201490d01200028024c210402402003452001200746720d00200420014104746a210a200120076b41016a2102200341047441106b210b410021010340200120056a220841046a28020021062000200841086a2802002209104e2000280200210c200028020420062009100a210d2001200a6a2206410c6a2008410c6a2f01003b0100200641086a2009360200200641046a200d3602002006200c3602002002450d01200241016a21022001200b47200141106a21010d000b0b02402003450d0020034104742102410021052004210103402001280204450d01200041286a200141086a290200220e37030020002001290200370320200ea74181014f0d04200141106a21012005200041206a1026200541016a2105200241106b22020d000b0b200720041040200041206a220110352000200336024420004100360240200041f0006a101e0c030b1058000b41808004412141b485041013000b200041d4006a4101360200200041dc006a4100360200200041848f0436025020004184ae0436025820004100360248200041c8006a418c8f041020000b200041c8006a220420014128100a1a2004105c230041106b22012400200142808001370204200141d4b40436020020014100102f20014100102f410020012802081044105e000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a419c8f04200241086a1065200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107b20032003290310370320200341086a2005200141046a107b20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002106a2004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10670c020b230041106b22042400200441086a200020034101106a2004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1064200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107220026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410750d02200341106a2001200920026b4101107620032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10770d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011076200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410750d00200220082006200128020c1101000d00200520022001107721000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011071200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041088010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010732206200020016a22082004417c716a200441037110736a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041074200328020c21052003280208210820032003280200200328020422002000417c714190a0041074200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107321020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021071200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107222024b0440200941086a2001200020026b4100107641012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107721000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1065200341206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041078200341c8006a200420032802502003280254107f20032802484101470d02200328024c21010c050b200341306a200420012000107f2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c041070200341386a200420032802402003280244107f410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107e20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410782002200020032802202003280224108001450d05200341186a200328026020032802702200200c10810120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108101200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a00410702003418c016a4101200328020020032802041080010541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011071200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041088010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1065200241206a24000b0b002000280200200110790b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107c450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107c0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107c21000b200241406b240020000b1500200020012002200341ccad0441e0ad041088010b1500200020012002200341e8b2044180b3041088010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a20021020000bf80102037f017e230041d0006b22042400200441106a22062001105320042903102107200441003602282004200737032020022802002002280204200441206a2205104b200520022802082003103320042004290320370310200441086a20062004280228101a20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b10232002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0bfd330700418080040bb10f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f00000059060000240000003b605e7d00e945ca6dbd73337733867eb16cd67c4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002a00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b206e616d6520697320746f6f206c6f6e676c07010018000000d106010038000000c6000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/types/contracts/address_book.ts b/types/contracts/address_book.ts new file mode 100644 index 0000000..e80d81b --- /dev/null +++ b/types/contracts/address_book.ts @@ -0,0 +1,107 @@ +/* This file is auto-generated */ + +import type { ApiPromise } from '@polkadot/api'; +import { Abi } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import { ContractPromise } from '@polkadot/api-contract'; +import { ContractAbi } from '../contract-info/address_book'; +import QueryMethods from '../query/address_book'; +import BuildExtrinsicMethods from '../build-extrinsic/address_book'; +import TxSignAndSendMethods from '../tx-sign-and-send/address_book'; +import MixedMethods from '../mixed-methods/address_book'; +import EventsClass from '../events/address_book'; + + +export default class Contract { + readonly query : QueryMethods; + readonly buildExtrinsic : BuildExtrinsicMethods; + readonly tx : TxSignAndSendMethods; + readonly methods : MixedMethods; + readonly events: EventsClass; + + readonly address : string; + readonly signer : KeyringPair; + + private nativeContract : ContractPromise; + private nativeAPI : ApiPromise; + private contractAbi: Abi; + + /** + * @constructor + + * @param address - The address of the contract. + * @param signer - The signer to use for signing transactions. + * @param nativeAPI - The API instance to use for queries. + */ + constructor( + address : string, + signer : KeyringPair, + nativeAPI : ApiPromise, + ) { + this.address = address; + this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); + this.nativeAPI = nativeAPI; + this.signer = signer; + this.contractAbi = new Abi(ContractAbi); + + this.query = new QueryMethods(this.nativeContract, this.nativeAPI, signer.address); + this.buildExtrinsic = new BuildExtrinsicMethods(this.nativeContract, this.nativeAPI); + this.tx = new TxSignAndSendMethods(nativeAPI, this.nativeContract, signer); + this.methods = new MixedMethods(nativeAPI, this.nativeContract, signer); + this.events = new EventsClass(this.nativeContract, nativeAPI); + } + + /** + * name + * + * @returns The name of the contract. + */ + get name() : string { + return this.nativeContract.abi.info.contract.name.toString(); + } + + /** + * abi + * + * @returns The abi of the contract. + */ + get abi() : Abi { + return this.contractAbi; + } + + /** + * withSigner + * + * @param signer - The signer to use for signing transactions. + * @returns New instance of the contract class with new signer. + * @example + * ```typescript + * const contract = new Contract(address, signerAlice, api); + * await contract.mint(signerBob.address, 100); + * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); + * ``` + */ + withSigner(signer : KeyringPair) : Contract { + return new Contract(this.address, signer, this.nativeAPI); + } + + /** + * withAddress + * + * @param address - The address of the contract. + * @returns New instance of the contract class to interact with new contract. + */ + withAddress(address : string) : Contract { + return new Contract(address, this.signer, this.nativeAPI); + } + + /** + * withAPI + * + * @param api - The API instance to use for queries. + * @returns New instance of the contract class to interact with new API. + */ + withAPI(api : ApiPromise) : Contract { + return new Contract(this.address, this.signer, api); + } +} \ No newline at end of file diff --git a/types/contracts/identity.ts b/types/contracts/identity.ts new file mode 100644 index 0000000..85277d2 --- /dev/null +++ b/types/contracts/identity.ts @@ -0,0 +1,107 @@ +/* This file is auto-generated */ + +import type { ApiPromise } from '@polkadot/api'; +import { Abi } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import { ContractPromise } from '@polkadot/api-contract'; +import { ContractAbi } from '../contract-info/identity'; +import QueryMethods from '../query/identity'; +import BuildExtrinsicMethods from '../build-extrinsic/identity'; +import TxSignAndSendMethods from '../tx-sign-and-send/identity'; +import MixedMethods from '../mixed-methods/identity'; +import EventsClass from '../events/identity'; + + +export default class Contract { + readonly query : QueryMethods; + readonly buildExtrinsic : BuildExtrinsicMethods; + readonly tx : TxSignAndSendMethods; + readonly methods : MixedMethods; + readonly events: EventsClass; + + readonly address : string; + readonly signer : KeyringPair; + + private nativeContract : ContractPromise; + private nativeAPI : ApiPromise; + private contractAbi: Abi; + + /** + * @constructor + + * @param address - The address of the contract. + * @param signer - The signer to use for signing transactions. + * @param nativeAPI - The API instance to use for queries. + */ + constructor( + address : string, + signer : KeyringPair, + nativeAPI : ApiPromise, + ) { + this.address = address; + this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); + this.nativeAPI = nativeAPI; + this.signer = signer; + this.contractAbi = new Abi(ContractAbi); + + this.query = new QueryMethods(this.nativeContract, this.nativeAPI, signer.address); + this.buildExtrinsic = new BuildExtrinsicMethods(this.nativeContract, this.nativeAPI); + this.tx = new TxSignAndSendMethods(nativeAPI, this.nativeContract, signer); + this.methods = new MixedMethods(nativeAPI, this.nativeContract, signer); + this.events = new EventsClass(this.nativeContract, nativeAPI); + } + + /** + * name + * + * @returns The name of the contract. + */ + get name() : string { + return this.nativeContract.abi.info.contract.name.toString(); + } + + /** + * abi + * + * @returns The abi of the contract. + */ + get abi() : Abi { + return this.contractAbi; + } + + /** + * withSigner + * + * @param signer - The signer to use for signing transactions. + * @returns New instance of the contract class with new signer. + * @example + * ```typescript + * const contract = new Contract(address, signerAlice, api); + * await contract.mint(signerBob.address, 100); + * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); + * ``` + */ + withSigner(signer : KeyringPair) : Contract { + return new Contract(this.address, signer, this.nativeAPI); + } + + /** + * withAddress + * + * @param address - The address of the contract. + * @returns New instance of the contract class to interact with new contract. + */ + withAddress(address : string) : Contract { + return new Contract(address, this.signer, this.nativeAPI); + } + + /** + * withAPI + * + * @param api - The API instance to use for queries. + * @returns New instance of the contract class to interact with new API. + */ + withAPI(api : ApiPromise) : Contract { + return new Contract(this.address, this.signer, api); + } +} \ No newline at end of file diff --git a/types/data/address_book.json b/types/data/address_book.json new file mode 100644 index 0000000..de8d769 --- /dev/null +++ b/types/data/address_book.json @@ -0,0 +1,3 @@ +{ +"0": {"name":"Array","body":{"0":{"name":"Tuple","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"1": {"name":"Tuple","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"2": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"3": {"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"4": {"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"5": {"name":"AccountId","body":"string | number[]","isResult":false,"isPrimitive":true,"isConvertable":false},"6": {"name":"Array","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"7": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"8": {"name":"Result; +} + +export interface AddressUpdated { + identityNo: number; + network: number; + updatedAddress: Array; +} + +export interface AddressRemoved { + identityNo: number; + network: number; +} + +export interface IdentityRemoved { + identityNo: number; +} + +export interface NetworkAdded { + networkId: number; + name: string; + ss58Prefix: number; +} + +export interface NetworkUpdated { + networkId: number; + name: string; + ss58Prefix: number; +} + +export interface NetworkRemoved { + networkId: number; +} + +export interface RecoveryAccountSet { + identityNo: number; + recoveryAccount: ReturnTypes.AccountId; +} + diff --git a/types/events/address_book.ts b/types/events/address_book.ts new file mode 100644 index 0000000..6e48fe5 --- /dev/null +++ b/types/events/address_book.ts @@ -0,0 +1,100 @@ +import type * as EventTypes from '../event-types/address_book'; +import type {ContractPromise} from "@polkadot/api-contract"; +import type {ApiPromise} from "@polkadot/api"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; +import {getEventTypeDescription} from "../shared/utils"; +import {handleEventReturn} from "@727-ventures/typechain-types"; + +export default class EventsClass { + private __nativeContract : ContractPromise; + private __api : ApiPromise; + + constructor( + nativeContract : ContractPromise, + api : ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__api = api; + } + + public subscribeOnAddressBookCreatedEvent(callback : (event : EventTypes.AddressBookCreated) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('AddressBookCreated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressBookCreated); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressBookCreated'); + } + + public subscribeOnAddressBookRemovedEvent(callback : (event : EventTypes.AddressBookRemoved) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('AddressBookRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressBookRemoved); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressBookRemoved'); + } + + public subscribeOnIdentityAddedEvent(callback : (event : EventTypes.IdentityAdded) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('IdentityAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityAdded); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityAdded'); + } + + public subscribeOnNickNameUpdatedEvent(callback : (event : EventTypes.NickNameUpdated) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('NickNameUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NickNameUpdated); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NickNameUpdated'); + } + + + private __subscribeOnEvent( + callback : (args: any[], event: any) => void, + filter : (eventName: string) => boolean = () => true + ) { + // @ts-ignore + return this.__api.query.system.events((events) => { + events.forEach((record: any) => { + const { event } = record; + + if (event.method == 'ContractEmitted') { + const [address, data] = record.event.data; + + if (address.toString() === this.__nativeContract.address.toString()) { + const {args, event} = this.__nativeContract.abi.decodeEvent(data); + + if (filter(event.identifier.toString())) + callback(args, event); + } + } + }); + }); + } + +} \ No newline at end of file diff --git a/types/events/identity.ts b/types/events/identity.ts new file mode 100644 index 0000000..b84a1d5 --- /dev/null +++ b/types/events/identity.ts @@ -0,0 +1,170 @@ +import type * as EventTypes from '../event-types/identity'; +import type {ContractPromise} from "@polkadot/api-contract"; +import type {ApiPromise} from "@polkadot/api"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; +import {getEventTypeDescription} from "../shared/utils"; +import {handleEventReturn} from "@727-ventures/typechain-types"; + +export default class EventsClass { + private __nativeContract : ContractPromise; + private __api : ApiPromise; + + constructor( + nativeContract : ContractPromise, + api : ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__api = api; + } + + public subscribeOnIdentityCreatedEvent(callback : (event : EventTypes.IdentityCreated) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('IdentityCreated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityCreated); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityCreated'); + } + + public subscribeOnAddressAddedEvent(callback : (event : EventTypes.AddressAdded) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('AddressAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressAdded); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressAdded'); + } + + public subscribeOnAddressUpdatedEvent(callback : (event : EventTypes.AddressUpdated) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('AddressUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressUpdated); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressUpdated'); + } + + public subscribeOnAddressRemovedEvent(callback : (event : EventTypes.AddressRemoved) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('AddressRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressRemoved); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressRemoved'); + } + + public subscribeOnIdentityRemovedEvent(callback : (event : EventTypes.IdentityRemoved) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('IdentityRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityRemoved); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityRemoved'); + } + + public subscribeOnNetworkAddedEvent(callback : (event : EventTypes.NetworkAdded) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('NetworkAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkAdded); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkAdded'); + } + + public subscribeOnNetworkUpdatedEvent(callback : (event : EventTypes.NetworkUpdated) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('NetworkUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkUpdated); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkUpdated'); + } + + public subscribeOnNetworkRemovedEvent(callback : (event : EventTypes.NetworkRemoved) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('NetworkRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkRemoved); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkRemoved'); + } + + public subscribeOnRecoveryAccountSetEvent(callback : (event : EventTypes.RecoveryAccountSet) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('RecoveryAccountSet', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.RecoveryAccountSet); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'RecoveryAccountSet'); + } + + + private __subscribeOnEvent( + callback : (args: any[], event: any) => void, + filter : (eventName: string) => boolean = () => true + ) { + // @ts-ignore + return this.__api.query.system.events((events) => { + events.forEach((record: any) => { + const { event } = record; + + if (event.method == 'ContractEmitted') { + const [address, data] = record.event.data; + + if (address.toString() === this.__nativeContract.address.toString()) { + const {args, event} = this.__nativeContract.abi.decodeEvent(data); + + if (filter(event.identifier.toString())) + callback(args, event); + } + } + }); + }); + } + +} \ No newline at end of file diff --git a/types/mixed-methods/address_book.ts b/types/mixed-methods/address_book.ts new file mode 100644 index 0000000..1519fb7 --- /dev/null +++ b/types/mixed-methods/address_book.ts @@ -0,0 +1,139 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type * as ReturnTypes from '../types-returns/address_book'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import DATA_TYPE_DESCRIPTIONS from '../data/address_book.json'; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __callerAddress : string; + private __apiPromise: ApiPromise; + + constructor( + apiPromise : ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + this.__callerAddress = keyringPair.address; + } + + /** + * identityContract + * + * @returns { Result } + */ + "identityContract" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options, (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * createAddressBook + * + * @returns { void } + */ + "createAddressBook" ( + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * removeAddressBook + * + * @returns { void } + */ + "removeAddressBook" ( + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addIdentity + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } nickname, + * @returns { void } + */ + "addIdentity" ( + identityNo: (number | string | BN), + nickname: string | null, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, nickname], __options); + } + + /** + * removeIdentity + * + * @param { (number | string | BN) } identityNo, + * @returns { void } + */ + "removeIdentity" ( + identityNo: (number | string | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo], __options); + } + + /** + * updateNickname + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } newNickname, + * @returns { void } + */ + "updateNickname" ( + identityNo: (number | string | BN), + newNickname: string | null, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, newNickname], __options); + } + + /** + * identitiesOf + * + * @param { ArgumentTypes.AccountId } account, + * @returns { Result, ReturnTypes.LangError> } + */ + "identitiesOf" ( + account: ArgumentTypes.AccountId, + __options: GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/types/mixed-methods/identity.ts b/types/mixed-methods/identity.ts new file mode 100644 index 0000000..b9f4d7c --- /dev/null +++ b/types/mixed-methods/identity.ts @@ -0,0 +1,274 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type * as ReturnTypes from '../types-returns/identity'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import DATA_TYPE_DESCRIPTIONS from '../data/identity.json'; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __callerAddress : string; + private __apiPromise: ApiPromise; + + constructor( + apiPromise : ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + this.__callerAddress = keyringPair.address; + } + + /** + * identity + * + * @param { (number | string | BN) } identityNo, + * @returns { Result } + */ + "identity" ( + identityNo: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * ownerOf + * + * @param { (number | string | BN) } identityNo, + * @returns { Result } + */ + "ownerOf" ( + identityNo: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * identityOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + "identityOf" ( + owner: ArgumentTypes.AccountId, + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options, (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * networkInfoOf + * + * @param { (number | string | BN) } networkId, + * @returns { Result } + */ + "networkInfoOf" ( + networkId: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options, (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * transactionDestination + * + * @param { (number | string | BN) } receiver, + * @param { (number | string | BN) } network, + * @returns { Result, ReturnTypes.Error>, ReturnTypes.LangError> } + */ + "transactionDestination" ( + receiver: (number | string | BN), + network: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.Error>, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options, (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * availableNetworks + * + * @returns { Result, ReturnTypes.LangError> } + */ + "availableNetworks" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options, (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * createIdentity + * + * @returns { void } + */ + "createIdentity" ( + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + * @returns { void } + */ + "addAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network, address], __options); + } + + /** + * updateAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + * @returns { void } + */ + "updateAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network, address], __options); + } + + /** + * removeAddress + * + * @param { (number | string | BN) } network, + * @returns { void } + */ + "removeAddress" ( + network: (number | string | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network], __options); + } + + /** + * removeIdentity + * + * @returns { void } + */ + "removeIdentity" ( + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addNetwork + * + * @param { ArgumentTypes.NetworkInfo } info, + * @returns { void } + */ + "addNetwork" ( + info: ArgumentTypes.NetworkInfo, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [info], __options); + } + + /** + * updateNetwork + * + * @param { (number | string | BN) } networkId, + * @param { (number | string | BN) | null } newPrefix, + * @param { string | null } newName, + * @returns { void } + */ + "updateNetwork" ( + networkId: (number | string | BN), + newPrefix: (number | string | BN) | null, + newName: string | null, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [networkId, newPrefix, newName], __options); + } + + /** + * removeNetwork + * + * @param { (number | string | BN) } networkId, + * @returns { void } + */ + "removeNetwork" ( + networkId: (number | string | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [networkId], __options); + } + + /** + * setRecoveryAccount + * + * @param { ArgumentTypes.AccountId } recoveryAccount, + * @returns { void } + */ + "setRecoveryAccount" ( + recoveryAccount: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [recoveryAccount], __options); + } + + /** + * transferOwnership + * + * @param { (number | string | BN) } identityNo, + * @param { ArgumentTypes.AccountId } newOwner, + * @returns { void } + */ + "transferOwnership" ( + identityNo: (number | string | BN), + newOwner: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, newOwner], __options); + } + +} \ No newline at end of file diff --git a/types/query/address_book.ts b/types/query/address_book.ts new file mode 100644 index 0000000..87bdc80 --- /dev/null +++ b/types/query/address_book.ts @@ -0,0 +1,121 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type * as ReturnTypes from '../types-returns/address_book'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +import DATA_TYPE_DESCRIPTIONS from '../data/address_book.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + private __callerAddress : string; + + constructor( + nativeContract : ContractPromise, + nativeApi : ApiPromise, + callerAddress : string, + ) { + this.__nativeContract = nativeContract; + this.__callerAddress = callerAddress; + this.__apiPromise = nativeApi; + } + + /** + * identityContract + * + * @returns { Result } + */ + "identityContract" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options , (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * createAddressBook + * + * @returns { Result, ReturnTypes.LangError> } + */ + "createAddressBook" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "createAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * removeAddressBook + * + * @returns { Result, ReturnTypes.LangError> } + */ + "removeAddressBook" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * addIdentity + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } nickname, + * @returns { Result, ReturnTypes.LangError> } + */ + "addIdentity" ( + identityNo: (number | string | BN), + nickname: string | null, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addIdentity", [identityNo, nickname], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * removeIdentity + * + * @param { (number | string | BN) } identityNo, + * @returns { Result } + */ + "removeIdentity" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(8, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * updateNickname + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } newNickname, + * @returns { Result, ReturnTypes.LangError> } + */ + "updateNickname" ( + identityNo: (number | string | BN), + newNickname: string | null, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNickname", [identityNo, newNickname], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * identitiesOf + * + * @param { ArgumentTypes.AccountId } account, + * @returns { Result, ReturnTypes.LangError> } + */ + "identitiesOf" ( + account: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options , (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/types/query/identity.ts b/types/query/identity.ts new file mode 100644 index 0000000..4f8480f --- /dev/null +++ b/types/query/identity.ts @@ -0,0 +1,246 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type * as ReturnTypes from '../types-returns/identity'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +import DATA_TYPE_DESCRIPTIONS from '../data/identity.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + private __callerAddress : string; + + constructor( + nativeContract : ContractPromise, + nativeApi : ApiPromise, + callerAddress : string, + ) { + this.__nativeContract = nativeContract; + this.__callerAddress = callerAddress; + this.__apiPromise = nativeApi; + } + + /** + * identity + * + * @param { (number | string | BN) } identityNo, + * @returns { Result } + */ + "identity" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * ownerOf + * + * @param { (number | string | BN) } identityNo, + * @returns { Result } + */ + "ownerOf" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * identityOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + "identityOf" ( + owner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options , (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * networkInfoOf + * + * @param { (number | string | BN) } networkId, + * @returns { Result } + */ + "networkInfoOf" ( + networkId: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options , (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * transactionDestination + * + * @param { (number | string | BN) } receiver, + * @param { (number | string | BN) } network, + * @returns { Result, ReturnTypes.Error>, ReturnTypes.LangError> } + */ + "transactionDestination" ( + receiver: (number | string | BN), + network: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.Error>, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options , (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * availableNetworks + * + * @returns { Result, ReturnTypes.LangError> } + */ + "availableNetworks" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options , (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * createIdentity + * + * @returns { Result, ReturnTypes.LangError> } + */ + "createIdentity" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "createIdentity", [], __options , (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * addAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + * @returns { Result, ReturnTypes.LangError> } + */ + "addAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addAddress", [network, address], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * updateAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + * @returns { Result, ReturnTypes.LangError> } + */ + "updateAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateAddress", [network, address], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * removeAddress + * + * @param { (number | string | BN) } network, + * @returns { Result, ReturnTypes.LangError> } + */ + "removeAddress" ( + network: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddress", [network], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * removeIdentity + * + * @returns { Result, ReturnTypes.LangError> } + */ + "removeIdentity" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * addNetwork + * + * @param { ArgumentTypes.NetworkInfo } info, + * @returns { Result, ReturnTypes.LangError> } + */ + "addNetwork" ( + info: ArgumentTypes.NetworkInfo, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addNetwork", [info], __options , (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * updateNetwork + * + * @param { (number | string | BN) } networkId, + * @param { (number | string | BN) | null } newPrefix, + * @param { string | null } newName, + * @returns { Result, ReturnTypes.LangError> } + */ + "updateNetwork" ( + networkId: (number | string | BN), + newPrefix: (number | string | BN) | null, + newName: string | null, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNetwork", [networkId, newPrefix, newName], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * removeNetwork + * + * @param { (number | string | BN) } networkId, + * @returns { Result, ReturnTypes.LangError> } + */ + "removeNetwork" ( + networkId: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeNetwork", [networkId], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * setRecoveryAccount + * + * @param { ArgumentTypes.AccountId } recoveryAccount, + * @returns { Result, ReturnTypes.LangError> } + */ + "setRecoveryAccount" ( + recoveryAccount: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "setRecoveryAccount", [recoveryAccount], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * transferOwnership + * + * @param { (number | string | BN) } identityNo, + * @param { ArgumentTypes.AccountId } newOwner, + * @returns { Result, ReturnTypes.LangError> } + */ + "transferOwnership" ( + identityNo: (number | string | BN), + newOwner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transferOwnership", [identityNo, newOwner], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/types/shared/utils.ts b/types/shared/utils.ts new file mode 100644 index 0000000..395aa48 --- /dev/null +++ b/types/shared/utils.ts @@ -0,0 +1,38 @@ +import fs from "fs"; +import type {ContractPromise} from "@polkadot/api-contract"; +import {handleEventReturn} from "@727-ventures/typechain-types"; + +export function getTypeDescription(id: number | string, types: any): any { + return types[id]; +} + +export function getEventTypeDescription(name: string, types: any): any { + return types[name]; +} + +export function decodeEvents(events: any[], contract: ContractPromise, types: any): any[] { + return events.filter((record: any) => { + const { event } = record; + + const [address, data] = record.event.data; + + return event.method == 'ContractEmitted' && address.toString() === contract.address.toString(); + }).map((record: any) => { + const [address, data] = record.event.data; + + const {args, event} = contract.abi.decodeEvent(data); + + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + handleEventReturn(_event, getEventTypeDescription(event.identifier.toString(), types)); + + return { + name: event.identifier.toString(), + args: _event, + }; + }); +} \ No newline at end of file diff --git a/types/tx-sign-and-send/address_book.ts b/types/tx-sign-and-send/address_book.ts new file mode 100644 index 0000000..0b16d5a --- /dev/null +++ b/types/tx-sign-and-send/address_book.ts @@ -0,0 +1,127 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type BN from 'bn.js'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __apiPromise: ApiPromise; + + constructor( + apiPromise: ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + } + + /** + * identityContract + * + */ + "identityContract" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityContract", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * createAddressBook + * + */ + "createAddressBook" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * removeAddressBook + * + */ + "removeAddressBook" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addIdentity + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } nickname, + */ + "addIdentity" ( + identityNo: (number | string | BN), + nickname: string | null, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, nickname], __options); + } + + /** + * removeIdentity + * + * @param { (number | string | BN) } identityNo, + */ + "removeIdentity" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo], __options); + } + + /** + * updateNickname + * + * @param { (number | string | BN) } identityNo, + * @param { string | null } newNickname, + */ + "updateNickname" ( + identityNo: (number | string | BN), + newNickname: string | null, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, newNickname], __options); + } + + /** + * identitiesOf + * + * @param { ArgumentTypes.AccountId } account, + */ + "identitiesOf" ( + account: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identitiesOf", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [account], __options); + } + +} \ No newline at end of file diff --git a/types/tx-sign-and-send/identity.ts b/types/tx-sign-and-send/identity.ts new file mode 100644 index 0000000..0c3a1e6 --- /dev/null +++ b/types/tx-sign-and-send/identity.ts @@ -0,0 +1,261 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type BN from 'bn.js'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __apiPromise: ApiPromise; + + constructor( + apiPromise: ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + } + + /** + * identity + * + * @param { (number | string | BN) } identityNo, + */ + "identity" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo], __options); + } + + /** + * ownerOf + * + * @param { (number | string | BN) } identityNo, + */ + "ownerOf" ( + identityNo: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "ownerOf", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo], __options); + } + + /** + * identityOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + "identityOf" ( + owner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityOf", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [owner], __options); + } + + /** + * networkInfoOf + * + * @param { (number | string | BN) } networkId, + */ + "networkInfoOf" ( + networkId: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "networkInfoOf", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [networkId], __options); + } + + /** + * transactionDestination + * + * @param { (number | string | BN) } receiver, + * @param { (number | string | BN) } network, + */ + "transactionDestination" ( + receiver: (number | string | BN), + network: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transactionDestination", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [receiver, network], __options); + } + + /** + * availableNetworks + * + */ + "availableNetworks" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "availableNetworks", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * createIdentity + * + */ + "createIdentity" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + */ + "addAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network, address], __options); + } + + /** + * updateAddress + * + * @param { (number | string | BN) } network, + * @param { Array<(number | string | BN)> } address, + */ + "updateAddress" ( + network: (number | string | BN), + address: Array<(number | string | BN)>, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network, address], __options); + } + + /** + * removeAddress + * + * @param { (number | string | BN) } network, + */ + "removeAddress" ( + network: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [network], __options); + } + + /** + * removeIdentity + * + */ + "removeIdentity" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * addNetwork + * + * @param { ArgumentTypes.NetworkInfo } info, + */ + "addNetwork" ( + info: ArgumentTypes.NetworkInfo, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [info], __options); + } + + /** + * updateNetwork + * + * @param { (number | string | BN) } networkId, + * @param { (number | string | BN) | null } newPrefix, + * @param { string | null } newName, + */ + "updateNetwork" ( + networkId: (number | string | BN), + newPrefix: (number | string | BN) | null, + newName: string | null, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [networkId, newPrefix, newName], __options); + } + + /** + * removeNetwork + * + * @param { (number | string | BN) } networkId, + */ + "removeNetwork" ( + networkId: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [networkId], __options); + } + + /** + * setRecoveryAccount + * + * @param { ArgumentTypes.AccountId } recoveryAccount, + */ + "setRecoveryAccount" ( + recoveryAccount: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [recoveryAccount], __options); + } + + /** + * transferOwnership + * + * @param { (number | string | BN) } identityNo, + * @param { ArgumentTypes.AccountId } newOwner, + */ + "transferOwnership" ( + identityNo: (number | string | BN), + newOwner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [identityNo, newOwner], __options); + } + +} \ No newline at end of file diff --git a/types/types-arguments/address_book.ts b/types/types-arguments/address_book.ts new file mode 100644 index 0000000..d85fb9e --- /dev/null +++ b/types/types-arguments/address_book.ts @@ -0,0 +1,17 @@ +import type BN from 'bn.js'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export enum Error { + addressBookAlreadyCreated = 'AddressBookAlreadyCreated', + addressBookDoesntExist = 'AddressBookDoesntExist', + identityDoesntExist = 'IdentityDoesntExist', + identityNotAdded = 'IdentityNotAdded', + identityAlreadyAdded = 'IdentityAlreadyAdded', + nickNameTooLong = 'NickNameTooLong' +} + diff --git a/types/types-arguments/identity.ts b/types/types-arguments/identity.ts new file mode 100644 index 0000000..597919e --- /dev/null +++ b/types/types-arguments/identity.ts @@ -0,0 +1,27 @@ +import type BN from 'bn.js'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export type NetworkInfo = { + name: string, + ss58Prefix: (number | string | BN) +} + +export type IdentityInfo = { + addresses: Array<[(number | string | BN), Array<(number | string | BN)>]> +} + +export enum Error { + notAllowed = 'NotAllowed', + identityDoesntExist = 'IdentityDoesntExist', + addressAlreadyAdded = 'AddressAlreadyAdded', + invalidNetwork = 'InvalidNetwork', + addressSizeExceeded = 'AddressSizeExceeded', + networkNameTooLong = 'NetworkNameTooLong', + alreadyIdentityOwner = 'AlreadyIdentityOwner' +} + diff --git a/types/types-returns/address_book.ts b/types/types-returns/address_book.ts new file mode 100644 index 0000000..a0f027f --- /dev/null +++ b/types/types-returns/address_book.ts @@ -0,0 +1,18 @@ +import type BN from 'bn.js'; +import type {ReturnNumber} from '@727-ventures/typechain-types'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export enum Error { + addressBookAlreadyCreated = 'AddressBookAlreadyCreated', + addressBookDoesntExist = 'AddressBookDoesntExist', + identityDoesntExist = 'IdentityDoesntExist', + identityNotAdded = 'IdentityNotAdded', + identityAlreadyAdded = 'IdentityAlreadyAdded', + nickNameTooLong = 'NickNameTooLong' +} + diff --git a/types/types-returns/identity.ts b/types/types-returns/identity.ts new file mode 100644 index 0000000..906d2ea --- /dev/null +++ b/types/types-returns/identity.ts @@ -0,0 +1,28 @@ +import type BN from 'bn.js'; +import type {ReturnNumber} from '@727-ventures/typechain-types'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export type NetworkInfo = { + name: string, + ss58Prefix: number +} + +export type IdentityInfo = { + addresses: Array<[number, Array]> +} + +export enum Error { + notAllowed = 'NotAllowed', + identityDoesntExist = 'IdentityDoesntExist', + addressAlreadyAdded = 'AddressAlreadyAdded', + invalidNetwork = 'InvalidNetwork', + addressSizeExceeded = 'AddressSizeExceeded', + networkNameTooLong = 'NetworkNameTooLong', + alreadyIdentityOwner = 'AlreadyIdentityOwner' +} + From e790040aaad40a3d43fcb938427be8e1532c7c63 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Fri, 30 Jun 2023 10:33:07 +0200 Subject: [PATCH 03/27] xcm transfer on same network --- __tests__/transactionRouter.test.ts | 2 - src/utils/transactionRouter.ts | 122 ++++++++++++++++++++++------ 2 files changed, 95 insertions(+), 29 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index e15c949..231761a 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -32,7 +32,6 @@ describe("TransactionRouter",() => { const sender = alice; const receiver = alice; expect(() => TransactionRouter.sendTokens( - api, identityContract, sender, 0, // origin network @@ -48,7 +47,6 @@ describe("TransactionRouter",() => { const receiver = bob; TransactionRouter.sendTokens( - api, identityContract, sender, 0, // origin network diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index ab0fca2..f099446 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -1,57 +1,125 @@ +import { ApiPromise, WsProvider } from "@polkadot/api"; import { KeyringPair } from "@polkadot/keyring/types"; import IdentityContract from "../../types/contracts/identity"; class TransactionRouter { - public static sendTokens( - api: any, + public static async sendTokens( contract: IdentityContract, sender: KeyringPair, - originNetwork: number, - receiver: string, - destinationNetwork: number, - token: string, + originNetwork: number, + receiver: string, + destinationNetwork: number, + token: any, amount: number - ): any { - if(originNetwork == destinationNetwork && sender.address == receiver) { + ): Promise { + if (originNetwork == destinationNetwork && sender.address == receiver) { throw new Error("Cannot send tokens to yourself"); } - if(originNetwork == destinationNetwork) { - this.sendOnSameBlockchain(api, contract, sender, receiver, originNetwork, token, amount); - }else { - this.sendViaXcm(sender, originNetwork, receiver, destinationNetwork, token, amount); + + if (originNetwork == destinationNetwork) { + const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).rpcUrl; + const wsProvider = new WsProvider(rpcUrl); + const api = await ApiPromise.create({ provider: wsProvider }); + + this.sendOnSameBlockchain( + api, + contract, + sender, + receiver, + originNetwork, + token, + amount + ); + } else { + this.sendViaXcm( + sender, + originNetwork, + receiver, + destinationNetwork, + token, + amount + ); } } private static async sendOnSameBlockchain( - api: any, + api: ApiPromise, contract: IdentityContract, - sender: KeyringPair, - receiver: string, + sender: KeyringPair, + receiver: string, network: number, - token: string, + token: any, amount: number ): Promise { // Just a simple transfer. - const chainInfo = await api.registry.getChainProperties() - const receiverAddress = await contract.query.transactionDestination(receiver, network); + const chainInfo = await api.registry.getChainProperties(); + if (!chainInfo) { + throw new Error("Failed to get chain info"); + } + + const receiverAddress = await contract.query.transactionDestination( + receiver, + network + ); - const nativeToken = chainInfo.tokenSymbol.toString()? chainInfo.tokenSymbol.toString().toLowerCase() : "unit"; + const xcm = this.xcmTransferAssetMessage(receiverAddress, token, amount); - console.log(receiverAddress); - if(token == nativeToken) { - }else { + let xcmExecute; + + if (api.tx.xcmPallet) { + xcmExecute = api.tx.xcmPallet.execute(xcm); + } else if (api.tx.polkadotXcm) { + xcmExecute = api.tx.polkadotXcm.execute(xcm); + } else { + throw new Error("The blockchain does not support XCM"); } + + const hash = await xcmExecute.signAndSend(sender); + + console.log("Transfer sent with hash", hash.toHex()); } private static sendViaXcm( sender: KeyringPair, - originNetwork: number, - receiver: string, - destinationNetwork: number, - token: string, + originNetwork: number, + receiver: string, + destinationNetwork: number, + token: string, amount: number - ) { + ) {} + private static xcmTransferAssetMessage( + receiverAddress: string, + multiAsset: any, + amount: number + ): any { + const xcmMessage = { + V2: { + TransferAsset: [ + // Asset: + { + Concrete: multiAsset, + Fungible: { + Fungible: amount, + }, + }, + // Beneficiary: + { + parents: 0, + interior: { + X1: { + // TODO: Don't hardcode the account type. + AccountId32: { + network: "Any", + id: receiverAddress, + }, + }, + }, + }, + ], + }, + }; + return xcmMessage; } } From aaca93186decc850e392f3c64eaf7057edc4bd35 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Sat, 1 Jul 2023 10:48:33 +0200 Subject: [PATCH 04/27] add tests --- __tests__/transactionRouter.test.ts | 55 ++++++-- artifacts/address_book.contract | 2 +- artifacts/address_book.json | 116 +++++++++++++++-- artifacts/identity.contract | 2 +- artifacts/identity.json | 172 +++++++++++++++---------- src/utils/transactionRouter.ts | 9 +- types/build-extrinsic/address_book.ts | 10 ++ types/build-extrinsic/identity.ts | 10 +- types/contract-info/address_book.ts | 4 +- types/contract-info/identity.ts | 4 +- types/data/address_book.json | 2 +- types/data/identity.json | 2 +- types/event-data/address_book.json | 2 +- types/event-data/identity.json | 2 +- types/event-types/address_book.ts | 5 + types/event-types/identity.ts | 8 +- types/events/address_book.ts | 14 ++ types/mixed-methods/address_book.ts | 11 ++ types/mixed-methods/identity.ts | 10 +- types/query/address_book.ts | 17 ++- types/query/identity.ts | 10 +- types/tx-sign-and-send/address_book.ts | 12 ++ types/tx-sign-and-send/identity.ts | 10 +- types/types-arguments/identity.ts | 10 +- types/types-returns/identity.ts | 10 +- 25 files changed, 372 insertions(+), 137 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 231761a..af6b31d 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -3,6 +3,7 @@ import { ApiPromise, Keyring, WsProvider } from '@polkadot/api'; import { KeyringPair } from "@polkadot/keyring/types"; import IdentityContractFactory from "../types/constructors/identity"; import IdentityContract from "../types/contracts/identity"; +import { AccountType, NetworkInfo } from "../types/types-arguments/identity"; const wsProvider = new WsProvider("ws://127.0.0.1:9944"); const keyring = new Keyring({ type: 'sr25519' }); @@ -28,32 +29,70 @@ describe("TransactionRouter",() => { ); }); - test("Can't send tokens to yourself", () => { + it("Can't send tokens to yourself", async () => { const sender = alice; const receiver = alice; - expect(() => TransactionRouter.sendTokens( + + // First lets add a network and create an identity. + + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:9944", accountType: AccountType.accountId32 }); + //const receiverIdentityNo = await createIdentityWithData(identityContract, receiver); + + await expect(TransactionRouter.sendTokens( identityContract, sender, 0, // origin network receiver.address, 0, // destination network - "dot", + {}, // multi asset 1000 - )).toThrow("Cannot send tokens to yourself"); + )).rejects.toThrow("Cannot send tokens to yourself"); }); - test("Sending native asset on the same network works", () => { + it("Sending native asset on the same network works", async () => { const sender = alice; const receiver = bob; - TransactionRouter.sendTokens( + // First lets add a network. + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:9944", accountType: AccountType.accountId32 }); + + await TransactionRouter.sendTokens( identityContract, sender, 0, // origin network receiver.address, 0, // destination network - "unit", + // MultiAsset: + { + parents: 0, + interior: "Here" + }, 1000 ); - }) + }); }); + +const addNetwork = async (contract: IdentityContract, signer: KeyringPair, network: NetworkInfo): Promise => { + const _addNetworkResult = await contract + .withSigner(signer) + .tx.addNetwork(network); +} + +const createIdentityWithData = async (contract: IdentityContract, signer: KeyringPair): Promise => { + const _createIdentityResult = (await contract + .withSigner(signer) + .tx.createIdentity()); + + const identityNo = (await contract + .withSigner(signer) + .query.identityOf(signer.address)).value.ok; + + if(identityNo != null) { + const _addAddressResult = (await contract + .withSigner(signer) + .tx.addAddress(0, signer.address)); + + return identityNo; + } + throw new Error("Failed to get identity no"); +} diff --git a/artifacts/address_book.contract b/artifacts/address_book.contract index 72cb5d7..e4126ee 100644 --- a/artifacts/address_book.contract +++ b/artifacts/address_book.contract @@ -1 +1 @@ -{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210036160000101010005000403050301010103010102010806030303050601060101010306050b0c030602030403030101010601030103010802010108020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c003f066465706c6f7900430916010041010b101c5b5a31404d664f63644e46484965500a8aa301602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a20012002410141ec800410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c41ccb004102320032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341fca9044180810410690b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341b4aa04360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e00200020012002419c9a04106a0bc50601067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241a481043602182002200129000037021c2002410036024820024280800137027c200241a0b10436027841eee7a015200241f8006a22071017200241186a4104722007101820022002290378370340200241106a200241406b2002280280011019200228021421042002280210210520022802402101200220022802442206360278200520042001200710002104200241086a20022802782001200641d486041014024002400240024002400240410c20042004410c4f1b0e0400050501050b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00410421032002280254410476220420022802042201200120044b1b22040440200441ffffff3f4b0d042004410474220741036a417c7122052007490d034198b104280200220320056a22062003490d05419cb1042802002006490440200541ffff036a22032005490d062003411076220640002203417f46200341ffff0371200347720d062003411074220320064110746a22062003490d06419cb1042006360200200320056a22062003490d060b4198b10420063602002003450d050b41002105200241003602602002200336025c2002200436025820010440200241f8006a41047221030340200241f8006a200241d0006a101a20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101b200141016b22010d000b2002280260210520022802582104200228025c21030b20030d010b200241003a005820024184016a41013602002002418c016a4101360200200241c8810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41b88204101d000b20002005360208200020033602042000200436020020024190016a24000f0b41e0a904411c41c4a9041013000b101e000b2007101f000b20024184016a41013602002002418c016a4100360200200241e4870436028001200241b4aa043602880120024100360278200241f8006a41ec8704101d000b2601017f230041106b220224002002200036020c20012002410c6a4104102a200241106a24000b0a00200120004120102a0b4501017f2002200128020422034b044041dcaa04412341d0ac041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d012004200310292004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741d4a2046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41a09204411c41c4a2041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10332002280200450d01200241086a280200450d022002280204101f000b41808404412141c48d041013000b200228020421032000200436020020002003360204200241206a24000c010b101e000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041e08304411c418092041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b4101210020012802002203418fae0441062001280204220528020c22041100000d0c024020012d00184104714504402003418c9404410120041100000d0e200341dcb00441052004110000450d010c0e0b2003418a9404410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241dcb0044105105e0d0d2002418894044102105e0d0d0b200341e192044101200411000021000c0c0b20012802004182ae04410d200128020428020c11000021000c0b0b200128020041f4ad04410e200128020428020c11000021000c0a0b200128020041e9ad04410b200128020428020c11000021000c090b200128020041cfad04411a200128020428020c11000021000c080b200128020041c1ad04410e200128020428020c11000021000c070b200128020041b1ad044110200128020428020c11000021000c060b200128020041a5ad04410c200128020428020c11000021000c050b2001280200419aad04410b200128020428020c11000021000c040b20012802004193ad044107200128020428020c11000021000c030b20012802004184ad04410f200128020428020c11000021000c020b200128020041f3ac044111200128020428020c11000021000c010b200128020041e0ac044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a00182002200136021420022000360210200241c0930436020c200241b4aa04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a36022041002100410421020240024002400240024003402000200020024180ab046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103620014100360218200120012903003703102001410136023c2001410236023420014180ab04360230200141003602282001200141206a360238200141106a200141286a10440d0141a0b1052d000045044041a1b1052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41f08b04411c41a0a7041013000b41c08f044133200141286a41b48c0441f09004102c000b41a0b10541013a00000b41a1b10541013a00000b000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041e88d04360210200041b4aa0436021820004100360208200041086a41f08d04101d000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141a08f04360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41b08f04101d000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341a481043602182003200029000037021c20034100360248200342808001370254200341a0b10436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102120032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102520010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021032200041106a22002001470d000b0b0bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041b8830410142003280208200328020c2001200241c8830410230b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a09d0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241fc8704101020014100360218200120012903083703104102200141106a10252002200220012802186a22044b044041e08304411c418c88041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410270c010b200041ffff004d0440200220004102744101723b010e20012002410e6a4102102a0c010b200041ffffffff034d04402000410274410272200110170c010b2001410310272000200110170b200241106a24000b08002000410110270ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a410636020020004194930436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a41b0ac04101d000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d012001101f000b101e000b2000200336020420002001360200200241106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241a0ac04102320002004360208200341106a24000f0b41c0aa04411c4180ac041013000b200420064190ac041015000ba70101017f230041306b2201240020014180800136020041a0b1042001100420014180800136022c200141a0b1043602282001200141286a102820012d00000440200141003a000041e4860441c100200141a4840441a88704102c000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541f4930436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101d000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241fc9904106a0b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c0a704360208200141003602002001410436021c200120003602182001200141186a360210200141f88a04101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c0a7043602102002410036020820024103360224200220002d0000410274220041f0b0046a28020036022c200220004184b1046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d0020004504402002410010270f0b20024101102720002001200210340b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d0120014198b104280200220620086a22072006490d031a2003280200210a419cb1042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d03419cb10420033602002001200620086a22072006490d041a0b4198b104200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41e0a904411c41c4a9041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1000200120021025200220002001102a0b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021036200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a20011029200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241a0b1043602002002410010272002200141ff0171410647047f20024101102720010541000b102720002002280208102e103a000b4601017f230041106b22022400200242808001370204200241a0b104360200024020014504402002410010270c010b200241011027200210260b20002002280208102e103a000ba20102057f017e230041306b2201240020014100360218200142808001370224200141a0b1043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041a0b1042001100a000bf60102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441c0ac04102f000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000bf80102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420042002280208411f102a20032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000ba52f020f7f017e230041b0036b22002400024002400240102d41ff017141054604402000418080013602e80141a0b104200041e8016a22011003200041a0016a20002802e80141a0b1044180800141d486041014200020002903a0013703b002200041003602e801200041b0026a2001410410110d0220002802e8012207411876210120074110762102200741087621030240024002400240024002400240200741ff0171220741076b0e020103000b2007411f460d0120074129460d04200741c800460d03200741e900470440200741830147200341ff017141b0014772200241ff017141e40047200141194772720d09200041e8016a200041b0026a101a20002802e8010d09200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410321010c080b200341ff0171410847200241ff0171411947722001412647720d08410021010c070b200341ff017141c10047200241ff0171411b4772200141af0147720d07410121010c060b200341ff017141e00147200241ff01714181014772200141ef0047720d06410221010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004198016a200041b0026a100e2000280298010d05200028029c012102410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041e8016a200041b0026a102820002d00e8010d032000200041fc016a2902003703f002200020004181026a2900003700f502200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec01210220002f01ea01210620002d00e901210c410621010c020b200041e8016a200041b0026a101a20002802e8010d02200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410521010c010b200041043a00e801200041e8016a1030000b200041b0016a200041f8026a290300370300200020002903f0023703a801200041003602f8022000428080013702ec01200041a0b1043602e8014100200041e8016a22071017200020002903e8013703f00220004190016a200041f0026a20002802f0011019200028029401210820002802900120002802f0022103200020002802f402220b3602e8012008200320071000210720004188016a20002802e8012003200b41d4860410140240024002400240410c20072007410c4f1b0e0401000002000b200041f4016a4101360200200041fc016a4100360200200041e487043602f001200041b4aa043602f801200041003602e801200041e8016a41ec8704101d000b200028028c01210320002000280288013602b002200020033602b402200041e8016a200041b0026a102820002d00e801450d01200041f4016a4101360200200041fc016a4100360200200041b08b043602f0010c030b200041f4016a4101360200200041fc016a4100360200200041d08b043602f0010c020b200041c0016a2203200041f2016a220b290100370300200041c8016a2208200041fa016a220d290100370300200041cf016a220a20004181026a220e290000370000200020002901ea013703b80120002d00e90121070240024002400240027f024002400240024002400240024002400240024002400240200141016b0e06040300020109050b200041b0026a102b20004180026a2203200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f40222010440200020002d00f3023a00db01200020002f00f1023b00d901200020002802f80222083602e001200020013602dc01200020002d00f0023a00d801200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a29000037000020004190026a420037030020004198026a4200370300200020073a00e801200020002903b8013700e901200041003602a802200042003703880220002002ad42208642cbfdefe70e843703a00220004100360298032000428080013702f402200041a0b1043602f002200041e8016a200041f0026a22031018200020002903f00237039003200041e8006a20004190036a220620002802f80210192000280268210a200029039003210f200041003602a8032000200f3703a003200042003703f802200042003703f002200041a0036a20034110102a200020002903a00337039003200041e0006a200620002802a80310192000280260210c200029039003210f200041003602f8022000200f3703f0022003200041a0026a4104102a200220031017200020002903f00237039003200041d8006a200620002802f8021019200028025c210b2000280258210d20002802900321062000200028029403220e3602f0024100200a4200200c200d200b2006200310022103200041d0006a20002802f0022006200e41d486041014410c20032003410c4f1b2203410d710d0620002802542103200020002802503602f002200020033602f402200041c8006a200041f0026a100d02400240024020002d00484101710d000240024020002d00490e020001020b200041386a200041f0026a100d20002d00384101710d014102210320002d0039220641024f0d0120060d030c120b200041406b200041f0026a100d20002d00404101710d0020002d00414101460d010b410021010c0f0b2000410136029003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041053602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41c88504101d000b20084104742103024003402003450d01200341106b210320012802002108200141106a210120022008470d000b410421030c0f0b200041e8016a200520041035024020002802ec01450d0020002802f0014111490d00410521030c0f0b200041f4016a2004360200200041f0016a22012005360200200020093602ec01200020023602e801200041d8016a200041e8016a2204101b20004180026a2203200041c8026a2205290300370300200041f8016a2206200041c0026a22092903003703002001200041b8026a2208290300370300200020002903b0023703e801200420002802dc0120002802e0011020200320052903003703002006200929030037030020012008290300370300200020002903b0023703e80120002002360288022000428080013702f402200041a0b1043602f002200041f0026a22021024200041e8026a2204200041f8026a2205280200360200200020002903f0023703e00220004190036a2206200041e0026a103c200029039003210f41002101200041003602f8022000200f3703f00241b4aa04410020021034200241c28904411a102a200020002903f00237039003200041306a200620002802f80210192002200028023020002802341022200041286a20002802e002220620002802e4022004280200220441fc87041010200041003602a803200020002903283703a0032002200041a0036a10182004200420002802a8036a22024b0d07200041d8026a2002360200200020063602e002200020002903e0023703d002200041213602a403200041dc89043602a0032000200041e8016a22023602a80320004190036a2204200041d0026a200041a0036a2206103b200041f0026a22092004103e200041a8036a2005280200360200200020002903f002220f3703a00320004180036a280200210420002802fc02200041003602f8022000200f3703f002200220091041200020002903f0023703a003200041206a200620002802f80210192004200028022020002802241007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a290000370000200020073a00e801200020002903b8013700e90120021039410621030c100b410121030c0e0b200041b0026a102b20004180026a200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f402220c450440410121060c0a0b20002802f802210a200041f0026a200520041035200041e8016a20002802f40220002802f8021035024020002802ec01450d0020002802f0014111490d00410521060c0a0b41032106200a450d09200a410474210b4100210141002103034020022001200c6a2208280200470440200341016a2103200141106a2201200b470d010c0b0b0b200841086a2802001a20082002360200200841046a20002903f0023702002008410c6a200041f8026a220328020036020020004180026a2201200041c8026a2206290300370300200041f8016a2208200041c0026a220b290300370300200041f0016a220d200041b8026a220e290300370300200020002903b0023703e801200041e8016a200c200a1020200120062903003703002008200b290300370300200d200e290300370300200020002903b0023703e801200020043602940220002005360290022000200936028c0220002002360288022000428080013702f402200041a0b1043602f002200041f0026a22011024200041e8026a22022003280200360200200020002903f0023703e00220004190036a2203200041e0026a103c200029039003210f200041003602f8022000200f3703f00241b4aa04410020011034200141fd8904411c102a200020002903f0023703900320004180016a200320002802f802101920012000280280012000280284011022200041f8006a20002802e002220320002802e4022002280200220241fc87041010200041003602a803200020002903783703a0032001200041a0036a10182002200220002802a8036a22014b0d06200041d8026a2001360200200020033602e002200020002903e0023703d002200041233602a403200041998a043602a0032000200041e8016a22013602a80320004190036a2202200041d0026a200041a0036a2203103b200041f0026a22042002103e200041a8036a200041f8026a280200360200200020002903f002220f3703a00320004180036a280200210220002802fc02200041003602f8022000200f3703f002200120041042200020002903f0023703a003200041f0006a200320002802f802101920022000280270200028027410072000280290021a200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200110394106210641000c0a0b200041f1016a2003290300370000200041f9016a200829030037000020004180026a200a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410041001038000b200041f0026a102b20004180026a220420004188036a2205290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a1016027f20002802b4022206044020004184026a2005290300370200200041fc016a20004180036a2209290300370200200041f4016a200041f8026a2208290300370200200020002903f0023702ec01200041a481043602e801200041003602a8032000428080013702b402200041a0b1043602b00241eee7a015200041b0026a22011017200041e8016a220241047220011018200020002903b0023703a003200041186a200041a0036a220320002802b80210192000280218200028021c10091a20042005290300370300200041f8016a2009290300370300200041f0016a2008290300370300200020002903f0023703e8012000428080013702b402200041a0b1043602b00220011024200041a8036a2205200041b8026a2209280200360200200020002903b0023703a0032001200341908904103d200041263602a4032000419c89043602a003200020023602a80320004190036a220820012003103b20012008103e20052009280200360200200020002903b002220f3703a003200041c0026a280200210520002802bc02200041003602b8022000200f3703b002200220011018200020002903b0023703a003200041106a200320002802b80210192005200028021020002802141007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002004200041cf016a290000370000200020073a00e801200020002903b8013700e9012002103941060c010b41010b210020064520001037000b200041f0026a102b20004180026a220220004188036a2201290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a101620002802b40222030440410021010c060b20022001290300370300200041f8016a20004180036a2202290300370300200041f0016a200041f8026a2204290300370300200020002903f0023703e801200041e8016a2205410441001020200041f1016a2004290300370000200041f9016a200229030037000020004181026a2001290300370000200041003a00e801200020002903f0023700e9012000428080013702b402200041a0b1043602b002200041b0026a22011024200041a8036a2204200041b8026a2206280200360200200020002903b0023703a0032001200041a0036a220941bc8804103d2000200541017222023602a803200041263602a403200041c888043602a00320004190036a220520012009103b20012005103e20042006280200360200200020002903b002220f3703a003200041c0026a280200210120002802bc02200041003602b8022000200f3703b0020240024002400240024020002d00e80141016b0e03010203000b200041b0026a2205410010272002200510180c030b200041b0026a2205410110272002200510180c020b200041b0026a220241021027200041e8016a410472200210410c010b200041b0026a220241031027200041e8016a410472200210420b200020002903b0023703a003200041086a200041a0036a20002802b802101920012000280208200028020c1007200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410621010c050b200b2003290300370100200d2008290300370100200e200a290000370000200020073a00e901200020002903b8013701ea01200041003a00e801230041106b22012400200142808001370204200141a0b1043602000240200041e8016a22002d0000450440200141001027200041016a200110180c010b200141011027200110260b41002001280208102e103a000b200341e0b0046a2d000021010c060b41e08304411c418c88041013000b41e08304411c418c88041013000b20004180026a20002900ad01370000200020043600f701200020053600f301200020093600ef01200020023600eb01200020063b00e9012000200c3a00e801200020002903a8013700fb01230041306b22012400200141286a200041e8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002104200041f0026a220320012802084100200128020422021b36020820032002410420021b36020420032004410020021b360200200141306a240020002802f402210120002802f8022102230041106b22002400200042808001370204200041a0b10436020002402001044020004100102720012002200010210c010b200041011027200010260b41002000280208102e103a000b200341004720011037000b41010b20061037000b200020013a009003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041013602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41d88504101d000b4101210120060d010b410121010b200120031037000b410141011038000b200041b4aa043602f801200041003602e801200041e8016a41f88a04101d000b180020012802004195ae044111200128020428020c1100000b11002000200110182000280220200110170b2500200020011018200028022020011017200041286a2802002000412c6a280200200110320be30202047f027e230041e0006b220024000240102d41ff01712201410546044020004180800136023841a0b104200041386a22011003200041086a200028023841a0b1044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102820002d0038450d020b410141011038000b200020013a0038200041386a1030000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a1039230041106b22002400200042808001370204200041a0b10436020020004100102720004100102741002000280208102e103a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41d88b04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041f08b04411c419092041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41f08b04411c418092041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103320042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41908c04412141c48d041013000b1f00024020014181808080784704402001450d012000101f000b0f0b101e000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d04404198b104280200220220056a22042002490d02419cb1042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d0241002103419cb1042004360200200220056a22042002490d030b4198b1042004360200200221030c020b41e0a904411c41c4a9041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e2206410174418b95046a2f00003b0000200241026b2004200641e4006c6b41ffff0371410174418b95046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff0371410174418b95046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a2002410174418b95046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041b4aa042104200241b4aa0441b4aa04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41a09204411c41d497041013000b41c09204412141b0a7041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341a8af0441c0920410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41b09b041055200328020c21052003280208210820032003280200200328020422002000417c7141c09c041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a09204411c41c89e041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a09204411c41f89e041013000b41a09204411c41d89e041013000b41a09204411c41e89e041013000b41a09204411c41b89e041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a09204411c41a0a7041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41dcaa04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a09204411c41e497041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41a09204411c4188a0041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041f898041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41c09204412141d8a5041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241a899041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041a09204411c41b899041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a2003280278200941044188a604105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a09204411c418899041013000b41a09204411c41e8a5041013000b41a09204411c41f8a5041013000b41a09204411c419899041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d012007418494044104200628020c110000450d010c020b41c0920441214198a0041013000b2003410a36028c0120082002047f200320002002200241016b41d09c0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341aca10441c0920410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041dcb0044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441d09304410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241e0930436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241e09304360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241a893043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341fca9044190aa0410690b1400200020012002200341a8af0441c0af0410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bcd300700418080040bd5032f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e72730000000001006a000000420000002600000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20a8000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273d0000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000480101006d0000009d00000011000000480101006d0000009d000000300041e083040bf41f617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000001000000010000000100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000480101006d0000006b0100000e000000480101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000480101006d000000ed00000017000000901501006e000000c100000037000000901501006e000000c40000000900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640034150100000000001c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f76656400000034150100000000006e04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656441646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e65722f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e72733c0501003c0000002f00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900880501002700000073746f7261676520656e7472792077617320656d70747900b8050100170000000b00000004000000040000000c0000000d0000000e000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300440601007f0000008a0100001c0000006361706163697479206f766572666c6f77000000d406010011000000440601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564007d07010015000000920701000d000000000701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000f30701007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300800801007f000000300700000d000000800801007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320620901002000000082090100120000003a0000003415010000000000a409010001000000a4090100010000000b00000000000000010000001000000070616e69636b65642061742027272c20dc09010001000000dd090100030000003a2000003415010000000000f009010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000530b01007e0000005d0500000d000000530b01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300f40b0100830000004e0000002f000000f40b0100830000005a0000001f000000f40b0100830000006300000009000000f40b0100830000006800000027000000f40b010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820c80c010012000000da0c01002200000072616e676520656e6420696e646578200c0d010010000000da0c0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000002c0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273c00d010080000000fe0300002f000000c00d010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028600e010015000000750e01002b00000061090100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273b80e0100800000004700000015000000b80e0100800000005400000011000000b80e0100800000005a00000009000000b80e0100800000006400000011000000b80e010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300880f01007f0000009100000011000000880f01007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000002810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e72730000bc10010086000000e5000000150000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101004196a4040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041d4a4040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300005412010082000000a1010000470000005412010082000000b4010000200000005412010082000000b4010000110000005412010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273181301008800000095000000010000000d0a01007e000000cd0100000500000034150100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730040140100830000002f010000180041e0a9040b51617474656d707420746f206164642077697468206f766572666c6f772617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041c0aa040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a34150100000000007f150100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000901501006e0000005a0000001c000000901501006e0000005a00000009000000901501006e0000005a00000031000000901501006e0000006500000009000000901501006e000000830000001a000000901501006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273261701008200000082010000470041c0af040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000e117010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000271401000b140100f5130100e1130100c81301","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of `Identity` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file +{"source":{"hash":"0xf3351b91ee1e761f370e3e86fc1b6489a2e275ca59944958300a8def008ca8e2","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100361600001010100050004030503010101030101010201030301010303030501010601010106050b0c03060203080604030101080601030301080208020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c0041066465706c6f7900430916010041010b101d5b5a33424d664f63644e46484965500acaab01602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041031000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c419cb204102620032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341ccab044180800410690b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ac04360210200341003602002003200136021c200320003602182003200341186a36020820032002101e000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e0020002001200241ec9b04106a0bec0401067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241bc81043602182002200129000037021c2002410036024820024280800137027c200241f0b20436027841eee7a015200241f8006a22051017200241186a4104722005101820022002290378370340200241106a200241406b20022802800110192002280214210320022802102002280240210120022002280244220736027820032001200510002103200241086a20022802782001200741d486041014024002400240410c20032003410c4f1b0e0400020201020b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00200241d8006a2002280254410476220320022802042201200120034b1b101a20010440200241f8006a41047221030340200241f8006a200241d0006a101b20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101c200141016b22010d000b0b200228025c2204450d0020022802602101200228025821030c010b200241003a005820024184016a41013602002002418c016a4101360200200241e0810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41d08204101e000b20002001360208200020043602042000200336020020024190016a24000f0b20024184016a41013602002002418c016a4100360200200241e487043602800120024184ac043602880120024100360278200241f8006a41ec8704101e000b2601017f230041106b220224002002200036020c20012002410c6a41041024200241106a24000b0a0020012000412010240b4501017f2002200128020422034b044041acac04412341a0ae041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b800201047f02400240024002402001450440410421020c010b200141ffffff3f4b22020d01200141047422054100480d012005200141808080c000494102746a41016b4100417c20021b7122042005490d0241e8b204280200220220046a22032002490d0341ecb2042802002003490440200441ffff036a22022004490d042002411076220340002202417f46200241ffff0371200247720d042002411074220220034110746a22032002490d0441ecb2042003360200200220046a22032002490d040b41e8b20420033602002002450d030b2000410036020820002002360204200020013602000f0b1035000b41b0ab04411c4194ab041013000b20051036000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d0120042003102c2004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741a4a4046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41f09304411c4194a4041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10372002280200450d01200241086a280200450d0220022802041036000b41f08304412141d48e041013000b200228020421032000200436020020002003360204200241206a24000c010b1035000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041a08104411c41d093041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfaf0441062001280204220528020c22041100000d0c024020012d0018410471450440200341dc9504410120041100000d0e200341acb20441052004110000450d010c0e0b200341da9504410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241acb2044105105e0d0d200241d895044102105e0d0d0b200341b194044101200411000021000c0c0b200128020041d2af04410d200128020428020c11000021000c0b0b200128020041c4af04410e200128020428020c11000021000c0a0b200128020041b9af04410b200128020428020c11000021000c090b2001280200419faf04411a200128020428020c11000021000c080b20012802004191af04410e200128020428020c11000021000c070b20012802004181af044110200128020428020c11000021000c060b200128020041f5ae04410c200128020428020c11000021000c050b200128020041eaae04410b200128020428020c11000021000c040b200128020041e3ae044107200128020428020c11000021000c030b200128020041d4ae04410f200128020428020c11000021000c020b200128020041c3ae044111200128020428020c11000021000c010b200128020041b0ae044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190950436020c20024184ac04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ac046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103920014100360218200120012903003703102001410136023c20014102360234200141d0ac04360230200141003602282001200141206a360238200141106a200141286a10440d0141f0b2052d000045044041f1b2052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41808d04411c41f0a8041013000b41d090044133200141286a41c48d0441809204102e000b41f0b20541013a00000b41f1b20541013a00000b000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341bc81043602182003200029000037021c20034100360248200342808001370254200341f0b20436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102020032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102820010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021034200041106a22002001470d000b0b0bdc0102037f017e230041d0006b22022400200241106a22042000102220022903102105200241003602282002200537032020012802002001280204200241206a2203102320032001280208411c102420022002290320370310200241086a20042002280228101920032002280208200228020c102520022000280200220420002802042000280208220141fc8704101020024100360248200220022903003703402003200241406b10182001200120022802486a22034b044041a08104411c418c88041013000b2000200436020020002003360208200241d0006a24000b5201037f230041106b2202240020012802082203200128020422044b0440200320044190ae041031000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000b100020012002102820022000200110240b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241f0ad04102620002004360208200341106a24000f0b4190ac04411c41d0ad041013000b2004200641e0ad041015000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041d0830410142003280208200328020c2001200241e0830410260b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041f09e0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101e000b7701037f230041206b22022400200241086a2000280200220420002802042000280208220341fc8704101020024100360218200220022903083703102001200241106a10282003200320022802186a22014b044041a08104411c418c88041013000b2000200436020020002001360208200241206a24000b7401017f230041106b2202240002402000413f4d044020012000410274102a0c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210240c010b200041ffffffff034d04402000410274410272200110170c010b20014103102a2000200110170b200241106a24000b080020004101102a0ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4106360200200041e4940436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a4180ae04101e000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d0120011036000b1035000b2000200336020420002001360200200241106a24000ba70101017f230041306b2201240020014180800136020041f0b2042001100420014180800136022c200141f0b2043602282001200141286a102b20012d00000440200141003a000041e4860441c10020014194840441a88704102e000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4950436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101e000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241cc9b04106a0b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190a904360208200141003602002001410436021c200120003602182001200141186a360210200141808c04101e000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190a9043602102002410036020820024103360224200220002d0000410274220041c0b2046a28020036022c2002200041d4b2046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d00200045044020024100102a0f0b20024101102a20002001200210230b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041f88e0436021020004184ac0436021820004100360208200041086a41808f04101e000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141b09004360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41c09004101e000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141e8b204280200220620086a22072006490d031a2003280200210a41ecb2042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341ecb20420033602002001200620086a22072006490d041a0b41e8b204200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41b0ab04411c4194ab041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021039200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a2001102c200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241f0b20436020020024100102a2002200141ff0171410647047f20024101102a20010541000b102a200020022802081030103d000b3501017f230041106b22002400200042808001370204200041f0b20436020020004101102a20001029410120002802081030103d000ba20102057f017e230041306b2201240020014100360218200142808001370224200141f0b2043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041f0b2042001100a000bf60102037f017e230041d0006b22032400200341106a22052001102220032903102106200341003602282003200637032020022802002002280204200341206a2204102320022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102520032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041a08104411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000bf80102037f017e230041d0006b22032400200341106a22052001102220032903102106200341003602282003200637032020022802002002280204200341206a2204102320042002280208411f102420032003290320370310200341086a20052003280228101920042003280208200328020c102520032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041a08104411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000bab3602107f017e230041a0036b220024000240024002400240102f41ff017141054604402000418080013602f80141f0b204200041f8016a2201100320004190016a20002802f80141f0b2044180800141d48604101420002000290390013703c801200041003602f801200041c8016a2001410410110d0220002802f80122094118762101200941107621022009410876210302400240024002400240024002400240200941ff0171220941076b0e020104000b2009411f460d0120094129460d05200941c800460d04200941e9004704402009418301460d03200941c40147200341ff017141e8004772200241ff017141de0147200141d4014772720d0a410721010c090b200341ff0171410847200241ff0171411947722001412647720d09410021010c080b200341ff017141c10047200241ff0171411b4772200141af0147720d08410121010c070b200341ff017141e00147200241ff01714181014772200141ef0047720d07410221010c060b200341ff017141b00147200241ff017141e40047722001411947720d06200041f8016a200041c8016a101b20002802f8010d0620004188026a280200210520004184026a280200210720004180026a280200210820002802fc012106410321010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004188016a200041c8016a100e2000280288010d05200028028c012106410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041f8016a200041c8016a102b20002d00f8010d0320002000418c026a2902003703e002200020004191026a2900003700e50220004188026a280200210520004184026a280200210720004180026a280200210820002802fc01210620002f01fa01210420002d00f901210b410621010c020b200041f8016a200041c8016a101b20002802f8010d0220004188026a280200210520004184026a280200210720004180026a280200210820002802fc012106410521010c010b200041043a00f801200041f8016a1032000b200041a0016a200041e8026a290300370300200020002903e00237039801200041003602e8022000428080013702fc01200041f0b2043602f8014100200041f8016a22031017200020002903f8013703e00220004180016a200041e0026a2000280280021019200028028401210920002802800120002802e0022102200020002802e402220c3602f80120092002200310002103200041f8006a20002802f8012002200c41d4860410140240024002400240410c20032003410c4f1b0e0401000002000b20004184026a41013602002000418c026a4100360200200041e487043602800220004184ac0436028802200041003602f801200041f8016a41ec8704101e000b200028027c2102200020002802783602c801200020023602cc01200041f8016a200041c8016a102b20002d00f801450d0120004184026a41013602002000418c026a4100360200200041b88c04360280020c030b20004184026a41013602002000418c026a4100360200200041d88c04360280020c020b200041b0016a220220004182026a2203290100370300200041b8016a220a2000418a026a220c290100370300200041bf016a220d20004191026a220e290000370000200020002901fa013703a80120002d00f90121090240024002400240027f02400240024002400240024002400240024002400240024002400240200141016b0e0706050001020304070b200041c8016a102d20004190026a2202200041e0016a29030037030020004188026a200041d8016a29030037030020004180026a200041d0016a290300370300200020002903c8013703f801200041e0026a200041f8016a101620002802e40222010440200020002d00e3023a00eb01200020002f00e1023b00e901200020002802e80222043602f001200020013602ec01200020002d00e0023a00e80120004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002002200041bf016a290000370000200041a0026a4200370300200041a8026a4200370300200020093a00f801200020002903a8013700f901200041003602b802200042003703980220002006ad42208642cbfdefe70e843703b00220004100360288032000428080013702e402200041f0b2043602e002200041f8016a200041e0026a22021018200020002903e00237038003200041e0006a20004180036a220320002802e80210192000280260210b200029038003211020004100360298032000201037039003200042003703e802200042003703e00220004190036a200241101024200020002903900337038003200041d8006a200320002802980310192000280258210a2000290380032110200041003602e802200020103703e0022002200041b0026a41041024200620021017200020002903e00237038003200041d0006a200320002802e80210192000280254210c2000280250210d20002802800321032000200028028403220e3602e0024100200b4200200a200d200c2003200210022102200041c8006a20002802e0022003200e41d486041014410c20022002410c4f1b2202410d710d08200028024c2102200020002802483602e002200020023602e402200041406b200041e0026a100d02400240024020002d00404101710d000240024020002d00410e020001020b200041306a200041e0026a100d20002d00304101710d014102210320002d0031220241024f0d0120020d030c140b200041386a200041e0026a100d20002d00384101710d0020002d00394101460d010b410021010c110b2000410136028003200041ec026a4101360200200041f4026a4101360200200041d484043602e802200041003602e0022000410536029403200020004190036a3602f002200020004180036a36029003200041e0026a41c88504101e000b20044104742103024003402003450d01200341106b21032001280200200141106a21012006470d000b410421030c110b200041f8016a200720051038024020002802fc01450d002000280280024111490d00410521030c110b20004184026a200536020020004180026a22012007360200200020083602fc01200020063602f801200041e8016a200041f8016a2202101c20004190026a2203200041e0016a220429030037030020004188026a2205200041d8016a22072903003703002001200041d0016a2208290300370300200020002903c8013703f801200220002802ec0120002802f001101f200320042903003703002005200729030037030020012008290300370300200020002903c8013703f80120002006360298022000428080013702e402200041f0b2043602e002200041e0026a220241021027200041d8026a2206200041e8026a2204280200360200200020002903e0023703d00220004180036a2205200041d0026a1022200029038003211041002101200041003602e802200020103703e0024184ac04410020021023200241928a04411a1024200020002903e00237038003200041286a200520002802e802101920022000280228200028022c1025200041206a20002802d002220520002802d4022006280200220641fc8704101020004100360298032000200029032037039003200220004190036a1018200620062000280298036a22024b0d09200041c8026a2002360200200020053602d002200020002903d0023703c0022000412136029403200041ac8a04360290032000200041f8016a22023602980320004180036a2205200041c0026a20004190036a2207103e200041e0026a22062005104020004198036a2004280200360200200020002903e002221037039003200041f0026a280200210420002802ec02200041003602e802200020103703e00220022006101820002802980220061017200020002903e00237039003200041186a200720002802e802101920042000280218200028021c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002003200041bf016a290000370000200020093a00f801200020002903a8013700f9012002103c410621030c120b410121030c100b200041e0026a102d20004190026a200041f8026a29030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a1016027f20002802cc0122024504404101210341010c010b200041c8016a20002802d0012205101a20002802c801220420002802d0012201490d092005410474210820002802cc01210702402005452001200446720d00200220086a210b200720014104746a2103200041f8016a410472210a200120046b41016a2104200221010340200020012802003602f801200a200141086a2802002001410c6a2802001038200341086a20004180026a290300370200200320002903f8013702002004450d01200441016a2104200341106a2103200141106a2201200b470d000b0b024020050440200720086a210441002101410021030340200120076a22082802002006460d02200141106a2101200341016a2103200841106a2004470d000b0b4103210341010c010b200320054f0d0a200541047420016b41106b21030240200120026a2201200141106a22044d044003402003450d02200120042d00003a0000200441016a2104200141016a2101200341016b21030c000b000b200441016b2104200141016b210103402003450d01200120036a200320046a2d00003a0000200341016b21030c000b000b20004190026a2203200041f8026a220129030037030020004188026a2207200041f0026a220829030037030020004180026a220b200041e8026a220a290300370300200020002903e0023703f801200041f8016a22042002200541016b101f2003200129030037030020072008290300370300200b200a290300370300200020002903e0023703f80120002006360298022000428080013702cc01200041f0b2043602c801200041c8016a22014101102720004198036a2202200041d0016a2205280200360200200020002903c8013703900320004190036a220741b88b04102120004188036a2002280200360200200020002903900337038003200120004180036a104020022005280200360200200020002903c801221037039003200041d8016a280200210220002802d401200041003602d001200020103703c801200420011018200620011017200020002903c80137039003200041e8006a200720002802d001101920022000280268200028026c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002003200041bf016a290000370000200020093a00f801200020002903a8013700f9012004103c4106210341000b2003103a000b200041e0026a102d20004190026a200041f8026a29030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a101620002802cc01220a450440410121040c0b0b20002802d001210b200041c8016a200720051038200041f8016a20002802cc0120002802d0011038024020002802fc01450d002000280280024111490d00410521040c0b0b41032104200b450d0a200b410474210c4100210141002103034020062001200a6a2202280200470440200341016a2103200141106a2201200c470d010c0c0b0b200241086a2802001a20022006360200200241046a20002903c8013702002002410c6a200041d0016a220228020036020020004190026a2204200041f8026a220129030037030020004188026a220c200041f0026a220d29030037030020004180026a220e200041e8026a220f290300370300200020002903e0023703f801200041f8016a2203200a200b101f20042001290300370300200c200d290300370300200e200f290300370300200020002903e0023703f801200020053602a402200020073602a0022000200836029c0220002006360298022000428080013702cc01200041f0b2043602c801200041c8016a22014102102720004198036a22062002280200360200200020002903c8013703900320004190036a220541ec8a0410212002200628020036020020002000290390033703c8012000412336029403200041f88a0436029003200020033602980320004180036a220720012005103e20012007104020062002280200360200200020002903c801221037039003200041d8016a280200210220002802d401200041003602d001200020103703c8012003200110182000280298022001101720002802a00220002802a40220011034200020002903c80137039003200041f0006a200520002802d0011019200220002802702000280274100720002802a0021a20004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002004200041bf016a290000370000200020093a00f801200020002903a8013700f9012003103c4106210441000c0b0b20004190026a200029009d0137000020002005360087022000200736008302200020083600ff01200020063600fb01200020043b00f9012000200b3a00f801200020002903980137008b02230041306b22012400200141286a200041f8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002106200041e0026a220320012802084100200128020422021b36020820032002410420021b36020420032006410020021b360200200141306a240020002802e402210220002802e8022100230041106b22012400200142808001370204200141f0b20436020002402002044020014100102a20022000200110200c010b20014101102a200110290b0c110b230041d0006b220124002001102d200141c8006a200141186a290300370300200141406b200141106a290300370300200141386a200141086a29030037030020012001290300370330200141206a200141306a101620012802242100200141d0006a2400230041106b22012400200142808001370204200141f0b204360200230041106b2202240020014100102a200220004100473a000f20012002410f6a41011024200241106a24000c100b200041e0026a102d20004190026a2206200041f8026a220429030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a1016027f20002802cc012205044020004194026a20042903003702002000418c026a200041f0026a220729030037020020004184026a200041e8026a2208290300370200200020002903e0023702fc01200041bc81043602f80120004100360298032000428080013702cc01200041f0b2043602c80141eee7a015200041c8016a22011017200041f8016a220241047220011018200020002903c80137039003200041106a20004190036a220320002802d00110192000280210200028021410091a2006200429030037030020004188026a200729030037030020004180026a2008290300370300200020002903e0023703f8012000428080013702cc01200041f0b2043602c80120014102102720004198036a2204200041d0016a2207280200360200200020002903c801370390032001200341e08904103f2000412636029403200041ec890436029003200020023602980320004180036a220820012003103e20012008104020042007280200360200200020002903c801221037039003200041d8016a280200210420002802d401200041003602d001200020103703c801200220011018200020002903c80137039003200041086a200320002802d001101920042000280208200028020c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002006200041bf016a290000370000200020093a00f801200020002903a8013700f9012002103c41060c010b41010b21012005452001103a000b200041e0026a102d20004190026a2202200041f8026a220129030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a101620002802cc0122040440410021010c060b2002200129030037030020004188026a2206200041f0026a220529030037030020004180026a2207200041e8026a2208290300370300200020002903e0023703f801200041f8016a220341044100101f200220012903003703002006200529030037030020072008290300370300200020002903e0023703f8012000428080013702cc01200041f0b2043602c801200041c8016a22014102102720004198036a2205200041d0016a2207280200360200200020002903c80137039003200120004190036a2206418c8904103f200041263602940320004198890436029003200020033602980320004180036a220820012006103e20012008104020052007280200360200200020002903c801221037039003200041d8016a280200210520002802d401200041003602d001200020103703c801200320011018200020002903c801370390032000200620002802d0011019200520002802002000280204100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002002200041bf016a290000370000200020093a00f801200020002903a8013700f9012003103c410621010c050b20032002290300370100200c200a290300370100200e200d290000370000200020093a00f901200020002903a8013701fa01200041003a00f801230041106b22012400200142808001370204200141f0b2043602000240200041f8016a22022d000045044020014100102a200241016a200110180c010b20014101102a200110290b0c0d0b200241b0b2046a2d000021010c060b41a08104411c418c88041013000b41808004412141a484041013000b230041306b220124002001200536020420012003360200200141146a41033602002001411c6a41023602002001412c6a4106360200200141b8930436021020014100360208200141063602242001200141206a3602182001200141046a36022820012001360220200141086a41dc8804101e000b20044100472001103a000b41010b2004103a000b200020013a008003200041ec026a4101360200200041f4026a4101360200200041d484043602e802200041003602e0022000410136029403200020004190036a3602f002200020004180036a36029003200041e0026a41d88504101e000b4101210120020d010b410121010b20012003103a000b103b000b20004184ac0436028802200041003602f801200041f8016a41808c04101e000b410020012802081030103d000b1800200128020041e5af044111200128020428020c1100000bdf0202047f027e230041e0006b220024000240102f41ff01712201410546044020004180800136023841f0b204200041386a22011003200041086a200028023841f0b2044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102b20002d0038450d020b103b000b200020013a0038200041386a1032000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a103c230041106b22002400200042808001370204200041f0b20436020020004100102a20004100102a410020002802081030103d000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41e08c04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041808d04411c41e093041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41808d04411c41d093041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103720042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41a08d04412141d48e041013000b1f00024020014181808080784704402001450d0120001036000b0f0b1035000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041e8b204280200220220056a22042002490d0241ecb2042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341ecb2042004360200200220056a22042002490d030b41e8b2042004360200200221030c020b41b0ab04411c4194ab041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db96046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db96046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db96046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db96046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ac04210420024184ac044184ac04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41f09304411c41a499041013000b4190940441214180a9041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041031000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341f8b0044190940410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809d041055200328020c21052003280208210820032003280200200328020422002000417c7141909e041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09304411c4198a0041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09304411c41c8a0041013000b41f09304411c41a8a0041013000b41f09304411c41b8a0041013000b41f09304411c4188a0041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09304411c41f0a8041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acac04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09304411c41b499041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41f09304411c41d8a1041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89a041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41909404412141a8a7041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89a041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041f09304411c41889b041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a20032802782009410441d8a704105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09304411c41d89a041013000b41f09304411c41b8a7041013000b41f09304411c41c8a7041013000b41f09304411c41e89a041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d495044104200628020c110000450d010c020b41909404412141e8a1041013000b2003410a36028c0120082002047f200320002002200241016b41a09e0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341fca2044190940410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041acb2044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441a09504410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0950436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b09504360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241f894043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341ccab0441e0ab0410690b1400200020012002200341f8b0044190b10410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101e000b0b9d320700418080040bf50c617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20c0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273e8000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000600101006d0000009d00000011000000600101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b000000010000000100000001000000100901007f000000c30800001100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000600101006d0000006b0100000e000000600101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000600101006d000000ed00000017000000601601006e000000c100000037000000601601006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f74797065732e727300001c0401003e000000330000001900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640004160100000000006c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665640000000416010000000000be04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656400000004160100000000004d05010041646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e657241646472657373426f6f6b3a3a4964656e7469747952656d6f7665640004160100000000009b0501002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e7273c40501003c0000002e00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900100601002700000073746f7261676520656e7472792077617320656d7074790040060100170000000b00000004000000040000000c0000000d0000000e0041808d040ba418617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300d40601007f0000008a0100001c0000006361706163697479206f766572666c6f770000006407010011000000d40601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000d08010015000000220801000d000000900701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000830801007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273292073686f756c64206265203c206c656e202869732072656d6f76616c20696e646578202869732000a5090100120000008f09010016000000310a010001000000100901007f000000300700000d000000100901007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320a010020000000520a0100120000003a0000000416010000000000740a010001000000740a0100010000000b00000000000000010000001000000070616e69636b65642061742027272c20ac0a010001000000ad0a0100030000003a2000000416010000000000c00a010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230c01007e0000005d0500000d000000230c01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40c0100830000004e0000002f000000c40c0100830000005a0000001f000000c40c0100830000006300000009000000c40c0100830000006800000027000000c40c010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980d010012000000aa0d01002200000072616e676520656e6420696e64657820dc0d010010000000aa0d0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900e010080000000fe0300002f000000900e010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028300f010015000000450f01002b000000310a0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273880f0100800000004700000015000000880f0100800000005400000011000000880f0100800000005a00000009000000880f0100800000006400000011000000880f010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581001007f0000009100000011000000581001007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c11010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a5040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a6040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002413010082000000a1010000470000002413010082000000b4010000200000002413010082000000b4010000110000002413010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8130100880000009500000001000000dd0a01007e000000cd0100000500000004160100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010150100830000002f010000180041b0ab040b51617474656d707420746f206164642077697468206f766572666c6f77f617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ac040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04160100000000004f160100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601601006e0000005a0000001c000000601601006e0000005a00000009000000601601006e0000005a00000031000000601601006e0000006500000009000000601601006e000000830000001a000000601601006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273f6170100820000008201000047004190b1040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6465632e7273000000b118010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000f7140100db140100c5140100b1140100981401","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of `Identity` contract."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":18},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":21},"hash":{"displayName":["Hash"],"type":19},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":20}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"},{"args":[{"docs":[],"indexed":false,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"},{"args":[],"default":false,"docs":[" Returns whether the user has created an address book or not"],"label":"has_address_book","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xc468ded4"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":17}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":17},{"name":"E","type":10}],"path":["Result"]}},{"id":17,"type":{"def":{"primitive":"bool"}}},{"id":18,"type":{"def":{"primitive":"u128"}}},{"id":19,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":20,"type":{"def":{"primitive":"u64"}}},{"id":21,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/artifacts/address_book.json b/artifacts/address_book.json index 9fcd0a9..e50dba0 100644 --- a/artifacts/address_book.json +++ b/artifacts/address_book.json @@ -1,6 +1,6 @@ { "source": { - "hash": "0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21", + "hash": "0xf3351b91ee1e761f370e3e86fc1b6489a2e275ca59944958300a8def008ca8e2", "language": "ink! 4.2.0", "compiler": "rustc 1.68.0-nightly", "build_info": { @@ -37,7 +37,7 @@ "default": false, "docs": [ "Constructor", - "Instantiate with the address of `Identity` contract" + "Instantiate with the address of `Identity` contract." ], "label": "new", "payable": false, @@ -63,7 +63,7 @@ "displayName": [ "Balance" ], - "type": 16 + "type": 18 }, "blockNumber": { "displayName": [ @@ -75,20 +75,20 @@ "displayName": [ "ChainExtension" ], - "type": 19 + "type": 21 }, "hash": { "displayName": [ "Hash" ], - "type": 17 + "type": 19 }, "maxEventTopics": 4, "timestamp": { "displayName": [ "Timestamp" ], - "type": 18 + "type": 20 } }, "events": [ @@ -206,6 +206,34 @@ ], "docs": [], "label": "NickNameUpdated" + }, + { + "args": [ + { + "docs": [], + "indexed": false, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [], + "indexed": false, + "label": "identity", + "type": { + "displayName": [ + "IdentityNo" + ], + "type": 2 + } + } + ], + "docs": [], + "label": "IdentityRemoved" } ], "lang_error": { @@ -331,7 +359,7 @@ "ink", "MessageResult" ], - "type": 8 + "type": 12 }, "selector": "0x08026740" }, @@ -399,6 +427,24 @@ "type": 15 }, "selector": "0x29daba02" + }, + { + "args": [], + "default": false, + "docs": [ + " Returns whether the user has created an address book or not" + ], + "label": "has_address_book", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0xc468ded4" } ] }, @@ -835,6 +881,56 @@ }, { "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 17 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 17 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 18, "type": { "def": { "primitive": "u128" @@ -842,7 +938,7 @@ } }, { - "id": 17, + "id": 19, "type": { "def": { "composite": { @@ -862,7 +958,7 @@ } }, { - "id": 18, + "id": 20, "type": { "def": { "primitive": "u64" @@ -870,7 +966,7 @@ } }, { - "id": 19, + "id": 21, "type": { "def": { "variant": {} diff --git a/artifacts/identity.contract b/artifacts/identity.contract index 684af58..def3cff 100644 --- a/artifacts/identity.contract +++ b/artifacts/identity.contract @@ -1 +1 @@ -{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017e6000017f60017f017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003840182010101000000010601040306030000000003000000050200000000030300000003000503060500050000030005060a0002040008050000000005030b030502000000030003000000050300000303030800000305000008000302080201010302020403020502090604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005f066465706c6f7900630919010041010b0f1f7a79476c85016e820183016d66686984016f0ac8ed0182012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108701200120022003280208200328020c418cb404102d2003200220042006108701200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041088010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a360208200320021020000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d04108a010b9a0102067f017e230041206b220324000240024020012802002202200128020422044904402004200220022004491b2105200341086a410472210603402001200241016a2204360200200620021017200328021022070d02200422022005470d000b0b200041003602080c010b200335020c21082000200329021437020c2000200736020820002002ad2008422086843702000b200341206a24000b910302067f017e230041406a220224002002410036021820024280800137022c200241d4b40436022841f7e698f407200241286a2205101920012005101920022002290328370310200241086a200241106a2002280230101a200228020c210320022802082002280210210120022002280214220736022820032001200510002103200220022802282001200741b086041014024002400240410c20032003410c4f1b0e0401000002000b200241346a41013602002002413c6a4100360200200241c0870436023020024184ae0436023820024100360228200241286a41c887041020000b200228020021012002200228020436022420022001360220200241286a200241206a1021200228022c2204044020022903302108200228022821010c010b200241003a0020200241346a41013602002002413c6a410136020020024190820436023020024100360228200241013602142002200241106a3602382002200241206a360210200241286a418083041020000b200020083702082000200436020420002001360200200241406b24000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101a200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101b0240200104400340200241d8006a200241306a101c20022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a101d200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a101e0b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a418083041020000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b2601017f230041106b220224002002200036020c20012002410c6a41041033200241106a24000b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110322002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f20002802082202200028020046044020002002104a200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107d0d0d200241d897044102107d0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104e20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10640d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000b7802027f017e230041206b22022400200241106a2001104f0240200228021404402002290214210420022802102103200241086a2001104920022f010845044020022f010a21012000200437020420002003360200200020013b010c0c020b200041003602040c010b200041003602040b200241206a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241ec8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005102320022002290358370348200241186a200241c8006a2002280260101a200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a418083041020000b0a0020012000412010330bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101a200328020c21002003280208200329031021072003410036022820032007370320200120022004102520032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000b430020012002104c20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104b200041106a22002001470d000b0b0bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101a200228020c2100200228020820022903102106200241003602282002200637032020012003102720022002290320370310200220042002280228101a20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104b20002f010c200110340b0c0041e081042000200110290ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101a200328020c2100200328020820032903102106200341003602282003200637032020022004102320032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241ec81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003102320022002290350370340200241106a200241406b22042002280258101a20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101a20002002280208200228020c10071a200241e0006a24000bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141ec81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a41047220001023200120012903403703302001200141306a2001280248101a2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a20041020000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d8870410102001410036021820012001290308370310200141106a4108102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041061000b080020004101102f0b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003105020022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001086012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000b2601017f230041106b22022400200220003b010e20012002410e6a41021033200241106a24000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103120012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041020000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141089010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106b2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106b20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c091041020000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a418093041020000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a102220002002290308370300200241306a24000b910101017f230041d0006b22022400200241086a41e081042001105b20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a418083041020000b2000200241086a4121100a1a200241d0006a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101089010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d04108a010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e041020000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107c200241306a24000b0b002000280200200110190b4801027f230041106b22022400200241003b010e024020012002410e6a4102101145044020022f010e21010c010b410121030b200020013b0102200020033b0100200241106a24000bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002104c20022000200110330b50002000413f4d044020012000410274102f0f0b200041ffff004d04402000410274410172200110340f0b200041ffffffff034d04402000410274410272200110190f0b20014103102f2000200110190bed0101087f230041106b2206240020002002101b20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104e2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a20011050200228020c21012000200228020836020020002001360204200241106a24000bc60501097f230041106b2205240020052001103202402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106b200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041052200141f0006a220320001053200129037021052001410036028801200120053703800141ec880441202002104b200141286a410472200210232001200129038001370370200141106a2003200128028801101a200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a0012002200410232000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10540c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410552001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310562000200210540c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410572001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310562000200210540c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410572001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310562000200210540c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410522001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310562000200210540c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410552001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310562000200210540c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410572001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310562000200210540c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410572001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310562000200210540c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105320012903702105200141003602880120012005370380014184ae0441002002104b2002418c8d04411c10332001200129038001370370200141206a2003200128028801101a200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a10232000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105620014180016a200010540b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a22024100102f200141286a41047220021023200141cc006a280200200210190c080b20014180016a22024101102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c070b20014180016a22024102102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c060b20014180016a22024103102f200128022c20021019200141306a280200200210190c050b20014180016a22024104102f200128022c200210190c040b20014180016a22024105102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c030b20014180016a22024106102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c020b20014180016a22024107102f200128022c200210190c010b20014180016a22024108102f200128022c20021019200141306a200210230b20012001290380013703a0012001200141a0016a200128028801101a200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108b010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001086012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101a20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108b010bf90102037f017e230041d0006b22032400200341106a22052001105320032903102106200341003602282003200637032020022802002002280204200341206a2204104b20022802082802002004101920032003290320370310200341086a20052003280228101a20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b10232002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108b010b3501017f230041106b22002400200042808001370204200041d4b40436020020004101102f20001030410120002802081044105e000b4c01017f230041106b22022400200242808001370204200241d4b40436020020024100102f2002200141ff0171410747047f20024101102f20010541000b102f200020022802081044105e000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100102f200345044020024100102f2001280204200210190c020b20024101102f200220012d0001102f0c010b20024101102f200210300b200020022802081044105e000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101a200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c887041020000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103120032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101a200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002102320002802242002101920012001290320370310200120032001280228101a20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101a2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b9e4702137f037e230041b0036b22002400024002400240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d8016a20002802880341d4b4044180800141b086041014200020002903d8013703d8022000410036028803200041d8026a2001410410110d01200028028803220741187621012007411076210520074108762102024002400240024002400240027f02400240200741ff0171220741106b0e05040a0a0a01000b0240024002400240024002400240024002400240024020074197016b0e03091401000b0240200741cf016b0e050a1414140d000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200241ff01714189014772200541ff0171413647200141e4004772720d14410621010c150b200241ff017141fe0147200541ff017141fb014772200141ec0147720d13200041f8006a200041d8026a100e20002802780d13200028027c2204410876210641002107410021010c150b200241ff017141f20047200541ff0171410c47722001411e47720d1220004180016a200041d8026a100e2000280280010d122000280284012204410876210641010c0a0b200241ff01712203413c460d0f200341cc0147200541ff017141f90047722001418d0147720d1120004188036a200041d8026a101c200028029003220a450d11200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410721010c130b200241ff017141ff0147200541ff017141c60147722001411c47720d1020004188016a200041d8026a100e2000280288010d10200028028c012204410876210641030c080b200241ff017141d50047200541ff017141054772200141e40147720d0f20004198016a200041d8026a100e2000280298010d0f200028029c01210420004190016a200041d8026a100e2000280290010d0f2004410876210620002802940122074110762108410421010c110b200241ff017141dd0047200541ff017141df014772200141cd0147720d0e410521010c0f0b200241ff0171412f47200541ff017141f5004772200141e40147720d0d20004188036a200041d8026a101c200028029003220a450d0d200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410821010c0f0b200241ff017141a70147200541ff017141a60147722001410f47720d0c200041a0016a200041d8026a100e20002802a0010d0c20002802a4012204410876210641090c040b200241ff0171410247200541ff017141e7004772200141c00047720d0b410a21010c0c0b200241ff017141a30147200541ff017141ee0147722001410947720d0a20004188036a200041d8026a1021200028028c032207450d0a2007411076210820002f00890320002d008b034110747221062000280294032103200028029003210a20002d0088032104410b21010c0c0b200241ff017141be0147200541ff0171418b014772200141cc0147720d09200041c0016a200041d8026a100e20002802c0010d0920002802c4012104200041b8016a200041d8026a100d20002d00b8014101710d0920002d00b90122070e020605090b200241ff017141b10147200541ff017141fd004772200141be0147720d08200041c8016a200041d8026a100e20002802c8010d0820002802cc0122044108762106410d0b2101410021070c090b200241ff017141b90147200541ff0171413447720d0620014103460d010c060b200241ff017141fe0047200541ff017141334772200141ea0147720d05200041d0016a200041d8026a100e20002802d0010d0520002802d401210420004188036a200041d8026a103120002d0088030d05200041f8016a200041a1036a290000370300200020004199036a2900003703f001200028008903220741107621082004410876210620004195036a280000210920004191036a2800002103200028008d03210a410f21010c070b20004188036a200041d8026a103120002d0088030d04200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410e21010c060b200041b0016a200041d8026a104920002f01b0010d034101210720002f01b20121080b200041a8016a200041d8026a100d20002d00a8014101710d020240024020002d00a90122030e020100040b20004188036a200041d8026a104f200028028c032203450d032000280290032109200028028803210a0b20044108762106410c21010c040b200541ff017141a201472001413247720d0120004188036a200041d8026a103120002d0088030d01200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410221010c030b200041043a00880320004188036a1046000b1058000b410021070b200041e8016a200041f8016a290300370300200020002903f0013703e001200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2202101920002000290388033703b802200041f0006a200041b8026a200028029003101a2000280274210d200028027020002802b8022105200020002802bc02220f36028803200d2005200210002102200041e8006a2000280288032005200f41b08604101402400240024002400240024002400240024002400240024002400240027f02400240024002400240410c20022002410c4f1b0e0400030301030b200028026c210520002000280268360298022000200536029c02200041e0006a20004198026a100e024020002802600d002000280264210220004188036a20004198026a103120002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a220f200041a1036a2900003700002000200029018a033703d80220002d0089032110200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c100b20004194036a41013602002000419c036a4100360200200041e48e04360290030c0f0b200441ff01712006410874722105200028025c210420004188026a200f29000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200236029002200020103a00f0012000200436029402024002400240024002400240024002400240200141016b0e0f010203040c0d050607101514131211000b200041d8026a2005101820004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a280200220445044020014100102f0c020b20014101102f20042003410c6a280200200110250c010b20014101102f200110300b0c180b200041d8026a22032005103f20004188036a220141017220034121100a1a200041003a008803230041106b22032400200342808001370204200341d4b404360200024020012d000045044020034100102f20012d000145044020034100102f0c020b20034101102f200141026a200310230c010b20034101102f200310300b410020032802081044105e000b200041a7036a200041e8016a2d00003a00002000200936009b0320002003360097032000200a360093032000200536008b032000200b3b0089032000200c3a008803200020002903e00137009f032000200741ffff037120084110747236008f03230041306b22012400200141286a20004188036a220341186a290000370300200141206a200341106a290000370300200141186a200341086a29000037030020012003290000370310200141086a200141106a103e200041086a2001290308370300200141306a240020002802082103200028020c2104230041106b22012400200142808001370204200141d4b40436020020014100102f0240200345044020014100102f0c010b20014101102f2004200110190b0c160b200041d8026a2005101720004194036a200041e0026a290300370200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a28020045044020014100102f0c020b20014101102f200341046a200110270c010b20014101102f200110300b0c150b20004188036a20051018200028028c032201450d052000280290032104200020002802880336028803200020013602940320002001200441047422036a220536029003027f0240027f024020040440200741ffff0371200841107472210620004188036a410472210403402000200128020822023602d8022002450d02200620012902002213a7460d04200141106a2101200341106b22030d000b0b2000200536028c03200041d8026a210441000c010b200141106a0b210120042001360200410021024100210641030c010b2000200141106a36028c032013422888a72106200128020c21012013422088a70b210320004188036a10422002450c060b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220629030037030020004190036a2209200041e0026a220b290300370300200020002903d80237038803200041206a20004188036a1022410021010240027f024002402000280220450d0020002802242104200041a0036a200041f0026a290300370300200220062903003703002009200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2003104e20002802182106200028021c200a2003100a210b4104210120034180014d0440200041b8026a200028029c0220002802a002104d200020002802bc02220136029403200020002802b802360288032000200120002802c002220941047422026a220c3602900302402009044020004188036a4104722109034020002001280208220d3602b802200d450d0520012802002005460d02200141106a2101200241106b22020d000b0b2000200c36028c03200041b8026a210941000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a101e0b41012102200141ff01714107460d020c150b200141106a0b21012009200136020020004188036a2201104220004194036a2202200336020020004190036a2209200b3602002000200636028c03200020053602880320004198026a22062001101d2004200028029c0220002802a00210242000419c036a200336020020004198036a200a3602002002200741ffff0371200841107472360200200920053602002000200436028c032000410136028803200110512006101e0b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c120b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2204200041e8026a220229030037030020004190036a2206200041e0026a220b290300370300200020002903d80237038803200041306a20004188036a10224100210102402000280230450d0020002802342109200041a0036a200041f0026a290300370300200420022903003703002006200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220b3602a0022000200236029c02200020013a009802200041286a2003104e2000280228210e200028022c200a2003100a210f024020034180014d0440200041b8026a200028029c02221020002802a0022211104d200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422126a220d36029003027f024002402001450d00410021014100210603402001200c6a220441086a280200044020042802002005460d03200641016a21062012200141106a2201470d010c020b0b200441106a210d0b2000200d36028c034100210241030c010b2000200441106a36028c032006200b4f0d05200120026a220120053602002001410c6a2003360200200141086a200f360200200141046a200e3602004101210241070b210120004188036a10422002450d0120092010201110242000419c036a200336020020004198036a200a36020020004194036a200741ffff037120084110747236020020004190036a20053602002000200936028c03200041023602880320004188036a105120004198026a101e0c120b410421010b20004198026a101e0b41012102200141ff01714107460d0f0c110b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2204200041e0026a2202290300370300200020002903d80237038803200041386a20004188036a10222000280238047f200028023c2107200041a0036a200041f0026a2903003703002001200329030037030020042002290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022203450d07200020002d00bb023a009b02200020002f00b9023b0099022000200336029c02200020013a009802024020002802c00222060440410021022003210103402005200128020046044041012104200241016a220104402001200647044003400240024002402005200320014104746a2202280200460440200141016a2201450d01200441016a22040d0341a08104411c41f484041013000b20012004490d012003200120046b4104746a22082002290200370200200841086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012006470d000b0b024020044100200420064b1b450440200420064d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200620046b22013602a0022004450d04200720032001102420004190036a20053602002000200736028c03200041033602880320004188036a105120004198026a101e0c0d0b41a08104411c41e484041013000b200141106a21012006200241016a2202470d000b0b200020063602a0020b20004198026a101e41030541000b2101410121020c100b2006200b41b488041061000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c887041020000b41002106410121034100210241010b20004194036a200136020020004190036a200236020020004100360288032000200341ff017120064108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a2802002205044020014100102f20052003410c6a2802002001104b0c020b20014101102f200120032d0004102f0c010b20014101102f200110300b20012802081044105e000b20004188036a2107230041f0006b22022400200041f0016a22012802242103200220013602202002200336021c20024100360218200241386a200241186a101602400240024002400240024020022802404504402007410036020820074280808080c0003702000c010b200241106a4104103820022802142203450d01200228021022014100480d012001200310392206450d0220062002290338370200200641106a200241c8006a220a280200360200200641086a200241406b2209290300370200200241306a200241206a28020036020020022002290318370328200241386a200241286a10160240200228024045044041042103410121040c010b41042101410121050340200541016a22044521080240200120054704402006200541146c6a22032002290338370200200341106a200a280200360200200341086a200929030037020020080d08200121030c010b027f20080440417f21032004210541000c010b200120016a22032001490d07200241086a410420032004200320044b1b2203200341044d1b22031038200228020c210b200228020821052002200110382002200636026020022002290300370264200241d0006a2005200b200241e0006a103a2002280250450440200228025421064181808080780c010b200228025421052001210320022802580b210b2005200b103b2006200141146c6a22012002290338370200200141106a200a280200360200200141086a200929030037020020080d070b200241386a200241286a1016200321012004210520022802400d000b0b2007200436020820072006360204200720033602000b200241f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321032000280290032104230041106b22012400200142808001370204200141d4b40436020002402003044020014100102f20042001104c2004450d012003200441146c6a21040340200328020020011019200341046a20011027200341146a22032004470d000b0c010b20014101102f200110300b0c0c0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1022200020002802102206410146047e42810c05200041003602c00220004280808080c0003703b8022002410441001024200041a0036a200041f0026a22072903003703002001200329030037030020052004290300370300200020002903d8023703880320004188036a22012002102a2002200041d8026a10282000200241016a2205417f20051b36029002200041a4036a20072903003702002000419c036a200329030037020020004194036a2004290300370200200041ac036a2002360200200020002903d80237028c03200041003602880320011051200041b8026a101e2001200041f0016a4128100a1a2001105c2002ad42208642800c840b37038803200641014620004188036a105a000b41012102200141ff01714107470d090b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c080b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2203200041e8026a220429030037030020004190036a2205200041e0026a2202290300370300200020002903d80237038803200041406b20004188036a102220002802402206047f20002802442101200041a0036a200041f0026a2903003703002003200429030037030020052002290300370300200020002903d8023703880320004188036a2203102b41e081042001105d41dc81042001105d20004104360288032000200136028c03200310512003200041f0016a4128100a1a2003105c41070541000b210120064520011059000b200041b0026a200041e8016a290300370300200020093602a402200020033602a0022000200a36029c02200020002903e0013703a8022000200741ffff037120084110747236029802200041b8026a103520004188036a41e481042005105b20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106241017321020b20004188036a2005103f027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1062410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103e410620002802504101460d011a200041a0036a2203200041f0026a29030037030020004198036a2204200041e8026a29030037030020004190036a2202200041e0026a290300370300200020002903d8023703880320004188036a2201102b2003200041b0026a2903003703002004200041a8026a2903003703002002200041a0026a29030037030020002000290398023703880320012005102a200520004198026a10282001200041f0016a4128100a1a2001105c4107210141000c020b41000b210141010b20011059000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a418083041020000b200041d7026a200041e8016a2d00003a0000200020093600cb02200020033600c7022000200a3600c302200020053600bb022000200b3b00b9022000200c3a00b802200020002903e0013700cf022000200741ffff03712008411074723600bf02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a29030037030020004190036a2203200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a102220002802482204047f41e48104200028024c2205200041b8026a1029200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000410836028803200320002903b8023703002001200041c0026a2903003703002000200536028c0320004188036a220110512001200041f0016a4128100a1a2001105c41070541000b210120044520011059000b200041d8026a2203103541002101027f02402003200041f0016a10620440200041b8026a2005101720002802bc020d01410321010b41010c010b41e881042005105d4107210120004107360288032000200536028c0320004188036a220310512003200041f0016a4128100a1a2003105c41000b20011059000b200041d8026a22011035027f027f41002001200041f0016a1062450d001a20004188036a20051017200028028c0322010440200020002f0089033b00b902200020002d008b033a00bb02200020002903900322133703c002200020013602bc02200020002d0088033a00b8020240024002402003044020094180014b0d01200020093602c002200020033602bc022000200a3602b8020b200741ffff03714101460d012013422088a721080c020b41050c030b200020083b01c4020b2005200041b8026a102620004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20083b01002000200536028c03200041063602880320004188036a220110512001200041f0016a4128100a1a2001105c4107210141000c020b41030b210141010b20011059000b200020033602c4022000200a3602c002200020053602b8022000200741ffff03712008411074723602bc02200041d8026a22011035027f02402001200041f0016a1062044042800a2113200a418101490d010b4201211441010c010b2004200041b8026a10262000200441016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20033b01002000200436028c03200041053602880320004188036a220110512001200041f0016a4128100a1a2004ad42208621152001105c4200211341000b2000201342800e832014842015843703880320004188036a105a000b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c010b20004184ae0436029803200041003602880320004188036a418c8e041020000b200220011059000b410020012802081044105e000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1022024020022802080440200241106a200228020c10182002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a20021020000b0b00200020014120100b450bc708020e7f017e23004180016b22002400024002400240024002400240103741ff01712201410546044020004180800136024841d4b404200041c8006a22011002200041106a200028024841d4b4044180800141b0860410142000200029031037037020004100360248200041f0006a2001410410110d032000280248220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041206a22011035200042003703400c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041086a200041f0006a100c20002802080d03200041206a20002802744104762201200028020c220220012002491b101b2002450d010340200041c8006a200041f0006a102102400240200028024c220304402000290350210e20002802482107200028022822012000280220460d010c020b200041206a101e0c060b200041206a2001104a200028022821010b2000280224220520014104746a2204200e3702082004200336020420042007360200200141016a2203044020002003360228200241016b22020d010c040b0b41a08104411c41d095041013000b200020013a0048200041c8006a1046000b20002802282103200028022421050b2000411e6a220120002d00233a0000200020002f00213b011c2005450d0020002d002021042000411a6a20012d000022013a0000200020002f011c22023b0118200020043a0070200020023b0071200020013a00732000200336027820002005360274200041c8006a2003101b2000280248220720002802502201490d01200028024c210402402003452001200746720d00200420014104746a210a200120076b41016a2102200341047441106b210b410021010340200120056a220841046a28020021062000200841086a2802002209104e2000280200210c200028020420062009100a210d2001200a6a2206410c6a2008410c6a2f01003b0100200641086a2009360200200641046a200d3602002006200c3602002002450d01200241016a21022001200b47200141106a21010d000b0b02402003450d0020034104742102410021052004210103402001280204450d01200041286a200141086a290200220e37030020002001290200370320200ea74181014f0d04200141106a21012005200041206a1026200541016a2105200241106b22020d000b0b200720041040200041206a220110352000200336024420004100360240200041f0006a101e0c030b1058000b41808004412141b485041013000b200041d4006a4101360200200041dc006a4100360200200041848f0436025020004184ae0436025820004100360248200041c8006a418c8f041020000b200041c8006a220420014128100a1a2004105c230041106b22012400200142808001370204200141d4b40436020020014100102f20014100102f410020012802081044105e000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a419c8f04200241086a1065200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107b20032003290310370320200341086a2005200141046a107b20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002106a2004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10670c020b230041106b22042400200441086a200020034101106a2004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1064200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107220026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410750d02200341106a2001200920026b4101107620032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10770d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011076200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410750d00200220082006200128020c1101000d00200520022001107721000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011071200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041088010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010732206200020016a22082004417c716a200441037110736a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041074200328020c21052003280208210820032003280200200328020422002000417c714190a0041074200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107321020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021071200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107222024b0440200941086a2001200020026b4100107641012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107721000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1065200341206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041078200341c8006a200420032802502003280254107f20032802484101470d02200328024c21010c050b200341306a200420012000107f2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c041070200341386a200420032802402003280244107f410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107e20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410782002200020032802202003280224108001450d05200341186a200328026020032802702200200c10810120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108101200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a00410702003418c016a4101200328020020032802041080010541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011071200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041088010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1065200241206a24000b0b002000280200200110790b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107c450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107c0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107c21000b200241406b240020000b1500200020012002200341ccad0441e0ad041088010b1500200020012002200341e8b2044180b3041088010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a20021020000bf80102037f017e230041d0006b22042400200441106a22062001105320042903102107200441003602282004200737032020022802002002280204200441206a2205104b200520022802082003103320042004290320370310200441086a20062004280228101a20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b10232002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0bfd330700418080040bb10f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f00000059060000240000003b605e7d00e945ca6dbd73337733867eb16cd67c4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002a00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b206e616d6520697320746f6f206c6f6e676c07010018000000d106010038000000c6000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The `IdentityNo` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The `NetworkId` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The `Ss58Prefix` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The `NetworkId` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The `Ss58Prefix` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The `NetworkId` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the `IdentityInfo` of an identity that is associated with"," the provided `IdentityNo`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified `NetworkId`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a `NetworkId`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the `IdentityNo`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file +{"source":{"hash":"0xc58b8fed4f9222b100630773cb8793c9db7548b0a03a6ef1e55b87d6794fe0c9","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017f60017f017e6000017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003830181010101000000010601040306030000000000030002000000000500000000000303030503060500050000000305060b0002040008050000000005030903050200000303000900000503000003030300080003050000080003020802010103020204030205020a0604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005e066465706c6f7900620919010041010b0f1d7978476b84016d810182016c65676883016e0aabef0181012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108601200120022003280208200328020c418cb404102d2003200220042006108601200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041087010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a36020820032002101c000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d041089010bb70101067f230041206b220324000240024020012802002202200128020422044904402004200220022004491b2106200341086a410472210503402001200241016a220436020020052002101720032d001822074102470d02200422022006470d000b0b200041023a00100c010b200020032f00193b001120002005290200370204200041136a2003411b6a2d00003a00002000410c6a200541086a280200360200200020073a0010200020023602000b200341206a24000bfc0301067f230041e0006b220224002002410036023820024280800137024c200241d4b40436024841f7e698f407200241c8006a2205101920012005101920022002290348370330200241106a200241306a2002280250101b2002280214210320022802102002280230210120022002280234220736024820032001200510002103200241086a20022802482001200741b0860410140240024002400240410c20032003410c4f1b0e0401000002000b200241d4006a4101360200200241dc006a4100360200200241c0870436025020024184ae0436025820024100360248200241c8006a41c88704101c000b200228020821012002200228020c36024420022001360240200241c8006a200241406b102320022d0054220141024704402002411e6a200241d7006a2d00003a000020022002290049370320200220022f00553b011c2002200241d0006a28000036002720022d004821040c020b200241003a0020200241d4006a4101360200200241dc006a410136020020024190820436025020024100360248200241013602342002200241306a3602582002200241206a360230200241c8006a41808304101c000b410221010b200020043a000020002002290320370001200020013a000c200020022f011c3b000d200041086a20022800273600002000410f6a2002411e6a2d00003a0000200241e0006a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241dc8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005101a20022002290358370348200241186a200241c8006a2002280260101b200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c88704101c000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a41808304101c000b2601017f230041106b220224002002200036020c20012002410c6a41041034200241106a24000b0a0020012000412010340b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104c20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10630d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107c0d0d200241d897044102107c0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101b200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101f0240200104400340200241d8006a200241306a102020022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a1021200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a10220b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a41808304101c000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c88704101c000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110332002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f200028020822022000280200460440200020021049200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400b6c02027f017e230041106b2202240020022001104e02402002280204044020022902042104200228020021032001104d41ff017122014102470440200020013a000c20002004370204200020033602000c020b200041023a000c0c010b200041023a000c0b200241106a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241dc81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003101a20022002290350370340200241106a200241406b22042002280258101b20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101b20002002280208200228020c10071a200241e0006a24000bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101b200228020c2100200228020820022903102106200241003602282002200637032020012003102620022002290320370310200220042002280228101b20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104a200120002d000c10310b0c0041e481042000200110280ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101b200328020c2100200328020820032903102106200341003602282003200637032020022004101a20032003290320370310200320052003280228101b20002003280200200328020410071a200341306a24000bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101b200328020c21002003280208200329031021072003410036022820032007370320200120022004102a20032003290320370310200320052003280228101b20002003280200200328020410071a200341306a24000b430020012002102f20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104a200041106a22002001470d000b0b0bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141dc81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a4104722000101a200120012903403703302001200141306a2001280248101b2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a2004101c000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d88704101020014100360218200120012903083703104102200141106a102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410310c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210340c010b200041ffffffff034d04402000410274410272200110190c010b2001410310312000200110190b200241106a24000b08002000410110310b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041060000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003104f20022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001085012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103220012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101c000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141088010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106a2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106a20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c09104101c000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a41809304101c000b910101017f230041d0006b22022400200241086a41e481042001105a20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a41808304101c000b2000200241086a4121100a1a200241d0006a24000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a101820002002290308370300200241306a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101088010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d041089010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e04101c000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107b200241306a24000b0b002000280200200110190bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002102f20022000200110340bed0101087f230041106b2206240020002002101f20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104c2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a2001104f200228020c21012000200228020836020020002001360204200241106a24000b4201027f230041106b22012400200141086a2000100d20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0bc60501097f230041106b2205240020052001103302402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106a200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041051200141f0006a220320001052200129037021052001410036028801200120053703800141ec880441202002104a200141286a4104722002101a2001200129038001370370200141106a2003200128028801101b200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a00120022004101a2000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10530c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410542001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310552000200210530c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410562001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310552000200210530c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410562001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310552000200210530c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410512001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310552000200210530c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410542001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310552000200210530c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410562001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310552000200210530c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410562001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310552000200210530c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105220012903702105200141003602880120012005370380014184ae0441002002104a2002418c8d04411c10342001200129038001370370200141206a2003200128028801101b200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a101a2000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105520014180016a200010530b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a220241001031200141286a4104722002101a200141cc006a280200200210190c080b20014180016a220241011031200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104a0c070b20014180016a220241021031200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104a0c060b20014180016a220241031031200128022c20021019200141306a280200200210190c050b20014180016a220241041031200128022c200210190c040b20014180016a220241051031200128022c20021019200141346a280200200141386a2802002002104a20022001413c6a2d000010310c030b20014180016a220241061031200128022c20021019200141346a280200200141386a2802002002104a20022001413c6a2d000010310c020b20014180016a220241071031200128022c200210190c010b20014180016a220241081031200128022c20021019200141306a2002101a0b20012001290380013703a0012001200141a0016a200128028801101b200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108a010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001085012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101b20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108a010bf90102037f017e230041d0006b22032400200341106a22052001105220032903102106200341003602282003200637032020022802002002280204200341206a2204104a20022802082802002004101920032003290320370310200341086a20052003280228101b20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b101a2002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108a010b4c01017f230041106b22022400200242808001370204200241d4b4043602002002410010312002200141ff0171410847047f20024101103120010541000b1031200020022802081044105d000b3501017f230041106b22002400200042808001370204200041d4b40436020020004101103120001030410120002802081044105d000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100103120034504402002410010312001280204200210190c020b200241011031200220012d000110310c010b200241011031200210300b200020022802081044105d000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101b200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c88704101c000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103220032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101b200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002101a20002802242002101920012001290320370310200120032001280228101b20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101b2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b854702127f037e230041b0036b22002400024002400240024002400240024002400240024002400240024002400240027f0240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d0016a20002802880341d4b4044180800141b086041014200020002903d0013703d8022000410036028803200041d8026a2001410410110d0e200028028803220741187621042007411076210120074108762106027f02400240024002400240024002400240200741ff0171220741106b0e050317171701000b0240024002400240024002400240024002400240024020074197016b0e03092101000b0240200741cf016b0e050a2121210c000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200641ff01714189014772200141ff0171413647200441e4004772720d2141060c120b200641ff017141fe0147200141ff017141fb014772200441ec0147720d20200041f8006a200041d8026a100e20002802780d20200028027c2202410876210341000c110b200641ff017141f20047200141ff0171410c47722004411e47720d1f20004180016a200041d8026a100e2000280280010d1f2000280284012202410876210341010c100b200641ff01712202413c460d0e200241cc0147200141ff017141f90047722004418d0147720d1e20004188036a200041d8026a10202000280290032208450d1e2000280294032209410876210a20002f00890320002d008b03411074722103200028028c03210420002d008803210241070c0f0b200641ff017141ff0147200141ff017141c60147722004411c47720d1d20004188016a200041d8026a100e2000280288010d1d200028028c012202410876210341030c0e0b200641ff017141d50047200141ff017141054772200441e40147720d1c20004198016a200041d8026a100e2000280298010d1c200028029c01210220004190016a200041d8026a100e2000280290010d1c20002802940121042002410876210341040c0d0b200641ff017141dd0047200141ff017141df014772200441cd0147720d1b41050c0c0b200641ff0171412f47200141ff017141f5004772200441e40147720d1a20004188036a200041d8026a10202000280290032208450d1a2000280294032209410876210a20002f00890320002d008b03411074722103200028028c03210420002d008803210241080c0b0b200641ff017141a70147200141ff017141a60147722004410f47720d19200041a0016a200041d8026a100e20002802a0010d1920002802a4012202410876210341090c0a0b200641ff0171410247200141ff017141e7004772200441c00047720d18410a0c090b200641ff017141a30147200141ff017141ee0147722004410947720d1720004188036a200041d8026a102320002d00940322094102460d1720002f00890320002d008b0341107472210320002f00950320004197036a2d000041107472210a2000280290032108200028028c03210420002d0088032102410b0c080b200641ff017141be0147200141ff0171418b014772200441cc0147720d16200041b8016a200041d8026a100e20002802b8010d1620002802bc012102200041b0016a200041d8026a100d20002d00b0014101710d1620002d00b1010e020504160b200641ff017141b10147200141ff017141fd004772200441be0147720d15200041c0016a200041d8026a100e20002802c0010d1520002802c40122024108762103410d0c060b200641ff017141b90147200141ff0171413447720d1420044103460d010c140b200641ff017141fe0047200141ff017141334772200441ea0147720d13200041c8016a200041d8026a100e20002802c8010d1320002802cc01210220004188036a200041d8026a103220002d0088030d13200041f8016a2000419e036a290100370300200041ff016a200041a5036a280000360000200020004196036a2901003703f0012002410876210320004191036a2800002209410876210a20004195036a2d00002105200028008d0321082000280089032104410f0c040b20004188036a200041d8026a103220002d0088030d12200041f8016a200041a5036a28000036020020002000419d036a2900003703f001200028028c032202410876210320004198036a2802002209410876210a2000419c036a2d0000210520004194036a280200210820004190036a280200210420002f018a03210b20002d008903210c410e0c030b20004188036a200041d8026a104e200028028c032208450d11200028029003210920002802880321040b200041a8016a200041d8026a100d20002d00a8014101710d10410221050240024020002d00a9010e020100120b200041d8026a104d41ff017122014102460d11200141017121050b2009410876210a20024108762103410c0c010b200141ff017141a201472004413247720d0f20004188036a200041d8026a103220002d0088030d0f200041f8016a200041a5036a28000036020020002000419d036a2900003703f001200028028c032202410876210320004198036a2802002209410876210a2000419c036a2d0000210520004194036a280200210820004190036a280200210420002f018a03210b20002d008903210c41020b210f200041e7016a200041ff016a280000360000200041e0016a200041f8016a290300370300200020002903f0013703d801200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2206101920002000290388033703b802200041f0006a200041b8026a200028029003101b20002802742107200028027020002802b8022101200020002802bc02220e3602880320072001200610002106200041e8006a2000280288032001200e41b0860410140240024002400240410c20062006410c4f1b0e0400030301030b200028026c210120002000280268360298022000200136029c02200041e0006a20004198026a100e024020002802600d002000280264210120004188036a20004198026a103220002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a2210200041a1036a2900003700002000200029018a033703d80220002d0089032111200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c120b20004194036a41013602002000419c036a4100360200200041e48e04360290030c110b200941ff0171200a410874722107200241ff01712003410874722106200028025c210220004188026a201029000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200136029002200020113a00f0012000200236029402024002400240024002400240024002400240200f41016b0e0f010203040d0e050607111615141312000b200041d8026a2006101e20004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a2202280200450440200141001031200241086a28020022054504402001410010310c020b20014101103120052002410c6a2802002001102a0c010b200141011031200110300b0c1a0b200041d8026a22022006103e20004188036a220141017220024121100a1a200041003a008803230041106b22022400200242808001370204200241d4b404360200024020012d000045044020024100103120012d00014504402002410010310c020b200241011031200141026a2002101a0c010b200241011031200210300b410020022802081044105d000b200041a4036a200041e0016a280200360200200020053a009b03200020073600970320002008360093032000200436008f032000200636008b032000200b3b0089032000200c3a008803200020002903d80137029c03230041306b22012400200141286a20004188036a220241186a290000370300200141206a200241106a290000370300200141186a200241086a29000037030020012002290000370310200141086a200141106a103f200041086a2001290308370300200141306a240020002802082102200028020c2105230041106b22012400200142808001370204200141d4b404360200200141001031024020024504402001410010310c010b2001410110312005200110190b0c180b200041d8026a2006101720004190036a200041e0026a290300370300200020002903d80237038803230041106b22012400200142808001370204200141d4b404360200024020004188036a22022d000c22054103470440200141001031200541024604402001410010310c020b2001410110312002200110260c010b200141011031200110300b0c170b20004188036a2006101e200028028c032201450d062000280290032102200020002802880336028803200020013602940320002001200241047422056a220636029003027f0240027f02402002044020004188036a410472210303402000200128020822023602d8022002450d02200420012902002212a7460d04200141106a2101200541106b22050d000b0b2000200636028c03200041d8026a210341000c010b200141106a0b210120032001360200410021024100210441030c010b2000200141106a36028c032012422888a72104200128020c21012012422088a70b210520004188036a10422002450c070b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220329030037030020004190036a2209200041e0026a220a290300370300200020002903d80237038803200041206a20004188036a1018410021010240027f024002402000280220450d0020002802242105200041a0036a200041f0026a290300370300200220032903003703002009200a290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2007104c20002802182109200028021c20082007100a210a4104210120074180014d0440200041b8026a200028029c0220002802a002104b200020002802bc02220136029403200020002802b802360288032000200120002802c002220341047422026a220b3602900302402003044020004188036a4104722103034020002001280208220c3602b802200c450d0520012802002006460d02200141106a2101200241106b22020d000b0b2000200b36028c03200041b8026a210341000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a10220b41012102200141ff01714108460d020c170b200141106a0b21012003200136020020004188036a2201104220004194036a2202200736020020004190036a2203200a3602002000200936028c03200020063602880320004198026a2209200110212005200028029c0220002802a00210292000419c036a200736020020004198036a200836020020022004360200200320063602002000200536028c03200041013602880320011050200910220b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c140b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220329030037030020004190036a2209200041e0026a220a290300370300200020002903d80237038803200041306a20004188036a10184100210102402000280230450d0020002802342105200041a0036a200041f0026a290300370300200220032903003703002009200a290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022209450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220a3602a0022000200936029c02200020013a009802200041286a2007104c2000280228210f200028022c20082007100a210d024020074180014d0440200041b8026a200028029c02220e20002802a0022210104b200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422116a220b36029003027f024002402001450d00410021014100210303402001200c6a220241086a280200044020022802002006460d03200341016a21032011200141106a2201470d010c020b0b200241106a210b0b2000200b36028c034100210241030c010b2000200241106a36028c032003200a4f0d05200120096a220120063602002001410c6a2007360200200141086a200d360200200141046a200f3602004101210241080b210120004188036a10422002450d012005200e201010292000419c036a200736020020004198036a200836020020004194036a200436020020004190036a20063602002000200536028c03200041023602880320004188036a105020004198026a10220c130b410421010b20004198026a10220b41012102200141ff01714108460d100c130b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220229030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041386a20004188036a10182000280238047f200028023c2108200041a0036a200041f0026a2903003703002001200229030037030020052004290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022205450d08200020002d00bb023a009b02200020002f00b9023b0099022000200536029c02200020013a009802024020002802c00222040440410021022005210103402006200128020046044041012103200241016a220104402001200447044003400240024002402006200520014104746a2202280200460440200141016a2201450d01200341016a22030d0341a08104411c41f484041013000b20012003490d012005200120036b4104746a22072002290200370200200741086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012004470d000b0b024020034100200320044b1b450440200320044d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200420036b22013602a0022003450d04200820052001102920004190036a20063602002000200836028c03200041033602880320004188036a105020004198026a10220c0e0b41a08104411c41e484041013000b200141106a21012004200241016a2202470d000b0b200020043602a0020b20004198026a102241030541000b2101410121020c120b2003200a41b488041060000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c88704101c000b200041043a00880320004188036a1046000b41002104410121054100210241010b20004194036a200136020020004190036a200236020020004100360288032000200541ff017120044108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a2202280200450440200141001031200241086a2802002205044020014100103120052002410c6a2802002001104a0c020b200141011031200120022d000410310c010b200141011031200110300b20012802081044105d000b20004188036a2108230041f0006b22032400200041f0016a22012802242102200320013602202003200236021c20034100360218200341386a200341186a101602400240024002400240024020032d004841024604402008410036020820084280808080c0003702000c010b200341106a4104103820032802142202450d01200328021022014100480d012001200210392206450d0220062003290338370200200641106a200341c8006a2209280200360200200641086a200341406b220a290300370200200341306a200341206a28020036020020032003290318370328200341386a200341286a1016024020032d0048410246044041042102410121050c010b41042101410121040340200441016a22054521070240200120044704402006200441146c6a22022003290338370200200241106a2009280200360200200241086a200a29030037020020070d08200121020c010b027f20070440417f21022005210441000c010b200120016a22022001490d07200341086a410420022005200220054b1b2202200241044d1b22021038200328020c210b200328020821042003200110382003200636026020032003290300370264200341d0006a2004200b200341e0006a103a2003280250450440200328025421064181808080780c010b200328025421042001210220032802580b210b2004200b103b2006200141146c6a22012003290338370200200141106a2009280200360200200141086a200a29030037020020070d070b200341386a200341286a1016200221012005210420032d00484102470d000b0b2008200536020820082006360204200820023602000b200341f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321022000280290032105230041106b22012400200142808001370204200141d4b40436020002402002044020014100103120052001102f2005450d012002200541146c6a21050340200228020020011019200241046a20011026200241146a22022005470d000b0c010b200141011031200110300b0c0d0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220529030037030020004190036a2203200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1018200020002802102206410146047e42810e05200041003602c00220004280808080c0003703b8022001410441001029200041a0036a200041f0026a22082903003703002002200529030037030020032004290300370300200020002903d8023703880320004188036a2202200110242001200041d8026a10272000200141016a2203417f20031b36029002200041a4036a20082903003702002000419c036a200529030037020020004194036a2004290300370200200041ac036a2001360200200020002903d80237028c03200041003602880320021050200041b8026a10222002200041f0016a4128100a1a2002105b2001ad42208642800e840b37038803200641014620004188036a1059000b41012102200141ff01714108470d0a0b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c090b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2205200041e8026a22042903003703004108210120004190036a2203200041e0026a2206290300370300200020002903d80237038803200041406b20004188036a1018024020002802402208450440410021010c010b20002802442102200041a0036a200041f0026a2903003703002005200429030037030020032006290300370300200020002903d8023703880320004188036a2205102b41e481042002105c41e881042002105c20004104360288032000200236028c03200510502005200041f0016a4128100a1a2005105b0b20084520011057000b200041ad026a200041e0016a290300370000200041b4026a200041e7016a280000360000200020053a00a402200020073602a0022000200836029c022000200436029802200020002903d8013700a502200041b8026a103520004188036a41e081042006105a20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106141017321020b20004188036a2006103e027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1061410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103f410720002802504101460d011a200041a0036a2205200041f0026a29030037030020004198036a2204200041e8026a2903003703004108210120004190036a2203200041e0026a290300370300200020002903d8023703880320004188036a2202102b2005200041b0026a2903003703002004200041a8026a2903003703002003200041a0026a290300370300200020002903980237038803200220061024200620004198026a10272002200041f0016a4128100a1a2002105b41000c020b41000b210141010b20011057000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a41808304101c000b41082101200041d4026a200041e0016a280200360200200020053a00cb02200020073600c702200020083600c302200020043600bf02200020063600bb022000200b3b00b9022000200c3a00b802200020002903d8013702cc02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a29030037030020004190036a2205200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a1018024020002802482204450440410021010c010b41e08104200028024c2203200041b8026a1028200520002903b8023703002002200041c0026a290300370300200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000200336028c03200041083602880320004188036a220210502002200041f0016a4128100a1a2002105b0b20044520011057000b200041d8026a2202103541002101027f02402002200041f0016a10610440200041b8026a2006101720002d00c4024102470d01410321010b41010c010b41ec81042006105c20004107360288032000200636028c0320004188036a220110502001200041f0016a4128100a1a2001105b4108210141000b20011057000b200041d8026a22011035027f027f41002001200041f0016a1061450d001a20004188036a2006101720002d00940322024102470440200041c0026a20004190036a280000360000200041c7026a20004197036a2d00003a000020002000290089033700b902200020002f0095033b00c502200020023a00c402200020002d0088033a00b802024020080440200741c0004b0d01200020073602c002200020083602bc02200020043602b8020b20054102470440200020053a00c402200521020b2006200041b8026a10254108210120004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20023a00002000200636028c03200041063602880320004188036a220210502002200041f0016a4128100a1a2002105b41000c030b41060c010b41030b210141010b20011057000b200020073602c402200020083602c002200020043602bc02200020063602b802200041d8026a22011035027f02402001200041f0016a1061044042800c2112200841c100490d010b4201211341010c010b2002200041b8026a10252000200241016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20093a00002000200236028c03200041053602880320004188036a220110502001200041f0016a4128100a1a2002ad42208621142001105b4200211241000b2000201242800e832013842014843703880320004188036a1059000b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c020b1058000b20004184ae0436029803200041003602880320004188036a418c8e04101c000b200220011057000b410020012802081044105d000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1018024020022802080440200241106a200228020c101e2002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a2002101c000b0b00200020014120100b450bd209020f7f017e23004190016b22002400024002400240024002400240103741ff01712201410546044020004180800136025841d4b404200041d8006a22011002200041186a200028025841d4b4044180800141b0860410142000200029031837032020004100360258200041206a2001410410110d032000280258220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041306a22011035200042003703500c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041106a200041206a100c20002802100d0320004180016a200028022441047622012000280214220320012003491b101f2003450d01200041e5006a21040340200041d8006a200041206a10230240024020002d006422054102470440200041386a2206200041e0006a2802003602002000412e6a2207200441026a2d00003a000020002000290358370330200020042f00003b012c2000280288012202200028028001460d010c020b20004180016a10220c060b20004180016a2002104920002802880121020b200028028401220820024104746a22012000290330370200200120053a000c200120002f012c3b000d200141086a20062802003602002001410f6a20072d00003a0000200241016a220504402000200536028801200341016b22030d010c040b0b41a08104411c41d095041013000b200020013a0058200041d8006a1046000b200028028801210520002802840121080b2000412a6a220120002d0083013a0000200020002f0081013b01282008450d0020002d00800121042000412e6a20012d000022013a0000200020002f012822023b012c200020043a008001200020023b008101200020013a00830120002005360288012000200836028401200041d8006a2005101f2000280258220620002802602201490d01200028025c210402402005452001200646720d00200420014104746a210a200120066b41016a2103200541047441106b210b41002102200041326a210c0340200220086a220741046a2802002101200041086a200741086a2802002209104c2000280208210d200028020c20012009100a210e2002200a6a2201410c6a2007410c6a2d00003a0000200141086a2009360200200141046a200e3602002001200d3602002001410d6a20002f00303b00002001410f6a200c2d00003a00002003450d01200341016a21032002200b47200241106a21020d000b0b02402005450d00200541047421034100210220042101034020012d000c4102460d01200041386a200141086a290200220f37030020002001290200370330200fa741c1004f0d04200141106a21012002200041306a1025200241016a2102200341106b22030d000b0b200620041040200041306a22011035200020053602542000410036025020004180016a10220c030b1058000b41808004412141b485041013000b200041e4006a4101360200200041ec006a4100360200200041888f0436026020004184ae0436026820004100360258200041d8006a41908f04101c000b200041d8006a220420014128100a1a2004105b230041106b22012400200142808001370204200141d4b404360200200141001031200141001031410020012802081044105d000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a08f04200241086a1064200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107a20032003290310370320200341086a2005200141046a107a20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106641000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210692004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10660c020b230041106b22042400200441086a20002003410110692004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1063200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107120026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410740d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410740d02200341106a2001200920026b4101107520032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10760d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410740d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011075200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410740d00200220082006200128020c1101000d00200520022001107621000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011070200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041087010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010722206200020016a22082004417c716a200441037110726a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041073200328020c21052003280208210820032003280200200328020422002000417c714190a0041073200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107221020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021070200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107122024b0440200941086a2001200020026b4100107541012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107621000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1064200341206a24000bdc08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107d0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041077200341c8006a200420032802502003280254107e20032802484101470d02200328024c21010c050b200341306a200420012000107e2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c04106f200341386a200420032802402003280244107e410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107d20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410772002200020032802202003280224107f450d05200341186a200328026020032802702200200c10800120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107d20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108001200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a004106f2003418c016a410120032802002003280204107f0541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011070200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041087010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1064200241206a24000b0b002000280200200110780b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107b450d010c020b20032802002200200328020428020c110a0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107b0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107b21000b200241406b240020000b1500200020012002200341ccad0441e0ad041087010b1500200020012002200341e8b2044180b3041087010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a2002101c000bf80102037f017e230041d0006b22042400200441106a22062001105220042903102107200441003602282004200737032020022802002002280204200441206a2205104a200520022802082003103420042004290320370310200441086a20062004280228101b20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b101a2002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0b81340700418080040bb50f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f0000005906000024000000b16cd67c6dbd733300e945ca3b605e7d7733867e4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002b00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b207270632075726c20697320746f6f206c6f6e67006c0701001b000000d106010038000000c7000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":11}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The `IdentityNo` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The `IdentityNo` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The `NetworkId` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the network that got added."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The `NetworkId` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the updated network."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the updated network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The `NetworkId` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The `IdentityNo` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the `IdentityInfo` of an identity that is associated with"," the provided `IdentityNo`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified `NetworkId`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a `NetworkId`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the `IdentityNo`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":12}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_rpc_url","type":{"displayName":["Option"],"type":33}},{"label":"new_address_type","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"rpc_url"},{"layout":{"enum":{"dispatchKey":"0x7e863377","name":"AccountType","variants":{"0":{"fields":[],"name":"AccountId32"},"1":{"fields":[],"name":"AccountKey20"}}}},"name":"account_type"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"sequence":{"type":12}}}},{"id":12,"type":{"def":{"composite":{"fields":[{"name":"rpc_url","type":7,"typeName":"String"},{"name":"account_type","type":13,"typeName":"AccountType"}]}},"path":["common","types","NetworkInfo"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AccountId32"},{"index":1,"name":"AccountKey20"}]}},"path":["common","types","AccountType"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":10}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":10}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":10}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":10}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":12}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":12}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":10}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"NetworkRpcUrlTooLong"},{"index":7,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":10}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,12]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":10}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":10}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/artifacts/identity.json b/artifacts/identity.json index bc6e89e..ae8b090 100644 --- a/artifacts/identity.json +++ b/artifacts/identity.json @@ -1,6 +1,6 @@ { "source": { - "hash": "0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90", + "hash": "0xc58b8fed4f9222b100630773cb8793c9db7548b0a03a6ef1e55b87d6794fe0c9", "language": "ink! 4.2.0", "compiler": "rustc 1.68.0-nightly", "build_info": { @@ -33,7 +33,7 @@ "ink_primitives", "ConstructorResult" ], - "type": 9 + "type": 8 }, "selector": "0x9bae9d5e" }, @@ -45,7 +45,7 @@ "displayName": [ "Vec" ], - "type": 12 + "type": 11 } } ], @@ -58,7 +58,7 @@ "ink_primitives", "ConstructorResult" ], - "type": 9 + "type": 8 }, "selector": "0x056543ac" } @@ -296,10 +296,10 @@ }, { "docs": [ - " The name of the network name that got added." + " The rpc url of the network that got added." ], "indexed": false, - "label": "name", + "label": "rpc_url", "type": { "displayName": [ "String" @@ -309,15 +309,15 @@ }, { "docs": [ - " The `Ss58Prefix` of the network that got added." + " The address type used on the network." ], "indexed": false, - "label": "ss58_prefix", + "label": "account_type", "type": { "displayName": [ - "Ss58Prefix" + "AccountType" ], - "type": 8 + "type": 13 } } ], @@ -341,10 +341,10 @@ }, { "docs": [ - " The name of the updated network." + " The rpc url of the updated network." ], "indexed": false, - "label": "name", + "label": "rpc_url", "type": { "displayName": [ "String" @@ -354,15 +354,15 @@ }, { "docs": [ - " The `Ss58Prefix` of the updated network." + " The address type used on the updated network." ], "indexed": false, - "label": "ss58_prefix", + "label": "account_type", "type": { "displayName": [ - "Ss58Prefix" + "AccountType" ], - "type": 8 + "type": 13 } } ], @@ -427,7 +427,7 @@ "ink", "LangError" ], - "type": 11 + "type": 10 }, "messages": [ { @@ -747,7 +747,7 @@ "displayName": [ "NetworkInfo" ], - "type": 13 + "type": 12 } } ], @@ -777,7 +777,7 @@ } }, { - "label": "new_prefix", + "label": "new_rpc_url", "type": { "displayName": [ "Option" @@ -786,7 +786,7 @@ } }, { - "label": "new_name", + "label": "new_address_type", "type": { "displayName": [ "Option" @@ -1001,16 +1001,26 @@ "ty": 7 } }, - "name": "name" + "name": "rpc_url" }, { "layout": { - "leaf": { - "key": "0x7e863377", - "ty": 8 + "enum": { + "dispatchKey": "0x7e863377", + "name": "AccountType", + "variants": { + "0": { + "fields": [], + "name": "AccountId32" + }, + "1": { + "fields": [], + "name": "AccountKey20" + } + } } }, - "name": "ss58_prefix" + "name": "account_type" } ], "name": "NetworkInfo" @@ -1135,14 +1145,6 @@ }, { "id": 8, - "type": { - "def": { - "primitive": "u16" - } - } - }, - { - "id": 9, "type": { "def": { "variant": { @@ -1150,7 +1152,7 @@ { "fields": [ { - "type": 10 + "type": 9 } ], "index": 0, @@ -1159,7 +1161,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1171,11 +1173,11 @@ "params": [ { "name": "T", - "type": 10 + "type": 9 }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1184,7 +1186,7 @@ } }, { - "id": 10, + "id": 9, "type": { "def": { "tuple": [] @@ -1192,7 +1194,7 @@ } }, { - "id": 11, + "id": 10, "type": { "def": { "variant": { @@ -1211,30 +1213,30 @@ } }, { - "id": 12, + "id": 11, "type": { "def": { "sequence": { - "type": 13 + "type": 12 } } } }, { - "id": 13, + "id": 12, "type": { "def": { "composite": { "fields": [ { - "name": "name", + "name": "rpc_url", "type": 7, "typeName": "String" }, { - "name": "ss58_prefix", - "type": 8, - "typeName": "Ss58Prefix" + "name": "account_type", + "type": 13, + "typeName": "AccountType" } ] } @@ -1246,6 +1248,30 @@ ] } }, + { + "id": 13, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "AccountId32" + }, + { + "index": 1, + "name": "AccountKey20" + } + ] + } + }, + "path": [ + "common", + "types", + "AccountType" + ] + } + }, { "id": 14, "type": { @@ -1264,7 +1290,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1280,7 +1306,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1360,7 +1386,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1376,7 +1402,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1435,7 +1461,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1451,7 +1477,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1510,7 +1536,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1526,7 +1552,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1547,7 +1573,7 @@ { "fields": [ { - "type": 13 + "type": 12 } ], "index": 1, @@ -1559,7 +1585,7 @@ "params": [ { "name": "T", - "type": 13 + "type": 12 } ], "path": [ @@ -1585,7 +1611,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1601,7 +1627,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1683,6 +1709,10 @@ }, { "index": 6, + "name": "NetworkRpcUrlTooLong" + }, + { + "index": 7, "name": "AlreadyIdentityOwner" } ] @@ -1712,7 +1742,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1728,7 +1758,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1752,7 +1782,7 @@ "def": { "tuple": [ 2, - 13 + 12 ] } } @@ -1775,7 +1805,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1791,7 +1821,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1859,7 +1889,7 @@ { "fields": [ { - "type": 11 + "type": 10 } ], "index": 1, @@ -1875,7 +1905,7 @@ }, { "name": "E", - "type": 11 + "type": 10 } ], "path": [ @@ -1892,7 +1922,7 @@ { "fields": [ { - "type": 10 + "type": 9 } ], "index": 0, @@ -1913,7 +1943,7 @@ "params": [ { "name": "T", - "type": 10 + "type": 9 }, { "name": "E", @@ -1938,7 +1968,7 @@ { "fields": [ { - "type": 8 + "type": 7 } ], "index": 1, @@ -1950,7 +1980,7 @@ "params": [ { "name": "T", - "type": 8 + "type": 7 } ], "path": [ @@ -1971,7 +2001,7 @@ { "fields": [ { - "type": 7 + "type": 13 } ], "index": 1, @@ -1983,7 +2013,7 @@ "params": [ { "name": "T", - "type": 7 + "type": 13 } ], "path": [ diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index f099446..5ec8dfd 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -17,7 +17,7 @@ class TransactionRouter { } if (originNetwork == destinationNetwork) { - const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).rpcUrl; + const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).value.ok?.rpcUrl; const wsProvider = new WsProvider(rpcUrl); const api = await ApiPromise.create({ provider: wsProvider }); @@ -57,12 +57,7 @@ class TransactionRouter { throw new Error("Failed to get chain info"); } - const receiverAddress = await contract.query.transactionDestination( - receiver, - network - ); - - const xcm = this.xcmTransferAssetMessage(receiverAddress, token, amount); + const xcm = this.xcmTransferAssetMessage(receiver, token, amount); let xcmExecute; diff --git a/types/build-extrinsic/address_book.ts b/types/build-extrinsic/address_book.ts index 2566d5d..6926713 100644 --- a/types/build-extrinsic/address_book.ts +++ b/types/build-extrinsic/address_book.ts @@ -102,4 +102,14 @@ export default class Methods { return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identitiesOf", [account], __options); } + /** + * hasAddressBook + * + */ + "hasAddressBook" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "hasAddressBook", [], __options); + } + } \ No newline at end of file diff --git a/types/build-extrinsic/identity.ts b/types/build-extrinsic/identity.ts index 6488f9a..b4df9e4 100644 --- a/types/build-extrinsic/identity.ts +++ b/types/build-extrinsic/identity.ts @@ -168,16 +168,16 @@ export default class Methods { * updateNetwork * * @param { (number | string | BN) } networkId, - * @param { (number | string | BN) | null } newPrefix, - * @param { string | null } newName, + * @param { string | null } newRpcUrl, + * @param { ArgumentTypes.AccountType | null } newAddressType, */ "updateNetwork" ( networkId: (number | string | BN), - newPrefix: (number | string | BN) | null, - newName: string | null, + newRpcUrl: string | null, + newAddressType: ArgumentTypes.AccountType | null, __options: GasLimit, ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNetwork", [networkId, newPrefix, newName], __options); + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options); } /** diff --git a/types/contract-info/address_book.ts b/types/contract-info/address_book.ts index 45d894c..720ed8e 100644 --- a/types/contract-info/address_book.ts +++ b/types/contract-info/address_book.ts @@ -1,2 +1,2 @@ -export const ContractAbi = `{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; -export const ContractFile = `{"source":{"hash":"0x3431a6709ea0c169392e84dd06a948c6e0b33c5f567568122f316677a001bb21","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210036160000101010005000403050301010103010102010806030303050601060101010306050b0c030602030403030101010601030103010802010108020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c003f066465706c6f7900430916010041010b101c5b5a31404d664f63644e46484965500a8aa301602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a20012002410141ec800410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c41ccb004102320032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341fca9044180810410690b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341b4aa04360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e00200020012002419c9a04106a0bc50601067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241a481043602182002200129000037021c2002410036024820024280800137027c200241a0b10436027841eee7a015200241f8006a22071017200241186a4104722007101820022002290378370340200241106a200241406b2002280280011019200228021421042002280210210520022802402101200220022802442206360278200520042001200710002104200241086a20022802782001200641d486041014024002400240024002400240410c20042004410c4f1b0e0400050501050b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00410421032002280254410476220420022802042201200120044b1b22040440200441ffffff3f4b0d042004410474220741036a417c7122052007490d034198b104280200220320056a22062003490d05419cb1042802002006490440200541ffff036a22032005490d062003411076220640002203417f46200341ffff0371200347720d062003411074220320064110746a22062003490d06419cb1042006360200200320056a22062003490d060b4198b10420063602002003450d050b41002105200241003602602002200336025c2002200436025820010440200241f8006a41047221030340200241f8006a200241d0006a101a20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101b200141016b22010d000b2002280260210520022802582104200228025c21030b20030d010b200241003a005820024184016a41013602002002418c016a4101360200200241c8810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41b88204101d000b20002005360208200020033602042000200436020020024190016a24000f0b41e0a904411c41c4a9041013000b101e000b2007101f000b20024184016a41013602002002418c016a4100360200200241e4870436028001200241b4aa043602880120024100360278200241f8006a41ec8704101d000b2601017f230041106b220224002002200036020c20012002410c6a4104102a200241106a24000b0a00200120004120102a0b4501017f2002200128020422034b044041dcaa04412341d0ac041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d012004200310292004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741d4a2046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41a09204411c41c4a2041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10332002280200450d01200241086a280200450d022002280204101f000b41808404412141c48d041013000b200228020421032000200436020020002003360204200241206a24000c010b101e000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041e08304411c418092041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b4101210020012802002203418fae0441062001280204220528020c22041100000d0c024020012d00184104714504402003418c9404410120041100000d0e200341dcb00441052004110000450d010c0e0b2003418a9404410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241dcb0044105105e0d0d2002418894044102105e0d0d0b200341e192044101200411000021000c0c0b20012802004182ae04410d200128020428020c11000021000c0b0b200128020041f4ad04410e200128020428020c11000021000c0a0b200128020041e9ad04410b200128020428020c11000021000c090b200128020041cfad04411a200128020428020c11000021000c080b200128020041c1ad04410e200128020428020c11000021000c070b200128020041b1ad044110200128020428020c11000021000c060b200128020041a5ad04410c200128020428020c11000021000c050b2001280200419aad04410b200128020428020c11000021000c040b20012802004193ad044107200128020428020c11000021000c030b20012802004184ad04410f200128020428020c11000021000c020b200128020041f3ac044111200128020428020c11000021000c010b200128020041e0ac044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a00182002200136021420022000360210200241c0930436020c200241b4aa04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a36022041002100410421020240024002400240024003402000200020024180ab046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103620014100360218200120012903003703102001410136023c2001410236023420014180ab04360230200141003602282001200141206a360238200141106a200141286a10440d0141a0b1052d000045044041a1b1052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41f08b04411c41a0a7041013000b41c08f044133200141286a41b48c0441f09004102c000b41a0b10541013a00000b41a1b10541013a00000b000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041e88d04360210200041b4aa0436021820004100360208200041086a41f08d04101d000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141a08f04360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41b08f04101d000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341a481043602182003200029000037021c20034100360248200342808001370254200341a0b10436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102120032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102520010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021032200041106a22002001470d000b0b0bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041b8830410142003280208200328020c2001200241c8830410230b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a09d0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241fc8704101020014100360218200120012903083703104102200141106a10252002200220012802186a22044b044041e08304411c418c88041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410270c010b200041ffff004d0440200220004102744101723b010e20012002410e6a4102102a0c010b200041ffffffff034d04402000410274410272200110170c010b2001410310272000200110170b200241106a24000b08002000410110270ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a410636020020004194930436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a41b0ac04101d000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d012001101f000b101e000b2000200336020420002001360200200241106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241a0ac04102320002004360208200341106a24000f0b41c0aa04411c4180ac041013000b200420064190ac041015000ba70101017f230041306b2201240020014180800136020041a0b1042001100420014180800136022c200141a0b1043602282001200141286a102820012d00000440200141003a000041e4860441c100200141a4840441a88704102c000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541f4930436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101d000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241fc9904106a0b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c0a704360208200141003602002001410436021c200120003602182001200141186a360210200141f88a04101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c0a7043602102002410036020820024103360224200220002d0000410274220041f0b0046a28020036022c200220004184b1046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d0020004504402002410010270f0b20024101102720002001200210340b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d0120014198b104280200220620086a22072006490d031a2003280200210a419cb1042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d03419cb10420033602002001200620086a22072006490d041a0b4198b104200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41e0a904411c41c4a9041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1000200120021025200220002001102a0b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021036200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a20011029200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241a0b1043602002002410010272002200141ff0171410647047f20024101102720010541000b102720002002280208102e103a000b4601017f230041106b22022400200242808001370204200241a0b104360200024020014504402002410010270c010b200241011027200210260b20002002280208102e103a000ba20102057f017e230041306b2201240020014100360218200142808001370224200141a0b1043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041a0b1042001100a000bf60102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441c0ac04102f000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000bf80102037f017e230041d0006b22032400200341106a22052001103c20032903102106200341003602282003200637032020022802002002280204200341206a2204103420042002280208411f102a20032003290320370310200341086a20052003280228101920042003280208200328020c102220032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041e08304411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000ba52f020f7f017e230041b0036b22002400024002400240102d41ff017141054604402000418080013602e80141a0b104200041e8016a22011003200041a0016a20002802e80141a0b1044180800141d486041014200020002903a0013703b002200041003602e801200041b0026a2001410410110d0220002802e8012207411876210120074110762102200741087621030240024002400240024002400240200741ff0171220741076b0e020103000b2007411f460d0120074129460d04200741c800460d03200741e900470440200741830147200341ff017141b0014772200241ff017141e40047200141194772720d09200041e8016a200041b0026a101a20002802e8010d09200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410321010c080b200341ff0171410847200241ff0171411947722001412647720d08410021010c070b200341ff017141c10047200241ff0171411b4772200141af0147720d07410121010c060b200341ff017141e00147200241ff01714181014772200141ef0047720d06410221010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004198016a200041b0026a100e2000280298010d05200028029c012102410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041e8016a200041b0026a102820002d00e8010d032000200041fc016a2902003703f002200020004181026a2900003700f502200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec01210220002f01ea01210620002d00e901210c410621010c020b200041e8016a200041b0026a101a20002802e8010d02200041f8016a2802002104200041f4016a2802002105200041f0016a280200210920002802ec012102410521010c010b200041043a00e801200041e8016a1030000b200041b0016a200041f8026a290300370300200020002903f0023703a801200041003602f8022000428080013702ec01200041a0b1043602e8014100200041e8016a22071017200020002903e8013703f00220004190016a200041f0026a20002802f0011019200028029401210820002802900120002802f0022103200020002802f402220b3602e8012008200320071000210720004188016a20002802e8012003200b41d4860410140240024002400240410c20072007410c4f1b0e0401000002000b200041f4016a4101360200200041fc016a4100360200200041e487043602f001200041b4aa043602f801200041003602e801200041e8016a41ec8704101d000b200028028c01210320002000280288013602b002200020033602b402200041e8016a200041b0026a102820002d00e801450d01200041f4016a4101360200200041fc016a4100360200200041b08b043602f0010c030b200041f4016a4101360200200041fc016a4100360200200041d08b043602f0010c020b200041c0016a2203200041f2016a220b290100370300200041c8016a2208200041fa016a220d290100370300200041cf016a220a20004181026a220e290000370000200020002901ea013703b80120002d00e90121070240024002400240027f024002400240024002400240024002400240024002400240200141016b0e06040300020109050b200041b0026a102b20004180026a2203200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f40222010440200020002d00f3023a00db01200020002f00f1023b00d901200020002802f80222083602e001200020013602dc01200020002d00f0023a00d801200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a29000037000020004190026a420037030020004198026a4200370300200020073a00e801200020002903b8013700e901200041003602a802200042003703880220002002ad42208642cbfdefe70e843703a00220004100360298032000428080013702f402200041a0b1043602f002200041e8016a200041f0026a22031018200020002903f00237039003200041e8006a20004190036a220620002802f80210192000280268210a200029039003210f200041003602a8032000200f3703a003200042003703f802200042003703f002200041a0036a20034110102a200020002903a00337039003200041e0006a200620002802a80310192000280260210c200029039003210f200041003602f8022000200f3703f0022003200041a0026a4104102a200220031017200020002903f00237039003200041d8006a200620002802f8021019200028025c210b2000280258210d20002802900321062000200028029403220e3602f0024100200a4200200c200d200b2006200310022103200041d0006a20002802f0022006200e41d486041014410c20032003410c4f1b2203410d710d0620002802542103200020002802503602f002200020033602f402200041c8006a200041f0026a100d02400240024020002d00484101710d000240024020002d00490e020001020b200041386a200041f0026a100d20002d00384101710d014102210320002d0039220641024f0d0120060d030c120b200041406b200041f0026a100d20002d00404101710d0020002d00414101460d010b410021010c0f0b2000410136029003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041053602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41c88504101d000b20084104742103024003402003450d01200341106b210320012802002108200141106a210120022008470d000b410421030c0f0b200041e8016a200520041035024020002802ec01450d0020002802f0014111490d00410521030c0f0b200041f4016a2004360200200041f0016a22012005360200200020093602ec01200020023602e801200041d8016a200041e8016a2204101b20004180026a2203200041c8026a2205290300370300200041f8016a2206200041c0026a22092903003703002001200041b8026a2208290300370300200020002903b0023703e801200420002802dc0120002802e0011020200320052903003703002006200929030037030020012008290300370300200020002903b0023703e80120002002360288022000428080013702f402200041a0b1043602f002200041f0026a22021024200041e8026a2204200041f8026a2205280200360200200020002903f0023703e00220004190036a2206200041e0026a103c200029039003210f41002101200041003602f8022000200f3703f00241b4aa04410020021034200241c28904411a102a200020002903f00237039003200041306a200620002802f80210192002200028023020002802341022200041286a20002802e002220620002802e4022004280200220441fc87041010200041003602a803200020002903283703a0032002200041a0036a10182004200420002802a8036a22024b0d07200041d8026a2002360200200020063602e002200020002903e0023703d002200041213602a403200041dc89043602a0032000200041e8016a22023602a80320004190036a2204200041d0026a200041a0036a2206103b200041f0026a22092004103e200041a8036a2005280200360200200020002903f002220f3703a00320004180036a280200210420002802fc02200041003602f8022000200f3703f002200220091041200020002903f0023703a003200041206a200620002802f80210192004200028022020002802241007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002003200041cf016a290000370000200020073a00e801200020002903b8013700e90120021039410621030c100b410121030c0e0b200041b0026a102b20004180026a200041c8026a290300370300200041f8016a200041c0026a290300370300200041f0016a200041b8026a290300370300200020002903b0023703e801200041f0026a200041e8016a101620002802f402220c450440410121060c0a0b20002802f802210a200041f0026a200520041035200041e8016a20002802f40220002802f8021035024020002802ec01450d0020002802f0014111490d00410521060c0a0b41032106200a450d09200a410474210b4100210141002103034020022001200c6a2208280200470440200341016a2103200141106a2201200b470d010c0b0b0b200841086a2802001a20082002360200200841046a20002903f0023702002008410c6a200041f8026a220328020036020020004180026a2201200041c8026a2206290300370300200041f8016a2208200041c0026a220b290300370300200041f0016a220d200041b8026a220e290300370300200020002903b0023703e801200041e8016a200c200a1020200120062903003703002008200b290300370300200d200e290300370300200020002903b0023703e801200020043602940220002005360290022000200936028c0220002002360288022000428080013702f402200041a0b1043602f002200041f0026a22011024200041e8026a22022003280200360200200020002903f0023703e00220004190036a2203200041e0026a103c200029039003210f200041003602f8022000200f3703f00241b4aa04410020011034200141fd8904411c102a200020002903f0023703900320004180016a200320002802f802101920012000280280012000280284011022200041f8006a20002802e002220320002802e4022002280200220241fc87041010200041003602a803200020002903783703a0032001200041a0036a10182002200220002802a8036a22014b0d06200041d8026a2001360200200020033602e002200020002903e0023703d002200041233602a403200041998a043602a0032000200041e8016a22013602a80320004190036a2202200041d0026a200041a0036a2203103b200041f0026a22042002103e200041a8036a200041f8026a280200360200200020002903f002220f3703a00320004180036a280200210220002802fc02200041003602f8022000200f3703f002200120041042200020002903f0023703a003200041f0006a200320002802f802101920022000280270200028027410072000280290021a200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200110394106210641000c0a0b200041f1016a2003290300370000200041f9016a200829030037000020004180026a200a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410041001038000b200041f0026a102b20004180026a220420004188036a2205290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a1016027f20002802b4022206044020004184026a2005290300370200200041fc016a20004180036a2209290300370200200041f4016a200041f8026a2208290300370200200020002903f0023702ec01200041a481043602e801200041003602a8032000428080013702b402200041a0b1043602b00241eee7a015200041b0026a22011017200041e8016a220241047220011018200020002903b0023703a003200041186a200041a0036a220320002802b80210192000280218200028021c10091a20042005290300370300200041f8016a2009290300370300200041f0016a2008290300370300200020002903f0023703e8012000428080013702b402200041a0b1043602b00220011024200041a8036a2205200041b8026a2209280200360200200020002903b0023703a0032001200341908904103d200041263602a4032000419c89043602a003200020023602a80320004190036a220820012003103b20012008103e20052009280200360200200020002903b002220f3703a003200041c0026a280200210520002802bc02200041003602b8022000200f3703b002200220011018200020002903b0023703a003200041106a200320002802b80210192005200028021020002802141007200041f1016a200041c0016a290300370000200041f9016a200041c8016a2903003700002004200041cf016a290000370000200020073a00e801200020002903b8013700e9012002103941060c010b41010b210020064520001037000b200041f0026a102b20004180026a220220004188036a2201290300370300200041f8016a20004180036a290300370300200041f0016a200041f8026a290300370300200020002903f0023703e801200041b0026a200041e8016a101620002802b40222030440410021010c060b20022001290300370300200041f8016a20004180036a2202290300370300200041f0016a200041f8026a2204290300370300200020002903f0023703e801200041e8016a2205410441001020200041f1016a2004290300370000200041f9016a200229030037000020004181026a2001290300370000200041003a00e801200020002903f0023700e9012000428080013702b402200041a0b1043602b002200041b0026a22011024200041a8036a2204200041b8026a2206280200360200200020002903b0023703a0032001200041a0036a220941bc8804103d2000200541017222023602a803200041263602a403200041c888043602a00320004190036a220520012009103b20012005103e20042006280200360200200020002903b002220f3703a003200041c0026a280200210120002802bc02200041003602b8022000200f3703b0020240024002400240024020002d00e80141016b0e03010203000b200041b0026a2205410010272002200510180c030b200041b0026a2205410110272002200510180c020b200041b0026a220241021027200041e8016a410472200210410c010b200041b0026a220241031027200041e8016a410472200210420b200020002903b0023703a003200041086a200041a0036a20002802b802101920012000280208200028020c1007200041f1016a200041c0016a290300370000200041f9016a200041c8016a29030037000020004180026a200041cf016a290000370000200020073a00e801200020002903b8013700e901200041e8016a1039410621010c050b200b2003290300370100200d2008290300370100200e200a290000370000200020073a00e901200020002903b8013701ea01200041003a00e801230041106b22012400200142808001370204200141a0b1043602000240200041e8016a22002d0000450440200141001027200041016a200110180c010b200141011027200110260b41002001280208102e103a000b200341e0b0046a2d000021010c060b41e08304411c418c88041013000b41e08304411c418c88041013000b20004180026a20002900ad01370000200020043600f701200020053600f301200020093600ef01200020023600eb01200020063b00e9012000200c3a00e801200020002903a8013700fb01230041306b22012400200141286a200041e8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002104200041f0026a220320012802084100200128020422021b36020820032002410420021b36020420032004410020021b360200200141306a240020002802f402210120002802f8022102230041106b22002400200042808001370204200041a0b10436020002402001044020004100102720012002200010210c010b200041011027200010260b41002000280208102e103a000b200341004720011037000b41010b20061037000b200020013a009003200041fc026a410136020020004184036a4101360200200041d484043602f802200041003602f002200041013602a4032000200041a0036a36028003200020004190036a3602a003200041f0026a41d88504101d000b4101210120060d010b410121010b200120031037000b410141011038000b200041b4aa043602f801200041003602e801200041e8016a41f88a04101d000b180020012802004195ae044111200128020428020c1100000b11002000200110182000280220200110170b2500200020011018200028022020011017200041286a2802002000412c6a280200200110320be30202047f027e230041e0006b220024000240102d41ff01712201410546044020004180800136023841a0b104200041386a22011003200041086a200028023841a0b1044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102820002d0038450d020b410141011038000b200020013a0038200041386a1030000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a1039230041106b22002400200042808001370204200041a0b10436020020004100102720004100102741002000280208102e103a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41d88b04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041f08b04411c419092041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41f08b04411c418092041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103320042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41908c04412141c48d041013000b1f00024020014181808080784704402001450d012000101f000b0f0b101e000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d04404198b104280200220220056a22042002490d02419cb1042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d0241002103419cb1042004360200200220056a22042002490d030b4198b1042004360200200221030c020b41e0a904411c41c4a9041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e2206410174418b95046a2f00003b0000200241026b2004200641e4006c6b41ffff0371410174418b95046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff0371410174418b95046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a2002410174418b95046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041b4aa042104200241b4aa0441b4aa04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41a09204411c41d497041013000b41c09204412141b0a7041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b2205240020022003490440200320022004102f000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341a8af0441c0920410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41b09b041055200328020c21052003280208210820032003280200200328020422002000417c7141c09c041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a09204411c41c89e041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a09204411c41f89e041013000b41a09204411c41d89e041013000b41a09204411c41e89e041013000b41a09204411c41b89e041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a09204411c41a0a7041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41dcaa04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a09204411c41e497041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41a09204411c4188a0041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041f898041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41c09204412141d8a5041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241a899041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041a09204411c41b899041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a2003280278200941044188a604105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a09204411c418899041013000b41a09204411c41e8a5041013000b41a09204411c41f8a5041013000b41a09204411c419899041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d012007418494044104200628020c110000450d010c020b41c0920441214198a0041013000b2003410a36028c0120082002047f200320002002200241016b41d09c0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341aca10441c0920410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041dcb0044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441d09304410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241e0930436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241e09304360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241a893043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341fca9044190aa0410690b1400200020012002200341a8af0441c0af0410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bcd300700418080040bd5032f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e72730000000001006a000000420000002600000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20a8000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273d0000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000480101006d0000009d00000011000000480101006d0000009d000000300041e083040bf41f617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000001000000010000000100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000480101006d0000006b0100000e000000480101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000480101006d000000ed00000017000000901501006e000000c100000037000000901501006e000000c40000000900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640034150100000000001c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f76656400000034150100000000006e04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656441646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e65722f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e72733c0501003c0000002f00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900880501002700000073746f7261676520656e7472792077617320656d70747900b8050100170000000b00000004000000040000000c0000000d0000000e000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300440601007f0000008a0100001c0000006361706163697479206f766572666c6f77000000d406010011000000440601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564007d07010015000000920701000d000000000701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000f30701007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300800801007f000000300700000d000000800801007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320620901002000000082090100120000003a0000003415010000000000a409010001000000a4090100010000000b00000000000000010000001000000070616e69636b65642061742027272c20dc09010001000000dd090100030000003a2000003415010000000000f009010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000530b01007e0000005d0500000d000000530b01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300f40b0100830000004e0000002f000000f40b0100830000005a0000001f000000f40b0100830000006300000009000000f40b0100830000006800000027000000f40b010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820c80c010012000000da0c01002200000072616e676520656e6420696e646578200c0d010010000000da0c0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000002c0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273c00d010080000000fe0300002f000000c00d010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028600e010015000000750e01002b00000061090100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273b80e0100800000004700000015000000b80e0100800000005400000011000000b80e0100800000005a00000009000000b80e0100800000006400000011000000b80e010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300880f01007f0000009100000011000000880f01007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000002810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e72730000bc10010086000000e5000000150000000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101004196a4040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041d4a4040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300005412010082000000a1010000470000005412010082000000b4010000200000005412010082000000b4010000110000005412010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273181301008800000095000000010000000d0a01007e000000cd0100000500000034150100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730040140100830000002f010000180041e0a9040b51617474656d707420746f206164642077697468206f766572666c6f772617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041c0aa040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a34150100000000007f150100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000901501006e0000005a0000001c000000901501006e0000005a00000009000000901501006e0000005a00000031000000901501006e0000006500000009000000901501006e000000830000001a000000901501006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273261701008200000082010000470041c0af040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000e117010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000271401000b140100f5130100e1130100c81301","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract"],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":16},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":17},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":18}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"primitive":"u128"}}},{"id":17,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":18,"type":{"def":{"primitive":"u64"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file +export const ContractAbi = `{"source":{"hash":"0xf3351b91ee1e761f370e3e86fc1b6489a2e275ca59944958300a8def008ca8e2","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":18},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":21},"hash":{"displayName":["Hash"],"type":19},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":20}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"},{"args":[{"docs":[],"indexed":false,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"},{"args":[],"default":false,"docs":[" Returns whether the user has created an address book or not"],"label":"has_address_book","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xc468ded4"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":17}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":17},{"name":"E","type":10}],"path":["Result"]}},{"id":17,"type":{"def":{"primitive":"bool"}}},{"id":18,"type":{"def":{"primitive":"u128"}}},{"id":19,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":20,"type":{"def":{"primitive":"u64"}}},{"id":21,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0xf3351b91ee1e761f370e3e86fc1b6489a2e275ca59944958300a8def008ca8e2","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000015a0e60037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f0060057f7f7f7f7f0060017f0060047f7f7f7f017f60000060017f017e60087f7f7e7f7f7f7f7f017f6000017f60017f017f60067f7f7f7f7f7f0002ea010c057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640001057365616c310463616c6c000a057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100361600001010100050004030503010101030101010201030301010303030501010601010106050b0c03060203080604030101080601030301080208020000030202040103020602090504020205070407050202030000050407040202020204040d04040501700111110608017f01418080040b0711020463616c6c0041066465706c6f7900430916010041010b101d5b5a33424d664f63644e46484965500acaab01602b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041031000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a41002002200028020022061068200120022003280208200328020c419cb204102620032002200420061068200020032903003702000b200341106a240020050b1400200020012002200341ccab044180800410690b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ac04360210200341003602002003200136021c200320003602182003200341186a36020820032002101e000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0e0020002001200241ec9b04106a0bec0401067f23004190016b22022400200241346a200141186a2900003702002002412c6a200141106a290000370200200241246a200141086a290000370200200241bc81043602182002200129000037021c2002410036024820024280800137027c200241f0b20436027841eee7a015200241f8006a22051017200241186a4104722005101820022002290378370340200241106a200241406b20022802800110192002280214210320022802102002280240210120022002280244220736027820032001200510002103200241086a20022802782001200741d486041014024002400240410c20032003410c4f1b0e0400020201020b200228020c210120022002280208360250200220013602542002200241d0006a100c024020022802000d00200241d8006a2002280254410476220320022802042201200120034b1b101a20010440200241f8006a41047221030340200241f8006a200241d0006a101b20022802780d02200241f0006a200341086a29020037030020022003290200370368200241d8006a200241e8006a101c200141016b22010d000b0b200228025c2204450d0020022802602101200228025821030c010b200241003a005820024184016a41013602002002418c016a4101360200200241e0810436028001200241003602782002410136026c2002200241e8006a360288012002200241d8006a360268200241f8006a41d08204101e000b20002001360208200020043602042000200336020020024190016a24000f0b20024184016a41013602002002418c016a4100360200200241e487043602800120024184ac043602880120024100360278200241f8006a41ec8704101e000b2601017f230041106b220224002002200036020c20012002410c6a41041024200241106a24000b0a0020012000412010240b4501017f2002200128020422034b044041acac04412341a0ae041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b800201047f02400240024002402001450440410421020c010b200141ffffff3f4b22020d01200141047422054100480d012005200141808080c000494102746a41016b4100417c20021b7122042005490d0241e8b204280200220220046a22032002490d0341ecb2042802002003490440200441ffff036a22022004490d042002411076220340002202417f46200241ffff0371200247720d042002411074220220034110746a22032002490d0441ecb2042003360200200220046a22032002490d040b41e8b20420033602002002450d030b2000410036020820002002360204200020013602000f0b1035000b41b0ab04411c4194ab041013000b20051036000bbc06010a7f230041206b22042400200441186a2001100e41012102024020042802180d00200428021c210a200441106a2001100d20042d00104101710d000240024020042d00110e020100020b200441086a2001100c20042802080d01200428020c220320012802044b0d0120042003102c2004280200210b200120042802042205200310110d012003450d00200341076b22014100200120034d1b2109200541036a417c7120056b2106410021020340024002400240024002400240024002400240200220056a2d00002207411874411875220841004e0440200620026b4103712006417f46720d0220022009490d010c060b02400240200741a4a4046a2d000041026b0e03040100060b200241016a220120034f0d05200120056a2c000021010240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120056a2c000041bf7f4a0d05200241036a220120034f0d05200120056a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120056a2c00002101024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120056a2c000041bf7f4c0d030c040b0340200220056a2201280200200141046a28020072418081828478710d052002200241086a22014d044020012102200120094f0d070c010b0b41f09304411c4194a4041013000b200241016a21020c050b200241016a220120034f0d01200120056a2c000041bf7f4a0d010b200141016a21020c030b410121020c060b200221010b200120034f0d0120012003200120034b1b21020340200120056a2c00004100480440200121020c020b200141016a22012002470d000b0c010b20022003490d010b0b200321060b2000200a360204200041106a20063602002000410c6a2005360200200041086a200b360200410021020b20002002360200200441206a24000bb80201057f200028020822032000280200460440230041206b2202240002400240200341016a2204450d0002402000280200220320036a220520034f044041042005200420042005491b2204200441044d1b22044104742105200441808080c0004941027421060240200304402002200028020436021020024104360218200220034104743602140c010b200241003602180b200220052006200241106a10372002280200450d01200241086a280200450d0220022802041036000b41f08304412141d48e041013000b200228020421032000200436020020002003360204200241206a24000c010b1035000b200028020821030b200028020420034104746a22022001290200370200200241086a200141086a290200370200200341016a220145044041a08104411c41d093041013000b200020013602080bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfaf0441062001280204220528020c22041100000d0c024020012d0018410471450440200341dc9504410120041100000d0e200341acb20441052004110000450d010c0e0b200341da9504410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241acb2044105105e0d0d200241d895044102105e0d0d0b200341b194044101200411000021000c0c0b200128020041d2af04410d200128020428020c11000021000c0b0b200128020041c4af04410e200128020428020c11000021000c0a0b200128020041b9af04410b200128020428020c11000021000c090b2001280200419faf04411a200128020428020c11000021000c080b20012802004191af04410e200128020428020c11000021000c070b20012802004181af044110200128020428020c11000021000c060b200128020041f5ae04410c200128020428020c11000021000c050b200128020041eaae04410b200128020428020c11000021000c040b200128020041e3ae044107200128020428020c11000021000c030b200128020041d4ae04410f200128020428020c11000021000c020b200128020041c3ae044111200128020428020c11000021000c010b200128020041b0ae044113200128020428020c11000021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190950436020c20024184ac04360208230041406a220124002001200241086a36020c2001410736022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ac046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b103920014100360218200120012903003703102001410136023c20014102360234200141d0ac04360230200141003602282001200141206a360238200141106a200141286a10440d0141f0b2052d000045044041f1b2052d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41808d04411c41f0a8041013000b41d090044133200141286a41c48d0441809204102e000b41f0b20541013a00000b41f1b20541013a00000b000bfc0102047f017e230041e0006b22032400200341346a200041186a2900003702002003412c6a200041106a290000370200200341246a200041086a290000370200200341bc81043602182003200029000037021c20034100360248200342808001370254200341f0b20436025041eee7a015200341d0006a22041017200341186a4104722004101820032003290350370340200341106a200341406b220520032802581019200328021421002003280210200329034021072003410036025820032007370350200120022004102020032003290350370340200341086a20052003280258101920002003280208200328020c10081a200341e0006a24000b430020012002102820010440200020014104746a21010340200028020020021017200041086a2802002000410c6a28020020021034200041106a22002001470d000b0b0bdc0102037f017e230041d0006b22022400200241106a22042000102220022903102105200241003602282002200537032020012802002001280204200241206a2203102320032001280208411c102420022002290320370310200241086a20042002280228101920032002280208200228020c102520022000280200220420002802042000280208220141fc8704101020024100360248200220022903003703402003200241406b10182001200120022802486a22034b044041a08104411c418c88041013000b2000200436020020002003360208200241d0006a24000b5201037f230041106b2202240020012802082203200128020422044b0440200320044190ae041031000b200241086a20032004200128020010672000200229030837020020004100360208200241106a24000b100020012002102820022000200110240b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010672003280208200328020c2001200241f0ad04102620002004360208200341106a24000f0b4190ac04411c41d0ad041013000b2004200641e0ad041015000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1006200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041d0830410142003280208200328020c2001200241e0830410260b200341306a24000b85010020012003460440200020022001100b1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041f09e0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004101e000b7701037f230041206b22022400200241086a2000280200220420002802042000280208220341fc8704101020024100360218200220022903083703102001200241106a10282003200320022802186a22014b044041a08104411c418c88041013000b2000200436020020002001360208200241206a24000b7401017f230041106b2202240002402000413f4d044020012000410274102a0c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210240c010b200041ffffffff034d04402000410274410272200110170c010b20014103102a2000200110170b200241106a24000b080020004101102a0ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4106360200200041e4940436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a4180ae04101e000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76104c200228020822030d0120011036000b1035000b2000200336020420002001360200200241106a24000ba70101017f230041306b2201240020014180800136020041f0b2042001100420014180800136022c200141f0b2043602282001200141286a102b20012d00000440200141003a000041e4860441c10020014194840441a88704102e000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4950436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101e000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141b887041015000b20000b0e0020002001200241cc9b04106a0b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190a904360208200141003602002001410436021c200120003602182001200141186a360210200141808c04101e000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190a9043602102002410036020820024103360224200220002d0000410274220041c0b2046a28020036022c2002200041d4b2046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b1d00200045044020024100102a0f0b20024101102a20002001200210230b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041f88e0436021020004184ac0436021820004100360208200041086a41808f04101e000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141b09004360218200141003602102001410636022c2001200141286a36022020012001410c6a360228200141106a41c09004101e000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002104c2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002104c20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141e8b204280200220620086a22072006490d031a2003280200210a41ecb2042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341ecb20420033602002001200620086a22072006490d041a0b41e8b204200736020020012006450d031a2006200a2009100b210420010c030b20002001360204200041086a41003602000c030b41b0ab04411c4194ab041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b5901037f230041106b2203240002402001450440200041003602040c010b200341086a20021039200328020821042000200328020c220536020420002004360200200520012002100b1a200020023602080b200341106a24000b3501017f230041106b22022400200241086a2001102c200228020c21012000200228020836020020002001360204200241106a24000b4c01017f230041106b22022400200242808001370204200241f0b20436020020024100102a2002200141ff0171410647047f20024101102a20010541000b102a200020022802081030103d000b3501017f230041106b22002400200042808001370204200041f0b20436020020004101102a20001029410120002802081030103d000ba20102057f017e230041306b2201240020014100360218200142808001370224200141f0b2043602204100200141206a2202101720012001290320370310200141086a200141106a220320012802281019200128020c2104200128020820012903102106200141003602282001200637032020002002101820012001290320370310200120032001280228101920042001280200200128020410081a200141306a24000b0d00200041f0b2042001100a000bf60102037f017e230041d0006b22032400200341106a22052001102220032903102106200341003602282003200637032020022802002002280204200341206a2204102320022802082004101820032003290320370310200341086a20052003280228101920042003280208200328020c102520032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041a08104411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000bf80102037f017e230041d0006b22032400200341106a22052001102220032903102106200341003602282003200637032020022802002002280204200341206a2204102320042002280208411f102420032003290320370310200341086a20052003280228101920042003280208200328020c102520032001280200220520012802042001280208220241fc8704101020034100360248200320032903003703402004200341406b10182002200220032802486a22044b044041a08104411c418c88041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101920022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000bab3602107f017e230041a0036b220024000240024002400240102f41ff017141054604402000418080013602f80141f0b204200041f8016a2201100320004190016a20002802f80141f0b2044180800141d48604101420002000290390013703c801200041003602f801200041c8016a2001410410110d0220002802f80122094118762101200941107621022009410876210302400240024002400240024002400240200941ff0171220941076b0e020104000b2009411f460d0120094129460d05200941c800460d04200941e9004704402009418301460d03200941c40147200341ff017141e8004772200241ff017141de0147200141d4014772720d0a410721010c090b200341ff0171410847200241ff0171411947722001412647720d09410021010c080b200341ff017141c10047200241ff0171411b4772200141af0147720d08410121010c070b200341ff017141e00147200241ff01714181014772200141ef0047720d07410221010c060b200341ff017141b00147200241ff017141e40047722001411947720d06200041f8016a200041c8016a101b20002802f8010d0620004188026a280200210520004184026a280200210720004180026a280200210820002802fc012106410321010c050b200341ff0171410247200241ff017141e7004772200141c00047720d0520004188016a200041c8016a100e2000280288010d05200028028c012106410421010c040b200341ff017141cd0047200241ff017141ae0147720d04200141b101460d010c040b200341ff017141da0147200241ff017141ba0147722001410247720d03200041f8016a200041c8016a102b20002d00f8010d0320002000418c026a2902003703e002200020004191026a2900003700e50220004188026a280200210520004184026a280200210720004180026a280200210820002802fc01210620002f01fa01210420002d00f901210b410621010c020b200041f8016a200041c8016a101b20002802f8010d0220004188026a280200210520004184026a280200210720004180026a280200210820002802fc012106410521010c010b200041043a00f801200041f8016a1032000b200041a0016a200041e8026a290300370300200020002903e00237039801200041003602e8022000428080013702fc01200041f0b2043602f8014100200041f8016a22031017200020002903f8013703e00220004180016a200041e0026a2000280280021019200028028401210920002802800120002802e0022102200020002802e402220c3602f80120092002200310002103200041f8006a20002802f8012002200c41d4860410140240024002400240410c20032003410c4f1b0e0401000002000b20004184026a41013602002000418c026a4100360200200041e487043602800220004184ac0436028802200041003602f801200041f8016a41ec8704101e000b200028027c2102200020002802783602c801200020023602cc01200041f8016a200041c8016a102b20002d00f801450d0120004184026a41013602002000418c026a4100360200200041b88c04360280020c030b20004184026a41013602002000418c026a4100360200200041d88c04360280020c020b200041b0016a220220004182026a2203290100370300200041b8016a220a2000418a026a220c290100370300200041bf016a220d20004191026a220e290000370000200020002901fa013703a80120002d00f90121090240024002400240027f02400240024002400240024002400240024002400240024002400240200141016b0e0706050001020304070b200041c8016a102d20004190026a2202200041e0016a29030037030020004188026a200041d8016a29030037030020004180026a200041d0016a290300370300200020002903c8013703f801200041e0026a200041f8016a101620002802e40222010440200020002d00e3023a00eb01200020002f00e1023b00e901200020002802e80222043602f001200020013602ec01200020002d00e0023a00e80120004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002002200041bf016a290000370000200041a0026a4200370300200041a8026a4200370300200020093a00f801200020002903a8013700f901200041003602b802200042003703980220002006ad42208642cbfdefe70e843703b00220004100360288032000428080013702e402200041f0b2043602e002200041f8016a200041e0026a22021018200020002903e00237038003200041e0006a20004180036a220320002802e80210192000280260210b200029038003211020004100360298032000201037039003200042003703e802200042003703e00220004190036a200241101024200020002903900337038003200041d8006a200320002802980310192000280258210a2000290380032110200041003602e802200020103703e0022002200041b0026a41041024200620021017200020002903e00237038003200041d0006a200320002802e80210192000280254210c2000280250210d20002802800321032000200028028403220e3602e0024100200b4200200a200d200c2003200210022102200041c8006a20002802e0022003200e41d486041014410c20022002410c4f1b2202410d710d08200028024c2102200020002802483602e002200020023602e402200041406b200041e0026a100d02400240024020002d00404101710d000240024020002d00410e020001020b200041306a200041e0026a100d20002d00304101710d014102210320002d0031220241024f0d0120020d030c140b200041386a200041e0026a100d20002d00384101710d0020002d00394101460d010b410021010c110b2000410136028003200041ec026a4101360200200041f4026a4101360200200041d484043602e802200041003602e0022000410536029403200020004190036a3602f002200020004180036a36029003200041e0026a41c88504101e000b20044104742103024003402003450d01200341106b21032001280200200141106a21012006470d000b410421030c110b200041f8016a200720051038024020002802fc01450d002000280280024111490d00410521030c110b20004184026a200536020020004180026a22012007360200200020083602fc01200020063602f801200041e8016a200041f8016a2202101c20004190026a2203200041e0016a220429030037030020004188026a2205200041d8016a22072903003703002001200041d0016a2208290300370300200020002903c8013703f801200220002802ec0120002802f001101f200320042903003703002005200729030037030020012008290300370300200020002903c8013703f80120002006360298022000428080013702e402200041f0b2043602e002200041e0026a220241021027200041d8026a2206200041e8026a2204280200360200200020002903e0023703d00220004180036a2205200041d0026a1022200029038003211041002101200041003602e802200020103703e0024184ac04410020021023200241928a04411a1024200020002903e00237038003200041286a200520002802e802101920022000280228200028022c1025200041206a20002802d002220520002802d4022006280200220641fc8704101020004100360298032000200029032037039003200220004190036a1018200620062000280298036a22024b0d09200041c8026a2002360200200020053602d002200020002903d0023703c0022000412136029403200041ac8a04360290032000200041f8016a22023602980320004180036a2205200041c0026a20004190036a2207103e200041e0026a22062005104020004198036a2004280200360200200020002903e002221037039003200041f0026a280200210420002802ec02200041003602e802200020103703e00220022006101820002802980220061017200020002903e00237039003200041186a200720002802e802101920042000280218200028021c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002003200041bf016a290000370000200020093a00f801200020002903a8013700f9012002103c410621030c120b410121030c100b200041e0026a102d20004190026a200041f8026a29030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a1016027f20002802cc0122024504404101210341010c010b200041c8016a20002802d0012205101a20002802c801220420002802d0012201490d092005410474210820002802cc01210702402005452001200446720d00200220086a210b200720014104746a2103200041f8016a410472210a200120046b41016a2104200221010340200020012802003602f801200a200141086a2802002001410c6a2802001038200341086a20004180026a290300370200200320002903f8013702002004450d01200441016a2104200341106a2103200141106a2201200b470d000b0b024020050440200720086a210441002101410021030340200120076a22082802002006460d02200141106a2101200341016a2103200841106a2004470d000b0b4103210341010c010b200320054f0d0a200541047420016b41106b21030240200120026a2201200141106a22044d044003402003450d02200120042d00003a0000200441016a2104200141016a2101200341016b21030c000b000b200441016b2104200141016b210103402003450d01200120036a200320046a2d00003a0000200341016b21030c000b000b20004190026a2203200041f8026a220129030037030020004188026a2207200041f0026a220829030037030020004180026a220b200041e8026a220a290300370300200020002903e0023703f801200041f8016a22042002200541016b101f2003200129030037030020072008290300370300200b200a290300370300200020002903e0023703f80120002006360298022000428080013702cc01200041f0b2043602c801200041c8016a22014101102720004198036a2202200041d0016a2205280200360200200020002903c8013703900320004190036a220741b88b04102120004188036a2002280200360200200020002903900337038003200120004180036a104020022005280200360200200020002903c801221037039003200041d8016a280200210220002802d401200041003602d001200020103703c801200420011018200620011017200020002903c80137039003200041e8006a200720002802d001101920022000280268200028026c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002003200041bf016a290000370000200020093a00f801200020002903a8013700f9012004103c4106210341000b2003103a000b200041e0026a102d20004190026a200041f8026a29030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a101620002802cc01220a450440410121040c0b0b20002802d001210b200041c8016a200720051038200041f8016a20002802cc0120002802d0011038024020002802fc01450d002000280280024111490d00410521040c0b0b41032104200b450d0a200b410474210c4100210141002103034020062001200a6a2202280200470440200341016a2103200141106a2201200c470d010c0c0b0b200241086a2802001a20022006360200200241046a20002903c8013702002002410c6a200041d0016a220228020036020020004190026a2204200041f8026a220129030037030020004188026a220c200041f0026a220d29030037030020004180026a220e200041e8026a220f290300370300200020002903e0023703f801200041f8016a2203200a200b101f20042001290300370300200c200d290300370300200e200f290300370300200020002903e0023703f801200020053602a402200020073602a0022000200836029c0220002006360298022000428080013702cc01200041f0b2043602c801200041c8016a22014102102720004198036a22062002280200360200200020002903c8013703900320004190036a220541ec8a0410212002200628020036020020002000290390033703c8012000412336029403200041f88a0436029003200020033602980320004180036a220720012005103e20012007104020062002280200360200200020002903c801221037039003200041d8016a280200210220002802d401200041003602d001200020103703c8012003200110182000280298022001101720002802a00220002802a40220011034200020002903c80137039003200041f0006a200520002802d0011019200220002802702000280274100720002802a0021a20004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002004200041bf016a290000370000200020093a00f801200020002903a8013700f9012003103c4106210441000c0b0b20004190026a200029009d0137000020002005360087022000200736008302200020083600ff01200020063600fb01200020043b00f9012000200b3a00f801200020002903980137008b02230041306b22012400200141286a200041f8016a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101620012802002106200041e0026a220320012802084100200128020422021b36020820032002410420021b36020420032006410020021b360200200141306a240020002802e402210220002802e8022100230041106b22012400200142808001370204200141f0b20436020002402002044020014100102a20022000200110200c010b20014101102a200110290b0c110b230041d0006b220124002001102d200141c8006a200141186a290300370300200141406b200141106a290300370300200141386a200141086a29030037030020012001290300370330200141206a200141306a101620012802242100200141d0006a2400230041106b22012400200142808001370204200141f0b204360200230041106b2202240020014100102a200220004100473a000f20012002410f6a41011024200241106a24000c100b200041e0026a102d20004190026a2206200041f8026a220429030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a1016027f20002802cc012205044020004194026a20042903003702002000418c026a200041f0026a220729030037020020004184026a200041e8026a2208290300370200200020002903e0023702fc01200041bc81043602f80120004100360298032000428080013702cc01200041f0b2043602c80141eee7a015200041c8016a22011017200041f8016a220241047220011018200020002903c80137039003200041106a20004190036a220320002802d00110192000280210200028021410091a2006200429030037030020004188026a200729030037030020004180026a2008290300370300200020002903e0023703f8012000428080013702cc01200041f0b2043602c80120014102102720004198036a2204200041d0016a2207280200360200200020002903c801370390032001200341e08904103f2000412636029403200041ec890436029003200020023602980320004180036a220820012003103e20012008104020042007280200360200200020002903c801221037039003200041d8016a280200210420002802d401200041003602d001200020103703c801200220011018200020002903c80137039003200041086a200320002802d001101920042000280208200028020c100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002006200041bf016a290000370000200020093a00f801200020002903a8013700f9012002103c41060c010b41010b21012005452001103a000b200041e0026a102d20004190026a2202200041f8026a220129030037030020004188026a200041f0026a29030037030020004180026a200041e8026a290300370300200020002903e0023703f801200041c8016a200041f8016a101620002802cc0122040440410021010c060b2002200129030037030020004188026a2206200041f0026a220529030037030020004180026a2207200041e8026a2208290300370300200020002903e0023703f801200041f8016a220341044100101f200220012903003703002006200529030037030020072008290300370300200020002903e0023703f8012000428080013702cc01200041f0b2043602c801200041c8016a22014102102720004198036a2205200041d0016a2207280200360200200020002903c80137039003200120004190036a2206418c8904103f200041263602940320004198890436029003200020033602980320004180036a220820012006103e20012008104020052007280200360200200020002903c801221037039003200041d8016a280200210520002802d401200041003602d001200020103703c801200320011018200020002903c801370390032000200620002802d0011019200520002802002000280204100720004181026a200041b0016a29030037000020004189026a200041b8016a2903003700002002200041bf016a290000370000200020093a00f801200020002903a8013700f9012003103c410621010c050b20032002290300370100200c200a290300370100200e200d290000370000200020093a00f901200020002903a8013701fa01200041003a00f801230041106b22012400200142808001370204200141f0b2043602000240200041f8016a22022d000045044020014100102a200241016a200110180c010b20014101102a200110290b0c0d0b200241b0b2046a2d000021010c060b41a08104411c418c88041013000b41808004412141a484041013000b230041306b220124002001200536020420012003360200200141146a41033602002001411c6a41023602002001412c6a4106360200200141b8930436021020014100360208200141063602242001200141206a3602182001200141046a36022820012001360220200141086a41dc8804101e000b20044100472001103a000b41010b2004103a000b200020013a008003200041ec026a4101360200200041f4026a4101360200200041d484043602e802200041003602e0022000410136029403200020004190036a3602f002200020004180036a36029003200041e0026a41d88504101e000b4101210120020d010b410121010b20012003103a000b103b000b20004184ac0436028802200041003602f801200041f8016a41808c04101e000b410020012802081030103d000b1800200128020041e5af044111200128020428020c1100000bdf0202047f027e230041e0006b220024000240102f41ff01712201410546044020004180800136023841f0b204200041386a22011003200041086a200028023841f0b2044180800141d48604101420002000290308370330200041003602380240200041306a2001410410110d002000280238419bddf6f405470d00200041386a200041306a102b20002d0038450d020b103b000b200020013a0038200041386a1032000b200041276a2201200041d1006a290000370000200041206a2202200041ca006a290100370300200041186a200041c2006a29010022043703002000200029013a220537031020002d00392103200041c1006a2004370000200041c9006a2002290300370000200041d0006a2001290000370000200020033a003820002005370039200041386a103c230041106b22002400200042808001370204200041f0b20436020020004100102a20004100102a410020002802081030103d000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41e08c04200241086a1045200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105c20032003290310370320200341086a2005200141046a105c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104a2004280208200428020c104b200028020821030b200028020420036a20012002100b1a2003200220036a22014b044041808d04411c41e093041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10470c020b230041106b22042400200441086a200020034101104a2004280208200428020c104b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41808d04411c41d093041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103720042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41a08d04412141d48e041013000b1f00024020014181808080784704402001450d0120001036000b0f0b1035000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041e8b204280200220220056a22042002490d0241ecb2042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341ecb2042004360200200220056a22042002490d030b41e8b2042004360200200221030c020b41b0ab04411c4194ab041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db96046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db96046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db96046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db96046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ac04210420024184ac044184ac04105320026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410560d02200341106a2001200920026b4101105720032802142202418080c400460d022003280210200520082006200a28020c1100000d0220022005200a10580d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410560d01200220082006200128020c11000021000c010b41012100200341086a2001200920026b41011057200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410560d00200220082006200128020c1100000d00200520022001105821000b200341406b240020000f0b41f09304411c41a499041013000b4190940441214180a9041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041031000b200541086a2003200220011052200528020c21012000200528020836020020002001360204200541106a24000b1400200020012002200341f8b0044190940410690ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010542206200020016a22082004417c716a200441037110546a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809d041055200328020c21052003280208210820032003280200200328020422002000417c7141909e041055200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09304411c4198a0041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09304411c41c8a0041013000b41f09304411c41a8a0041013000b41f09304411c41b8a0041013000b41f09304411c4188a0041013000b20012002105421020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09304411c41f0a8041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acac04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09304411c41b499041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021052200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11000021000c020b41f09304411c41d8a1041013000b200b450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003105322024b0440200941086a2001200020026b4100105741012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1100000d01200220052001105821000c010b200128020020032004200128020428020c11000021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1045200341206a24000bda08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274105f0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89a041059200341c8006a200420032802502003280254106020032802484101470d02200328024c21010c050b200341306a20042001200010602003280234210120032802300c050b41909404412141a8a7041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89a041051200341386a2004200328024020032802441060410020032802384101470d011a2002200328023c6a220120024f0d0041f09304411c41889b041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002105f20032802282202450d05200328022c2100200341206a20032802782009410441d8a704105920022000200328022020032802241061450d05200341186a200328026020032802702200200c106220032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09304411c41d89a041013000b41f09304411c41b8a7041013000b41f09304411c41c8a7041013000b41f09304411c41e89a041013000b200341106a2003280268200328026c20032802702003280274105f20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681062200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d495044104200628020c110000450d010c020b41909404412141e8a1041013000b2003410a36028c0120082002047f200320002002200241016b41a09e0410512003418c016a41012003280200200328020410610541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011052200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1400200020012002200341fca2044190940410690b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1045200241206a24000b0b0020002802002001105a0b1800200128020041acb2044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441a09504410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0950436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b09504360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241f894043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b1400200020012002200341ccab0441e0ab0410690b1400200020012002200341f8b0044190b10410690b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a2002101e000b0b9d320700418080040bf50c617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77ee33a8024661696c656420746f206765742076616c756520696e204d617070696e673a20c0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273e8000100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000600101006d0000009d00000011000000600101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b000000010000000100000001000000100901007f000000c30800001100000043726f73732d636f6e74726163742063616c6c206661696c656420776974682034020100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f63616c6c2f63616c6c5f6275696c6465722e72730000005c020100690000007b000000110000005c0201006900000078000000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300e80201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000600101006d0000006b0100000e000000600101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72c80301001c000000600101006d000000ed00000017000000601601006e000000c100000037000000601601006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f74797065732e727300001c0401003e000000330000001900000041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465640004160100000000006c04010041646472657373426f6f6b3a3a41646472657373426f6f6b437265617465643a3a6f776e657241646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665640000000416010000000000be04010041646472657373426f6f6b3a3a41646472657373426f6f6b52656d6f7665643a3a6f776e657241646472657373426f6f6b3a3a4964656e74697479416464656441646472657373426f6f6b3a3a4964656e7469747941646465643a3a6f776e657241646472657373426f6f6b3a3a4e69636b4e616d655570646174656400000004160100000000004d05010041646472657373426f6f6b3a3a4e69636b4e616d65557064617465643a3a6f776e657241646472657373426f6f6b3a3a4964656e7469747952656d6f7665640004160100000000009b0501002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f616464726573735f626f6f6b2f6c69622e7273c40501003c0000002e00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900100601002700000073746f7261676520656e7472792077617320656d7074790040060100170000000b00000004000000040000000c0000000d0000000e0041808d040ba418617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000f0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300d40601007f0000008a0100001c0000006361706163697479206f766572666c6f770000006407010011000000d40601007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000d08010015000000220801000d000000900701007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000830801007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273292073686f756c64206265203c206c656e202869732072656d6f76616c20696e646578202869732000a5090100120000008f09010016000000310a010001000000100901007f000000300700000d000000100901007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320a010020000000520a0100120000003a0000000416010000000000740a010001000000740a0100010000000b00000000000000010000001000000070616e69636b65642061742027272c20ac0a010001000000ad0a0100030000003a2000000416010000000000c00a010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230c01007e0000005d0500000d000000230c01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40c0100830000004e0000002f000000c40c0100830000005a0000001f000000c40c0100830000006300000009000000c40c0100830000006800000027000000c40c010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980d010012000000aa0d01002200000072616e676520656e6420696e64657820dc0d010010000000aa0d0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0d010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900e010080000000fe0300002f000000900e010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028300f010015000000450f01002b000000310a0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273880f0100800000004700000015000000880f0100800000005400000011000000880f0100800000005a00000009000000880f0100800000006400000011000000880f010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581001007f0000009100000011000000581001007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f810010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c11010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a5040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a6040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002413010082000000a1010000470000002413010082000000b4010000200000002413010082000000b4010000110000002413010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8130100880000009500000001000000dd0a01007e000000cd0100000500000004160100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010150100830000002f010000180041b0ab040b51617474656d707420746f206164642077697468206f766572666c6f77f617010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ac040bf504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04160100000000004f160100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601601006e0000005a0000001c000000601601006e0000005a00000009000000601601006e0000005a00000031000000601601006e0000006500000009000000601601006e000000830000001a000000601601006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273f6170100820000008201000047004190b1040bd701617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6465632e7273000000b118010068000000770000000e0000004572726f7201020304050607080a0b0c09000000190000001c000000160000001400000019000000f7140100db140100c5140100b1140100981401","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"address_book","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[{"label":"identity_contract","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":["Constructor","Instantiate with the address of \`Identity\` contract."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":18},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":21},"hash":{"displayName":["Hash"],"type":19},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":20}},"events":[{"args":[{"docs":[" The owner of the newly created address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookCreated"},{"args":[{"docs":[" The owner of the removed address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"AddressBookRemoved"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity added to the address book."],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityAdded"},{"args":[{"docs":[" The owner of the address book."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The identity that received a new nickname."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The new nickname."],"indexed":false,"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"docs":[],"label":"NickNameUpdated"},{"args":[{"docs":[],"indexed":false,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[],"indexed":false,"label":"identity","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[],"default":false,"docs":[" Returns the address of the identity contract."],"label":"identity_contract","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":11},"selector":"0x69081926"},{"args":[],"default":false,"docs":[" Creates an address book for the caller."],"label":"create_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x07411baf"},{"args":[],"default":false,"docs":[" Removes the address book of the caller."],"label":"remove_address_book","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x1fe0816f"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Adds an identity to the user's address book."],"label":"add_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x83b06419"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Removes an identity from the user's address book."],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x08026740"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_nickname","type":{"displayName":["Option"],"type":3}}],"default":false,"docs":[" Update nickname of an identity."],"label":"update_nickname","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x484daeb1"},{"args":[{"label":"account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the identities stored in the address book of a user."],"label":"identities_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x29daba02"},{"args":[],"default":false,"docs":[" Returns whether the user has created an address book or not"],"label":"has_address_book","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xc468ded4"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x02a833ee","ty":0}},"name":"identities"}],"name":"AddressBookInfo"}},"root_key":"0x02a833ee"}},"name":"address_book_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"identity_contract"}],"name":"AddressBook"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":4}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":4}],"path":["Option"]}},{"id":4,"type":{"def":{"primitive":"str"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":10}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":13}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":13},{"name":"E","type":10}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":14}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":14}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AddressBookAlreadyCreated"},{"index":1,"name":"AddressBookDoesntExist"},{"index":2,"name":"IdentityDoesntExist"},{"index":3,"name":"IdentityNotAdded"},{"index":4,"name":"IdentityAlreadyAdded"},{"index":5,"name":"NickNameTooLong"}]}},"path":["address_book","Error"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":10}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":17}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":17},{"name":"E","type":10}],"path":["Result"]}},{"id":17,"type":{"def":{"primitive":"bool"}}},{"id":18,"type":{"def":{"primitive":"u128"}}},{"id":19,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":20,"type":{"def":{"primitive":"u64"}}},{"id":21,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/types/contract-info/identity.ts b/types/contract-info/identity.ts index f90b989..0038ffe 100644 --- a/types/contract-info/identity.ts +++ b/types/contract-info/identity.ts @@ -1,2 +1,2 @@ -export const ContractAbi = `{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; -export const ContractFile = `{"source":{"hash":"0xbae6c1d7ba4fb8948fc0772415c6a6dd7c6ea755685e4380e61d0901ef668d90","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017e6000017f60017f017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003840182010101000000010601040306030000000003000000050200000000030300000003000503060500050000030005060a0002040008050000000005030b030502000000030003000000050300000303030800000305000008000302080201010302020403020502090604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005f066465706c6f7900630919010041010b0f1f7a79476c85016e820183016d66686984016f0ac8ed0182012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108701200120022003280208200328020c418cb404102d2003200220042006108701200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041088010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a360208200320021020000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d04108a010b9a0102067f017e230041206b220324000240024020012802002202200128020422044904402004200220022004491b2105200341086a410472210603402001200241016a2204360200200620021017200328021022070d02200422022005470d000b0b200041003602080c010b200335020c21082000200329021437020c2000200736020820002002ad2008422086843702000b200341206a24000b910302067f017e230041406a220224002002410036021820024280800137022c200241d4b40436022841f7e698f407200241286a2205101920012005101920022002290328370310200241086a200241106a2002280230101a200228020c210320022802082002280210210120022002280214220736022820032001200510002103200220022802282001200741b086041014024002400240410c20032003410c4f1b0e0401000002000b200241346a41013602002002413c6a4100360200200241c0870436023020024184ae0436023820024100360228200241286a41c887041020000b200228020021012002200228020436022420022001360220200241286a200241206a1021200228022c2204044020022903302108200228022821010c010b200241003a0020200241346a41013602002002413c6a410136020020024190820436023020024100360228200241013602142002200241106a3602382002200241206a360210200241286a418083041020000b200020083702082000200436020420002001360200200241406b24000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101a200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101b0240200104400340200241d8006a200241306a101c20022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a101d200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a101e0b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a418083041020000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b2601017f230041106b220224002002200036020c20012002410c6a41041033200241106a24000b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110322002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f20002802082202200028020046044020002002104a200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107d0d0d200241d897044102107d0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104e20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10640d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000b7802027f017e230041206b22022400200241106a2001104f0240200228021404402002290214210420022802102103200241086a2001104920022f010845044020022f010a21012000200437020420002003360200200020013b010c0c020b200041003602040c010b200041003602040b200241206a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241ec8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005102320022002290358370348200241186a200241c8006a2002280260101a200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c887041020000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a418083041020000b0a0020012000412010330bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101a200328020c21002003280208200329031021072003410036022820032007370320200120022004102520032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000b430020012002104c20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104b200041106a22002001470d000b0b0bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101a200228020c2100200228020820022903102106200241003602282002200637032020012003102720022002290320370310200220042002280228101a20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104b20002f010c200110340b0c0041e081042000200110290ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101a200328020c2100200328020820032903102106200341003602282003200637032020022004102320032003290320370310200320052003280228101a20002003280200200328020410071a200341306a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241ec81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003102320022002290350370340200241106a200241406b22042002280258101a20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101a20002002280208200228020c10071a200241e0006a24000bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141ec81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a41047220001023200120012903403703302001200141306a2001280248101a2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a20041020000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d8870410102001410036021820012001290308370310200141106a4108102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041061000b080020004101102f0b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003105020022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001086012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000b2601017f230041106b22022400200220003b010e20012002410e6a41021033200241106a24000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103120012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041020000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141089010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106b2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106b20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c091041020000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a418093041020000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a102220002002290308370300200241306a24000b910101017f230041d0006b22022400200241086a41e081042001105b20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a418083041020000b2000200241086a4121100a1a200241d0006a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101089010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d04108a010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e041020000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107c200241306a24000b0b002000280200200110190b4801027f230041106b22022400200241003b010e024020012002410e6a4102101145044020022f010e21010c010b410121030b200020013b0102200020033b0100200241106a24000bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002104c20022000200110330b50002000413f4d044020012000410274102f0f0b200041ffff004d04402000410274410172200110340f0b200041ffffffff034d04402000410274410272200110190f0b20014103102f2000200110190bed0101087f230041106b2206240020002002101b20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104e2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a20011050200228020c21012000200228020836020020002001360204200241106a24000bc60501097f230041106b2205240020052001103202402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106b200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041052200141f0006a220320001053200129037021052001410036028801200120053703800141ec880441202002104b200141286a410472200210232001200129038001370370200141106a2003200128028801101a200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a0012002200410232000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10540c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410552001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310562000200210540c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410572001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310562000200210540c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410572001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310562000200210540c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410522001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310562000200210540c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410552001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310562000200210540c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410572001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310562000200210540c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410572001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310562000200210540c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105320012903702105200141003602880120012005370380014184ae0441002002104b2002418c8d04411c10332001200129038001370370200141206a2003200128028801101a200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a10232000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105620014180016a200010540b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a22024100102f200141286a41047220021023200141cc006a280200200210190c080b20014180016a22024101102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c070b20014180016a22024102102f200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104b0c060b20014180016a22024103102f200128022c20021019200141306a280200200210190c050b20014180016a22024104102f200128022c200210190c040b20014180016a22024105102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c030b20014180016a22024106102f200128022c20021019200141346a280200200141386a2802002002104b2001413c6a2f0100200210340c020b20014180016a22024107102f200128022c200210190c010b20014180016a22024108102f200128022c20021019200141306a200210230b20012001290380013703a0012001200141a0016a200128028801101a200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108b010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001086012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101a20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108b010bf90102037f017e230041d0006b22032400200341106a22052001105320032903102106200341003602282003200637032020022802002002280204200341206a2204104b20022802082802002004101920032003290320370310200341086a20052003280228101a20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b10232002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108b010b3501017f230041106b22002400200042808001370204200041d4b40436020020004101102f20001030410120002802081044105e000b4c01017f230041106b22022400200242808001370204200241d4b40436020020024100102f2002200141ff0171410747047f20024101102f20010541000b102f200020022802081044105e000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100102f200345044020024100102f2001280204200210190c020b20024101102f200220012d0001102f0c010b20024101102f200210300b200020022802081044105e000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101a200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c887041020000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103120032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101a200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002102320002802242002101920012001290320370310200120032001280228101a20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101a2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b9e4702137f037e230041b0036b22002400024002400240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d8016a20002802880341d4b4044180800141b086041014200020002903d8013703d8022000410036028803200041d8026a2001410410110d01200028028803220741187621012007411076210520074108762102024002400240024002400240027f02400240200741ff0171220741106b0e05040a0a0a01000b0240024002400240024002400240024002400240024020074197016b0e03091401000b0240200741cf016b0e050a1414140d000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200241ff01714189014772200541ff0171413647200141e4004772720d14410621010c150b200241ff017141fe0147200541ff017141fb014772200141ec0147720d13200041f8006a200041d8026a100e20002802780d13200028027c2204410876210641002107410021010c150b200241ff017141f20047200541ff0171410c47722001411e47720d1220004180016a200041d8026a100e2000280280010d122000280284012204410876210641010c0a0b200241ff01712203413c460d0f200341cc0147200541ff017141f90047722001418d0147720d1120004188036a200041d8026a101c200028029003220a450d11200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410721010c130b200241ff017141ff0147200541ff017141c60147722001411c47720d1020004188016a200041d8026a100e2000280288010d10200028028c012204410876210641030c080b200241ff017141d50047200541ff017141054772200141e40147720d0f20004198016a200041d8026a100e2000280298010d0f200028029c01210420004190016a200041d8026a100e2000280290010d0f2004410876210620002802940122074110762108410421010c110b200241ff017141dd0047200541ff017141df014772200141cd0147720d0e410521010c0f0b200241ff0171412f47200541ff017141f5004772200141e40147720d0d20004188036a200041d8026a101c200028029003220a450d0d200028028c032207411076210820002f00890320002d008b03411074722106200028029403210320002d0088032104410821010c0f0b200241ff017141a70147200541ff017141a60147722001410f47720d0c200041a0016a200041d8026a100e20002802a0010d0c20002802a4012204410876210641090c040b200241ff0171410247200541ff017141e7004772200141c00047720d0b410a21010c0c0b200241ff017141a30147200541ff017141ee0147722001410947720d0a20004188036a200041d8026a1021200028028c032207450d0a2007411076210820002f00890320002d008b034110747221062000280294032103200028029003210a20002d0088032104410b21010c0c0b200241ff017141be0147200541ff0171418b014772200141cc0147720d09200041c0016a200041d8026a100e20002802c0010d0920002802c4012104200041b8016a200041d8026a100d20002d00b8014101710d0920002d00b90122070e020605090b200241ff017141b10147200541ff017141fd004772200141be0147720d08200041c8016a200041d8026a100e20002802c8010d0820002802cc0122044108762106410d0b2101410021070c090b200241ff017141b90147200541ff0171413447720d0620014103460d010c060b200241ff017141fe0047200541ff017141334772200141ea0147720d05200041d0016a200041d8026a100e20002802d0010d0520002802d401210420004188036a200041d8026a103120002d0088030d05200041f8016a200041a1036a290000370300200020004199036a2900003703f001200028008903220741107621082004410876210620004195036a280000210920004191036a2800002103200028008d03210a410f21010c070b20004188036a200041d8026a103120002d0088030d04200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410e21010c060b200041b0016a200041d8026a104920002f01b0010d034101210720002f01b20121080b200041a8016a200041d8026a100d20002d00a8014101710d020240024020002d00a90122030e020100040b20004188036a200041d8026a104f200028028c032203450d032000280290032109200028028803210a0b20044108762106410c21010c040b200541ff017141a201472001413247720d0120004188036a200041d8026a103120002d0088030d01200041f8016a200041a8036a2d00003a00002000200041a0036a2903003703f001200028028c032204410876210620004190036a280200220741107621082000419c036a280200210920004198036a280200210320004194036a280200210a20002f018a03210b20002d008903210c410221010c030b200041043a00880320004188036a1046000b1058000b410021070b200041e8016a200041f8016a290300370300200020002903f0013703e001200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2202101920002000290388033703b802200041f0006a200041b8026a200028029003101a2000280274210d200028027020002802b8022105200020002802bc02220f36028803200d2005200210002102200041e8006a2000280288032005200f41b08604101402400240024002400240024002400240024002400240024002400240027f02400240024002400240410c20022002410c4f1b0e0400030301030b200028026c210520002000280268360298022000200536029c02200041e0006a20004198026a100e024020002802600d002000280264210220004188036a20004198026a103120002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a220f200041a1036a2900003700002000200029018a033703d80220002d0089032110200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c100b20004194036a41013602002000419c036a4100360200200041e48e04360290030c0f0b200441ff01712006410874722105200028025c210420004188026a200f29000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200236029002200020103a00f0012000200436029402024002400240024002400240024002400240200141016b0e0f010203040c0d050607101514131211000b200041d8026a2005101820004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a280200220445044020014100102f0c020b20014101102f20042003410c6a280200200110250c010b20014101102f200110300b0c180b200041d8026a22032005103f20004188036a220141017220034121100a1a200041003a008803230041106b22032400200342808001370204200341d4b404360200024020012d000045044020034100102f20012d000145044020034100102f0c020b20034101102f200141026a200310230c010b20034101102f200310300b410020032802081044105e000b200041a7036a200041e8016a2d00003a00002000200936009b0320002003360097032000200a360093032000200536008b032000200b3b0089032000200c3a008803200020002903e00137009f032000200741ffff037120084110747236008f03230041306b22012400200141286a20004188036a220341186a290000370300200141206a200341106a290000370300200141186a200341086a29000037030020012003290000370310200141086a200141106a103e200041086a2001290308370300200141306a240020002802082103200028020c2104230041106b22012400200142808001370204200141d4b40436020020014100102f0240200345044020014100102f0c010b20014101102f2004200110190b0c160b200041d8026a2005101720004194036a200041e0026a290300370200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a28020045044020014100102f0c020b20014101102f200341046a200110270c010b20014101102f200110300b0c150b20004188036a20051018200028028c032201450d052000280290032104200020002802880336028803200020013602940320002001200441047422036a220536029003027f0240027f024020040440200741ffff0371200841107472210620004188036a410472210403402000200128020822023602d8022002450d02200620012902002213a7460d04200141106a2101200341106b22030d000b0b2000200536028c03200041d8026a210441000c010b200141106a0b210120042001360200410021024100210641030c010b2000200141106a36028c032013422888a72106200128020c21012013422088a70b210320004188036a10422002450c060b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220629030037030020004190036a2209200041e0026a220b290300370300200020002903d80237038803200041206a20004188036a1022410021010240027f024002402000280220450d0020002802242104200041a0036a200041f0026a290300370300200220062903003703002009200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2003104e20002802182106200028021c200a2003100a210b4104210120034180014d0440200041b8026a200028029c0220002802a002104d200020002802bc02220136029403200020002802b802360288032000200120002802c002220941047422026a220c3602900302402009044020004188036a4104722109034020002001280208220d3602b802200d450d0520012802002005460d02200141106a2101200241106b22020d000b0b2000200c36028c03200041b8026a210941000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a101e0b41012102200141ff01714107460d020c150b200141106a0b21012009200136020020004188036a2201104220004194036a2202200336020020004190036a2209200b3602002000200636028c03200020053602880320004198026a22062001101d2004200028029c0220002802a00210242000419c036a200336020020004198036a200a3602002002200741ffff0371200841107472360200200920053602002000200436028c032000410136028803200110512006101e0b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c120b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2204200041e8026a220229030037030020004190036a2206200041e0026a220b290300370300200020002903d80237038803200041306a20004188036a10224100210102402000280230450d0020002802342109200041a0036a200041f0026a290300370300200420022903003703002006200b290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220b3602a0022000200236029c02200020013a009802200041286a2003104e2000280228210e200028022c200a2003100a210f024020034180014d0440200041b8026a200028029c02221020002802a0022211104d200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422126a220d36029003027f024002402001450d00410021014100210603402001200c6a220441086a280200044020042802002005460d03200641016a21062012200141106a2201470d010c020b0b200441106a210d0b2000200d36028c034100210241030c010b2000200441106a36028c032006200b4f0d05200120026a220120053602002001410c6a2003360200200141086a200f360200200141046a200e3602004101210241070b210120004188036a10422002450d0120092010201110242000419c036a200336020020004198036a200a36020020004194036a200741ffff037120084110747236020020004190036a20053602002000200936028c03200041023602880320004188036a105120004198026a101e0c120b410421010b20004198026a101e0b41012102200141ff01714107460d0f0c110b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2204200041e0026a2202290300370300200020002903d80237038803200041386a20004188036a10222000280238047f200028023c2107200041a0036a200041f0026a2903003703002001200329030037030020042002290300370300200020002903d80237038803200041b8026a20004188036a106020002d00b802210120002802bc022203450d07200020002d00bb023a009b02200020002f00b9023b0099022000200336029c02200020013a009802024020002802c00222060440410021022003210103402005200128020046044041012104200241016a220104402001200647044003400240024002402005200320014104746a2202280200460440200141016a2201450d01200441016a22040d0341a08104411c41f484041013000b20012004490d012003200120046b4104746a22082002290200370200200841086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012006470d000b0b024020044100200420064b1b450440200420064d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200620046b22013602a0022004450d04200720032001102420004190036a20053602002000200736028c03200041033602880320004188036a105120004198026a101e0c0d0b41a08104411c41e484041013000b200141106a21012006200241016a2202470d000b0b200020063602a0020b20004198026a101e41030541000b2101410121020c100b2006200b41b488041061000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c887041020000b41002106410121034100210241010b20004194036a200136020020004190036a200236020020004100360288032000200341ff017120064108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a220328020045044020014100102f200341086a2802002205044020014100102f20052003410c6a2802002001104b0c020b20014101102f200120032d0004102f0c010b20014101102f200110300b20012802081044105e000b20004188036a2107230041f0006b22022400200041f0016a22012802242103200220013602202002200336021c20024100360218200241386a200241186a101602400240024002400240024020022802404504402007410036020820074280808080c0003702000c010b200241106a4104103820022802142203450d01200228021022014100480d012001200310392206450d0220062002290338370200200641106a200241c8006a220a280200360200200641086a200241406b2209290300370200200241306a200241206a28020036020020022002290318370328200241386a200241286a10160240200228024045044041042103410121040c010b41042101410121050340200541016a22044521080240200120054704402006200541146c6a22032002290338370200200341106a200a280200360200200341086a200929030037020020080d08200121030c010b027f20080440417f21032004210541000c010b200120016a22032001490d07200241086a410420032004200320044b1b2203200341044d1b22031038200228020c210b200228020821052002200110382002200636026020022002290300370264200241d0006a2005200b200241e0006a103a2002280250450440200228025421064181808080780c010b200228025421052001210320022802580b210b2005200b103b2006200141146c6a22012002290338370200200141106a200a280200360200200141086a200929030037020020080d070b200241386a200241286a1016200321012004210520022802400d000b0b2007200436020820072006360204200720033602000b200241f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321032000280290032104230041106b22012400200142808001370204200141d4b40436020002402003044020014100102f20042001104c2004450d012003200441146c6a21040340200328020020011019200341046a20011027200341146a22032004470d000b0c010b20014101102f200110300b0c0c0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220329030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1022200020002802102206410146047e42810c05200041003602c00220004280808080c0003703b8022002410441001024200041a0036a200041f0026a22072903003703002001200329030037030020052004290300370300200020002903d8023703880320004188036a22012002102a2002200041d8026a10282000200241016a2205417f20051b36029002200041a4036a20072903003702002000419c036a200329030037020020004194036a2004290300370200200041ac036a2002360200200020002903d80237028c03200041003602880320011051200041b8026a101e2001200041f0016a4128100a1a2001105c2002ad42208642800c840b37038803200641014620004188036a105a000b41012102200141ff01714107470d090b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c080b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2203200041e8026a220429030037030020004190036a2205200041e0026a2202290300370300200020002903d80237038803200041406b20004188036a102220002802402206047f20002802442101200041a0036a200041f0026a2903003703002003200429030037030020052002290300370300200020002903d8023703880320004188036a2203102b41e081042001105d41dc81042001105d20004104360288032000200136028c03200310512003200041f0016a4128100a1a2003105c41070541000b210120064520011059000b200041b0026a200041e8016a290300370300200020093602a402200020033602a0022000200a36029c02200020002903e0013703a8022000200741ffff037120084110747236029802200041b8026a103520004188036a41e481042005105b20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106241017321020b20004188036a2005103f027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1062410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103e410620002802504101460d011a200041a0036a2203200041f0026a29030037030020004198036a2204200041e8026a29030037030020004190036a2202200041e0026a290300370300200020002903d8023703880320004188036a2201102b2003200041b0026a2903003703002004200041a8026a2903003703002002200041a0026a29030037030020002000290398023703880320012005102a200520004198026a10282001200041f0016a4128100a1a2001105c4107210141000c020b41000b210141010b20011059000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a418083041020000b200041d7026a200041e8016a2d00003a0000200020093600cb02200020033600c7022000200a3600c302200020053600bb022000200b3b00b9022000200c3a00b802200020002903e0013700cf022000200741ffff03712008411074723600bf02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a29030037030020004190036a2203200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a102220002802482204047f41e48104200028024c2205200041b8026a1029200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000410836028803200320002903b8023703002001200041c0026a2903003703002000200536028c0320004188036a220110512001200041f0016a4128100a1a2001105c41070541000b210120044520011059000b200041d8026a2203103541002101027f02402003200041f0016a10620440200041b8026a2005101720002802bc020d01410321010b41010c010b41e881042005105d4107210120004107360288032000200536028c0320004188036a220310512003200041f0016a4128100a1a2003105c41000b20011059000b200041d8026a22011035027f027f41002001200041f0016a1062450d001a20004188036a20051017200028028c0322010440200020002f0089033b00b902200020002d008b033a00bb02200020002903900322133703c002200020013602bc02200020002d0088033a00b8020240024002402003044020094180014b0d01200020093602c002200020033602bc022000200a3602b8020b200741ffff03714101460d012013422088a721080c020b41050c030b200020083b01c4020b2005200041b8026a102620004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20083b01002000200536028c03200041063602880320004188036a220110512001200041f0016a4128100a1a2001105c4107210141000c020b41030b210141010b20011059000b200020033602c4022000200a3602c002200020053602b8022000200741ffff03712008411074723602bc02200041d8026a22011035027f02402001200041f0016a1062044042800a2113200a418101490d010b4201211441010c010b2004200041b8026a10262000200441016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20033b01002000200436028c03200041053602880320004188036a220110512001200041f0016a4128100a1a2004ad42208621152001105c4200211341000b2000201342800e832014842015843703880320004188036a105a000b20004188036a2201200041f0016a4128100a1a2001105c41072101410021020c010b20004184ae0436029803200041003602880320004188036a418c8e041020000b200220011059000b410020012802081044105e000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1022024020022802080440200241106a200228020c10182002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a20021020000b0b00200020014120100b450bc708020e7f017e23004180016b22002400024002400240024002400240103741ff01712201410546044020004180800136024841d4b404200041c8006a22011002200041106a200028024841d4b4044180800141b0860410142000200029031037037020004100360248200041f0006a2001410410110d032000280248220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041206a22011035200042003703400c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041086a200041f0006a100c20002802080d03200041206a20002802744104762201200028020c220220012002491b101b2002450d010340200041c8006a200041f0006a102102400240200028024c220304402000290350210e20002802482107200028022822012000280220460d010c020b200041206a101e0c060b200041206a2001104a200028022821010b2000280224220520014104746a2204200e3702082004200336020420042007360200200141016a2203044020002003360228200241016b22020d010c040b0b41a08104411c41d095041013000b200020013a0048200041c8006a1046000b20002802282103200028022421050b2000411e6a220120002d00233a0000200020002f00213b011c2005450d0020002d002021042000411a6a20012d000022013a0000200020002f011c22023b0118200020043a0070200020023b0071200020013a00732000200336027820002005360274200041c8006a2003101b2000280248220720002802502201490d01200028024c210402402003452001200746720d00200420014104746a210a200120076b41016a2102200341047441106b210b410021010340200120056a220841046a28020021062000200841086a2802002209104e2000280200210c200028020420062009100a210d2001200a6a2206410c6a2008410c6a2f01003b0100200641086a2009360200200641046a200d3602002006200c3602002002450d01200241016a21022001200b47200141106a21010d000b0b02402003450d0020034104742102410021052004210103402001280204450d01200041286a200141086a290200220e37030020002001290200370320200ea74181014f0d04200141106a21012005200041206a1026200541016a2105200241106b22020d000b0b200720041040200041206a220110352000200336024420004100360240200041f0006a101e0c030b1058000b41808004412141b485041013000b200041d4006a4101360200200041dc006a4100360200200041848f0436025020004184ae0436025820004100360248200041c8006a418c8f041020000b200041c8006a220420014128100a1a2004105c230041106b22012400200142808001370204200141d4b40436020020014100102f20014100102f410020012802081044105e000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a419c8f04200241086a1065200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107b20032003290310370320200341086a2005200141046a107b20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106741000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002106a2004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10670c020b230041106b22042400200441086a200020034101106a2004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1064200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107220026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410750d02200341106a2001200920026b4101107620032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10770d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410750d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011076200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410750d00200220082006200128020c1101000d00200520022001107721000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011071200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041088010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010732206200020016a22082004417c716a200441037110736a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041074200328020c21052003280208210820032003280200200328020422002000417c714190a0041074200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107321020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021071200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107222024b0440200941086a2001200020026b4100107641012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107721000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1065200341206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041078200341c8006a200420032802502003280254107f20032802484101470d02200328024c21010c050b200341306a200420012000107f2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c041070200341386a200420032802402003280244107f410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107e20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410782002200020032802202003280224108001450d05200341186a200328026020032802702200200c10810120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108101200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a00410702003418c016a4101200328020020032802041080010541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011071200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041088010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1065200241206a24000b0b002000280200200110790b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107c450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107c0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107c21000b200241406b240020000b1500200020012002200341ccad0441e0ad041088010b1500200020012002200341e8b2044180b3041088010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a20021020000bf80102037f017e230041d0006b22042400200441106a22062001105320042903102107200441003602282004200737032020022802002002280204200441206a2205104b200520022802082003103320042004290320370310200441086a20062004280228101a20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b10232002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0bfd330700418080040bb10f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f00000059060000240000003b605e7d00e945ca6dbd73337733867eb16cd67c4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002a00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b206e616d6520697320746f6f206c6f6e676c07010018000000d106010038000000c6000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e312f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":12}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":9},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the network name that got added."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the network that got added."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The name of the updated network."],"indexed":false,"label":"name","type":{"displayName":["String"],"type":7}},{"docs":[" The \`Ss58Prefix\` of the updated network."],"indexed":false,"label":"ss58_prefix","type":{"displayName":["Ss58Prefix"],"type":8}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":13}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_prefix","type":{"displayName":["Option"],"type":33}},{"label":"new_name","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"name"},{"layout":{"leaf":{"key":"0x7e863377","ty":8}},"name":"ss58_prefix"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"primitive":"u16"}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":11}],"path":["Result"]}},{"id":10,"type":{"def":{"tuple":[]}}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"sequence":{"type":13}}}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"name","type":7,"typeName":"String"},{"name":"ss58_prefix","type":8,"typeName":"Ss58Prefix"}]}},"path":["common","types","NetworkInfo"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":11}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":11}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,13]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":11}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":11}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":8}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":8}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file +export const ContractAbi = `{"source":{"hash":"0xc58b8fed4f9222b100630773cb8793c9db7548b0a03a6ef1e55b87d6794fe0c9","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":11}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the network that got added."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the updated network."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the updated network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":12}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_rpc_url","type":{"displayName":["Option"],"type":33}},{"label":"new_address_type","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"rpc_url"},{"layout":{"enum":{"dispatchKey":"0x7e863377","name":"AccountType","variants":{"0":{"fields":[],"name":"AccountId32"},"1":{"fields":[],"name":"AccountKey20"}}}},"name":"account_type"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"sequence":{"type":12}}}},{"id":12,"type":{"def":{"composite":{"fields":[{"name":"rpc_url","type":7,"typeName":"String"},{"name":"account_type","type":13,"typeName":"AccountType"}]}},"path":["common","types","NetworkInfo"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AccountId32"},{"index":1,"name":"AccountKey20"}]}},"path":["common","types","AccountType"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":10}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":10}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":10}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":10}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":12}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":12}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":10}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"NetworkRpcUrlTooLong"},{"index":7,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":10}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,12]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":10}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":10}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0xc58b8fed4f9222b100630773cb8793c9db7548b0a03a6ef1e55b87d6794fe0c9","language":"ink! 4.2.0","compiler":"rustc 1.68.0-nightly","wasm":"0x0061736d01000000014e0d60027f7f0060037f7f7f017f60027f7f017f60037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f017f60000060017f017f60017f017e6000017f60067f7f7f7f7f7f0002dd010b057365616c310b6765745f73746f726167650007057365616c301176616c75655f7472616e736665727265640000057365616c3005696e7075740000057365616c300663616c6c65720000057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650007057365616c310d636c6561725f73746f726167650002057365616c300b7365616c5f72657475726e000303656e76066d656d6f72790201021003830181010101000000010601040306030000000000030002000000000500000000000303030503060500050000000305060b0002040008050000000005030903050200000303000900000503000003030300080003050000080003020802010103020204030205020a0604020206070407060202030101060407040202020204040c030404040501700110100608017f01418080040b0711020463616c6c005e066465706c6f7900620919010041010b0f1d7978476b84016d810182016c65676883016e0aabef0181012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9f0201037f230041206b22022400200241086a2001100d41012103024020022d00084101710d000240024002400240024020022d0009220441037141016b0e03030201000b200441fc01714102762101410021030c040b200441034b0d0320022001100e20022802000d03200228020422014180808080044921030c030b200220043a0015200241013a0014200220013602102002410036021c200241106a2002411c6a4104100f450d010c020b200220043a0015200241013a001420022001360210200241003b011c200241106a2002411c6a4102100f0d0120022f011c220441ff014d0d0120044102762101410021030c010b200228021c220141808004492103200141027621010b2000200136020420002003360200200241206a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110112201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041011450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b6601027f230041106b2203240020002f01042104200041003a0004027f20044101710440200120044108763a00002000280200200341086a200120024101418c810410102003280208200328020c10110c010b20002802002001200210110b200341106a24000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011012200528020c21012000200528020836020020002001360204200541106a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206108601200120022003280208200328020c418cb404102d2003200220042006108601200020032903003702000b200341106a240020050b1500200020012002200341ccad04418080041087010b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034184ae04360210200341003602002003200136021c200320003602182003200341186a36020820032002101c000b4b01017f230041106b22052400200120034d0440200541086a4100200120021012200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000b0f0020002001200241ec9d041089010bb70101067f230041206b220324000240024020012802002202200128020422044904402004200220022004491b2106200341086a410472210503402001200241016a220436020020052002101720032d001822074102470d02200422022006470d000b0b200041023a00100c010b200020032f00193b001120002005290200370204200041136a2003411b6a2d00003a00002000410c6a200541086a280200360200200020073a0010200020023602000b200341206a24000bfc0301067f230041e0006b220224002002410036023820024280800137024c200241d4b40436024841f7e698f407200241c8006a2205101920012005101920022002290348370330200241106a200241306a2002280250101b2002280214210320022802102002280230210120022002280234220736024820032001200510002103200241086a20022802482001200741b0860410140240024002400240410c20032003410c4f1b0e0401000002000b200241d4006a4101360200200241dc006a4100360200200241c0870436025020024184ae0436025820024100360248200241c8006a41c88704101c000b200228020821012002200228020c36024420022001360240200241c8006a200241406b102320022d0054220141024704402002411e6a200241d7006a2d00003a000020022002290049370320200220022f00553b011c2002200241d0006a28000036002720022d004821040c020b200241003a0020200241d4006a4101360200200241dc006a410136020020024190820436025020024100360248200241013602342002200241306a3602582002200241206a360230200241c8006a41808304101c000b410221010b200020043a000020002002290320370001200020013a000c200020022f011c3b000d200041086a20022800273600002000410f6a2002411e6a2d00003a0000200241e0006a24000be00301067f230041f0006b220224002002413c6a200141186a290000370200200241346a200141106a2900003702002002412c6a200141086a290000370200200241dc8104360220200220012900003702242002410036025020024280800137025c200241d4b40436025841b1d9d9e607200241d8006a22051019200241206a4104722005101a20022002290358370348200241186a200241c8006a2002280260101b200228021c21032002280218200228024821012002200228024c220736025820032001200510002103200241106a20022802582001200741b08604101402402000027f024002400240410c20032003410c4f1b0e0402000001000b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c88704101c000b41000c010b20022802142101200220022802103602582002200136025c200241086a200241d8006a100e20022802080d0141012104200228020c0b36020420002004360200200241f0006a24000f0b200241003a0057200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241d7006a360248200241d8006a41808304101c000b2601017f230041106b220224002002200036020c20012002410c6a41041034200241106a24000b0a0020012000412010340b4501017f2002200128020422034b044041acae04412341a0b0041013000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000be10201017f230041206b22022400200241013a0018200220013602142002200036021020024190970436020c20024184ae04360208230041406a220124002001200241086a36020c2001410636022420012001410c6a360220410021004104210202400240024002400240034020002000200241d0ae046a2802006a22004b0d01200241086a22024114470d000b2001200041104f047f200020006a22024100200020024d1b0541000b104c20014100360218200120012903003703102001410136023c20014102360234200141d0ae04360230200141003602282001200141206a360238200141106a200141286a10630d0141d4b4052d000045044041d5b4052d00004101710d050b410c20012802142001280218100422002000410c4f1b4109470d020c030b41c08f04411c41f0aa041013000b419093044133200141286a4184900441c094041036000b41d4b40541013a00000b41d5b40541013a00000b000bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280200220341dfb10441062001280204220528020c22041101000d0c024020012d0018410471450440200341dc9704410120041101000d0e2003419cb40441052004110100450d010c0e0b200341da9704410220041101000d0d2002200536020420022003360200200241013a000f20022002410f6a3602082002419cb4044105107c0d0d200241d897044102107c0d0d0b200341b196044101200411010021000c0c0b200128020041d2b104410d200128020428020c11010021000c0b0b200128020041c4b104410e200128020428020c11010021000c0a0b200128020041b9b104410b200128020428020c11010021000c090b2001280200419fb104411a200128020428020c11010021000c080b20012802004191b104410e200128020428020c11010021000c070b20012802004181b1044110200128020428020c11010021000c060b200128020041f5b004410c200128020428020c11010021000c050b200128020041eab004410b200128020428020c11010021000c040b200128020041e3b0044107200128020428020c11010021000c030b200128020041d4b004410f200128020428020c11010021000c020b200128020041c3b0044111200128020428020c11010021000c010b200128020041b0b0044113200128020428020c11010021000b200241106a240020000b9f0401067f230041f0006b220224002002410036022820024280800137025c200241d4b40436025841bbc0f9ea07200241d8006a2205101920012005101920022002290358370320200241186a200241206a2002280260101b200228021c210320022802182002280220210120022002280224220736025820032001200510002103200241106a20022802582001200741b086041014024002400240410c20032003410c4f1b0e0400020201020b200228021421012002200228021036023020022001360234200241086a200241306a100c024020022802080d00200241386a20022802344104762203200228020c2201200120034b1b101f0240200104400340200241d8006a200241306a102020022802602203450d02200220022802643602542002200336025020022002290358370348200241386a200241c8006a1021200141016b22010d000b0b200228023c2204450d0120022802402101200228023821030c020b200241386a10220b200241003a0038200241e4006a4101360200200241ec006a4101360200200241908204360260200241003602582002410136024c2002200241c8006a3602682002200241386a360248200241d8006a41808304101c000b200020013602082000200436020420002003360200200241f0006a24000f0b200241e4006a4101360200200241ec006a4100360200200241c0870436026020024184ae0436026820024100360258200241d8006a41c88704101c000b7101037f230041106b220224000240024002402001450440410421030c010b200241086a20011041200228020c2203450d01200228020822044100480d012004200310392203450d020b200041003602082000200336020420002001360200200241106a24000f0b103c000b2004103d000b7401027f230041206b22022400200241086a2001100e02402002280208450440200228020c2103200241106a200110332002280214044020002003360200200020022903103702042000410c6a200241186a2802003602000c020b200041003602080c010b200041003602080b200241206a24000b6501027f200028020822022000280200460440200020021049200028020821020b200028020420024104746a22032001290200370200200341086a200141086a290200370200200241016a220145044041a08104411c41d095041013000b200020013602080b11002000280200200041046a28020010400b6c02027f017e230041106b2202240020022001104e02402002280204044020022902042104200228020021032001104d41ff017122014102470440200020013a000c20002004370204200020033602000c020b200041023a000c0c010b200041023a000c0b200241106a24000bfb0102047f017e230041e0006b22022400200241346a200041186a2900003702002002412c6a200041106a290000370200200241246a200041086a290000370200200241dc81043602182002200029000037021c20024100360248200242808001370254200241d4b40436025041b1d9d9e607200241d0006a22031019200241186a4104722003101a20022002290350370340200241106a200241406b22042002280258101b20022802142100200228021020022903402106200241003602582002200637035020012003101920022002290350370340200241086a20042002280258101b20002002280208200228020c10071a200241e0006a24000bac0102047f017e230041306b2202240020024100360218200242808001370224200241d4b40436022041f7e698f407200241206a2203101920002003101920022002290320370310200241086a200241106a22042002280228101b200228020c2100200228020820022903102106200241003602282002200637032020012003102620022002290320370310200220042002280228101b20002002280200200228020410071a200241306a24000b1f00200041046a280200200041086a2802002001104a200120002d000c10310b0c0041e481042000200110280ba80102037f017e230041306b2203240020034100360218200342808001370224200341d4b4043602202000200341206a2204104820012004101920032003290320370310200341086a200341106a22052003280228101b200328020c2100200328020820032903102106200341003602282003200637032020022004101a20032003290320370310200320052003280228101b20002003280200200328020410071a200341306a24000bae0102047f017e230041306b2203240020034100360218200342808001370224200341d4b40436022041bbc0f9ea07200341206a2204101920002004101920032003290320370310200341086a200341106a22052003280228101b200328020c21002003280208200329031021072003410036022820032007370320200120022004102a20032003290320370310200320052003280228101b20002003280200200328020410071a200341306a24000b430020012002102f20010440200020014104746a21010340200028020020021019200041086a2802002000410c6a2802002002104a200041106a22002001470d000b0b0bb20101017f230041d0006b22012400200141246a200041186a2900003702002001411c6a200041106a290000370200200141146a200041086a290000370200200141dc81043602082001200029000037020c20014100360238200142808001370244200141d4b40436024041b1d9d9e607200141406b22001019200141086a4104722000101a200120012903403703302001200141306a2001280248101b2001280200200128020410081a200141d0006a24000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1005200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a2002200041204180840410142003280208200328020c2001200241908404102d0b200341306a24000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4105360200200041f0a00436021020004100360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a2004101c000b7701047f230041206b22012400200141086a2000280200220320002802042000280208220241d88704101020014100360218200120012903083703104102200141106a102f2002200220012802186a22044b044041a08104411c41e887041013000b2000200336020020002004360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410310c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210340c010b200041ffffffff034d04402000410274410272200110190c010b2001410310312000200110190b200241106a24000b08002000410110310b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034180b0041060000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101145044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b7e01037f230041106b22022400200241086a2001100c024020022802084504400240200228020c220320012802044b0d0020022003104f20022802002104200120022802042201200310110d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241106a24000b7a01047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a2005200420002802001085012003280208200328020c2001200241f0af04102d20002004360208200341106a24000f0b4190ae04411c41d0af041013000b2004200641e0af041015000ba70101017f230041306b2201240020014180800136020041d4b4042001100320014180800136022c200141d4b4043602282001200141286a103220012d00000440200141003a000041c0860441c100200141d48404418487041036000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4102360200200541c4970436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101c000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200141141088010bbe0101027f200045044020010f0b02402000200020016a41016b410020016b7122014d0440024041ccb404280200220020016a22032000490d0041d0b4042802002003490440200141ffff036a22002001490d032000411076220240002200417f46200041ffff0371200047720d032000411074220020024110746a22032000490d034100210241d0b4042003360200200020016a22032000490d010b41ccb4042003360200200021020b20020f0b41b0ad04411c4194ad041013000b41000b890301077f230041106b220524002000027f0240027f02400240200204400240200141004e044020032802080d01200520012002106a2005280200210420052802040c050b200041086a41003602000c050b20032802042209450440200541086a20012002106a20052802082104200528020c0c040b200120026a41016b410020026b7122082001490d01200141ccb404280200220620086a22072006490d031a2003280200210a41d0b4042802002007490440200841ffff036a22032008490d032003411076220740002203417f46200341ffff0371200347720d032003411074220620074110746a22032006490d0341d0b40420033602002001200620086a22072006490d041a0b41ccb404200736020020012006450d031a2006200a2009100a210420010c030b20002001360204200041086a41003602000c030b41b0ad04411c4194ad041013000b20010b21072004044020002004360204200041086a200736020041000c020b20002001360204200041086a20023602000b41010b360200200541106a24000b1f00024020014181808080784704402001450d012000103d000b0f0b103c000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8910436021020004184ae0436021820004100360208200041086a41c09104101c000b5f01017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141f09204360218200141003602102001410536022c2001200141286a36022020012001410c6a360228200141106a41809304101c000b910101017f230041d0006b22022400200241086a41e481042001105a20022d00084102460440200220022d00093a002f2002413c6a4101360200200241c4006a4101360200200241908204360238200241003602302002410136024c2002200241c8006a36024020022002412f6a360248200241306a41808304101c000b2000200241086a4121100a1a200241d0006a24000b6401017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a101820002002290308370300200241306a24000b2000230041106b2201240020000440200141086a200010410b200141106a24000b0b002000200141101088010b0e002000280200200028020c10400b5201017e0240200241fcffffff0720016e4b0440410021010c010b2001ad2002ad7e22034220885004402003a72102410421010c010b41a08404412141c484041013000b20002001360204200020023602000b1b002000418180014f0440200041808001419487041015000b20000b0f0020002001200241cc9d041089010b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014190ab04360208200141003602002001410436021c200120003602182001200141186a3602102001418c8e04101c000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024190ab043602102002410036020820024103360224200220002d0000410274220041a4b4046a28020036022c2002200041b8b4046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a107b200241306a24000b0b002000280200200110190bf30101057f230041306b220224000240027f4100200141016a2201450d001a2000280200220320036a22042003490d01200241086a41042004200120012004491b2201200141044d1b22041041200228020c210120022802082105024020030440200041046a280200210620022003104120022006360220200220022903003702240c010b200241003602280b200241106a20052001200241206a103a20022802104504402002280214210120002004360200200041046a20013602004181808080780c010b20022802142101200241186a2802000b210320012003103b200241306a24000f0b41a084044121419491041013000b100020012002102f20022000200110340bed0101087f230041106b2206240020002002101f20002802002205200028020822034f044002402002452003200546720d00200120024104746a2108200028020420034104746a2104200320056b41016a21030340200141086a280200210720012802002109200641086a2001410c6a2802002205104c2006280208210a200628020c20072005100a21072004410c6a2005360200200441086a2007360200200441046a200a360200200420093602002003450d01200341016a2103200441106a2104200141106a22012008470d000b0b20002002360208200641106a24000f0b41808004412141b485041013000b3501017f230041106b22022400200241086a2001104f200228020c21012000200228020836020020002001360204200241106a24000b4201027f230041106b22012400200141086a2000100d20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0bc60501097f230041106b2205240020052001103302402005280204220404402005280200210a024020052802082203450d00200341076b22014100200120034d1b2108200441036a417c7120046b2109034002400240024002400240024002400240200220046a2d00002206411874411875220741004e0440200920026b4103712009417f46720d0220022008490d010c060b02400240200641a4a6046a2d000041026b0e03040100060b200241016a220120034f0d05200120046a2c000021010240024002400240200641f0016b0e050100000002000b2007410f6a41ff017141024b200141004e720d0820014140490d020c080b200141f0006a41ff01714130490d010c070b2001418f7f4a0d060b200241026a220120034f0d05200120046a2c000041bf7f4a0d05200241036a220120034f0d05200120046a2c000041bf7f4c0d040c050b200241016a220120034f0d04200120046a2c00002101024002400240200641e001470440200641ed01460d012007411f6a41ff0171410c490d022007417e71416e47200141004e720d0820014140490d030c080b200141607141a07f460d020c070b200141a07f480d010c060b200141bf7f4a0d050b200241026a220120034f0d04200120046a2c000041bf7f4c0d030c040b0340200220046a2201280200200141046a28020072418081828478710d052002200241086a22014d04402008200122024d0d070c010b0b41f09504411c4194a6041013000b200241016a21020c050b200241016a220120034f0d01200120046a2c000041bf7f4a0d010b200141016a21020c030b200041003602040c060b200221010b200120034f0d0220012003200120034b1b21020340200120046a2c00004100480440200121020c020b2002200141016a2201470d000b0c020b20022003490d000b0b20002003360208200020043602042000200a3602000c010b200041003602040b200541106a24000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f76106a200228020822030d012001103d000b103c000b2000200336020420002001360200200241106a24000b851102047f017e230041b0016b22012400200141286a20004128100a1a024002400240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014280800137028401200141d4b4043602800120014180016a2202102e200141a8016a20014188016a28020036020020012001290380013703a001200141e0006a2200200141a0016a220441e088041051200141f0006a220320001052200129037021052001410036028801200120053703800141ec880441202002104a200141286a4104722002101a2001200129038001370370200141106a2003200128028801101b200220012802102001280214102c200141086a2001280260220320012802642001280268220041d887041010200141003602a801200120012903083703a00120022004101a2000200020012802a8016a22004b0d09200141d8006a2000360200200120033602602001200129036037035020014180016a200141d0006a10530c080b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341a4890410542001200141286a4104723602a801200141233602a401200141b089043602a001200141f0006a22022000200310552000200210530c070b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341ec890410562001200141286a4104723602a801200141253602a401200141f889043602a001200141f0006a22022000200310552000200210530c060b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341b88a0410562001200141286a4104723602a801200141253602a401200141c48a043602a001200141f0006a22022000200310552000200210530c050b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341848b0410512001200141286a4104723602a801200141263602a401200141908b043602a001200141f0006a22022000200310552000200210530c040b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341cc8b0410542001200141286a4104723602a801200141223602a401200141d88b043602a001200141f0006a22022000200310552000200210530c030b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341948c0410562001200141286a4104723602a801200141243602a401200141a08c043602a001200141f0006a22022000200310552000200210530c020b20014280800137028401200141d4b4043602800120014180016a2200102e200141a8016a20014188016a28020036020020012001290380013703a0012000200141a0016a220341dc8c0410562001200141286a4104723602a801200141243602a401200141e88c043602a001200141f0006a22022000200310552000200210530c010b20014280800137028401200141d4b4043602800120014180016a2202102e200141e8006a220020014188016a2802003602002001200129038001370360200141f0006a2203200141e0006a105220012903702105200141003602880120012005370380014184ae0441002002104a2002418c8d04411c10342001200129038001370370200141206a2003200128028801101b200220012802202001280224102c200141186a2001280260220320012802642000280200220041d887041010200141003602a801200120012903183703a0012002200141a0016a101a2000200020012802a8016a22004b0d02200141d8006a200036020020012003360260200120012903603703502001200141286a4104723602a801200141293602a401200141a88d043602a001200141f0006a2200200141d0006a200141a0016a105520014180016a200010530b200141a8016a20014188016a280200360200200120012903800122053703a00120014190016a2802002100200128028c01200141003602880120012005370380010240024002400240024002400240024002400240200128022841016b0e080102030405060708000b20014180016a220241001031200141286a4104722002101a200141cc006a280200200210190c080b20014180016a220241011031200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104a0c070b20014180016a220241021031200128022c20021019200141306a28020020021019200141386a2802002001413c6a2802002002104a0c060b20014180016a220241031031200128022c20021019200141306a280200200210190c050b20014180016a220241041031200128022c200210190c040b20014180016a220241051031200128022c20021019200141346a280200200141386a2802002002104a20022001413c6a2d000010310c030b20014180016a220241061031200128022c20021019200141346a280200200141386a2802002002104a20022001413c6a2d000010310c020b20014180016a220241071031200128022c200210190c010b20014180016a220241081031200128022c20021019200141306a2002101a0b20012001290380013703a0012001200141a0016a200128028801101b200020012802002001280204100620012802281a200141b0016a24000f0b41a08104411c41e887041013000b41a08104411c41e887041013000b0d002000200120024119108a010b5301037f230041106b2202240020012802082203200128020422044b0440200320044190b0041045000b200241086a2003200420012802001085012000200229030837020020004100360208200241106a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101b20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b0d002000200120024116108a010bf90102037f017e230041d0006b22032400200341106a22052001105220032903102106200341003602282003200637032020022802002002280204200341206a2204104a20022802082802002004101920032003290320370310200341086a20052003280228101b20042003280208200328020c102c20032001280200220520012802042001280208220241d88704101020034100360248200320032903003703402004200341406b101a2002200220032802486a22044b044041a08104411c41e887041013000b20012005360200200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b0d002000200120024118108a010b4c01017f230041106b22022400200242808001370204200241d4b4043602002002410010312002200141ff0171410847047f20024101103120010541000b1031200020022802081044105d000b3501017f230041106b22002400200042808001370204200041d4b40436020020004101103120001030410120002802081044105d000b7301027f230041106b22022400200242808001370204200241d4b404360200024020012d00002203410247044020024100103120034504402002410010312001280204200210190c020b200241011031200220012d000110310c010b200241011031200210300b200020022802081044105d000beb0201047f230041d0006b2203240020034100360218200342808001370224200341d4b4043602202001200341206a2204104820022004101920032003290320370310200341086a200341106a2003280228101b200328020c210220032802082003280210210120032003280214220636022020022001200410002102200320032802202001200641b0860410140240024002400240410c20022002410c4f1b0e0402010100010b200041003a00000c020b2003412c6a4101360200200341346a4100360200200341c0870436022820034184ae0436023020034100360220200341206a41c88704101c000b200328020021012003200328020436024c20032001360248200341206a200341c8006a103220032d00200440200041023b00000c010b20002003290021370001200041196a200341396a290000370000200041116a200341316a290000370000200041096a200341296a290000370000200041013a00000b200341d0006a24000bb40102057f017e230041306b2201240020014100360218200142808001370224200141d4b4043602204100200141206a2202101920012001290320370310200141086a200141106a22032001280228101b200128020c2104200128020820012903102106200141003602282001200637032020002802202002101920002002101a20002802242002101920012001290320370310200120032001280228101b20042001280200200128020410071a200141306a24000b6601017f230041306b2202240020024100360218200242808001370224200241d4b4043602202000200241206a2200104820012000101920022002290320370310200241086a200241106a2002280228101b2002280208200228020c10081a200241306a24000b0d00200041d4b40420011009000b854702127f037e230041b0036b22002400024002400240024002400240024002400240024002400240024002400240027f0240103741ff017141054604402000418080013602880341d4b40420004188036a22011002200041d0016a20002802880341d4b4044180800141b086041014200020002903d0013703d8022000410036028803200041d8026a2001410410110d0e200028028803220741187621042007411076210120074108762106027f02400240024002400240024002400240200741ff0171220741106b0e050317171701000b0240024002400240024002400240024002400240024020074197016b0e03092101000b0240200741cf016b0e050a2121210c000b20074108460d072007413d460d02200741d200460d03200741f100460d012007418901460d05200741bd01460d04200741cb01470440200741dc01460d07200741fb0147200641ff01714189014772200141ff0171413647200441e4004772720d2141060c120b200641ff017141fe0147200141ff017141fb014772200441ec0147720d20200041f8006a200041d8026a100e20002802780d20200028027c2202410876210341000c110b200641ff017141f20047200141ff0171410c47722004411e47720d1f20004180016a200041d8026a100e2000280280010d1f2000280284012202410876210341010c100b200641ff01712202413c460d0e200241cc0147200141ff017141f90047722004418d0147720d1e20004188036a200041d8026a10202000280290032208450d1e2000280294032209410876210a20002f00890320002d008b03411074722103200028028c03210420002d008803210241070c0f0b200641ff017141ff0147200141ff017141c60147722004411c47720d1d20004188016a200041d8026a100e2000280288010d1d200028028c012202410876210341030c0e0b200641ff017141d50047200141ff017141054772200441e40147720d1c20004198016a200041d8026a100e2000280298010d1c200028029c01210220004190016a200041d8026a100e2000280290010d1c20002802940121042002410876210341040c0d0b200641ff017141dd0047200141ff017141df014772200441cd0147720d1b41050c0c0b200641ff0171412f47200141ff017141f5004772200441e40147720d1a20004188036a200041d8026a10202000280290032208450d1a2000280294032209410876210a20002f00890320002d008b03411074722103200028028c03210420002d008803210241080c0b0b200641ff017141a70147200141ff017141a60147722004410f47720d19200041a0016a200041d8026a100e20002802a0010d1920002802a4012202410876210341090c0a0b200641ff0171410247200141ff017141e7004772200441c00047720d18410a0c090b200641ff017141a30147200141ff017141ee0147722004410947720d1720004188036a200041d8026a102320002d00940322094102460d1720002f00890320002d008b0341107472210320002f00950320004197036a2d000041107472210a2000280290032108200028028c03210420002d0088032102410b0c080b200641ff017141be0147200141ff0171418b014772200441cc0147720d16200041b8016a200041d8026a100e20002802b8010d1620002802bc012102200041b0016a200041d8026a100d20002d00b0014101710d1620002d00b1010e020504160b200641ff017141b10147200141ff017141fd004772200441be0147720d15200041c0016a200041d8026a100e20002802c0010d1520002802c40122024108762103410d0c060b200641ff017141b90147200141ff0171413447720d1420044103460d010c140b200641ff017141fe0047200141ff017141334772200441ea0147720d13200041c8016a200041d8026a100e20002802c8010d1320002802cc01210220004188036a200041d8026a103220002d0088030d13200041f8016a2000419e036a290100370300200041ff016a200041a5036a280000360000200020004196036a2901003703f0012002410876210320004191036a2800002209410876210a20004195036a2d00002105200028008d0321082000280089032104410f0c040b20004188036a200041d8026a103220002d0088030d12200041f8016a200041a5036a28000036020020002000419d036a2900003703f001200028028c032202410876210320004198036a2802002209410876210a2000419c036a2d0000210520004194036a280200210820004190036a280200210420002f018a03210b20002d008903210c410e0c030b20004188036a200041d8026a104e200028028c032208450d11200028029003210920002802880321040b200041a8016a200041d8026a100d20002d00a8014101710d10410221050240024020002d00a9010e020100120b200041d8026a104d41ff017122014102460d11200141017121050b2009410876210a20024108762103410c0c010b200141ff017141a201472004413247720d0f20004188036a200041d8026a103220002d0088030d0f200041f8016a200041a5036a28000036020020002000419d036a2900003703f001200028028c032202410876210320004198036a2802002209410876210a2000419c036a2d0000210520004194036a280200210820004190036a280200210420002f018a03210b20002d008903210c41020b210f200041e7016a200041ff016a280000360000200041e0016a200041f8016a290300370300200020002903f0013703d801200041003602c00220004280800137028c03200041d4b40436028803410020004188036a2206101920002000290388033703b802200041f0006a200041b8026a200028029003101b20002802742107200028027020002802b8022101200020002802bc02220e3602880320072001200610002106200041e8006a2000280288032001200e41b0860410140240024002400240410c20062006410c4f1b0e0400030301030b200028026c210120002000280268360298022000200136029c02200041e0006a20004198026a100e024020002802600d002000280264210120004188036a20004198026a103220002d0088030d00200041e0026a220d20004192036a290100370300200041e8026a220e2000419a036a290100370300200041ef026a2210200041a1036a2900003700002000200029018a033703d80220002d0089032111200041d8006a20004198026a100e2000280258450d020b20004194036a41013602002000419c036a4100360200200041c48e04360290030c120b20004194036a41013602002000419c036a4100360200200041e48e04360290030c110b200941ff0171200a410874722107200241ff01712003410874722106200028025c210220004188026a201029000037000020004181026a200e290300370000200041f9016a200d290300370000200020002903d8023700f1012000200136029002200020113a00f0012000200236029402024002400240024002400240024002400240200f41016b0e0f010203040d0e050607111615141312000b200041d8026a2006101e20004194036a200041e0026a280200360200200020002903d80237028c032000410036028803230041106b22012400200142808001370204200141d4b404360200024020004188036a2202280200450440200141001031200241086a28020022054504402001410010310c020b20014101103120052002410c6a2802002001102a0c010b200141011031200110300b0c1a0b200041d8026a22022006103e20004188036a220141017220024121100a1a200041003a008803230041106b22022400200242808001370204200241d4b404360200024020012d000045044020024100103120012d00014504402002410010310c020b200241011031200141026a2002101a0c010b200241011031200210300b410020022802081044105d000b200041a4036a200041e0016a280200360200200020053a009b03200020073600970320002008360093032000200436008f032000200636008b032000200b3b0089032000200c3a008803200020002903d80137029c03230041306b22012400200141286a20004188036a220241186a290000370300200141206a200241106a290000370300200141186a200241086a29000037030020012002290000370310200141086a200141106a103f200041086a2001290308370300200141306a240020002802082102200028020c2105230041106b22012400200142808001370204200141d4b404360200200141001031024020024504402001410010310c010b2001410110312005200110190b0c180b200041d8026a2006101720004190036a200041e0026a290300370300200020002903d80237038803230041106b22012400200142808001370204200141d4b404360200024020004188036a22022d000c22054103470440200141001031200541024604402001410010310c020b2001410110312002200110260c010b200141011031200110300b0c170b20004188036a2006101e200028028c032201450d062000280290032102200020002802880336028803200020013602940320002001200241047422056a220636029003027f0240027f02402002044020004188036a410472210303402000200128020822023602d8022002450d02200420012902002212a7460d04200141106a2101200541106b22050d000b0b2000200636028c03200041d8026a210341000c010b200141106a0b210120032001360200410021024100210441030c010b2000200141106a36028c032012422888a72104200128020c21012012422088a70b210520004188036a10422002450c070b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220329030037030020004190036a2209200041e0026a220a290300370300200020002903d80237038803200041206a20004188036a1018410021010240027f024002402000280220450d0020002802242105200041a0036a200041f0026a290300370300200220032903003703002009200a290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022202450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c0023602a0022000200236029c02200020013a009802200041186a2007104c20002802182109200028021c20082007100a210a4104210120074180014d0440200041b8026a200028029c0220002802a002104b200020002802bc02220136029403200020002802b802360288032000200120002802c002220341047422026a220b3602900302402003044020004188036a4104722103034020002001280208220c3602b802200c450d0520012802002006460d02200141106a2101200241106b22020d000b0b2000200b36028c03200041b8026a210341000c040b2000200141106a36028c0320004188036a1042410221010b20004198026a10220b41012102200141ff01714108460d020c170b200141106a0b21012003200136020020004188036a2201104220004194036a2202200736020020004190036a2203200a3602002000200936028c03200020063602880320004198026a2209200110212005200028029c0220002802a00210292000419c036a200736020020004198036a200836020020022004360200200320063602002000200536028c03200041013602880320011050200910220b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c140b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220329030037030020004190036a2209200041e0026a220a290300370300200020002903d80237038803200041306a20004188036a10184100210102402000280230450d0020002802342105200041a0036a200041f0026a290300370300200220032903003703002009200a290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022209450d00200020002d00bb023a009b02200020002f00b9023b009902200020002802c002220a3602a0022000200936029c02200020013a009802200041286a2007104c2000280228210f200028022c20082007100a210d024020074180014d0440200041b8026a200028029c02220e20002802a0022210104b200020002802bc02220c36029403200020002802b802360288032000200c20002802c002220141047422116a220b36029003027f024002402001450d00410021014100210303402001200c6a220241086a280200044020022802002006460d03200341016a21032011200141106a2201470d010c020b0b200241106a210b0b2000200b36028c034100210241030c010b2000200241106a36028c032003200a4f0d05200120096a220120063602002001410c6a2007360200200141086a200d360200200141046a200f3602004101210241080b210120004188036a10422002450d012005200e201010292000419c036a200736020020004198036a200836020020004194036a200436020020004190036a20063602002000200536028c03200041023602880320004188036a105020004198026a10220c130b410421010b20004198026a10220b41012102200141ff01714108460d100c130b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2201200041e8026a220229030037030020004190036a2205200041e0026a2204290300370300200020002903d80237038803200041386a20004188036a10182000280238047f200028023c2108200041a0036a200041f0026a2903003703002001200229030037030020052004290300370300200020002903d80237038803200041b8026a20004188036a105f20002d00b802210120002802bc022205450d08200020002d00bb023a009b02200020002f00b9023b0099022000200536029c02200020013a009802024020002802c00222040440410021022005210103402006200128020046044041012103200241016a220104402001200447044003400240024002402006200520014104746a2202280200460440200141016a2201450d01200341016a22030d0341a08104411c41f484041013000b20012003490d012005200120036b4104746a22072002290200370200200741086a200241086a290200370200200141016a22010d0241a08104411c419485041013000b41a08104411c41e484041013000b418080044121418485041013000b20012004470d000b0b024020034100200320044b1b450440200320044d0d0141808004412141cc81041013000b41808004412141bc81041013000b2000200420036b22013602a0022003450d04200820052001102920004190036a20063602002000200836028c03200041033602880320004188036a105020004198026a10220c0e0b41a08104411c41e484041013000b200141106a21012004200241016a2202470d000b0b200020043602a0020b20004198026a102241030541000b2101410121020c120b2003200a41b488041060000b20004194036a41013602002000419c036a4100360200200041c087043602900320004184ae0436029803200041003602880320004188036a41c88704101c000b200041043a00880320004188036a1046000b41002104410121054100210241010b20004194036a200136020020004190036a200236020020004100360288032000200541ff017120044108747236028c03230041106b22012400200142808001370204200141d4b404360200024020004188036a2202280200450440200141001031200241086a2802002205044020014100103120052002410c6a2802002001104a0c020b200141011031200120022d000410310c010b200141011031200110300b20012802081044105d000b20004188036a2108230041f0006b22032400200041f0016a22012802242102200320013602202003200236021c20034100360218200341386a200341186a101602400240024002400240024020032d004841024604402008410036020820084280808080c0003702000c010b200341106a4104103820032802142202450d01200328021022014100480d012001200210392206450d0220062003290338370200200641106a200341c8006a2209280200360200200641086a200341406b220a290300370200200341306a200341206a28020036020020032003290318370328200341386a200341286a1016024020032d0048410246044041042102410121050c010b41042101410121040340200441016a22054521070240200120044704402006200441146c6a22022003290338370200200241106a2009280200360200200241086a200a29030037020020070d08200121020c010b027f20070440417f21022005210441000c010b200120016a22022001490d07200341086a410420022005200220054b1b2202200241044d1b22021038200328020c210b200328020821042003200110382003200636026020032003290300370264200341d0006a2004200b200341e0006a103a2003280250450440200328025421064181808080780c010b200328025421042001210220032802580b210b2004200b103b2006200141146c6a22012003290338370200200141106a2009280200360200200141086a200a29030037020020070d070b200341386a200341286a1016200221012005210420032d00484102470d000b0b2008200536020820082006360204200820023602000b200341f0006a24000c040b103c000b2001103d000b41a084044121419491041013000b41a08104411c41a485041013000b200028028c0321022000280290032105230041106b22012400200142808001370204200141d4b40436020002402002044020014100103120052001102f2005450d012002200541146c6a21050340200228020020011019200241046a20011026200241146a22022005470d000b0c010b200141011031200110300b0c0d0b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a220529030037030020004190036a2203200041e0026a2204290300370300200020002903d80237038803200041106a20004188036a1018200020002802102206410146047e42810e05200041003602c00220004280808080c0003703b8022001410441001029200041a0036a200041f0026a22082903003703002002200529030037030020032004290300370300200020002903d8023703880320004188036a2202200110242001200041d8026a10272000200141016a2203417f20031b36029002200041a4036a20082903003702002000419c036a200529030037020020004194036a2004290300370200200041ac036a2001360200200020002903d80237028c03200041003602880320021050200041b8026a10222002200041f0016a4128100a1a2002105b2001ad42208642800e840b37038803200641014620004188036a1059000b41012102200141ff01714108470d0a0b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c090b200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2205200041e8026a22042903003703004108210120004190036a2203200041e0026a2206290300370300200020002903d80237038803200041406b20004188036a1018024020002802402208450440410021010c010b20002802442102200041a0036a200041f0026a2903003703002005200429030037030020032006290300370300200020002903d8023703880320004188036a2205102b41e481042002105c41e881042002105c20004104360288032000200236028c03200510502005200041f0016a4128100a1a2005105b0b20084520011057000b200041ad026a200041e0016a290300370000200041b4026a200041e7016a280000360000200020053a00a402200020073602a0022000200836029c022000200436029802200020002903d8013700a502200041b8026a103520004188036a41e081042006105a20002d0088034102470440200041d8026a20004188036a4121100a1a200041a1036a200041d0026a29030037000020004199036a200041c8026a29030037000020004191036a200041c0026a290300370000200020002903b8023700890341012102200041013a00880320002d00d8020440200041d8026a41017220004188036a410172106141017321020b20004188036a2006103e027f027f20002d0088030440200041f0026a200041a1036a290000370300200041e8026a20004199036a290000370300200041e0026a20004191036a29000037030020002000290089033703d80241002002200041d8026a200041b8026a1061410173710d011a200041a0036a200041b0026a29030037030020004198036a200041a8026a29030037030020004190036a200041a0026a290300370300200020002903980237038803200041d0006a20004188036a103f410720002802504101460d011a200041a0036a2205200041f0026a29030037030020004198036a2204200041e8026a2903003703004108210120004190036a2203200041e0026a290300370300200020002903d8023703880320004188036a2202102b2005200041b0026a2903003703002004200041a8026a2903003703002003200041a0026a290300370300200020002903980237038803200220061024200620004198026a10272002200041f0016a4128100a1a2002105b41000c020b41000b210141010b20011057000b200020002d0089033a00ff02200041e4026a4101360200200041ec026a41013602002000419082043602e002200041003602d8022000410136028403200020004180036a3602e8022000200041ff026a36028003200041d8026a41808304101c000b41082101200041d4026a200041e0016a280200360200200020053a00cb02200020073600c702200020083600c302200020043600bf02200020063600bb022000200b3b00b9022000200c3a00b802200020002903d8013702cc02200041d8026a1035200041a0036a200041f0026a29030037030020004198036a2202200041e8026a29030037030020004190036a2205200041e0026a290300370300200020002903d80237038803200041c8006a20004188036a1018024020002802482204450440410021010c010b41e08104200028024c2203200041b8026a1028200520002903b8023703002002200041c0026a290300370300200041a0036a200041c8026a290300370300200041a8036a200041d0026a2903003703002000200336028c03200041083602880320004188036a220210502002200041f0016a4128100a1a2002105b0b20044520011057000b200041d8026a2202103541002101027f02402002200041f0016a10610440200041b8026a2006101720002d00c4024102470d01410321010b41010c010b41ec81042006105c20004107360288032000200636028c0320004188036a220110502001200041f0016a4128100a1a2001105b4108210141000b20011057000b200041d8026a22011035027f027f41002001200041f0016a1061450d001a20004188036a2006101720002d00940322024102470440200041c0026a20004190036a280000360000200041c7026a20004197036a2d00003a000020002000290089033700b902200020002f0095033b00c502200020023a00c402200020002d0088033a00b802024020080440200741c0004b0d01200020073602c002200020083602bc02200020043602b8020b20054102470440200020053a00c402200521020b2006200041b8026a10254108210120004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20023a00002000200636028c03200041063602880320004188036a220210502002200041f0016a4128100a1a2002105b41000c030b41060c010b41030b210141010b20011057000b200020073602c402200020083602c002200020043602bc02200020063602b802200041d8026a22011035027f02402001200041f0016a1061044042800c2112200841c100490d010b4201211341010c010b2002200041b8026a10252000200241016a2201417f20011b3602940220004190036a20002903b80237030020004198036a200041c0026a2802003602002000419c036a20093a00002000200236028c03200041053602880320004188036a220110502001200041f0016a4128100a1a2002ad42208621142001105b4200211241000b2000201242800e832013842014843703880320004188036a1059000b20004188036a2201200041f0016a4128100a1a2001105b41082101410021020c020b1058000b20004184ae0436029803200041003602880320004188036a418c8e04101c000b200220011057000b410020012802081044105d000bb60101017f230041306b22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a29000037030020022001290000370310200241086a200241106a1018024020022802080440200241106a200228020c101e2002280214220104402000200228021836020820002001360204200020022802103602000c020b20004100360204200041013a00000c010b20004100360204200041013a00000b200241306a24000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4105360200200341e4960436021020034100360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a2002101c000b0b00200020014120100b450bd209020f7f017e23004190016b22002400024002400240024002400240103741ff01712201410546044020004180800136025841d4b404200041d8006a22011002200041186a200028025841d4b4044180800141b0860410142000200029031837032020004100360258200041206a2001410410110d032000280258220141187621042001411076210220014108762103200141ff0171220141054704402001419b0147200341ff017141ae014772200241ff0171419d0147200441de004772720d04200041306a22011035200042003703500c070b200341ff017141e50047200241ff017141c3004772200441ac0147720d03200041106a200041206a100c20002802100d0320004180016a200028022441047622012000280214220320012003491b101f2003450d01200041e5006a21040340200041d8006a200041206a10230240024020002d006422054102470440200041386a2206200041e0006a2802003602002000412e6a2207200441026a2d00003a000020002000290358370330200020042f00003b012c2000280288012202200028028001460d010c020b20004180016a10220c060b20004180016a2002104920002802880121020b200028028401220820024104746a22012000290330370200200120053a000c200120002f012c3b000d200141086a20062802003602002001410f6a20072d00003a0000200241016a220504402000200536028801200341016b22030d010c040b0b41a08104411c41d095041013000b200020013a0058200041d8006a1046000b200028028801210520002802840121080b2000412a6a220120002d0083013a0000200020002f0081013b01282008450d0020002d00800121042000412e6a20012d000022013a0000200020002f012822023b012c200020043a008001200020023b008101200020013a00830120002005360288012000200836028401200041d8006a2005101f2000280258220620002802602201490d01200028025c210402402005452001200646720d00200420014104746a210a200120066b41016a2103200541047441106b210b41002102200041326a210c0340200220086a220741046a2802002101200041086a200741086a2802002209104c2000280208210d200028020c20012009100a210e2002200a6a2201410c6a2007410c6a2d00003a0000200141086a2009360200200141046a200e3602002001200d3602002001410d6a20002f00303b00002001410f6a200c2d00003a00002003450d01200341016a21032002200b47200241106a21020d000b0b02402005450d00200541047421034100210220042101034020012d000c4102460d01200041386a200141086a290200220f37030020002001290200370330200fa741c1004f0d04200141106a21012002200041306a1025200241016a2102200341106b22030d000b0b200620041040200041306a22011035200020053602542000410036025020004180016a10220c030b1058000b41808004412141b485041013000b200041e4006a4101360200200041ec006a4100360200200041888f0436026020004184ae0436026820004100360258200041d8006a41908f04101c000b200041d8006a220420014128100a1a2004105b230041106b22012400200142808001370204200141d4b404360200200141001031200141001031410020012802081044105d000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a08f04200241086a1064200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a107a20032003290310370320200341086a2005200141046a107a20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002106641000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210692004280208200428020c103b200028020821030b200028020420036a20012002100a1a2003200220036a22014b044041c08f04411c41e095041013000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10660c020b230041106b22042400200441086a20002003410110692004280208200428020c103b200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08f04411c41d095041013000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1063200241206a24000bdd0101027f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22052002490d0141082005200320032005491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200420032005200441106a103a20042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08f044121419491041013000bd00101037f02402001450440200221030c010b02402001200120026a41016b410020026b7122054d044041ccb404280200220220056a22042002490d0241d0b4042802002004490440200541ffff036a22022005490d022002411076220340002202417f46200241ffff0371200247720d022002411074220220034110746a22042002490d024100210341d0b4042004360200200220056a22042002490d030b41ccb4042004360200200221030c020b41b0ad04411c4194ad041013000b410021030b20002001360204200020033602000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441db98046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441db98046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441db98046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441db98046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b210241002104200541047104404184ae04210420024184ae044184ae04107120026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410740d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410740d02200341106a2001200920026b4101107520032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10760d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410740d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011075200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410740d00200220082006200128020c1101000d00200520022001107621000b200341406b240020000f0b41f09504411c41a49b041013000b4190960441214180ab041013000b0300010b0e0020002802001a03400c000b000b0d0042f2e7eb9187bab2c1d1000b4a01017f230041106b22052400200220034904402003200220041045000b200541086a2003200220011070200528020c21012000200528020836020020002001360204200541106a24000b1500200020012002200341e8b204419096041087010ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010722206200020016a22082004417c716a200441037110726a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41809f041073200328020c21052003280208210820032003280200200328020422002000417c714190a0041073200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41f09504411c4198a2041013000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441f09504411c41c8a2041013000b41f09504411c41a8a2041013000b41f09504411c41b8a2041013000b41f09504411c4188a2041013000b20012002107221020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41f09504411c41f0aa041013000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41acae04412320041013000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41f09504411c41b49b041013000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b4b01017f230041106b22052400200120034d0440200541086a4100200120021070200528020c21012000200528020836020020002001360204200541106a24000f0b2001200320041015000bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41f09504411c41d8a3041013000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003107122024b0440200941086a2001200020026b4100107541012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001107621000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1064200341206a24000bdc08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274107d0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a200220016b22022000200020024b1b22022001200041c89c041077200341c8006a200420032802502003280254107e20032802484101470d02200328024c21010c050b200341306a200420012000107e2003280234210120032802300c050b41909604412141a8a9041013000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241f89c04106f200341386a200420032802402003280244107e410020032802384101470d011a2002200328023c6a220120024f0d0041f09504411c41889d041013000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002107d20032802282202450d05200328022c2100200341206a20032802782009410441d8a90410772002200020032802202003280224107f450d05200341186a200328026020032802702200200c10800120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41f09504411c41d89c041013000b41f09504411c41b8a9041013000b41f09504411c41c8a9041013000b41f09504411c41e89c041013000b200341106a2003280268200328026c20032802702003280274107d20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a200420012003280268108001200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741d497044104200628020c110100450d010c020b41909604412141e8a3041013000b2003410a36028c0120082002047f200320002002200241016b41a0a004106f2003418c016a410120032802002003280204107f0541000b3a0000200720002002200628020c110100450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011070200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100b0541010b450b1500200020012002200341fca404419096041087010b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1064200241206a24000b0b002000280200200110780b18002001280200419cb4044105200128020428020c1101000b990301037f230041406a22022400200028020021034101210002402001280200220441a09704410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a107b450d010c020b20032802002200200328020428020c110a0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b0970436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a107b0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4105360200200241346a4105360200200241f896043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a107b21000b200241406b240020000b1500200020012002200341ccad0441e0ad041087010b1500200020012002200341e8b2044180b3041087010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041013000b3701017f230041106b22032400200341086a200220011043200328020c21012000200328020836020020002001360204200341106a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41053602002004200336021020044100360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a2002101c000bf80102037f017e230041d0006b22042400200441106a22062001105220042903102107200441003602282004200737032020022802002002280204200441206a2205104a200520022802082003103420042004290320370310200441086a20062004280228101b20052004280208200428020c102c20042001280200220620012802042001280208220241d88704101020044100360248200420042903003703402005200441406b101a2002200220042802486a22054b044041a08104411c41e887041013000b20012006360200200141086a22022005360200200041086a200228020036020020002001290200370200200441d0006a24000b0b81340700418080040bb50f617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6d706163742e727300210001006a000000420000002600000000000000617474656d707420746f206164642077697468206f766572666c6f77500a01007f0000005206000035000000500a01007f0000005906000024000000b16cd67c6dbd733300e945ca3b605e7d7733867e4661696c656420746f206765742076616c756520696e204d617070696e673a20f0000100200000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e727318010100680000009c000000250000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273000000900101006d0000009d00000011000000900101006d0000009d00000030000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000001016010083000000c80100001e0000000a000000010000000100000001000000500a01007f0000006c06000015000000500a01007f0000006d06000015000000500a01007f0000007b0600003e000000500a01007f0000007f06000011000000500a01007f0000002b0b00001e000000500a01007f000000c3080000110000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300c40201006b000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000900101006d0000006b0100000e000000900101006d0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72a40301001c000000900101006d000000ed00000017000000601701006e000000c100000037000000601701006e000000c4000000090000002f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f74797065732e72730000f80301003a0000002e0000000d0000004964656e746974793a3a4964656e74697479437265617465640000000417010000000000440401004964656e746974793a3a4964656e74697479437265617465643a3a6f776e65724964656e746974793a3a416464726573734164646564000004170100000000008c0401004964656e746974793a3a4164647265737341646465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737355706461746564000417010000000000d30401004964656e746974793a3a41646472657373557064617465643a3a6964656e746974795f6e6f4964656e746974793a3a4164647265737352656d6f76656400000004170100000000001d0501004964656e746974793a3a4164647265737352656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4964656e7469747952656d6f76656400000417010000000000690501004964656e746974793a3a4964656e7469747952656d6f7665643a3a6964656e746974795f6e6f4964656e746974793a3a4e6574776f726b41646465640417010000000000b60501004964656e746974793a3a4e6574776f726b41646465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b5570646174656400000417010000000000fa0501004964656e746974793a3a4e6574776f726b557064617465643a3a6e6574776f726b5f69644964656e746974793a3a4e6574776f726b52656d6f7665640417010000000000440601004964656e746974793a3a4e6574776f726b52656d6f7665643a3a6e6574776f726b5f69644964656e746974793a3a5265636f766572794163636f756e745365744964656e746974793a3a5265636f766572794163636f756e745365743a3a6964656e746974795f6e6f2f55736572732f73657267656a73616b61632f646f74666c6f772d696e6b2f636f6e7472616374732f6964656e746974792f6c69622e7273000000d1060100380000002b00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001c0701002700000073746f7261676520656e7472792077617320656d707479004c070100170000004e6574776f726b207270632075726c20697320746f6f206c6f6e67006c0701001b000000d106010038000000c7000000110000000a00000004000000040000000b0000000c0000000d0041c08f040be417617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000a00000000000000010000000e0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300140801007f0000008a0100001c0000006361706163697479206f766572666c6f77000000a408010011000000140801007f00000006020000050000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564004d09010015000000620901000d000000d00801007d00000095010000090000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000c30901007b00000064020000200000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e727300500a01007f000000300700000d000000500a01007f0000009e07000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320320b010020000000520b0100120000003a0000000417010000000000740b010001000000740b0100010000000a00000000000000010000000f00000070616e69636b65642061742027272c20ac0b010001000000ad0b0100030000003a2000000417010000000000c00b010002000000202020202c0a280a282f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000230d01007e0000005d0500000d000000230d01007e000000ed050000380000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e727300c40d0100830000004e0000002f000000c40d0100830000005a0000001f000000c40d0100830000006300000009000000c40d0100830000006800000027000000c40d010083000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820980e010012000000aa0e01002200000072616e676520656e6420696e64657820dc0e010010000000aa0e0100220000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000000fc0e010081000000c4050000250000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273900f010080000000fe0300002f000000900f010080000000de0800001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283010010015000000451001002b000000310b0100010000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273881001008000000047000000150000008810010080000000540000001100000088100100800000005a00000009000000881001008000000064000000110000008810010080000000660000000d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e727300581101007f0000009100000011000000581101007f0000004f0200002d0000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273000000f811010081000000ca000000130000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727300008c12010086000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041e6a7040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a4a8040bfd042f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300002414010082000000a1010000470000002414010082000000b4010000200000002414010082000000b4010000110000002414010082000000b8010000260000002f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273e8140100880000009500000001000000dd0b01007e000000cd0100000500000004170100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730010160100830000002f010000180041b0ad040b51617474656d707420746f206164642077697468206f766572666c6f77e518010082000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f77004190ae040be504617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a04170100000000004f170100010000002f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e72730000601701006e0000005a0000001c000000601701006e0000005a00000009000000601701006e0000005a00000031000000601701006e0000006500000009000000601701006e000000830000001a000000601701006e0000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64652f55736572732f73657267656a73616b61632f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30312d30342d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300e5180100820000008201000047004180b3040bcb01617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f73657267656a73616b61632f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e322f7372632f636f6465632e7273000000a119010068000000770000000e0000004572726f72000000190000001c000000160000001400000019000000f7150100db150100c5150100b1150100981501","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"identity","version":"0.1.0","authors":["Master Union "]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"},{"args":[{"label":"networks","type":{"displayName":["Vec"],"type":11}}],"default":false,"docs":[],"label":"init_with_networks","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x056543ac"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":35},"blockNumber":{"displayName":["BlockNumber"],"type":2},"chainExtension":{"displayName":["ChainExtension"],"type":38},"hash":{"displayName":["Hash"],"type":36},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":37}},"events":[{"args":[{"docs":[" Owner of the created identity."],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[" The \`IdentityNo\` associated with the created identity."],"indexed":false,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":["Events"],"label":"IdentityCreated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which a new address has been added."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The newly added address."],"indexed":false,"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressAdded"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been updated."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The updated address value."],"indexed":false,"label":"updated_address","type":{"displayName":["NetworkAddress"],"type":3}}],"docs":[],"label":"AddressUpdated"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got updated."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The network on which the address has been removed."],"indexed":false,"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"AddressRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that got removed."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"docs":[],"label":"IdentityRemoved"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the newly added network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the network that got added."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkAdded"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the updated network."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"docs":[" The rpc url of the updated network."],"indexed":false,"label":"rpc_url","type":{"displayName":["String"],"type":7}},{"docs":[" The address type used on the updated network."],"indexed":false,"label":"account_type","type":{"displayName":["AccountType"],"type":13}}],"docs":[],"label":"NetworkUpdated"},{"args":[{"docs":[" The \`NetworkId\` that is associated with the network that got"," removed."],"indexed":true,"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"docs":[],"label":"NetworkRemoved"},{"args":[{"docs":[" The \`IdentityNo\` of the identity that set a recovery account."],"indexed":true,"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"docs":[" The newly set recovery account."],"indexed":false,"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"docs":[],"label":"RecoveryAccountSet"}],"lang_error":{"displayName":["ink","LangError"],"type":10},"messages":[{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the \`IdentityInfo\` of an identity that is associated with"," the provided \`IdentityNo\`."],"label":"identity","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0xcbfefbec"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x99720c1e"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the owner of an identity."],"label":"identity_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x713ca232"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the network name that is associated with the specified \`NetworkId\`."],"label":"network_info_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3dffc61c"},{"args":[{"label":"receiver","type":{"displayName":["IdentityNo"],"type":2}},{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Returns the destination address of a transaction that needs to be"," routed to the specified identity on the specified network."],"label":"transaction_destination","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":23},"selector":"0x525505e4"},{"args":[],"default":false,"docs":[" A list of all the available networks each associated with a \`NetworkId\`."],"label":"available_networks","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xbd5ddfcd"},{"args":[],"default":false,"docs":[" Creates an identity and returns the \`IdentityNo\`.",""," A user can only create one identity."],"label":"create_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0xfb893664"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Adds an address for a given network"],"label":"add_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x71cc798d"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}},{"label":"address","type":{"displayName":["NetworkAddress"],"type":3}}],"default":false,"docs":[" Updates the address of the given network"],"label":"update_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x892f75e4"},{"args":[{"label":"network","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[" Removes the address by network"],"label":"remove_address","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xdca7a60f"},{"args":[],"default":false,"docs":[" Removes an identity"],"label":"remove_identity","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x08026740"},{"args":[{"label":"info","type":{"displayName":["NetworkInfo"],"type":12}}],"default":false,"docs":[],"label":"add_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":29},"selector":"0x97a3ee09"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}},{"label":"new_rpc_url","type":{"displayName":["Option"],"type":33}},{"label":"new_address_type","type":{"displayName":["Option"],"type":34}}],"default":false,"docs":[],"label":"update_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xcfbe8bcc"},{"args":[{"label":"network_id","type":{"displayName":["NetworkId"],"type":2}}],"default":false,"docs":[],"label":"remove_network","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x14b17dbe"},{"args":[{"label":"recovery_account","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Sets the recovery account that will be able to change the ownership"," of the identity.",""," Only callable by the identity owner."],"label":"set_recovery_account","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0xd3b93403"},{"args":[{"label":"identity_no","type":{"displayName":["IdentityNo"],"type":2}},{"label":"new_owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Transfers the ownership of an identity to another account.",""," Only callable by the identity owner or any account that the identity"," owner added as a proxy."],"label":"transfer_ownership","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":31},"selector":"0x107e33ea"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7d5e603b","ty":0}},"name":"addresses"}],"name":"IdentityInfo"}},"root_key":"0x7d5e603b"}},"name":"number_to_identity"},{"layout":{"root":{"layout":{"leaf":{"key":"0xca45e900","ty":5}},"root_key":"0xca45e900"}},"name":"owner_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7cd66cb1","ty":2}},"root_key":"0x7cd66cb1"}},"name":"identity_of"},{"layout":{"root":{"layout":{"leaf":{"key":"0x3373bd6d","ty":5}},"root_key":"0x3373bd6d"}},"name":"recovery_account_of"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"latest_identity_no"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x7e863377","ty":7}},"name":"rpc_url"},{"layout":{"enum":{"dispatchKey":"0x7e863377","name":"AccountType","variants":{"0":{"fields":[],"name":"AccountId32"},"1":{"fields":[],"name":"AccountKey20"}}}},"name":"account_type"}],"name":"NetworkInfo"}},"root_key":"0x7e863377"}},"name":"network_info_of"},{"layout":{"leaf":{"key":"0x00000000","ty":5}},"name":"admin"},{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"network_id_count"}],"name":"Identity"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"sequence":{"type":1}}}},{"id":1,"type":{"def":{"tuple":[2,3]}}},{"id":2,"type":{"def":{"primitive":"u32"}}},{"id":3,"type":{"def":{"sequence":{"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":7,"type":{"def":{"primitive":"str"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":10}],"path":["Result"]}},{"id":9,"type":{"def":{"tuple":[]}}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":11,"type":{"def":{"sequence":{"type":12}}}},{"id":12,"type":{"def":{"composite":{"fields":[{"name":"rpc_url","type":7,"typeName":"String"},{"name":"account_type","type":13,"typeName":"AccountType"}]}},"path":["common","types","NetworkInfo"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AccountId32"},{"index":1,"name":"AccountKey20"}]}},"path":["common","types","AccountType"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":10}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"addresses","type":0,"typeName":"Vec<(NetworkId, NetworkAddress)>"}]}},"path":["identity","types","IdentityInfo"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":10}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":10}],"path":["Result"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":10}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":12}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":12}],"path":["Option"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":24}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":24},{"name":"E","type":10}],"path":["Result"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":25}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"index":0,"name":"NotAllowed"},{"index":1,"name":"IdentityDoesntExist"},{"index":2,"name":"AddressAlreadyAdded"},{"index":3,"name":"InvalidNetwork"},{"index":4,"name":"AddressSizeExceeded"},{"index":5,"name":"NetworkNameTooLong"},{"index":6,"name":"NetworkRpcUrlTooLong"},{"index":7,"name":"AlreadyIdentityOwner"}]}},"path":["identity","Error"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":10}],"path":["Result"]}},{"id":27,"type":{"def":{"sequence":{"type":28}}}},{"id":28,"type":{"def":{"tuple":[2,12]}}},{"id":29,"type":{"def":{"variant":{"variants":[{"fields":[{"type":30}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":30},{"name":"E","type":10}],"path":["Result"]}},{"id":30,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":25}],"path":["Result"]}},{"id":31,"type":{"def":{"variant":{"variants":[{"fields":[{"type":32}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":32},{"name":"E","type":10}],"path":["Result"]}},{"id":32,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":25}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":25}],"path":["Result"]}},{"id":33,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":7}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":7}],"path":["Option"]}},{"id":34,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":13}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":13}],"path":["Option"]}},{"id":35,"type":{"def":{"primitive":"u128"}}},{"id":36,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":37,"type":{"def":{"primitive":"u64"}}},{"id":38,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/types/data/address_book.json b/types/data/address_book.json index de8d769..746b734 100644 --- a/types/data/address_book.json +++ b/types/data/address_book.json @@ -1,3 +1,3 @@ { -"0": {"name":"Array","body":{"0":{"name":"Tuple","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"1": {"name":"Tuple","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"2": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"3": {"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"4": {"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"5": {"name":"AccountId","body":"string | number[]","isResult":false,"isPrimitive":true,"isConvertable":false},"6": {"name":"Array","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"7": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"8": {"name":"Result eventName == 'NickNameUpdated'); } + public subscribeOnIdentityRemovedEvent(callback : (event : EventTypes.IdentityRemoved) => void) { + const callbackWrapper = (args: any[], event: any) => { + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + callback(handleEventReturn(_event, getEventTypeDescription('IdentityRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityRemoved); + }; + + return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityRemoved'); + } + private __subscribeOnEvent( callback : (args: any[], event: any) => void, diff --git a/types/mixed-methods/address_book.ts b/types/mixed-methods/address_book.ts index 1519fb7..b305e43 100644 --- a/types/mixed-methods/address_book.ts +++ b/types/mixed-methods/address_book.ts @@ -136,4 +136,15 @@ export default class Methods { return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); } + /** + * hasAddressBook + * + * @returns { Result } + */ + "hasAddressBook" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); + } + } \ No newline at end of file diff --git a/types/mixed-methods/identity.ts b/types/mixed-methods/identity.ts index b9f4d7c..c2485c2 100644 --- a/types/mixed-methods/identity.ts +++ b/types/mixed-methods/identity.ts @@ -209,19 +209,19 @@ export default class Methods { * updateNetwork * * @param { (number | string | BN) } networkId, - * @param { (number | string | BN) | null } newPrefix, - * @param { string | null } newName, + * @param { string | null } newRpcUrl, + * @param { ArgumentTypes.AccountType | null } newAddressType, * @returns { void } */ "updateNetwork" ( networkId: (number | string | BN), - newPrefix: (number | string | BN) | null, - newName: string | null, + newRpcUrl: string | null, + newAddressType: ArgumentTypes.AccountType | null, __options: GasLimit, ){ return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); - }, [networkId, newPrefix, newName], __options); + }, [networkId, newRpcUrl, newAddressType], __options); } /** diff --git a/types/query/address_book.ts b/types/query/address_book.ts index 87bdc80..bb1a8f6 100644 --- a/types/query/address_book.ts +++ b/types/query/address_book.ts @@ -81,13 +81,13 @@ export default class Methods { * removeIdentity * * @param { (number | string | BN) } identityNo, - * @returns { Result } + * @returns { Result, ReturnTypes.LangError> } */ "removeIdentity" ( identityNo: (number | string | BN), __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(8, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -118,4 +118,15 @@ export default class Methods { return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options , (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); } + /** + * hasAddressBook + * + * @returns { Result } + */ + "hasAddressBook" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); + } + } \ No newline at end of file diff --git a/types/query/identity.ts b/types/query/identity.ts index 4f8480f..dede6d4 100644 --- a/types/query/identity.ts +++ b/types/query/identity.ts @@ -189,17 +189,17 @@ export default class Methods { * updateNetwork * * @param { (number | string | BN) } networkId, - * @param { (number | string | BN) | null } newPrefix, - * @param { string | null } newName, + * @param { string | null } newRpcUrl, + * @param { ArgumentTypes.AccountType | null } newAddressType, * @returns { Result, ReturnTypes.LangError> } */ "updateNetwork" ( networkId: (number | string | BN), - newPrefix: (number | string | BN) | null, - newName: string | null, + newRpcUrl: string | null, + newAddressType: ArgumentTypes.AccountType | null, __options ? : GasLimit, ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNetwork", [networkId, newPrefix, newName], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** diff --git a/types/tx-sign-and-send/address_book.ts b/types/tx-sign-and-send/address_book.ts index 0b16d5a..705ce90 100644 --- a/types/tx-sign-and-send/address_book.ts +++ b/types/tx-sign-and-send/address_book.ts @@ -124,4 +124,16 @@ export default class Methods { }, [account], __options); } + /** + * hasAddressBook + * + */ + "hasAddressBook" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "hasAddressBook", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + } \ No newline at end of file diff --git a/types/tx-sign-and-send/identity.ts b/types/tx-sign-and-send/identity.ts index 0c3a1e6..8698e12 100644 --- a/types/tx-sign-and-send/identity.ts +++ b/types/tx-sign-and-send/identity.ts @@ -200,18 +200,18 @@ export default class Methods { * updateNetwork * * @param { (number | string | BN) } networkId, - * @param { (number | string | BN) | null } newPrefix, - * @param { string | null } newName, + * @param { string | null } newRpcUrl, + * @param { ArgumentTypes.AccountType | null } newAddressType, */ "updateNetwork" ( networkId: (number | string | BN), - newPrefix: (number | string | BN) | null, - newName: string | null, + newRpcUrl: string | null, + newAddressType: ArgumentTypes.AccountType | null, __options ? : GasLimit, ){ return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); - }, [networkId, newPrefix, newName], __options); + }, [networkId, newRpcUrl, newAddressType], __options); } /** diff --git a/types/types-arguments/identity.ts b/types/types-arguments/identity.ts index 597919e..4155926 100644 --- a/types/types-arguments/identity.ts +++ b/types/types-arguments/identity.ts @@ -7,8 +7,13 @@ export enum LangError { } export type NetworkInfo = { - name: string, - ss58Prefix: (number | string | BN) + rpcUrl: string, + accountType: AccountType +} + +export enum AccountType { + accountId32 = 'AccountId32', + accountKey20 = 'AccountKey20' } export type IdentityInfo = { @@ -22,6 +27,7 @@ export enum Error { invalidNetwork = 'InvalidNetwork', addressSizeExceeded = 'AddressSizeExceeded', networkNameTooLong = 'NetworkNameTooLong', + networkRpcUrlTooLong = 'NetworkRpcUrlTooLong', alreadyIdentityOwner = 'AlreadyIdentityOwner' } diff --git a/types/types-returns/identity.ts b/types/types-returns/identity.ts index 906d2ea..8d9ca47 100644 --- a/types/types-returns/identity.ts +++ b/types/types-returns/identity.ts @@ -8,8 +8,13 @@ export enum LangError { } export type NetworkInfo = { - name: string, - ss58Prefix: number + rpcUrl: string, + accountType: AccountType +} + +export enum AccountType { + accountId32 = 'AccountId32', + accountKey20 = 'AccountKey20' } export type IdentityInfo = { @@ -23,6 +28,7 @@ export enum Error { invalidNetwork = 'InvalidNetwork', addressSizeExceeded = 'AddressSizeExceeded', networkNameTooLong = 'NetworkNameTooLong', + networkRpcUrlTooLong = 'NetworkRpcUrlTooLong', alreadyIdentityOwner = 'AlreadyIdentityOwner' } From 087cb6d4eb70551dec3ede4be7719e9a23ec54b4 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Sat, 1 Jul 2023 18:27:26 +0200 Subject: [PATCH 05/27] xcm transfer works --- __tests__/transactionRouter.test.ts | 12 +++---- src/utils/transactionRouter.ts | 53 +++++++++++++++-------------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index af6b31d..0e8babe 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -42,7 +42,7 @@ describe("TransactionRouter",() => { identityContract, sender, 0, // origin network - receiver.address, + receiver.addressRaw, 0, // destination network {}, // multi asset 1000 @@ -54,20 +54,20 @@ describe("TransactionRouter",() => { const receiver = bob; // First lets add a network. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:9944", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:50941", accountType: AccountType.accountId32 }); await TransactionRouter.sendTokens( identityContract, sender, 0, // origin network - receiver.address, + receiver.addressRaw, 0, // destination network // MultiAsset: { - parents: 0, - interior: "Here" + interior: "Here", + parents: 0 }, - 1000 + 1 * Math.pow(10, 12) ); }); }); diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 5ec8dfd..952e568 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -7,12 +7,12 @@ class TransactionRouter { contract: IdentityContract, sender: KeyringPair, originNetwork: number, - receiver: string, + receiver: Uint8Array, destinationNetwork: number, token: any, amount: number ): Promise { - if (originNetwork == destinationNetwork && sender.address == receiver) { + if (originNetwork == destinationNetwork && sender.addressRaw == receiver) { throw new Error("Cannot send tokens to yourself"); } @@ -21,7 +21,7 @@ class TransactionRouter { const wsProvider = new WsProvider(rpcUrl); const api = await ApiPromise.create({ provider: wsProvider }); - this.sendOnSameBlockchain( + await this.sendOnSameBlockchain( api, contract, sender, @@ -31,7 +31,7 @@ class TransactionRouter { amount ); } else { - this.sendViaXcm( + await this.sendViaXcm( sender, originNetwork, receiver, @@ -46,12 +46,13 @@ class TransactionRouter { api: ApiPromise, contract: IdentityContract, sender: KeyringPair, - receiver: string, + receiver: Uint8Array, network: number, token: any, amount: number ): Promise { // Just a simple transfer. + const chainInfo = await api.registry.getChainProperties(); if (!chainInfo) { throw new Error("Failed to get chain info"); @@ -62,9 +63,9 @@ class TransactionRouter { let xcmExecute; if (api.tx.xcmPallet) { - xcmExecute = api.tx.xcmPallet.execute(xcm); + xcmExecute = api.tx.xcmPallet.execute(xcm, 0); } else if (api.tx.polkadotXcm) { - xcmExecute = api.tx.polkadotXcm.execute(xcm); + xcmExecute = api.tx.polkadotXcm.execute(xcm, 0); } else { throw new Error("The blockchain does not support XCM"); } @@ -77,30 +78,31 @@ class TransactionRouter { private static sendViaXcm( sender: KeyringPair, originNetwork: number, - receiver: string, + receiver: Uint8Array, destinationNetwork: number, token: string, amount: number ) {} private static xcmTransferAssetMessage( - receiverAddress: string, + receiverAddress: Uint8Array, multiAsset: any, amount: number ): any { const xcmMessage = { - V2: { - TransferAsset: [ - // Asset: - { - Concrete: multiAsset, - Fungible: { - Fungible: amount, - }, - }, - // Beneficiary: - { - parents: 0, + V2: [{ + TransferAsset: { + assets: [ + { + fun: { + Fungible: amount + }, + id: { + Concrete: multiAsset + } + } + ], + beneficiary: { interior: { X1: { // TODO: Don't hardcode the account type. @@ -108,11 +110,12 @@ class TransactionRouter { network: "Any", id: receiverAddress, }, - }, + } }, - }, - ], - }, + parents: 0 + } + }, + }] }; return xcmMessage; } From 09f8c2df3b9c0dc7a76fa3a15d5d876e460b8839 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Sat, 1 Jul 2023 18:37:07 +0200 Subject: [PATCH 06/27] don't hardcode account type --- __tests__/transactionRouter.test.ts | 2 ++ src/utils/transactionRouter.ts | 33 ++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 0e8babe..00bf7a7 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -43,6 +43,7 @@ describe("TransactionRouter",() => { sender, 0, // origin network receiver.addressRaw, + AccountType.accountId32, 0, // destination network {}, // multi asset 1000 @@ -61,6 +62,7 @@ describe("TransactionRouter",() => { sender, 0, // origin network receiver.addressRaw, + AccountType.accountId32, 0, // destination network // MultiAsset: { diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 952e568..b337430 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -1,5 +1,6 @@ import { ApiPromise, WsProvider } from "@polkadot/api"; import { KeyringPair } from "@polkadot/keyring/types"; +import { AccountType } from "../../types/types-arguments/identity"; import IdentityContract from "../../types/contracts/identity"; class TransactionRouter { @@ -8,6 +9,7 @@ class TransactionRouter { sender: KeyringPair, originNetwork: number, receiver: Uint8Array, + receiverAccountType: AccountType, destinationNetwork: number, token: any, amount: number @@ -26,6 +28,7 @@ class TransactionRouter { contract, sender, receiver, + receiverAccountType, originNetwork, token, amount @@ -47,6 +50,7 @@ class TransactionRouter { contract: IdentityContract, sender: KeyringPair, receiver: Uint8Array, + receiverAccountType: AccountType, network: number, token: any, amount: number @@ -58,7 +62,7 @@ class TransactionRouter { throw new Error("Failed to get chain info"); } - const xcm = this.xcmTransferAssetMessage(receiver, token, amount); + const xcm = this.xcmTransferAssetMessage(receiver, receiverAccountType, token, amount); let xcmExecute; @@ -72,6 +76,7 @@ class TransactionRouter { const hash = await xcmExecute.signAndSend(sender); + // TODO Remove the log: console.log("Transfer sent with hash", hash.toHex()); } @@ -86,9 +91,27 @@ class TransactionRouter { private static xcmTransferAssetMessage( receiverAddress: Uint8Array, + receiverAccountType: AccountType, multiAsset: any, amount: number ): any { + let receiverAccount; + if(receiverAccountType == AccountType.accountId32) { + receiverAccount = { + AccountId32: { + network: "Any", + id: receiverAddress, + } + }; + }else if(receiverAccountType == AccountType.accountKey20){ + receiverAccount = { + AccountKey20: { + network: "Any", + id: receiverAddress, + } + }; + } + const xcmMessage = { V2: [{ TransferAsset: { @@ -104,13 +127,7 @@ class TransactionRouter { ], beneficiary: { interior: { - X1: { - // TODO: Don't hardcode the account type. - AccountId32: { - network: "Any", - id: receiverAddress, - }, - } + X1: receiverAccount }, parents: 0 } From 603822a5274ff2ceec7f88ea58d9e32e575dd9c3 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Sun, 2 Jul 2023 23:21:56 +0200 Subject: [PATCH 07/27] asset registry; not tested --- package.json | 1 + src/utils/assetRegistry.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/utils/assetRegistry.ts diff --git a/package.json b/package.json index f53d773..76db5fe 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@scio-labs/use-inkathon": "^0.0.1-alpha.44", "@types/react-copy-to-clipboard": "^5.0.4", "aes-js": "^3.1.2", + "axios": "^1.4.0", "clsx": "^1.1.1", "material-ui-confirm": "^3.0.9", "next": "^13.3.1", diff --git a/src/utils/assetRegistry.ts b/src/utils/assetRegistry.ts new file mode 100644 index 0000000..9487e16 --- /dev/null +++ b/src/utils/assetRegistry.ts @@ -0,0 +1,32 @@ +import axios from 'axios'; + +type Asset = { + asset: any, + name: string, + symbol: string, + decimals: number, + xcmInteriorKey?: string, + inferred: boolean, + confidence: number +}; + +const xcmGAR = "https://cdn.jsdelivr.net/gh/colorfulnotion/xcm-global-registry/metadata/xcmgar_url.json"; + +class AssetRegistry { + public static async getAssetsOnBlockchain(chain: string): Promise { + const blockchains = (await axios.get(xcmGAR)).data; + + const blockchain = blockchains.find((b:any) => b.id == chain); + if(!blockchain) { + throw new Error("Blockchain not found"); + } + + const assetsUrl = blockchain.url; + + const assets: Asset[] = (await axios.get(assetsUrl)).data; + + return assets; + } +} + +export default AssetRegistry; From a6d609df6656df31a851eab4395f800e4d1856b2 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 3 Jul 2023 13:34:13 +0200 Subject: [PATCH 08/27] transferring works --- __tests__/transactionRouter.test.ts | 40 ++++++++++++----------------- src/utils/transactionRouter.ts | 9 +++---- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 00bf7a7..d6e8fde 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -36,7 +36,6 @@ describe("TransactionRouter",() => { // First lets add a network and create an identity. await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:9944", accountType: AccountType.accountId32 }); - //const receiverIdentityNo = await createIdentityWithData(identityContract, receiver); await expect(TransactionRouter.sendTokens( identityContract, @@ -54,8 +53,16 @@ describe("TransactionRouter",() => { const sender = alice; const receiver = bob; + const rococoApi = await ApiPromise.create({ provider: wsProvider }); + + // @ts-ignore + var { data: balance } = await rococoApi.query.system.account(receiver.address); + const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); + // First lets add a network. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:50941", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:62735", accountType: AccountType.accountId32 }); + + const amount = Math.pow(10, 12); await TransactionRouter.sendTokens( identityContract, @@ -69,9 +76,15 @@ describe("TransactionRouter",() => { interior: "Here", parents: 0 }, - 1 * Math.pow(10, 12) + amount ); - }); + + // @ts-ignore + var { data: balance } = await rococoApi.query.system.account(receiver.address); + const newReceiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); + + expect(newReceiverBalance).toBe(receiverBalance + amount); + }, 10000); }); const addNetwork = async (contract: IdentityContract, signer: KeyringPair, network: NetworkInfo): Promise => { @@ -79,22 +92,3 @@ const addNetwork = async (contract: IdentityContract, signer: KeyringPair, netwo .withSigner(signer) .tx.addNetwork(network); } - -const createIdentityWithData = async (contract: IdentityContract, signer: KeyringPair): Promise => { - const _createIdentityResult = (await contract - .withSigner(signer) - .tx.createIdentity()); - - const identityNo = (await contract - .withSigner(signer) - .query.identityOf(signer.address)).value.ok; - - if(identityNo != null) { - const _addAddressResult = (await contract - .withSigner(signer) - .tx.addAddress(0, signer.address)); - - return identityNo; - } - throw new Error("Failed to get identity no"); -} diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index b337430..4b4f5c0 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -25,11 +25,9 @@ class TransactionRouter { await this.sendOnSameBlockchain( api, - contract, sender, receiver, receiverAccountType, - originNetwork, token, amount ); @@ -47,11 +45,9 @@ class TransactionRouter { private static async sendOnSameBlockchain( api: ApiPromise, - contract: IdentityContract, sender: KeyringPair, receiver: Uint8Array, receiverAccountType: AccountType, - network: number, token: any, amount: number ): Promise { @@ -67,9 +63,10 @@ class TransactionRouter { let xcmExecute; if (api.tx.xcmPallet) { - xcmExecute = api.tx.xcmPallet.execute(xcm, 0); + // TODO: don't hardcode the max weight. + xcmExecute = api.tx.xcmPallet.execute(xcm, 3000000000); } else if (api.tx.polkadotXcm) { - xcmExecute = api.tx.polkadotXcm.execute(xcm, 0); + xcmExecute = api.tx.polkadotXcm.execute(xcm, 3000000000); } else { throw new Error("The blockchain does not support XCM"); } From d01a00d9eea2e206d5f5d8e9b4b804f17313a88f Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 3 Jul 2023 14:28:25 +0200 Subject: [PATCH 09/27] custom port number --- __tests__/transactionRouter.test.ts | 4 ++-- local_network.toml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index d6e8fde..84ab8c0 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -35,7 +35,7 @@ describe("TransactionRouter",() => { // First lets add a network and create an identity. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:9944", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4242", accountType: AccountType.accountId32 }); await expect(TransactionRouter.sendTokens( identityContract, @@ -60,7 +60,7 @@ describe("TransactionRouter",() => { const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); // First lets add a network. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:62735", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4242", accountType: AccountType.accountId32 }); const amount = Math.pow(10, 12); diff --git a/local_network.toml b/local_network.toml index dc4b79e..3fef5e1 100644 --- a/local_network.toml +++ b/local_network.toml @@ -5,6 +5,7 @@ default_args = [ "-lparachain=debug" ] chain = "rococo-local" # relaychain nodes are by default validators [[relaychain.nodes]] + ws_port = 4242 name = "alice" [[relaychain.nodes]] From 4c4b097fce07e9f788c436dd36a3481ff8015aa8 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 3 Jul 2023 19:40:20 +0200 Subject: [PATCH 10/27] sending non-native asset --- __tests__/transactionRouter.test.ts | 84 +++++++++++++++++++++++++++-- local_network.toml | 6 ++- 2 files changed, 83 insertions(+), 7 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 84ab8c0..a640390 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -9,23 +9,23 @@ const wsProvider = new WsProvider("ws://127.0.0.1:9944"); const keyring = new Keyring({ type: 'sr25519' }); describe("TransactionRouter",() => { - let api: ApiPromise; + let swankyApi: ApiPromise; let alice: KeyringPair; let bob: KeyringPair; let identityContract: any; beforeEach(async function (): Promise { - api = await ApiPromise.create({ provider: wsProvider, noInitWarn: true }); + swankyApi = await ApiPromise.create({ provider: wsProvider, noInitWarn: true }); alice = keyring.addFromUri('//Alice'); bob = keyring.addFromUri('//Bob'); - const factory = new IdentityContractFactory(api, alice); + const factory = new IdentityContractFactory(swankyApi, alice); identityContract = new IdentityContract( ( await factory.new() ).address, alice, - api + swankyApi ); }); @@ -53,7 +53,8 @@ describe("TransactionRouter",() => { const sender = alice; const receiver = bob; - const rococoApi = await ApiPromise.create({ provider: wsProvider }); + const rococoProvider = new WsProvider("ws://127.0.0.1:4242"); + const rococoApi = await ApiPromise.create({ provider: rococoProvider }); // @ts-ignore var { data: balance } = await rococoApi.query.system.account(receiver.address); @@ -79,12 +80,60 @@ describe("TransactionRouter",() => { amount ); + // It takes a bit of time to execute the xcm message. + // TODO: imporve this by actually waiting for the transaction to get finalized. + await delay(8000); + // @ts-ignore var { data: balance } = await rococoApi.query.system.account(receiver.address); const newReceiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); expect(newReceiverBalance).toBe(receiverBalance + amount); }, 10000); + + it("Sending non-native asset on the same network works", async() => { + const sender = alice; + const receiver = bob; + + const statemineProvider = new WsProvider("ws://127.0.0.1:4243"); + const statemineApi = await ApiPromise.create({ provider: statemineProvider }); + + /* TODO: Fix the following code: + // First create an asset. + if(!(await getAsset(statemineApi, 0))) { + await createAsset(statemineApi, sender, 0); + } + + // Mint some assets to the creator. + await mintAsset(statemineApi, sender, 0, 500); + */ + + const amount = 10000; + + // First lets add a network. + await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4243", accountType: AccountType.accountId32 }); + + await TransactionRouter.sendTokens( + identityContract, + sender, + 0, // origin network + receiver.addressRaw, + AccountType.accountId32, + 0, // destination network + // MultiAsset: + { + interior: { + X2: [ + {PalletInstance: 50}, // assets pallet + {GeneralIndex: 0} + ] + }, + parents: 0 + }, + amount + ); + + }, 10000); }); const addNetwork = async (contract: IdentityContract, signer: KeyringPair, network: NetworkInfo): Promise => { @@ -92,3 +141,28 @@ const addNetwork = async (contract: IdentityContract, signer: KeyringPair, netwo .withSigner(signer) .tx.addNetwork(network); } + +const createAsset = async (api: ApiPromise, signer: KeyringPair, id: number): Promise => { + const createResult = await api.tx.assets.create( + id, + // Admin: + { + Address32: signer.addressRaw, + }, + 10 // min balance + ).signAndSend(signer); +} + +const mintAsset = async (api: ApiPromise, signer: KeyringPair, id: number, amount: number): Promise => { + const _mintResult = await api.tx.assets.mint( + id, + signer.addressRaw, // beneficiary + amount + ).signAndSend(signer); +} + +const getAsset = async (api: ApiPromise, id: number): Promise => { + return (await api.query.assets.asset(id)).toHuman(); +} + +const delay = (ms:number) => new Promise(res => setTimeout(res, ms)); diff --git a/local_network.toml b/local_network.toml index 3fef5e1..0a3227a 100644 --- a/local_network.toml +++ b/local_network.toml @@ -22,8 +22,10 @@ id = 1000 cumulus_based = true [parachains.collator] - name = "parachain-A-1000-collator-01" - command = "../bin/parachain-template-node-v0.9.37" + ws_port = 4243 + name = "statemine-collator-01" + command = "../bin/polkadot-parachain" + args = ["--log=xcm=trace,pallet-assets=trace"] [[parachains]] id = 1001 From fd0b5049517b8559ec3b9f5a81eca415df06ce80 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 3 Jul 2023 20:30:30 +0200 Subject: [PATCH 11/27] remove an unused parachain from zombienet --- local_network.toml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/local_network.toml b/local_network.toml index 0a3227a..9d410bb 100644 --- a/local_network.toml +++ b/local_network.toml @@ -26,11 +26,3 @@ cumulus_based = true name = "statemine-collator-01" command = "../bin/polkadot-parachain" args = ["--log=xcm=trace,pallet-assets=trace"] - -[[parachains]] -id = 1001 -cumulus_based = true - - [parachains.collator] - name = "parachain-B-1001-collator-01" - command = "../bin/parachain-template-node-v0.9.37" From 490a17977c8d18657352ba36fc75c02b5ae76177 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Mon, 3 Jul 2023 20:32:12 +0200 Subject: [PATCH 12/27] have bin directory inside the project --- .gitignore | 3 +++ local_network.toml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2600a21..a55a34d 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,6 @@ package-lock.json # typescript *.tsbuildinfo + +# zombienet +bin/ diff --git a/local_network.toml b/local_network.toml index 9d410bb..6374371 100644 --- a/local_network.toml +++ b/local_network.toml @@ -1,5 +1,5 @@ [relaychain] -default_command = "../bin/polkadot-v0.9.37" +default_command = "./bin/polkadot-v0.9.37" default_args = [ "-lparachain=debug" ] chain = "rococo-local" @@ -24,5 +24,5 @@ cumulus_based = true [parachains.collator] ws_port = 4243 name = "statemine-collator-01" - command = "../bin/polkadot-parachain" + command = "./bin/polkadot-parachain" args = ["--log=xcm=trace,pallet-assets=trace"] From 43a27dfece0281239d9417a533bbd15489808336 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Tue, 4 Jul 2023 09:19:37 +0200 Subject: [PATCH 13/27] cleanup --- src/utils/transactionRouter.ts | 59 ++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 4b4f5c0..c6cbf0d 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -19,7 +19,9 @@ class TransactionRouter { } if (originNetwork == destinationNetwork) { - const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).value.ok?.rpcUrl; + const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).value + .ok?.rpcUrl; + const wsProvider = new WsProvider(rpcUrl); const api = await ApiPromise.create({ provider: wsProvider }); @@ -32,7 +34,7 @@ class TransactionRouter { amount ); } else { - await this.sendViaXcm( + await this.sendCrossChain( sender, originNetwork, receiver, @@ -58,7 +60,12 @@ class TransactionRouter { throw new Error("Failed to get chain info"); } - const xcm = this.xcmTransferAssetMessage(receiver, receiverAccountType, token, amount); + const xcm = this.xcmTransferAssetMessage( + receiver, + receiverAccountType, + token, + amount + ); let xcmExecute; @@ -77,7 +84,7 @@ class TransactionRouter { console.log("Transfer sent with hash", hash.toHex()); } - private static sendViaXcm( + private static async sendCrossChain( sender: KeyringPair, originNetwork: number, receiver: Uint8Array, @@ -93,43 +100,45 @@ class TransactionRouter { amount: number ): any { let receiverAccount; - if(receiverAccountType == AccountType.accountId32) { + if (receiverAccountType == AccountType.accountId32) { receiverAccount = { AccountId32: { network: "Any", id: receiverAddress, - } + }, }; - }else if(receiverAccountType == AccountType.accountKey20){ + } else if (receiverAccountType == AccountType.accountKey20) { receiverAccount = { AccountKey20: { network: "Any", id: receiverAddress, - } + }, }; } const xcmMessage = { - V2: [{ - TransferAsset: { - assets: [ - { - fun: { - Fungible: amount + V2: [ + { + TransferAsset: { + assets: [ + { + fun: { + Fungible: amount, + }, + id: { + Concrete: multiAsset, + }, + }, + ], + beneficiary: { + interior: { + X1: receiverAccount, }, - id: { - Concrete: multiAsset - } - } - ], - beneficiary: { - interior: { - X1: receiverAccount + parents: 0, }, - parents: 0 - } + }, }, - }] + ], }; return xcmMessage; } From ef870feddada9b9242e7d062f3d12c0d7508b5d8 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Tue, 4 Jul 2023 09:49:38 +0200 Subject: [PATCH 14/27] format & wait for transactions --- __tests__/transactionRouter.test.ts | 183 +++++++++++++++++----------- src/utils/transactionRouter.ts | 26 ++-- 2 files changed, 128 insertions(+), 81 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index a640390..9a2753d 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -1,29 +1,30 @@ import TransactionRouter from "../src/utils/transactionRouter"; -import { ApiPromise, Keyring, WsProvider } from '@polkadot/api'; +import { ApiPromise, Keyring, WsProvider } from "@polkadot/api"; import { KeyringPair } from "@polkadot/keyring/types"; import IdentityContractFactory from "../types/constructors/identity"; import IdentityContract from "../types/contracts/identity"; import { AccountType, NetworkInfo } from "../types/types-arguments/identity"; const wsProvider = new WsProvider("ws://127.0.0.1:9944"); -const keyring = new Keyring({ type: 'sr25519' }); +const keyring = new Keyring({ type: "sr25519" }); -describe("TransactionRouter",() => { +describe("TransactionRouter", () => { let swankyApi: ApiPromise; let alice: KeyringPair; let bob: KeyringPair; let identityContract: any; beforeEach(async function (): Promise { - swankyApi = await ApiPromise.create({ provider: wsProvider, noInitWarn: true }); - alice = keyring.addFromUri('//Alice'); - bob = keyring.addFromUri('//Bob'); + swankyApi = await ApiPromise.create({ + provider: wsProvider, + noInitWarn: true, + }); + alice = keyring.addFromUri("//Alice"); + bob = keyring.addFromUri("//Bob"); const factory = new IdentityContractFactory(swankyApi, alice); identityContract = new IdentityContract( - ( - await factory.new() - ).address, + (await factory.new()).address, alice, swankyApi ); @@ -35,33 +36,43 @@ describe("TransactionRouter",() => { // First lets add a network and create an identity. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4242", accountType: AccountType.accountId32 }); - - await expect(TransactionRouter.sendTokens( - identityContract, - sender, - 0, // origin network - receiver.addressRaw, - AccountType.accountId32, - 0, // destination network - {}, // multi asset - 1000 - )).rejects.toThrow("Cannot send tokens to yourself"); + await addNetwork(identityContract, alice, { + rpcUrl: "ws://127.0.0.1:4242", + accountType: AccountType.accountId32, + }); + + await expect( + TransactionRouter.sendTokens( + identityContract, + sender, + 0, // origin network + receiver.addressRaw, + AccountType.accountId32, + 0, // destination network + {}, // multi asset + 1000 + ) + ).rejects.toThrow("Cannot send tokens to yourself"); }); it("Sending native asset on the same network works", async () => { const sender = alice; const receiver = bob; - const rococoProvider = new WsProvider("ws://127.0.0.1:4242"); + const rococoProvider = new WsProvider("ws://127.0.0.1:4242"); const rococoApi = await ApiPromise.create({ provider: rococoProvider }); // @ts-ignore - var { data: balance } = await rococoApi.query.system.account(receiver.address); - const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); + var { data: balance } = await rococoApi.query.system.account( + receiver.address + ); + const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, "")); // First lets add a network. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4242", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { + rpcUrl: "ws://127.0.0.1:4242", + accountType: AccountType.accountId32, + }); const amount = Math.pow(10, 12); @@ -75,43 +86,47 @@ describe("TransactionRouter",() => { // MultiAsset: { interior: "Here", - parents: 0 + parents: 0, }, amount ); - // It takes a bit of time to execute the xcm message. - // TODO: imporve this by actually waiting for the transaction to get finalized. - await delay(8000); - // @ts-ignore - var { data: balance } = await rococoApi.query.system.account(receiver.address); - const newReceiverBalance = parseInt(balance.free.toHuman().replace(/,/g, '')); + var { data: balance } = await rococoApi.query.system.account( + receiver.address + ); + const newReceiverBalance = parseInt( + balance.free.toHuman().replace(/,/g, "") + ); expect(newReceiverBalance).toBe(receiverBalance + amount); - }, 10000); + }, 30000); - it("Sending non-native asset on the same network works", async() => { + it("Sending non-native asset on the same network works", async () => { const sender = alice; const receiver = bob; - const statemineProvider = new WsProvider("ws://127.0.0.1:4243"); - const statemineApi = await ApiPromise.create({ provider: statemineProvider }); + const statemineProvider = new WsProvider("ws://127.0.0.1:4243"); + const statemineApi = await ApiPromise.create({ + provider: statemineProvider, + }); - /* TODO: Fix the following code: + // TODO: Fix the following code: // First create an asset. - if(!(await getAsset(statemineApi, 0))) { + if (!(await getAsset(statemineApi, 0))) { await createAsset(statemineApi, sender, 0); } // Mint some assets to the creator. await mintAsset(statemineApi, sender, 0, 500); - */ const amount = 10000; // First lets add a network. - await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4243", accountType: AccountType.accountId32 }); + await addNetwork(identityContract, alice, { + rpcUrl: "ws://127.0.0.1:4243", + accountType: AccountType.accountId32, + }); await TransactionRouter.sendTokens( identityContract, @@ -124,45 +139,73 @@ describe("TransactionRouter",() => { { interior: { X2: [ - {PalletInstance: 50}, // assets pallet - {GeneralIndex: 0} - ] + { PalletInstance: 50 }, // assets pallet + { GeneralIndex: 0 }, + ], }, - parents: 0 + parents: 0, }, amount ); - - }, 10000); + }, 30000); }); -const addNetwork = async (contract: IdentityContract, signer: KeyringPair, network: NetworkInfo): Promise => { +const addNetwork = async ( + contract: IdentityContract, + signer: KeyringPair, + network: NetworkInfo +): Promise => { const _addNetworkResult = await contract .withSigner(signer) .tx.addNetwork(network); -} - -const createAsset = async (api: ApiPromise, signer: KeyringPair, id: number): Promise => { - const createResult = await api.tx.assets.create( - id, - // Admin: - { - Address32: signer.addressRaw, - }, - 10 // min balance - ).signAndSend(signer); -} - -const mintAsset = async (api: ApiPromise, signer: KeyringPair, id: number, amount: number): Promise => { - const _mintResult = await api.tx.assets.mint( - id, - signer.addressRaw, // beneficiary - amount - ).signAndSend(signer); -} +}; + +const createAsset = async ( + api: ApiPromise, + signer: KeyringPair, + id: number +): Promise => { + return new Promise(async (resolve) => { + const unsub = await api.tx.assets + .create( + id, + // Admin: + { + Address32: signer.addressRaw, + }, + 10 // min balance + ) + .signAndSend(signer, (result: any) => { + if (result.status.isFinalized) { + unsub(); + resolve(); + } + }); + }); +}; + +const mintAsset = async ( + api: ApiPromise, + signer: KeyringPair, + id: number, + amount: number +): Promise => { + return new Promise(async (resolve) => { + const unsub = await api.tx.assets + .mint( + id, + signer.addressRaw, // beneficiary + amount + ) + .signAndSend(signer, (result: any) => { + if (result.status.isFinalized) { + unsub(); + resolve(); + } + }); + }); +}; const getAsset = async (api: ApiPromise, id: number): Promise => { return (await api.query.assets.asset(id)).toHuman(); -} - -const delay = (ms:number) => new Promise(res => setTimeout(res, ms)); +}; diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index c6cbf0d..901b307 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -67,7 +67,7 @@ class TransactionRouter { amount ); - let xcmExecute; + let xcmExecute: any; if (api.tx.xcmPallet) { // TODO: don't hardcode the max weight. @@ -78,19 +78,23 @@ class TransactionRouter { throw new Error("The blockchain does not support XCM"); } - const hash = await xcmExecute.signAndSend(sender); - - // TODO Remove the log: - console.log("Transfer sent with hash", hash.toHex()); + return new Promise(async (resolve) => { + const unsub = await xcmExecute.signAndSend(sender, (result: any) => { + if (result.status.isFinalized) { + unsub(); + resolve(); + } + }) + }); } private static async sendCrossChain( - sender: KeyringPair, - originNetwork: number, - receiver: Uint8Array, - destinationNetwork: number, - token: string, - amount: number + _sender: KeyringPair, + _originNetwork: number, + _receiver: Uint8Array, + _destinationNetwork: number, + _token: string, + _amount: number ) {} private static xcmTransferAssetMessage( From f6a2a56d5e4de938b3e704a88708f1be79d45a92 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Tue, 4 Jul 2023 13:45:27 +0200 Subject: [PATCH 15/27] fixes --- __tests__/transactionRouter.test.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 9a2753d..98d67ef 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -76,6 +76,7 @@ describe("TransactionRouter", () => { const amount = Math.pow(10, 12); + // TODO: the token transfer for some reason fails. await TransactionRouter.sendTokens( identityContract, sender, @@ -111,7 +112,6 @@ describe("TransactionRouter", () => { provider: statemineProvider, }); - // TODO: Fix the following code: // First create an asset. if (!(await getAsset(statemineApi, 0))) { await createAsset(statemineApi, sender, 0); @@ -147,7 +147,7 @@ describe("TransactionRouter", () => { }, amount ); - }, 30000); + }, 120000); }); const addNetwork = async ( @@ -170,13 +170,11 @@ const createAsset = async ( .create( id, // Admin: - { - Address32: signer.addressRaw, - }, + signer.address, 10 // min balance ) .signAndSend(signer, (result: any) => { - if (result.status.isFinalized) { + if (result.status.isInBlock) { unsub(); resolve(); } @@ -194,11 +192,11 @@ const mintAsset = async ( const unsub = await api.tx.assets .mint( id, - signer.addressRaw, // beneficiary + signer.address, // beneficiary amount ) .signAndSend(signer, (result: any) => { - if (result.status.isFinalized) { + if (result.status.isInBlock) { unsub(); resolve(); } From 5ce87cd6942b20fb31e953c0cbff3de1341eeb9f Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Tue, 4 Jul 2023 14:05:30 +0200 Subject: [PATCH 16/27] better naming & fix CI --- __tests__/transactionRouter.test.ts | 12 ++++++------ src/utils/transactionRouter.ts | 18 +----------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 98d67ef..c39dec5 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -107,18 +107,18 @@ describe("TransactionRouter", () => { const sender = alice; const receiver = bob; - const statemineProvider = new WsProvider("ws://127.0.0.1:4243"); - const statemineApi = await ApiPromise.create({ - provider: statemineProvider, + const assetHubProvider = new WsProvider("ws://127.0.0.1:4243"); + const assetHubApi = await ApiPromise.create({ + provider: assetHubProvider, }); // First create an asset. - if (!(await getAsset(statemineApi, 0))) { - await createAsset(statemineApi, sender, 0); + if (!(await getAsset(assetHubApi, 0))) { + await createAsset(assetHubApi, sender, 0); } // Mint some assets to the creator. - await mintAsset(statemineApi, sender, 0, 500); + await mintAsset(assetHubApi, sender, 0, 500); const amount = 10000; diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 901b307..8c7d3a7 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -34,14 +34,7 @@ class TransactionRouter { amount ); } else { - await this.sendCrossChain( - sender, - originNetwork, - receiver, - destinationNetwork, - token, - amount - ); + // Send cross-chain. } } @@ -88,15 +81,6 @@ class TransactionRouter { }); } - private static async sendCrossChain( - _sender: KeyringPair, - _originNetwork: number, - _receiver: Uint8Array, - _destinationNetwork: number, - _token: string, - _amount: number - ) {} - private static xcmTransferAssetMessage( receiverAddress: Uint8Array, receiverAccountType: AccountType, From 95aa41fb7a869ddbc15e13bd11b4642ff8bd902e Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Tue, 4 Jul 2023 14:15:11 +0200 Subject: [PATCH 17/27] fix lint --- src/utils/transactionRouter.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 8c7d3a7..d73c617 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -1,7 +1,8 @@ import { ApiPromise, WsProvider } from "@polkadot/api"; import { KeyringPair } from "@polkadot/keyring/types"; -import { AccountType } from "../../types/types-arguments/identity"; + import IdentityContract from "../../types/contracts/identity"; +import { AccountType } from "../../types/types-arguments/identity"; class TransactionRouter { public static async sendTokens( @@ -71,6 +72,7 @@ class TransactionRouter { throw new Error("The blockchain does not support XCM"); } + // eslint-disable-next-line no-async-promise-executor return new Promise(async (resolve) => { const unsub = await xcmExecute.signAndSend(sender, (result: any) => { if (result.status.isFinalized) { From 994d83703ed4031c3d16ecbb515c5d0d619dc9f0 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Wed, 5 Jul 2023 14:41:13 +0200 Subject: [PATCH 18/27] xcm transfer asset works --- __tests__/transactionRouter.test.ts | 2 +- local_network.toml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index c39dec5..b95f074 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -120,7 +120,7 @@ describe("TransactionRouter", () => { // Mint some assets to the creator. await mintAsset(assetHubApi, sender, 0, 500); - const amount = 10000; + const amount = 200; // First lets add a network. await addNetwork(identityContract, alice, { diff --git a/local_network.toml b/local_network.toml index 6374371..ad11f18 100644 --- a/local_network.toml +++ b/local_network.toml @@ -2,7 +2,7 @@ default_command = "./bin/polkadot-v0.9.37" default_args = [ "-lparachain=debug" ] -chain = "rococo-local" +chain = "wococo-local" # relaychain nodes are by default validators [[relaychain.nodes]] ws_port = 4242 @@ -19,10 +19,11 @@ chain = "rococo-local" [[parachains]] id = 1000 +chain = "westmint-local" cumulus_based = true [parachains.collator] ws_port = 4243 - name = "statemine-collator-01" + name = "westmint-collator-01" command = "./bin/polkadot-parachain" args = ["--log=xcm=trace,pallet-assets=trace"] From b20309491c65d8a2c06e00f677d8eec7816bf17d Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Wed, 5 Jul 2023 15:18:54 +0200 Subject: [PATCH 19/27] ensure correct balance --- __tests__/transactionRouter.test.ts | 40 ++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index b95f074..6ab5ba4 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -59,11 +59,11 @@ describe("TransactionRouter", () => { const sender = alice; const receiver = bob; - const rococoProvider = new WsProvider("ws://127.0.0.1:4242"); - const rococoApi = await ApiPromise.create({ provider: rococoProvider }); + const westendProvider = new WsProvider("ws://127.0.0.1:4242"); + const westendApi = await ApiPromise.create({ provider: westendProvider }); // @ts-ignore - var { data: balance } = await rococoApi.query.system.account( + var { data: balance } = await westendApi.query.system.account( receiver.address ); const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, "")); @@ -93,7 +93,7 @@ describe("TransactionRouter", () => { ); // @ts-ignore - var { data: balance } = await rococoApi.query.system.account( + var { data: balance } = await westendApi.query.system.account( receiver.address ); const newReceiverBalance = parseInt( @@ -122,6 +122,20 @@ describe("TransactionRouter", () => { const amount = 200; + const senderAccountBefore: any = (await assetHubApi.query.assets.account( + 0, + sender.address + )).toHuman(); + + const senderBalanceBefore = parseInt(senderAccountBefore.balance.replace(/,/g, "")); + + const receiverAccountBefore: any = (await assetHubApi.query.assets.account( + 0, + receiver.address + )).toHuman(); + + const receiverBalanceBefore = parseInt(receiverAccountBefore.balance.replace(/,/g, "")); + // First lets add a network. await addNetwork(identityContract, alice, { rpcUrl: "ws://127.0.0.1:4243", @@ -147,6 +161,24 @@ describe("TransactionRouter", () => { }, amount ); + + const senderAccountAfter: any = (await assetHubApi.query.assets.account( + 0, + sender.address + )).toHuman(); + + const senderBalanceAfter = parseInt(senderAccountAfter.balance.replace(/,/g, "")); + + const receiverAccountAfter: any = (await assetHubApi.query.assets.account( + 0, + receiver.address + )).toHuman(); + + const receiverBalanceAfter = parseInt(receiverAccountAfter.balance.replace(/,/g, "")); + + expect(senderBalanceAfter).toBe(senderBalanceBefore - amount); + expect(receiverBalanceAfter).toBe(receiverBalanceBefore + amount); + }, 120000); }); From 3eae6990d3d697a4e1c4247bf733c4192b10f172 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Wed, 5 Jul 2023 15:20:40 +0200 Subject: [PATCH 20/27] remove comment --- __tests__/transactionRouter.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 6ab5ba4..bc607a8 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -76,7 +76,6 @@ describe("TransactionRouter", () => { const amount = Math.pow(10, 12); - // TODO: the token transfer for some reason fails. await TransactionRouter.sendTokens( identityContract, sender, From 7abf3306e57ce00a6d389d4304e77d1729151c68 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Wed, 5 Jul 2023 17:44:44 +0200 Subject: [PATCH 21/27] update ci --- .github/workflows/ci.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41df761..f18186e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: - run: yarn install - run: 'CI=false yarn build' - run: yarn lint - test: + asset-registry-test: runs-on: ubuntu-latest strategy: matrix: @@ -34,7 +34,21 @@ jobs: node-version: ${{ matrix.node-version }} - run: yarn install - run: 'CI=false yarn build' - - run: yarn test + - run: yarn test -- __tests__/assetRegistry.test.ts + identity-key-test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [16.x, 18.x] + steps: + - uses: actions/checkout@v3.1.0 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: yarn install + - run: 'CI=false yarn build' + - run: yarn test -- __tests__/identityKey.test.ts all: needs: [build] From 685f7027b10171d241b263af147751cd1e1d94c6 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Thu, 6 Jul 2023 10:41:59 +0200 Subject: [PATCH 22/27] update readme --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3478da9..2b6dee9 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,22 @@ For details regarding the contract deployment go to this [page](https://github.c 2. `yarn install` 3. `yarn dev` 4. Go to `http://localhost:3000` to interact with the webapp -5. To run the unit tests: `yarn test` + +### Running tests + +Some tests require a zombienet network to be run in the background. The steps to take before running the tests are the following: + +1. Run a local [swanky](https://github.com/AstarNetwork/swanky-node) test node. This is where the contracts will be deployed to locally. The command to run: `./swanky-node --dev --tmp` +2. Run the local zombienet network: `zombienet-macos -p native spawn local_network.toml` + +After the swanky node and the zombienet is running you can run all the tests: + +``` +yarn test +``` + +The tests can take quite some time to run so, in case you want to run a specific test file, run the following command instead: + +``` +yarn test -- ./__tests__/test_file.test.ts +``` From b95de44bef87182697aa317a5589891d9c9c5fc7 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Fri, 7 Jul 2023 11:05:06 +0200 Subject: [PATCH 23/27] fix & cleanup --- __tests__/transactionRouter.test.ts | 2 +- src/utils/transactionRouter.ts | 32 ++++++++++++++++++----------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index bc607a8..097df52 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -133,7 +133,7 @@ describe("TransactionRouter", () => { receiver.address )).toHuman(); - const receiverBalanceBefore = parseInt(receiverAccountBefore.balance.replace(/,/g, "")); + const receiverBalanceBefore = receiverAccountBefore? parseInt(receiverAccountBefore.balance.replace(/,/g, "")) : 0; // First lets add a network. await addNetwork(identityContract, alice, { diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index d73c617..82e932e 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -6,21 +6,22 @@ import { AccountType } from "../../types/types-arguments/identity"; class TransactionRouter { public static async sendTokens( - contract: IdentityContract, + identityContract: IdentityContract, sender: KeyringPair, - originNetwork: number, + originNetworkId: number, receiver: Uint8Array, receiverAccountType: AccountType, - destinationNetwork: number, - token: any, + destinationNetworkId: number, + multiAsset: any, amount: number - ): Promise { - if (originNetwork == destinationNetwork && sender.addressRaw == receiver) { + ): Promise { + if (originNetworkId == destinationNetworkId && sender.addressRaw == receiver) { throw new Error("Cannot send tokens to yourself"); } - if (originNetwork == destinationNetwork) { - const rpcUrl = (await contract.query.networkInfoOf(originNetwork)).value + if (originNetworkId == destinationNetworkId) { + // We will extract all the chain information from the RPC node. + const rpcUrl = (await identityContract.query.networkInfoOf(originNetworkId)).value .ok?.rpcUrl; const wsProvider = new WsProvider(rpcUrl); @@ -31,7 +32,7 @@ class TransactionRouter { sender, receiver, receiverAccountType, - token, + multiAsset, amount ); } else { @@ -44,10 +45,15 @@ class TransactionRouter { sender: KeyringPair, receiver: Uint8Array, receiverAccountType: AccountType, - token: any, + multiAsset: any, amount: number ): Promise { - // Just a simple transfer. + // We use XCM even for transfers that are occurring on the same chain. The + // reason for this is that we cannot know what is the pallet and function + // for transferring tokens since it can be different on each chain. For that + // reason we will use the XCM `TransferAsset` instruction which is + // standardized and as far as the chain has an XCM executor the transaction + // will be executed correctly. const chainInfo = await api.registry.getChainProperties(); if (!chainInfo) { @@ -57,7 +63,7 @@ class TransactionRouter { const xcm = this.xcmTransferAssetMessage( receiver, receiverAccountType, - token, + multiAsset, amount ); @@ -83,6 +89,8 @@ class TransactionRouter { }); } + // Constructs a `TransferAsset` XCM message that will be executed when sending + // tokens on the same chain. private static xcmTransferAssetMessage( receiverAddress: Uint8Array, receiverAccountType: AccountType, From b119b679c0b20e2c3decabf055cede9c80e00d21 Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Fri, 7 Jul 2023 12:45:23 +0200 Subject: [PATCH 24/27] getting payment info --- src/utils/transactionRouter.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 82e932e..722e8f5 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -70,10 +70,33 @@ class TransactionRouter { let xcmExecute: any; if (api.tx.xcmPallet) { + const paymentInfo = (await api.tx.xcmPallet + .execute(xcm, 0) + .paymentInfo(sender)).toHuman(); + + if(!paymentInfo || !paymentInfo.weight) { + throw new Error("Couldn't estimate transaction fee"); + } + + // @ts-ignore + const xcmMaxRefTime = parseInt(paymentInfo.weight.refTime.replace(/,/g, "")); + // TODO: don't hardcode the max weight. - xcmExecute = api.tx.xcmPallet.execute(xcm, 3000000000); + xcmExecute = api.tx.xcmPallet.execute(xcm, xcmMaxRefTime * 10); } else if (api.tx.polkadotXcm) { - xcmExecute = api.tx.polkadotXcm.execute(xcm, 3000000000); + const paymentInfo = (await api.tx.polkadotXcm + .execute(xcm, 0) + .paymentInfo(sender)).toHuman(); + + if(!paymentInfo || !paymentInfo.weight) { + throw new Error("Couldn't estimate transaction fee"); + } + + // @ts-ignore + const xcmMaxRefTime = parseInt(paymentInfo.weight.refTime.replace(/,/g, "")); + + // TODO: don't hardcode the max weight. + xcmExecute = api.tx.polkadotXcm.execute(xcm, xcmMaxRefTime * 10); } else { throw new Error("The blockchain does not support XCM"); } From 5b65cfe8b0c4ba7a7d5a8b41efecfd58af533d9e Mon Sep 17 00:00:00 2001 From: Sergej Sakac Date: Sun, 9 Jul 2023 08:11:30 -0700 Subject: [PATCH 25/27] fix lint error --- src/utils/transactionRouter.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 722e8f5..19df886 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -78,6 +78,7 @@ class TransactionRouter { throw new Error("Couldn't estimate transaction fee"); } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const xcmMaxRefTime = parseInt(paymentInfo.weight.refTime.replace(/,/g, "")); @@ -92,6 +93,7 @@ class TransactionRouter { throw new Error("Couldn't estimate transaction fee"); } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const xcmMaxRefTime = parseInt(paymentInfo.weight.refTime.replace(/,/g, "")); From 1c1f5ae231823148e53e7e0a8aebb92886934b32 Mon Sep 17 00:00:00 2001 From: cuteolaf Date: Mon, 10 Jul 2023 18:43:34 -0700 Subject: [PATCH 26/27] fix: lint errors --- types/build-extrinsic/address_book.ts | 61 +++++----- types/build-extrinsic/identity.ts | 109 ++++++++--------- types/constructors/address_book.ts | 83 +++++++------ types/constructors/identity.ts | 68 ++++++----- types/contracts/address_book.ts | 41 +++---- types/contracts/identity.ts | 41 +++---- types/event-types/address_book.ts | 1 - types/event-types/identity.ts | 1 - types/events/address_book.ts | 56 ++++----- types/events/identity.ts | 80 ++++++------- types/mixed-methods/address_book.ts | 86 +++++++------- types/mixed-methods/identity.ts | 134 ++++++++++----------- types/query/address_book.ts | 91 +++++++-------- types/query/identity.ts | 155 ++++++++++++------------- types/shared/utils.ts | 13 +-- types/tx-sign-and-send/address_book.ts | 86 +++++++------- types/tx-sign-and-send/identity.ts | 150 ++++++++++++------------ types/types-arguments/address_book.ts | 2 +- types/types-arguments/identity.ts | 1 + types/types-returns/address_book.ts | 3 +- types/types-returns/identity.ts | 3 +- 21 files changed, 646 insertions(+), 619 deletions(-) diff --git a/types/build-extrinsic/address_book.ts b/types/build-extrinsic/address_book.ts index 6926713..c260685 100644 --- a/types/build-extrinsic/address_book.ts +++ b/types/build-extrinsic/address_book.ts @@ -1,20 +1,21 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import type { GasLimit } from '@727-ventures/typechain-types'; import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/address_book'; -import type BN from 'bn.js'; import type { ApiPromise } from '@polkadot/api'; +import type { ContractPromise } from '@polkadot/api-contract'; +import type BN from 'bn.js'; + +import type * as ArgumentTypes from '../types-arguments/address_book'; export default class Methods { - private __nativeContract : ContractPromise; + private __nativeContract: ContractPromise; private __apiPromise: ApiPromise; constructor( - nativeContract : ContractPromise, + nativeContract: ContractPromise, apiPromise: ApiPromise, ) { this.__nativeContract = nativeContract; @@ -24,30 +25,30 @@ export default class Methods { * identityContract * */ - "identityContract" ( + "identityContract"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identityContract", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "identityContract", [], __options); } /** * createAddressBook * */ - "createAddressBook" ( + "createAddressBook"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "createAddressBook", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "createAddressBook", [], __options); } /** * removeAddressBook * */ - "removeAddressBook" ( + "removeAddressBook"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeAddressBook", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "removeAddressBook", [], __options); } /** @@ -56,12 +57,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { string | null } nickname, */ - "addIdentity" ( + "addIdentity"( identityNo: (number | string | BN), nickname: string | null, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addIdentity", [identityNo, nickname], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "addIdentity", [identityNo, nickname], __options); } /** @@ -69,11 +70,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "removeIdentity" ( + "removeIdentity"( identityNo: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeIdentity", [identityNo], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "removeIdentity", [identityNo], __options); } /** @@ -82,12 +83,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { string | null } newNickname, */ - "updateNickname" ( + "updateNickname"( identityNo: (number | string | BN), newNickname: string | null, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNickname", [identityNo, newNickname], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "updateNickname", [identityNo, newNickname], __options); } /** @@ -95,21 +96,21 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } account, */ - "identitiesOf" ( + "identitiesOf"( account: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identitiesOf", [account], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "identitiesOf", [account], __options); } /** * hasAddressBook * */ - "hasAddressBook" ( + "hasAddressBook"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "hasAddressBook", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "hasAddressBook", [], __options); } } \ No newline at end of file diff --git a/types/build-extrinsic/identity.ts b/types/build-extrinsic/identity.ts index b4df9e4..3481097 100644 --- a/types/build-extrinsic/identity.ts +++ b/types/build-extrinsic/identity.ts @@ -1,20 +1,21 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import type { GasLimit } from '@727-ventures/typechain-types'; import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/identity'; -import type BN from 'bn.js'; import type { ApiPromise } from '@polkadot/api'; +import type { ContractPromise } from '@polkadot/api-contract'; +import type BN from 'bn.js'; + +import type * as ArgumentTypes from '../types-arguments/identity'; export default class Methods { - private __nativeContract : ContractPromise; + private __nativeContract: ContractPromise; private __apiPromise: ApiPromise; constructor( - nativeContract : ContractPromise, + nativeContract: ContractPromise, apiPromise: ApiPromise, ) { this.__nativeContract = nativeContract; @@ -25,11 +26,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "identity" ( + "identity"( identityNo: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identity", [identityNo], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "identity", [identityNo], __options); } /** @@ -37,11 +38,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "ownerOf" ( + "ownerOf"( identityNo: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "ownerOf", [identityNo], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "ownerOf", [identityNo], __options); } /** @@ -49,11 +50,11 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } owner, */ - "identityOf" ( + "identityOf"( owner: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "identityOf", [owner], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "identityOf", [owner], __options); } /** @@ -61,11 +62,11 @@ export default class Methods { * * @param { (number | string | BN) } networkId, */ - "networkInfoOf" ( + "networkInfoOf"( networkId: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "networkInfoOf", [networkId], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "networkInfoOf", [networkId], __options); } /** @@ -74,32 +75,32 @@ export default class Methods { * @param { (number | string | BN) } receiver, * @param { (number | string | BN) } network, */ - "transactionDestination" ( + "transactionDestination"( receiver: (number | string | BN), network: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "transactionDestination", [receiver, network], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "transactionDestination", [receiver, network], __options); } /** * availableNetworks * */ - "availableNetworks" ( + "availableNetworks"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "availableNetworks", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "availableNetworks", [], __options); } /** * createIdentity * */ - "createIdentity" ( + "createIdentity"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "createIdentity", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "createIdentity", [], __options); } /** @@ -108,12 +109,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @param { Array<(number | string | BN)> } address, */ - "addAddress" ( + "addAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addAddress", [network, address], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "addAddress", [network, address], __options); } /** @@ -122,12 +123,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @param { Array<(number | string | BN)> } address, */ - "updateAddress" ( + "updateAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateAddress", [network, address], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "updateAddress", [network, address], __options); } /** @@ -135,21 +136,21 @@ export default class Methods { * * @param { (number | string | BN) } network, */ - "removeAddress" ( + "removeAddress"( network: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeAddress", [network], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "removeAddress", [network], __options); } /** * removeIdentity * */ - "removeIdentity" ( + "removeIdentity"( __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeIdentity", [], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "removeIdentity", [], __options); } /** @@ -157,11 +158,11 @@ export default class Methods { * * @param { ArgumentTypes.NetworkInfo } info, */ - "addNetwork" ( + "addNetwork"( info: ArgumentTypes.NetworkInfo, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "addNetwork", [info], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "addNetwork", [info], __options); } /** @@ -171,13 +172,13 @@ export default class Methods { * @param { string | null } newRpcUrl, * @param { ArgumentTypes.AccountType | null } newAddressType, */ - "updateNetwork" ( + "updateNetwork"( networkId: (number | string | BN), newRpcUrl: string | null, newAddressType: ArgumentTypes.AccountType | null, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options); } /** @@ -185,11 +186,11 @@ export default class Methods { * * @param { (number | string | BN) } networkId, */ - "removeNetwork" ( + "removeNetwork"( networkId: (number | string | BN), __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "removeNetwork", [networkId], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "removeNetwork", [networkId], __options); } /** @@ -197,11 +198,11 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } recoveryAccount, */ - "setRecoveryAccount" ( + "setRecoveryAccount"( recoveryAccount: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "setRecoveryAccount", [recoveryAccount], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "setRecoveryAccount", [recoveryAccount], __options); } /** @@ -210,12 +211,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { ArgumentTypes.AccountId } newOwner, */ - "transferOwnership" ( + "transferOwnership"( identityNo: (number | string | BN), newOwner: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "transferOwnership", [identityNo, newOwner], __options); + ) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, "transferOwnership", [identityNo, newOwner], __options); } } \ No newline at end of file diff --git a/types/constructors/address_book.ts b/types/constructors/address_book.ts index 5b88358..56eee49 100644 --- a/types/constructors/address_book.ts +++ b/types/constructors/address_book.ts @@ -1,53 +1,70 @@ -import {CodePromise} from "@polkadot/api-contract"; -import type {KeyringPair} from "@polkadot/keyring/types"; -import type {ApiPromise} from "@polkadot/api"; -import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; -import type {ConstructorOptions} from "@727-ventures/typechain-types"; -import type {WeightV2} from "@polkadot/types/interfaces"; -import type * as ArgumentTypes from '../types-arguments/address_book'; +import type { ConstructorOptions } from '@727-ventures/typechain-types'; +import { + _genValidGasLimitAndValue, + _signAndSend, + SignAndSendSuccessResponse, +} from '@727-ventures/typechain-types'; +import type { ApiPromise } from '@polkadot/api'; +import { CodePromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { WeightV2 } from '@polkadot/types/interfaces'; + import { ContractFile } from '../contract-info/address_book'; -import type BN from 'bn.js'; +import type * as ArgumentTypes from '../types-arguments/address_book'; export default class Constructors { readonly nativeAPI: ApiPromise; readonly signer: KeyringPair; - constructor( - nativeAPI: ApiPromise, - signer: KeyringPair, - ) { + constructor(nativeAPI: ApiPromise, signer: KeyringPair) { this.nativeAPI = nativeAPI; this.signer = signer; } /** - * new - * - * @param { ArgumentTypes.AccountId } identityContract, - */ - async "new" ( + * new + * + * @param { ArgumentTypes.AccountId } identityContract, + */ + async new( identityContract: ArgumentTypes.AccountId, - __options ? : ConstructorOptions, - ) { - const __contract = JSON.parse(ContractFile); - const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); - const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + __options?: ConstructorOptions + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise( + this.nativeAPI, + __contract, + __contract.source.wasm + ); + const gasLimit = ( + await _genValidGasLimitAndValue(this.nativeAPI, __options) + ).gasLimit as WeightV2; const storageDepositLimit = __options?.storageDepositLimit; - const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, identityContract); - let response; + const tx = code.tx['new']!( + { gasLimit, storageDepositLimit, value: __options?.value }, + identityContract + ); + let response; - try { - response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); - } - catch (error) { - console.log(error); - } + try { + response = await _signAndSend( + this.nativeAPI.registry, + tx, + this.signer, + (event: any) => event + ); + } catch (error) { + // eslint-disable-next-line no-console + console.log(error); + } return { result: response as SignAndSendSuccessResponse, - // @ts-ignore - address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + address: + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), }; } -} \ No newline at end of file +} diff --git a/types/constructors/identity.ts b/types/constructors/identity.ts index 7887d46..e4c2e71 100644 --- a/types/constructors/identity.ts +++ b/types/constructors/identity.ts @@ -1,12 +1,12 @@ -import {CodePromise} from "@polkadot/api-contract"; -import type {KeyringPair} from "@polkadot/keyring/types"; -import type {ApiPromise} from "@polkadot/api"; -import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; -import type {ConstructorOptions} from "@727-ventures/typechain-types"; -import type {WeightV2} from "@polkadot/types/interfaces"; -import type * as ArgumentTypes from '../types-arguments/identity'; +import type { ConstructorOptions } from "@727-ventures/typechain-types"; +import { _genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse } from "@727-ventures/typechain-types"; +import type { ApiPromise } from "@polkadot/api"; +import { CodePromise } from "@polkadot/api-contract"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import type { WeightV2 } from "@polkadot/types/interfaces"; + import { ContractFile } from '../contract-info/identity'; -import type BN from 'bn.js'; +import type * as ArgumentTypes from '../types-arguments/identity'; export default class Constructors { readonly nativeAPI: ApiPromise; @@ -24,26 +24,28 @@ export default class Constructors { * new * */ - async "new" ( - __options ? : ConstructorOptions, - ) { - const __contract = JSON.parse(ContractFile); + async "new"( + __options?: ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; const storageDepositLimit = __options?.storageDepositLimit; - const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, ); - let response; + const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value },); + let response; - try { - response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); - } - catch (error) { - console.log(error); - } + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + // eslint-disable-next-line no-console + console.log(error); + } return { result: response as SignAndSendSuccessResponse, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), }; @@ -53,27 +55,29 @@ export default class Constructors { * * @param { Array } networks, */ - async "initWithNetworks" ( + async "initWithNetworks"( networks: Array, - __options ? : ConstructorOptions, - ) { - const __contract = JSON.parse(ContractFile); + __options?: ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; const storageDepositLimit = __options?.storageDepositLimit; - const tx = code.tx["initWithNetworks"]!({ gasLimit, storageDepositLimit, value: __options?.value }, networks); - let response; + const tx = code.tx["initWithNetworks"]!({ gasLimit, storageDepositLimit, value: __options?.value }, networks); + let response; - try { - response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); - } - catch (error) { - console.log(error); - } + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + // eslint-disable-next-line no-console + console.log(error); + } return { result: response as SignAndSendSuccessResponse, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), }; diff --git a/types/contracts/address_book.ts b/types/contracts/address_book.ts index e80d81b..6dd6d82 100644 --- a/types/contracts/address_book.ts +++ b/types/contracts/address_book.ts @@ -2,28 +2,29 @@ import type { ApiPromise } from '@polkadot/api'; import { Abi } from '@polkadot/api-contract'; -import type { KeyringPair } from '@polkadot/keyring/types'; import { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; + +import BuildExtrinsicMethods from '../build-extrinsic/address_book'; import { ContractAbi } from '../contract-info/address_book'; +import EventsClass from '../events/address_book'; +import MixedMethods from '../mixed-methods/address_book'; import QueryMethods from '../query/address_book'; -import BuildExtrinsicMethods from '../build-extrinsic/address_book'; import TxSignAndSendMethods from '../tx-sign-and-send/address_book'; -import MixedMethods from '../mixed-methods/address_book'; -import EventsClass from '../events/address_book'; export default class Contract { - readonly query : QueryMethods; - readonly buildExtrinsic : BuildExtrinsicMethods; - readonly tx : TxSignAndSendMethods; - readonly methods : MixedMethods; + readonly query: QueryMethods; + readonly buildExtrinsic: BuildExtrinsicMethods; + readonly tx: TxSignAndSendMethods; + readonly methods: MixedMethods; readonly events: EventsClass; - readonly address : string; - readonly signer : KeyringPair; + readonly address: string; + readonly signer: KeyringPair; - private nativeContract : ContractPromise; - private nativeAPI : ApiPromise; + private nativeContract: ContractPromise; + private nativeAPI: ApiPromise; private contractAbi: Abi; /** @@ -34,9 +35,9 @@ export default class Contract { * @param nativeAPI - The API instance to use for queries. */ constructor( - address : string, - signer : KeyringPair, - nativeAPI : ApiPromise, + address: string, + signer: KeyringPair, + nativeAPI: ApiPromise, ) { this.address = address; this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); @@ -56,7 +57,7 @@ export default class Contract { * * @returns The name of the contract. */ - get name() : string { + get name(): string { return this.nativeContract.abi.info.contract.name.toString(); } @@ -65,7 +66,7 @@ export default class Contract { * * @returns The abi of the contract. */ - get abi() : Abi { + get abi(): Abi { return this.contractAbi; } @@ -81,7 +82,7 @@ export default class Contract { * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); * ``` */ - withSigner(signer : KeyringPair) : Contract { + withSigner(signer: KeyringPair): Contract { return new Contract(this.address, signer, this.nativeAPI); } @@ -91,7 +92,7 @@ export default class Contract { * @param address - The address of the contract. * @returns New instance of the contract class to interact with new contract. */ - withAddress(address : string) : Contract { + withAddress(address: string): Contract { return new Contract(address, this.signer, this.nativeAPI); } @@ -101,7 +102,7 @@ export default class Contract { * @param api - The API instance to use for queries. * @returns New instance of the contract class to interact with new API. */ - withAPI(api : ApiPromise) : Contract { + withAPI(api: ApiPromise): Contract { return new Contract(this.address, this.signer, api); } } \ No newline at end of file diff --git a/types/contracts/identity.ts b/types/contracts/identity.ts index 85277d2..b38e319 100644 --- a/types/contracts/identity.ts +++ b/types/contracts/identity.ts @@ -2,28 +2,29 @@ import type { ApiPromise } from '@polkadot/api'; import { Abi } from '@polkadot/api-contract'; -import type { KeyringPair } from '@polkadot/keyring/types'; import { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; + +import BuildExtrinsicMethods from '../build-extrinsic/identity'; import { ContractAbi } from '../contract-info/identity'; +import EventsClass from '../events/identity'; +import MixedMethods from '../mixed-methods/identity'; import QueryMethods from '../query/identity'; -import BuildExtrinsicMethods from '../build-extrinsic/identity'; import TxSignAndSendMethods from '../tx-sign-and-send/identity'; -import MixedMethods from '../mixed-methods/identity'; -import EventsClass from '../events/identity'; export default class Contract { - readonly query : QueryMethods; - readonly buildExtrinsic : BuildExtrinsicMethods; - readonly tx : TxSignAndSendMethods; - readonly methods : MixedMethods; + readonly query: QueryMethods; + readonly buildExtrinsic: BuildExtrinsicMethods; + readonly tx: TxSignAndSendMethods; + readonly methods: MixedMethods; readonly events: EventsClass; - readonly address : string; - readonly signer : KeyringPair; + readonly address: string; + readonly signer: KeyringPair; - private nativeContract : ContractPromise; - private nativeAPI : ApiPromise; + private nativeContract: ContractPromise; + private nativeAPI: ApiPromise; private contractAbi: Abi; /** @@ -34,9 +35,9 @@ export default class Contract { * @param nativeAPI - The API instance to use for queries. */ constructor( - address : string, - signer : KeyringPair, - nativeAPI : ApiPromise, + address: string, + signer: KeyringPair, + nativeAPI: ApiPromise, ) { this.address = address; this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); @@ -56,7 +57,7 @@ export default class Contract { * * @returns The name of the contract. */ - get name() : string { + get name(): string { return this.nativeContract.abi.info.contract.name.toString(); } @@ -65,7 +66,7 @@ export default class Contract { * * @returns The abi of the contract. */ - get abi() : Abi { + get abi(): Abi { return this.contractAbi; } @@ -81,7 +82,7 @@ export default class Contract { * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); * ``` */ - withSigner(signer : KeyringPair) : Contract { + withSigner(signer: KeyringPair): Contract { return new Contract(this.address, signer, this.nativeAPI); } @@ -91,7 +92,7 @@ export default class Contract { * @param address - The address of the contract. * @returns New instance of the contract class to interact with new contract. */ - withAddress(address : string) : Contract { + withAddress(address: string): Contract { return new Contract(address, this.signer, this.nativeAPI); } @@ -101,7 +102,7 @@ export default class Contract { * @param api - The API instance to use for queries. * @returns New instance of the contract class to interact with new API. */ - withAPI(api : ApiPromise) : Contract { + withAPI(api: ApiPromise): Contract { return new Contract(this.address, this.signer, api); } } \ No newline at end of file diff --git a/types/event-types/address_book.ts b/types/event-types/address_book.ts index 35ee903..23ff62d 100644 --- a/types/event-types/address_book.ts +++ b/types/event-types/address_book.ts @@ -1,4 +1,3 @@ -import type {ReturnNumber} from "@727-ventures/typechain-types"; import type * as ReturnTypes from '../types-returns/address_book'; export interface AddressBookCreated { diff --git a/types/event-types/identity.ts b/types/event-types/identity.ts index bc28042..c55f27f 100644 --- a/types/event-types/identity.ts +++ b/types/event-types/identity.ts @@ -1,4 +1,3 @@ -import type {ReturnNumber} from "@727-ventures/typechain-types"; import type * as ReturnTypes from '../types-returns/identity'; export interface IdentityCreated { diff --git a/types/events/address_book.ts b/types/events/address_book.ts index 19ff03c..371819c 100644 --- a/types/events/address_book.ts +++ b/types/events/address_book.ts @@ -1,25 +1,26 @@ -import type * as EventTypes from '../event-types/address_book'; -import type {ContractPromise} from "@polkadot/api-contract"; -import type {ApiPromise} from "@polkadot/api"; +import { handleEventReturn } from "@727-ventures/typechain-types"; +import type { ApiPromise } from "@polkadot/api"; +import type { ContractPromise } from "@polkadot/api-contract"; + import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; -import {getEventTypeDescription} from "../shared/utils"; -import {handleEventReturn} from "@727-ventures/typechain-types"; +import type * as EventTypes from '../event-types/address_book'; +import { getEventTypeDescription } from "../shared/utils"; export default class EventsClass { - private __nativeContract : ContractPromise; - private __api : ApiPromise; + private __nativeContract: ContractPromise; + private __api: ApiPromise; constructor( - nativeContract : ContractPromise, - api : ApiPromise, + nativeContract: ContractPromise, + api: ApiPromise, ) { this.__nativeContract = nativeContract; this.__api = api; } - public subscribeOnAddressBookCreatedEvent(callback : (event : EventTypes.AddressBookCreated) => void) { + public subscribeOnAddressBookCreatedEvent(callback: (_event: EventTypes.AddressBookCreated) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -28,12 +29,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('AddressBookCreated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressBookCreated); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressBookCreated'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'AddressBookCreated'); } - public subscribeOnAddressBookRemovedEvent(callback : (event : EventTypes.AddressBookRemoved) => void) { + public subscribeOnAddressBookRemovedEvent(callback: (_event: EventTypes.AddressBookRemoved) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -42,12 +43,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('AddressBookRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressBookRemoved); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressBookRemoved'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'AddressBookRemoved'); } - public subscribeOnIdentityAddedEvent(callback : (event : EventTypes.IdentityAdded) => void) { + public subscribeOnIdentityAddedEvent(callback: (_event: EventTypes.IdentityAdded) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -56,12 +57,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('IdentityAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityAdded); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityAdded'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'IdentityAdded'); } - public subscribeOnNickNameUpdatedEvent(callback : (event : EventTypes.NickNameUpdated) => void) { + public subscribeOnNickNameUpdatedEvent(callback: (_event: EventTypes.NickNameUpdated) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -70,12 +71,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('NickNameUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NickNameUpdated); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NickNameUpdated'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'NickNameUpdated'); } - public subscribeOnIdentityRemovedEvent(callback : (event : EventTypes.IdentityRemoved) => void) { + public subscribeOnIdentityRemovedEvent(callback: (_event: EventTypes.IdentityRemoved) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -84,14 +85,15 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('IdentityRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityRemoved); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityRemoved'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'IdentityRemoved'); } private __subscribeOnEvent( - callback : (args: any[], event: any) => void, - filter : (eventName: string) => boolean = () => true + callback: (_args: any[], _event: any) => void, + filter: (_eventName: string) => boolean = () => true ) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return this.__api.query.system.events((events) => { events.forEach((record: any) => { @@ -101,7 +103,7 @@ export default class EventsClass { const [address, data] = record.event.data; if (address.toString() === this.__nativeContract.address.toString()) { - const {args, event} = this.__nativeContract.abi.decodeEvent(data); + const { args, event } = this.__nativeContract.abi.decodeEvent(data); if (filter(event.identifier.toString())) callback(args, event); diff --git a/types/events/identity.ts b/types/events/identity.ts index b84a1d5..2f0fbb0 100644 --- a/types/events/identity.ts +++ b/types/events/identity.ts @@ -1,25 +1,26 @@ -import type * as EventTypes from '../event-types/identity'; -import type {ContractPromise} from "@polkadot/api-contract"; -import type {ApiPromise} from "@polkadot/api"; +import { handleEventReturn } from "@727-ventures/typechain-types"; +import type { ApiPromise } from "@polkadot/api"; +import type { ContractPromise } from "@polkadot/api-contract"; + import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; -import {getEventTypeDescription} from "../shared/utils"; -import {handleEventReturn} from "@727-ventures/typechain-types"; +import type * as EventTypes from '../event-types/identity'; +import { getEventTypeDescription } from "../shared/utils"; export default class EventsClass { - private __nativeContract : ContractPromise; - private __api : ApiPromise; + private __nativeContract: ContractPromise; + private __api: ApiPromise; constructor( - nativeContract : ContractPromise, - api : ApiPromise, + nativeContract: ContractPromise, + api: ApiPromise, ) { this.__nativeContract = nativeContract; this.__api = api; } - public subscribeOnIdentityCreatedEvent(callback : (event : EventTypes.IdentityCreated) => void) { + public subscribeOnIdentityCreatedEvent(callback: (_event: EventTypes.IdentityCreated) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -28,12 +29,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('IdentityCreated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityCreated); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityCreated'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'IdentityCreated'); } - public subscribeOnAddressAddedEvent(callback : (event : EventTypes.AddressAdded) => void) { + public subscribeOnAddressAddedEvent(callback: (_event: EventTypes.AddressAdded) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -42,12 +43,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('AddressAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressAdded); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressAdded'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'AddressAdded'); } - public subscribeOnAddressUpdatedEvent(callback : (event : EventTypes.AddressUpdated) => void) { + public subscribeOnAddressUpdatedEvent(callback: (_event: EventTypes.AddressUpdated) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -56,12 +57,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('AddressUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressUpdated); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressUpdated'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'AddressUpdated'); } - public subscribeOnAddressRemovedEvent(callback : (event : EventTypes.AddressRemoved) => void) { + public subscribeOnAddressRemovedEvent(callback: (_event: EventTypes.AddressRemoved) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -70,12 +71,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('AddressRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.AddressRemoved); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'AddressRemoved'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'AddressRemoved'); } - public subscribeOnIdentityRemovedEvent(callback : (event : EventTypes.IdentityRemoved) => void) { + public subscribeOnIdentityRemovedEvent(callback: (_event: EventTypes.IdentityRemoved) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -84,12 +85,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('IdentityRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.IdentityRemoved); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'IdentityRemoved'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'IdentityRemoved'); } - public subscribeOnNetworkAddedEvent(callback : (event : EventTypes.NetworkAdded) => void) { + public subscribeOnNetworkAddedEvent(callback: (_event: EventTypes.NetworkAdded) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -98,12 +99,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('NetworkAdded', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkAdded); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkAdded'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'NetworkAdded'); } - public subscribeOnNetworkUpdatedEvent(callback : (event : EventTypes.NetworkUpdated) => void) { + public subscribeOnNetworkUpdatedEvent(callback: (_event: EventTypes.NetworkUpdated) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -112,12 +113,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('NetworkUpdated', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkUpdated); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkUpdated'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'NetworkUpdated'); } - public subscribeOnNetworkRemovedEvent(callback : (event : EventTypes.NetworkRemoved) => void) { + public subscribeOnNetworkRemovedEvent(callback: (_event: EventTypes.NetworkRemoved) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -126,12 +127,12 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('NetworkRemoved', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.NetworkRemoved); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'NetworkRemoved'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'NetworkRemoved'); } - public subscribeOnRecoveryAccountSetEvent(callback : (event : EventTypes.RecoveryAccountSet) => void) { + public subscribeOnRecoveryAccountSetEvent(callback: (_event: EventTypes.RecoveryAccountSet) => void) { const callbackWrapper = (args: any[], event: any) => { - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); @@ -140,14 +141,15 @@ export default class EventsClass { callback(handleEventReturn(_event, getEventTypeDescription('RecoveryAccountSet', EVENT_DATA_TYPE_DESCRIPTIONS)) as EventTypes.RecoveryAccountSet); }; - return this.__subscribeOnEvent(callbackWrapper, (eventName : string) => eventName == 'RecoveryAccountSet'); + return this.__subscribeOnEvent(callbackWrapper, (eventName: string) => eventName == 'RecoveryAccountSet'); } private __subscribeOnEvent( - callback : (args: any[], event: any) => void, - filter : (eventName: string) => boolean = () => true + callback: (_args: any[], _event: any) => void, + filter: (_eventName: string) => boolean = () => true ) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return this.__api.query.system.events((events) => { events.forEach((record: any) => { @@ -157,7 +159,7 @@ export default class EventsClass { const [address, data] = record.event.data; if (address.toString() === this.__nativeContract.address.toString()) { - const {args, event} = this.__nativeContract.abi.decodeEvent(data); + const { args, event } = this.__nativeContract.abi.decodeEvent(data); if (filter(event.identifier.toString())) callback(args, event); diff --git a/types/mixed-methods/address_book.ts b/types/mixed-methods/address_book.ts index b305e43..fc088ef 100644 --- a/types/mixed-methods/address_book.ts +++ b/types/mixed-methods/address_book.ts @@ -1,35 +1,37 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { ApiPromise } from '@polkadot/api'; -import type { KeyringPair } from '@polkadot/keyring/types'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { GasLimit, Result } from '@727-ventures/typechain-types'; import type { QueryReturnType } from '@727-ventures/typechain-types'; -import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { handleReturnType, queryOkJSON } from '@727-ventures/typechain-types'; import { txSignAndSend } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/address_book'; -import type * as ReturnTypes from '../types-returns/address_book'; -import type BN from 'bn.js'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore -import {ReturnNumber} from '@727-ventures/typechain-types'; -import {getTypeDescription} from './../shared/utils'; +import type { ApiPromise } from '@polkadot/api'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import type {EventRecord} from "@polkadot/api/submittable"; -import {decodeEvents} from "../shared/utils"; +import type { EventRecord } from "@polkadot/api/submittable"; +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type BN from 'bn.js'; + +import { getTypeDescription } from './../shared/utils'; import DATA_TYPE_DESCRIPTIONS from '../data/address_book.json'; import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; +import { decodeEvents } from "../shared/utils"; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type * as ReturnTypes from '../types-returns/address_book'; export default class Methods { - private __nativeContract : ContractPromise; - private __keyringPair : KeyringPair; - private __callerAddress : string; + private __nativeContract: ContractPromise; + private __keyringPair: KeyringPair; + private __callerAddress: string; private __apiPromise: ApiPromise; constructor( - apiPromise : ApiPromise, - nativeContract : ContractPromise, - keyringPair : KeyringPair, + apiPromise: ApiPromise, + nativeContract: ContractPromise, + keyringPair: KeyringPair, ) { this.__apiPromise = apiPromise; this.__nativeContract = nativeContract; @@ -42,10 +44,10 @@ export default class Methods { * * @returns { Result } */ - "identityContract" ( + "identityContract"( __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options, (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options, (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -53,10 +55,10 @@ export default class Methods { * * @returns { void } */ - "createAddressBook" ( + "createAddressBook"( __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -66,10 +68,10 @@ export default class Methods { * * @returns { void } */ - "removeAddressBook" ( + "removeAddressBook"( __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -81,12 +83,12 @@ export default class Methods { * @param { string | null } nickname, * @returns { void } */ - "addIdentity" ( + "addIdentity"( identityNo: (number | string | BN), nickname: string | null, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, nickname], __options); } @@ -97,11 +99,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { void } */ - "removeIdentity" ( + "removeIdentity"( identityNo: (number | string | BN), __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo], __options); } @@ -113,12 +115,12 @@ export default class Methods { * @param { string | null } newNickname, * @returns { void } */ - "updateNickname" ( + "updateNickname"( identityNo: (number | string | BN), newNickname: string | null, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, newNickname], __options); } @@ -129,11 +131,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } account, * @returns { Result, ReturnTypes.LangError> } */ - "identitiesOf" ( + "identitiesOf"( account: ArgumentTypes.AccountId, __options: GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -141,10 +143,10 @@ export default class Methods { * * @returns { Result } */ - "hasAddressBook" ( + "hasAddressBook"( __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); } } \ No newline at end of file diff --git a/types/mixed-methods/identity.ts b/types/mixed-methods/identity.ts index c2485c2..98a5154 100644 --- a/types/mixed-methods/identity.ts +++ b/types/mixed-methods/identity.ts @@ -1,35 +1,37 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { ApiPromise } from '@polkadot/api'; -import type { KeyringPair } from '@polkadot/keyring/types'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { GasLimit, Result } from '@727-ventures/typechain-types'; import type { QueryReturnType } from '@727-ventures/typechain-types'; -import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { handleReturnType, queryOkJSON } from '@727-ventures/typechain-types'; import { txSignAndSend } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/identity'; -import type * as ReturnTypes from '../types-returns/identity'; -import type BN from 'bn.js'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore -import {ReturnNumber} from '@727-ventures/typechain-types'; -import {getTypeDescription} from './../shared/utils'; +import type { ApiPromise } from '@polkadot/api'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import type {EventRecord} from "@polkadot/api/submittable"; -import {decodeEvents} from "../shared/utils"; +import type { EventRecord } from "@polkadot/api/submittable"; +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type BN from 'bn.js'; + +import { getTypeDescription } from './../shared/utils'; import DATA_TYPE_DESCRIPTIONS from '../data/identity.json'; import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; +import { decodeEvents } from "../shared/utils"; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type * as ReturnTypes from '../types-returns/identity'; export default class Methods { - private __nativeContract : ContractPromise; - private __keyringPair : KeyringPair; - private __callerAddress : string; + private __nativeContract: ContractPromise; + private __keyringPair: KeyringPair; + private __callerAddress: string; private __apiPromise: ApiPromise; constructor( - apiPromise : ApiPromise, - nativeContract : ContractPromise, - keyringPair : KeyringPair, + apiPromise: ApiPromise, + nativeContract: ContractPromise, + keyringPair: KeyringPair, ) { this.__apiPromise = apiPromise; this.__nativeContract = nativeContract; @@ -43,11 +45,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { Result } */ - "identity" ( + "identity"( identityNo: (number | string | BN), __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -56,11 +58,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { Result } */ - "ownerOf" ( + "ownerOf"( identityNo: (number | string | BN), __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -69,11 +71,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } owner, * @returns { Result } */ - "identityOf" ( + "identityOf"( owner: ArgumentTypes.AccountId, __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options, (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options, (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -82,11 +84,11 @@ export default class Methods { * @param { (number | string | BN) } networkId, * @returns { Result } */ - "networkInfoOf" ( + "networkInfoOf"( networkId: (number | string | BN), __options: GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options, (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options, (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -96,12 +98,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @returns { Result, ReturnTypes.Error>, ReturnTypes.LangError> } */ - "transactionDestination" ( + "transactionDestination"( receiver: (number | string | BN), network: (number | string | BN), __options: GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.Error>, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options, (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise, ReturnTypes.Error>, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options, (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -109,10 +111,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "availableNetworks" ( + "availableNetworks"( __options: GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options, (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options, (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -120,10 +122,10 @@ export default class Methods { * * @returns { void } */ - "createIdentity" ( + "createIdentity"( __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -135,12 +137,12 @@ export default class Methods { * @param { Array<(number | string | BN)> } address, * @returns { void } */ - "addAddress" ( + "addAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network, address], __options); } @@ -152,12 +154,12 @@ export default class Methods { * @param { Array<(number | string | BN)> } address, * @returns { void } */ - "updateAddress" ( + "updateAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network, address], __options); } @@ -168,11 +170,11 @@ export default class Methods { * @param { (number | string | BN) } network, * @returns { void } */ - "removeAddress" ( + "removeAddress"( network: (number | string | BN), __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network], __options); } @@ -182,10 +184,10 @@ export default class Methods { * * @returns { void } */ - "removeIdentity" ( + "removeIdentity"( __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -196,11 +198,11 @@ export default class Methods { * @param { ArgumentTypes.NetworkInfo } info, * @returns { void } */ - "addNetwork" ( + "addNetwork"( info: ArgumentTypes.NetworkInfo, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [info], __options); } @@ -213,13 +215,13 @@ export default class Methods { * @param { ArgumentTypes.AccountType | null } newAddressType, * @returns { void } */ - "updateNetwork" ( + "updateNetwork"( networkId: (number | string | BN), newRpcUrl: string | null, newAddressType: ArgumentTypes.AccountType | null, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [networkId, newRpcUrl, newAddressType], __options); } @@ -230,11 +232,11 @@ export default class Methods { * @param { (number | string | BN) } networkId, * @returns { void } */ - "removeNetwork" ( + "removeNetwork"( networkId: (number | string | BN), __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [networkId], __options); } @@ -245,11 +247,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } recoveryAccount, * @returns { void } */ - "setRecoveryAccount" ( + "setRecoveryAccount"( recoveryAccount: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [recoveryAccount], __options); } @@ -261,12 +263,12 @@ export default class Methods { * @param { ArgumentTypes.AccountId } newOwner, * @returns { void } */ - "transferOwnership" ( + "transferOwnership"( identityNo: (number | string | BN), newOwner: ArgumentTypes.AccountId, __options: GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord) => { + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, newOwner], __options); } diff --git a/types/query/address_book.ts b/types/query/address_book.ts index bb1a8f6..8bbe968 100644 --- a/types/query/address_book.ts +++ b/types/query/address_book.ts @@ -1,28 +1,27 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { ApiPromise } from '@polkadot/api'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { GasLimit, Result } from '@727-ventures/typechain-types'; import type { QueryReturnType } from '@727-ventures/typechain-types'; -import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/address_book'; -import type * as ReturnTypes from '../types-returns/address_book'; +import { handleReturnType, queryOkJSON } from '@727-ventures/typechain-types'; +import type { ApiPromise } from '@polkadot/api'; +import type { ContractPromise } from '@polkadot/api-contract'; import type BN from 'bn.js'; -//@ts-ignore -import {ReturnNumber} from '@727-ventures/typechain-types'; -import {getTypeDescription} from './../shared/utils'; + +import { getTypeDescription } from './../shared/utils'; import DATA_TYPE_DESCRIPTIONS from '../data/address_book.json'; +import type * as ArgumentTypes from '../types-arguments/address_book'; +import type * as ReturnTypes from '../types-returns/address_book'; export default class Methods { - private __nativeContract : ContractPromise; + private __nativeContract: ContractPromise; private __apiPromise: ApiPromise; - private __callerAddress : string; + private __callerAddress: string; constructor( - nativeContract : ContractPromise, - nativeApi : ApiPromise, - callerAddress : string, + nativeContract: ContractPromise, + nativeApi: ApiPromise, + callerAddress: string, ) { this.__nativeContract = nativeContract; this.__callerAddress = callerAddress; @@ -34,10 +33,10 @@ export default class Methods { * * @returns { Result } */ - "identityContract" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options , (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); + "identityContract"( + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityContract", [], __options, (result) => { return handleReturnType(result, getTypeDescription(11, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -45,10 +44,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "createAddressBook" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "createAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + "createAddressBook"( + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "createAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -56,10 +55,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "removeAddressBook" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + "removeAddressBook"( + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -69,12 +68,12 @@ export default class Methods { * @param { string | null } nickname, * @returns { Result, ReturnTypes.LangError> } */ - "addIdentity" ( + "addIdentity"( identityNo: (number | string | BN), nickname: string | null, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addIdentity", [identityNo, nickname], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "addIdentity", [identityNo, nickname], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -83,11 +82,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { Result, ReturnTypes.LangError> } */ - "removeIdentity" ( + "removeIdentity"( identityNo: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -97,12 +96,12 @@ export default class Methods { * @param { string | null } newNickname, * @returns { Result, ReturnTypes.LangError> } */ - "updateNickname" ( + "updateNickname"( identityNo: (number | string | BN), newNickname: string | null, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNickname", [identityNo, newNickname], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNickname", [identityNo, newNickname], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -111,11 +110,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } account, * @returns { Result, ReturnTypes.LangError> } */ - "identitiesOf" ( + "identitiesOf"( account: ArgumentTypes.AccountId, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options , (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identitiesOf", [account], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -123,10 +122,10 @@ export default class Methods { * * @returns { Result } */ - "hasAddressBook" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options , (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); + "hasAddressBook"( + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasAddressBook", [], __options, (result) => { return handleReturnType(result, getTypeDescription(16, DATA_TYPE_DESCRIPTIONS)); }); } } \ No newline at end of file diff --git a/types/query/identity.ts b/types/query/identity.ts index dede6d4..7311edc 100644 --- a/types/query/identity.ts +++ b/types/query/identity.ts @@ -1,28 +1,27 @@ /* This file is auto-generated */ -import type { ContractPromise } from '@polkadot/api-contract'; -import type { ApiPromise } from '@polkadot/api'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { GasLimit, Result } from '@727-ventures/typechain-types'; import type { QueryReturnType } from '@727-ventures/typechain-types'; -import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/identity'; -import type * as ReturnTypes from '../types-returns/identity'; +import { handleReturnType, queryOkJSON } from '@727-ventures/typechain-types'; +import type { ApiPromise } from '@polkadot/api'; +import type { ContractPromise } from '@polkadot/api-contract'; import type BN from 'bn.js'; -//@ts-ignore -import {ReturnNumber} from '@727-ventures/typechain-types'; -import {getTypeDescription} from './../shared/utils'; + +import { getTypeDescription } from './../shared/utils'; import DATA_TYPE_DESCRIPTIONS from '../data/identity.json'; +import type * as ArgumentTypes from '../types-arguments/identity'; +import type * as ReturnTypes from '../types-returns/identity'; export default class Methods { - private __nativeContract : ContractPromise; + private __nativeContract: ContractPromise; private __apiPromise: ApiPromise; - private __callerAddress : string; + private __callerAddress: string; constructor( - nativeContract : ContractPromise, - nativeApi : ApiPromise, - callerAddress : string, + nativeContract: ContractPromise, + nativeApi: ApiPromise, + callerAddress: string, ) { this.__nativeContract = nativeContract; this.__callerAddress = callerAddress; @@ -35,11 +34,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { Result } */ - "identity" ( + "identity"( identityNo: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identity", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -48,11 +47,11 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @returns { Result } */ - "ownerOf" ( + "ownerOf"( identityNo: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options , (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "ownerOf", [identityNo], __options, (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -61,11 +60,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } owner, * @returns { Result } */ - "identityOf" ( + "identityOf"( owner: ArgumentTypes.AccountId, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options , (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "identityOf", [owner], __options, (result) => { return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -74,11 +73,11 @@ export default class Methods { * @param { (number | string | BN) } networkId, * @returns { Result } */ - "networkInfoOf" ( + "networkInfoOf"( networkId: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options , (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "networkInfoOf", [networkId], __options, (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -88,12 +87,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @returns { Result, ReturnTypes.Error>, ReturnTypes.LangError> } */ - "transactionDestination" ( + "transactionDestination"( receiver: (number | string | BN), network: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.Error>, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options , (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.Error>, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "transactionDestination", [receiver, network], __options, (result) => { return handleReturnType(result, getTypeDescription(23, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -101,10 +100,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "availableNetworks" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options , (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); + "availableNetworks"( + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "availableNetworks", [], __options, (result) => { return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -112,10 +111,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "createIdentity" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "createIdentity", [], __options , (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); + "createIdentity"( + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "createIdentity", [], __options, (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -125,12 +124,12 @@ export default class Methods { * @param { Array<(number | string | BN)> } address, * @returns { Result, ReturnTypes.LangError> } */ - "addAddress" ( + "addAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addAddress", [network, address], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "addAddress", [network, address], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -140,12 +139,12 @@ export default class Methods { * @param { Array<(number | string | BN)> } address, * @returns { Result, ReturnTypes.LangError> } */ - "updateAddress" ( + "updateAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateAddress", [network, address], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateAddress", [network, address], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -154,11 +153,11 @@ export default class Methods { * @param { (number | string | BN) } network, * @returns { Result, ReturnTypes.LangError> } */ - "removeAddress" ( + "removeAddress"( network: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddress", [network], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeAddress", [network], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -166,10 +165,10 @@ export default class Methods { * * @returns { Result, ReturnTypes.LangError> } */ - "removeIdentity" ( - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + "removeIdentity"( + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeIdentity", [], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -178,11 +177,11 @@ export default class Methods { * @param { ArgumentTypes.NetworkInfo } info, * @returns { Result, ReturnTypes.LangError> } */ - "addNetwork" ( + "addNetwork"( info: ArgumentTypes.NetworkInfo, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "addNetwork", [info], __options , (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "addNetwork", [info], __options, (result) => { return handleReturnType(result, getTypeDescription(29, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -193,13 +192,13 @@ export default class Methods { * @param { ArgumentTypes.AccountType | null } newAddressType, * @returns { Result, ReturnTypes.LangError> } */ - "updateNetwork" ( + "updateNetwork"( networkId: (number | string | BN), newRpcUrl: string | null, newAddressType: ArgumentTypes.AccountType | null, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "updateNetwork", [networkId, newRpcUrl, newAddressType], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -208,11 +207,11 @@ export default class Methods { * @param { (number | string | BN) } networkId, * @returns { Result, ReturnTypes.LangError> } */ - "removeNetwork" ( + "removeNetwork"( networkId: (number | string | BN), - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeNetwork", [networkId], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "removeNetwork", [networkId], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -221,11 +220,11 @@ export default class Methods { * @param { ArgumentTypes.AccountId } recoveryAccount, * @returns { Result, ReturnTypes.LangError> } */ - "setRecoveryAccount" ( + "setRecoveryAccount"( recoveryAccount: ArgumentTypes.AccountId, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "setRecoveryAccount", [recoveryAccount], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "setRecoveryAccount", [recoveryAccount], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } /** @@ -235,12 +234,12 @@ export default class Methods { * @param { ArgumentTypes.AccountId } newOwner, * @returns { Result, ReturnTypes.LangError> } */ - "transferOwnership" ( + "transferOwnership"( identityNo: (number | string | BN), newOwner: ArgumentTypes.AccountId, - __options ? : GasLimit, - ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ - return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "transferOwnership", [identityNo, newOwner], __options , (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); + __options?: GasLimit, + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON(this.__apiPromise, this.__nativeContract, this.__callerAddress, "transferOwnership", [identityNo, newOwner], __options, (result) => { return handleReturnType(result, getTypeDescription(31, DATA_TYPE_DESCRIPTIONS)); }); } } \ No newline at end of file diff --git a/types/shared/utils.ts b/types/shared/utils.ts index 395aa48..cafebb7 100644 --- a/types/shared/utils.ts +++ b/types/shared/utils.ts @@ -1,6 +1,5 @@ -import fs from "fs"; -import type {ContractPromise} from "@polkadot/api-contract"; -import {handleEventReturn} from "@727-ventures/typechain-types"; +import { handleEventReturn } from "@727-ventures/typechain-types"; +import type { ContractPromise } from "@polkadot/api-contract"; export function getTypeDescription(id: number | string, types: any): any { return types[id]; @@ -14,15 +13,15 @@ export function decodeEvents(events: any[], contract: ContractPromise, types: an return events.filter((record: any) => { const { event } = record; - const [address, data] = record.event.data; + const [address] = record.event.data; return event.method == 'ContractEmitted' && address.toString() === contract.address.toString(); }).map((record: any) => { - const [address, data] = record.event.data; + const [data] = record.event.data; - const {args, event} = contract.abi.decodeEvent(data); + const { args, event } = contract.abi.decodeEvent(data); - const _event: Record < string, any > = {}; + const _event: Record = {}; for (let i = 0; i < args.length; i++) { _event[event.args[i]!.name] = args[i]!.toJSON(); diff --git a/types/tx-sign-and-send/address_book.ts b/types/tx-sign-and-send/address_book.ts index 705ce90..00fc0f7 100644 --- a/types/tx-sign-and-send/address_book.ts +++ b/types/tx-sign-and-send/address_book.ts @@ -1,27 +1,27 @@ /* This file is auto-generated */ +import type { GasLimit } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type { ApiPromise } from '@polkadot/api'; import type { ContractPromise } from '@polkadot/api-contract'; import type { KeyringPair } from '@polkadot/keyring/types'; -import type { ApiPromise } from '@polkadot/api'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; -import { txSignAndSend } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/address_book'; +import { EventRecord } from '@polkadot/types/interfaces'; import type BN from 'bn.js'; -// @ts-ignore -import type {EventRecord} from "@polkadot/api/submittable"; -import {decodeEvents} from "../shared/utils"; + import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/address_book.json'; +import { decodeEvents } from "../shared/utils"; +import type * as ArgumentTypes from '../types-arguments/address_book'; export default class Methods { - private __nativeContract : ContractPromise; - private __keyringPair : KeyringPair; + private __nativeContract: ContractPromise; + private __keyringPair: KeyringPair; private __apiPromise: ApiPromise; constructor( apiPromise: ApiPromise, - nativeContract : ContractPromise, - keyringPair : KeyringPair, + nativeContract: ContractPromise, + keyringPair: KeyringPair, ) { this.__apiPromise = apiPromise; this.__nativeContract = nativeContract; @@ -32,10 +32,10 @@ export default class Methods { * identityContract * */ - "identityContract" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityContract", (events: EventRecord) => { + "identityContract"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityContract", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -44,10 +44,10 @@ export default class Methods { * createAddressBook * */ - "createAddressBook" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord) => { + "createAddressBook"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "createAddressBook", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -56,10 +56,10 @@ export default class Methods { * removeAddressBook * */ - "removeAddressBook" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord) => { + "removeAddressBook"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddressBook", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -70,12 +70,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { string | null } nickname, */ - "addIdentity" ( + "addIdentity"( identityNo: (number | string | BN), nickname: string | null, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addIdentity", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, nickname], __options); } @@ -85,11 +85,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "removeIdentity" ( + "removeIdentity"( identityNo: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo], __options); } @@ -100,12 +100,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { string | null } newNickname, */ - "updateNickname" ( + "updateNickname"( identityNo: (number | string | BN), newNickname: string | null, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNickname", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, newNickname], __options); } @@ -115,11 +115,11 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } account, */ - "identitiesOf" ( + "identitiesOf"( account: ArgumentTypes.AccountId, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identitiesOf", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "identitiesOf", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [account], __options); } @@ -128,10 +128,10 @@ export default class Methods { * hasAddressBook * */ - "hasAddressBook" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "hasAddressBook", (events: EventRecord) => { + "hasAddressBook"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "hasAddressBook", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } diff --git a/types/tx-sign-and-send/identity.ts b/types/tx-sign-and-send/identity.ts index 8698e12..3e9908b 100644 --- a/types/tx-sign-and-send/identity.ts +++ b/types/tx-sign-and-send/identity.ts @@ -1,27 +1,27 @@ /* This file is auto-generated */ +import type { GasLimit } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type { ApiPromise } from '@polkadot/api'; import type { ContractPromise } from '@polkadot/api-contract'; import type { KeyringPair } from '@polkadot/keyring/types'; -import type { ApiPromise } from '@polkadot/api'; -import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; -import { txSignAndSend } from '@727-ventures/typechain-types'; -import type * as ArgumentTypes from '../types-arguments/identity'; +import { EventRecord } from '@polkadot/types/interfaces'; import type BN from 'bn.js'; -// @ts-ignore -import type {EventRecord} from "@polkadot/api/submittable"; -import {decodeEvents} from "../shared/utils"; + import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/identity.json'; +import { decodeEvents } from "../shared/utils"; +import type * as ArgumentTypes from '../types-arguments/identity'; export default class Methods { - private __nativeContract : ContractPromise; - private __keyringPair : KeyringPair; + private __nativeContract: ContractPromise; + private __keyringPair: KeyringPair; private __apiPromise: ApiPromise; constructor( apiPromise: ApiPromise, - nativeContract : ContractPromise, - keyringPair : KeyringPair, + nativeContract: ContractPromise, + keyringPair: KeyringPair, ) { this.__apiPromise = apiPromise; this.__nativeContract = nativeContract; @@ -33,11 +33,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "identity" ( + "identity"( identityNo: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identity", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "identity", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo], __options); } @@ -47,11 +47,11 @@ export default class Methods { * * @param { (number | string | BN) } identityNo, */ - "ownerOf" ( + "ownerOf"( identityNo: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "ownerOf", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "ownerOf", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo], __options); } @@ -61,11 +61,11 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } owner, */ - "identityOf" ( + "identityOf"( owner: ArgumentTypes.AccountId, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityOf", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "identityOf", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [owner], __options); } @@ -75,11 +75,11 @@ export default class Methods { * * @param { (number | string | BN) } networkId, */ - "networkInfoOf" ( + "networkInfoOf"( networkId: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "networkInfoOf", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "networkInfoOf", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [networkId], __options); } @@ -90,12 +90,12 @@ export default class Methods { * @param { (number | string | BN) } receiver, * @param { (number | string | BN) } network, */ - "transactionDestination" ( + "transactionDestination"( receiver: (number | string | BN), network: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transactionDestination", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "transactionDestination", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [receiver, network], __options); } @@ -104,10 +104,10 @@ export default class Methods { * availableNetworks * */ - "availableNetworks" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "availableNetworks", (events: EventRecord) => { + "availableNetworks"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "availableNetworks", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -116,10 +116,10 @@ export default class Methods { * createIdentity * */ - "createIdentity" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord) => { + "createIdentity"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "createIdentity", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -130,12 +130,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @param { Array<(number | string | BN)> } address, */ - "addAddress" ( + "addAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addAddress", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network, address], __options); } @@ -146,12 +146,12 @@ export default class Methods { * @param { (number | string | BN) } network, * @param { Array<(number | string | BN)> } address, */ - "updateAddress" ( + "updateAddress"( network: (number | string | BN), address: Array<(number | string | BN)>, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateAddress", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network, address], __options); } @@ -161,11 +161,11 @@ export default class Methods { * * @param { (number | string | BN) } network, */ - "removeAddress" ( + "removeAddress"( network: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeAddress", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [network], __options); } @@ -174,10 +174,10 @@ export default class Methods { * removeIdentity * */ - "removeIdentity" ( - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord) => { + "removeIdentity"( + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeIdentity", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [], __options); } @@ -187,11 +187,11 @@ export default class Methods { * * @param { ArgumentTypes.NetworkInfo } info, */ - "addNetwork" ( + "addNetwork"( info: ArgumentTypes.NetworkInfo, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "addNetwork", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [info], __options); } @@ -203,13 +203,13 @@ export default class Methods { * @param { string | null } newRpcUrl, * @param { ArgumentTypes.AccountType | null } newAddressType, */ - "updateNetwork" ( + "updateNetwork"( networkId: (number | string | BN), newRpcUrl: string | null, newAddressType: ArgumentTypes.AccountType | null, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "updateNetwork", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [networkId, newRpcUrl, newAddressType], __options); } @@ -219,11 +219,11 @@ export default class Methods { * * @param { (number | string | BN) } networkId, */ - "removeNetwork" ( + "removeNetwork"( networkId: (number | string | BN), - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "removeNetwork", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [networkId], __options); } @@ -233,11 +233,11 @@ export default class Methods { * * @param { ArgumentTypes.AccountId } recoveryAccount, */ - "setRecoveryAccount" ( + "setRecoveryAccount"( recoveryAccount: ArgumentTypes.AccountId, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "setRecoveryAccount", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [recoveryAccount], __options); } @@ -248,12 +248,12 @@ export default class Methods { * @param { (number | string | BN) } identityNo, * @param { ArgumentTypes.AccountId } newOwner, */ - "transferOwnership" ( + "transferOwnership"( identityNo: (number | string | BN), newOwner: ArgumentTypes.AccountId, - __options ? : GasLimit, - ){ - return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord) => { + __options?: GasLimit, + ) { + return txSignAndSend(this.__apiPromise, this.__nativeContract, this.__keyringPair, "transferOwnership", (events: EventRecord[]) => { return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); }, [identityNo, newOwner], __options); } diff --git a/types/types-arguments/address_book.ts b/types/types-arguments/address_book.ts index d85fb9e..a95f4ad 100644 --- a/types/types-arguments/address_book.ts +++ b/types/types-arguments/address_book.ts @@ -1,4 +1,4 @@ -import type BN from 'bn.js'; +/* eslint-disable no-unused-vars */ export type AccountId = string | number[] diff --git a/types/types-arguments/identity.ts b/types/types-arguments/identity.ts index 4155926..88e4657 100644 --- a/types/types-arguments/identity.ts +++ b/types/types-arguments/identity.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ import type BN from 'bn.js'; export type AccountId = string | number[] diff --git a/types/types-returns/address_book.ts b/types/types-returns/address_book.ts index a0f027f..a95f4ad 100644 --- a/types/types-returns/address_book.ts +++ b/types/types-returns/address_book.ts @@ -1,5 +1,4 @@ -import type BN from 'bn.js'; -import type {ReturnNumber} from '@727-ventures/typechain-types'; +/* eslint-disable no-unused-vars */ export type AccountId = string | number[] diff --git a/types/types-returns/identity.ts b/types/types-returns/identity.ts index 8d9ca47..f22e3d8 100644 --- a/types/types-returns/identity.ts +++ b/types/types-returns/identity.ts @@ -1,5 +1,4 @@ -import type BN from 'bn.js'; -import type {ReturnNumber} from '@727-ventures/typechain-types'; +/* eslint-disable no-unused-vars */ export type AccountId = string | number[] From e0f601afda2fafe03f6ccaee5a41ae737bb8fc4a Mon Sep 17 00:00:00 2001 From: cuteolaf Date: Mon, 10 Jul 2023 18:53:04 -0700 Subject: [PATCH 27/27] fix js errors --- __tests__/transactionRouter.test.ts | 25 +++++++++++++++---------- src/utils/transactionRouter.ts | 12 ++++++------ 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/__tests__/transactionRouter.test.ts b/__tests__/transactionRouter.test.ts index 097df52..76b32dc 100644 --- a/__tests__/transactionRouter.test.ts +++ b/__tests__/transactionRouter.test.ts @@ -1,6 +1,7 @@ -import TransactionRouter from "../src/utils/transactionRouter"; import { ApiPromise, Keyring, WsProvider } from "@polkadot/api"; import { KeyringPair } from "@polkadot/keyring/types"; + +import TransactionRouter from "../src/utils/transactionRouter"; import IdentityContractFactory from "../types/constructors/identity"; import IdentityContract from "../types/contracts/identity"; import { AccountType, NetworkInfo } from "../types/types-arguments/identity"; @@ -62,8 +63,9 @@ describe("TransactionRouter", () => { const westendProvider = new WsProvider("ws://127.0.0.1:4242"); const westendApi = await ApiPromise.create({ provider: westendProvider }); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - var { data: balance } = await westendApi.query.system.account( + const { data: balance } = await westendApi.query.system.account( receiver.address ); const receiverBalance = parseInt(balance.free.toHuman().replace(/,/g, "")); @@ -91,8 +93,9 @@ describe("TransactionRouter", () => { amount ); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - var { data: balance } = await westendApi.query.system.account( + const { data: balance } = await westendApi.query.system.account( receiver.address ); const newReceiverBalance = parseInt( @@ -133,7 +136,7 @@ describe("TransactionRouter", () => { receiver.address )).toHuman(); - const receiverBalanceBefore = receiverAccountBefore? parseInt(receiverAccountBefore.balance.replace(/,/g, "")) : 0; + const receiverBalanceBefore = receiverAccountBefore ? parseInt(receiverAccountBefore.balance.replace(/,/g, "")) : 0; // First lets add a network. await addNetwork(identityContract, alice, { @@ -177,7 +180,7 @@ describe("TransactionRouter", () => { expect(senderBalanceAfter).toBe(senderBalanceBefore - amount); expect(receiverBalanceAfter).toBe(receiverBalanceBefore + amount); - + }, 120000); }); @@ -186,7 +189,7 @@ const addNetwork = async ( signer: KeyringPair, network: NetworkInfo ): Promise => { - const _addNetworkResult = await contract + await contract .withSigner(signer) .tx.addNetwork(network); }; @@ -196,7 +199,7 @@ const createAsset = async ( signer: KeyringPair, id: number ): Promise => { - return new Promise(async (resolve) => { + const callTx = async (resolve: () => void) => { const unsub = await api.tx.assets .create( id, @@ -210,7 +213,8 @@ const createAsset = async ( resolve(); } }); - }); + }; + return new Promise(callTx); }; const mintAsset = async ( @@ -219,7 +223,7 @@ const mintAsset = async ( id: number, amount: number ): Promise => { - return new Promise(async (resolve) => { + const callTx = async (resolve: () => void) => { const unsub = await api.tx.assets .mint( id, @@ -232,7 +236,8 @@ const mintAsset = async ( resolve(); } }); - }); + }; + return new Promise(callTx); }; const getAsset = async (api: ApiPromise, id: number): Promise => { diff --git a/src/utils/transactionRouter.ts b/src/utils/transactionRouter.ts index 19df886..2afb29a 100644 --- a/src/utils/transactionRouter.ts +++ b/src/utils/transactionRouter.ts @@ -15,11 +15,11 @@ class TransactionRouter { multiAsset: any, amount: number ): Promise { - if (originNetworkId == destinationNetworkId && sender.addressRaw == receiver) { + if (originNetworkId === destinationNetworkId && sender.addressRaw === receiver) { throw new Error("Cannot send tokens to yourself"); } - if (originNetworkId == destinationNetworkId) { + if (originNetworkId === destinationNetworkId) { // We will extract all the chain information from the RPC node. const rpcUrl = (await identityContract.query.networkInfoOf(originNetworkId)).value .ok?.rpcUrl; @@ -55,7 +55,7 @@ class TransactionRouter { // standardized and as far as the chain has an XCM executor the transaction // will be executed correctly. - const chainInfo = await api.registry.getChainProperties(); + const chainInfo = api.registry.getChainProperties(); if (!chainInfo) { throw new Error("Failed to get chain info"); } @@ -74,7 +74,7 @@ class TransactionRouter { .execute(xcm, 0) .paymentInfo(sender)).toHuman(); - if(!paymentInfo || !paymentInfo.weight) { + if (!paymentInfo || !paymentInfo.weight) { throw new Error("Couldn't estimate transaction fee"); } @@ -88,8 +88,8 @@ class TransactionRouter { const paymentInfo = (await api.tx.polkadotXcm .execute(xcm, 0) .paymentInfo(sender)).toHuman(); - - if(!paymentInfo || !paymentInfo.weight) { + + if (!paymentInfo || !paymentInfo.weight) { throw new Error("Couldn't estimate transaction fee"); }