@coti-io/coti-contracts 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.github/workflows/npm-publish.yml +2 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/LICENSE +1 -1
  4. package/README.md +18 -35
  5. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +112 -0
  6. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +152 -0
  7. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +11 -1
  8. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +8 -0
  9. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +33 -4
  10. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +35 -10
  11. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +126 -0
  12. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +3 -0
  13. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +222 -0
  14. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +222 -0
  15. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +223 -0
  16. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +222 -0
  17. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +265 -0
  18. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +281 -0
  19. package/contracts/token/PrivateERC20/PrivateERC20.sol +1 -1
  20. package/contracts/token/PrivateERC721/IERC721Errors.sol +57 -0
  21. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  22. package/contracts/utils/mpc/MpcCore.sol +40 -0
  23. package/contracts/utils/mpc/MpcInterface.sol +2 -0
  24. package/hardhat.config.ts +9 -1
  25. package/package.json +20 -4
  26. package/test/onboard/AccountOnboard.test.ts +2 -2
  27. package/test/token/PrivateERC20/PrivateERC20.test.ts +2 -2
  28. package/test/utils/accounts.ts +2 -2
  29. package/test/utils/mpc/Precompile.test.ts +24 -2
  30. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +0 -2
  31. package/typechain-types/contracts/GasTest.ts +91 -0
  32. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +66 -0
  33. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +6 -0
  34. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +6 -0
  35. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +36 -6
  36. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract.ts +251 -0
  37. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract.ts +250 -0
  38. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  39. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.ts +389 -0
  40. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.ts +391 -0
  41. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.ts +391 -0
  42. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract.ts +391 -0
  43. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract.ts +391 -0
  44. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  45. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.ts +391 -0
  46. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.ts +391 -0
  47. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.ts +306 -0
  48. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract.ts +125 -0
  49. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract.ts +125 -0
  50. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  51. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.ts +296 -0
  52. package/typechain-types/contracts/mocks/utils/mpc/index.ts +7 -0
  53. package/typechain-types/contracts/token/PrivateERC721/IERC721Errors.ts +69 -0
  54. package/typechain-types/contracts/token/PrivateERC721/index.ts +1 -0
  55. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +38 -0
  56. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +0 -1
  57. package/typechain-types/factories/contracts/GasTest__factory.ts +75 -0
  58. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  59. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  60. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  61. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +73 -1
  62. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +11 -1
  63. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  64. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +11 -1
  65. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  66. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  67. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  68. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +26 -30
  69. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  70. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  71. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  72. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  73. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract__factory.ts +294 -0
  74. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +292 -0
  75. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  76. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract__factory.ts +720 -0
  77. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +724 -0
  78. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +724 -0
  79. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  80. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  81. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  82. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  83. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  84. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +507 -0
  85. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract__factory.ts +150 -0
  86. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +150 -0
  87. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  88. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +434 -0
  89. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +7 -0
  90. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  91. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  92. package/typechain-types/factories/contracts/token/PrivateERC721/IERC721Errors__factory.ts +128 -0
  93. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +1 -0
  94. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  95. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +58 -0
  96. package/typechain-types/hardhat.d.ts +144 -54
  97. package/typechain-types/index.ts +16 -6
  98. package/contracts/access/DataPrivacyFramework/README.md +0 -68
  99. package/contracts/onboard/README.md +0 -65
  100. package/contracts/token/PrivateERC20/README.md +0 -104
  101. package/contracts/token/PrivateERC721/README.md +0 -282
  102. package/contracts/utils/mpc/README.md +0 -82
@@ -332,7 +332,7 @@ const _abi = [
332
332
  ] as const;
333
333
 
334
334
  const _bytecode =
335
- "0x608060405234801561001057600080fd5b506156af80620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637d2e0f48116100665780637d2e0f481461016f57806380f937bc1461018d5780638b6e7a8c146101bd578063acb38169146101ed578063ebb571fd1461021d5761009e565b806308c90f0d146100a357806329875348146100d35780632e544aa0146100f15780632e5950eb14610121578063791175491461013f575b600080fd5b6100bd60048036038101906100b89190614467565b610239565b6040516100ca91906144c2565b60405180910390f35b6100db61074a565b6040516100e891906144c2565b60405180910390f35b61010b60048036038101906101069190614608565b610760565b60405161011891906144c2565b60405180910390f35b6101296107e8565b60405161013691906144c2565b60405180910390f35b61015960048036038101906101549190614467565b6107fe565b60405161016691906144c2565b60405180910390f35b610177610d10565b60405161018491906144c2565b60405180910390f35b6101a760048036038101906101a291906146e9565b610d26565b6040516101b491906144c2565b60405180910390f35b6101d760048036038101906101d29190614467565b610e1a565b6040516101e491906144c2565b60405180910390f35b610207600480360381019061020291906147a2565b61132c565b60405161021491906144c2565b60405180910390f35b61023760048036038101906102329190614949565b6113ea565b005b600061024361434d565b61024b614392565b6102536143b3565b61025b6143e2565b6102668488886113ea565b600061028261027d86600001518760200151611491565b611528565b9050806000806101000a81548160ff0219169083151502179055506102af856040015186606001516115cf565b8460000181815250506102ca85600001518660600151611666565b8460200181815250506102e5856040015186602001516116fe565b84604001818152505060006102f985610760565b905081151581151514610341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610338906149fc565b60405180910390fd5b61035386608001518760a00151611796565b84600001818152505061036e86600001518760a0015161182d565b846020018181525050610389866080015187602001516118c5565b8460400181815250506103a486604001518760a0015161195d565b8460600181815250506103bf866080015187606001516119f5565b84608001818152505060006103d38561132c565b90508015158315151461041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290614a68565b60405180910390fd5b61042d8760c001518860e00151611a8d565b84600001818152505061044887600001518860e00151611b24565b8460200181815250506104638760c001518860200151611bbc565b84604001818152505061047e87604001518860e00151611c54565b8460600181815250506104998760c001518860600151611cec565b8460800181815250506104b487608001518860e00151611d84565b8460a00181815250506104cf8760c001518860a00151611e1c565b8460c001818152505060006104e385610d26565b90508015158415151461052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052290614ad4565b60405180910390fd5b61054161053c8c8a60200151611eb4565b611528565b151584151514801561056b575061056461055f89600001518c611f4e565b611528565b1515841515145b6105aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a190614b66565b60405180910390fd5b6105c36105be8c60ff168a60600151611fe8565b611528565b15158415151480156105f057506105e96105e489604001518c60ff16612083565b611528565b1515841515145b61062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062690614bf8565b60405180910390fd5b6106486106438c60ff168a60a0015161211e565b611528565b1515841515148015610675575061066e61066989608001518c60ff166121bb565b611528565b1515841515145b6106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90614c8a565b60405180910390fd5b6106cd6106c88c60ff168a60e00151612258565b611528565b15158415151480156106fa57506106f36106ee8960c001518c60ff166122f9565b611528565b1515841515145b610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073090614d1c565b60405180910390fd5b839850505050505050505092915050565b60008060019054906101000a900460ff16905090565b6000806107708360000151611528565b905061077f8360200151611528565b15158115151480156107a057506107998360400151611528565b1515811515145b6107df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d690614dd4565b60405180910390fd5b80915050919050565b60008060029054906101000a900460ff16905090565b600061080861434d565b610810614392565b6108186143b3565b6108206143e2565b61082b8488886113ea565b60006108476108428660000151876020015161239a565b611528565b905080600060016101000a81548160ff02191690831515021790555061087585604001518660600151612431565b846000018181525050610890856000015186606001516124c8565b8460200181815250506108ab85604001518660200151612560565b84604001818152505060006108bf85610760565b905081151581151514610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90614e40565b60405180910390fd5b61091986608001518760a001516125f8565b84600001818152505061093486600001518760a0015161268f565b84602001818152505061094f86608001518760200151612727565b84604001818152505061096a86604001518760a001516127bf565b84606001818152505061098586608001518760600151612857565b84608001818152505060006109998561132c565b9050801515831515146109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890614eac565b60405180910390fd5b6109f38760c001518860e001516128ef565b846000018181525050610a0e87600001518860e00151612986565b846020018181525050610a298760c001518860200151612a1e565b846040018181525050610a4487604001518860e00151612ab6565b846060018181525050610a5f8760c001518860600151612b4e565b846080018181525050610a7a87608001518860e00151612be6565b8460a0018181525050610a958760c001518860a00151612c7e565b8460c00181815250506000610aa985610d26565b905080151584151514610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890614f18565b60405180910390fd5b610b07610b028c8a60200151612d16565b611528565b1515841515148015610b315750610b2a610b2589600001518c612db0565b611528565b1515841515145b610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6790614faa565b60405180910390fd5b610b89610b848c60ff168a60600151612e4a565b611528565b1515841515148015610bb65750610baf610baa89604001518c60ff16612ee5565b611528565b1515841515145b610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061503c565b60405180910390fd5b610c0e610c098c60ff168a60a00151612f80565b611528565b1515841515148015610c3b5750610c34610c2f89608001518c60ff1661301d565b611528565b1515841515145b610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906150ce565b60405180910390fd5b610c93610c8e8c60ff168a60e001516130ba565b611528565b1515841515148015610cc05750610cb9610cb48960c001518c60ff1661315b565b611528565b1515841515145b610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690615160565b60405180910390fd5b839850505050505050505092915050565b60008060009054906101000a900460ff16905090565b600080610d368360000151611528565b9050610d458360200151611528565b1515811515148015610d665750610d5f8360400151611528565b1515811515145b8015610d815750610d7a8360800151611528565b1515811515145b8015610d9c5750610d958360600151611528565b1515811515145b8015610db75750610db08360c00151611528565b1515811515145b8015610dd25750610dcb8360a00151611528565b1515811515145b610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890614dd4565b60405180910390fd5b80915050919050565b6000610e2461434d565b610e2c614392565b610e346143b3565b610e3c6143e2565b610e478488886113ea565b6000610e63610e5e866000015187602001516131fc565b611528565b905080600060026101000a81548160ff021916908315150217905550610e9185604001518660600151613293565b846000018181525050610eac8560000151866060015161332a565b846020018181525050610ec7856040015186602001516133c2565b8460400181815250506000610edb85610760565b905081151581151514610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a906151cc565b60405180910390fd5b610f3586608001518760a0015161345a565b846000018181525050610f5086600001518760a001516134f1565b846020018181525050610f6b86608001518760200151613589565b846040018181525050610f8686604001518760a00151613621565b846060018181525050610fa1866080015187606001516136b9565b8460800181815250506000610fb58561132c565b905080151583151514610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490615238565b60405180910390fd5b61100f8760c001518860e00151613751565b84600001818152505061102a87600001518860e001516137e8565b8460200181815250506110458760c001518860200151613880565b84604001818152505061106087604001518860e00151613918565b84606001818152505061107b8760c0015188606001516139b0565b84608001818152505061109687608001518860e00151613a48565b8460a00181815250506110b18760c001518860a00151613ae0565b8460c001818152505060006110c585610d26565b90508015158415151461110d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611104906152a4565b60405180910390fd5b61112361111e8c8a60200151613b78565b611528565b151584151514801561114d575061114661114189600001518c613c12565b611528565b1515841515145b61118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390615336565b60405180910390fd5b6111a56111a08c60ff168a60600151613cac565b611528565b15158415151480156111d257506111cb6111c689604001518c60ff16613d47565b611528565b1515841515145b611211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611208906153c8565b60405180910390fd5b61122a6112258c60ff168a60a00151613de2565b611528565b1515841515148015611257575061125061124b89608001518c60ff16613e7f565b611528565b1515841515145b611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d9061545a565b60405180910390fd5b6112af6112aa8c60ff168a60e00151613f1c565b611528565b15158415151480156112dc57506112d56112d08960c001518c60ff16613fbd565b611528565b1515841515145b61131b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611312906154ec565b60405180910390fd5b839850505050505050505092915050565b60008061133c8360000151611528565b905061134b8360200151611528565b151581151514801561136c57506113658360400151611528565b1515811515145b801561138757506113808360800151611528565b1515811515145b80156113a2575061139b8360600151611528565b1515811515145b6113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890614dd4565b60405180910390fd5b80915050919050565b6113f38261405e565b8360000181815250506114058161405e565b83602001818152505061141a8260ff166140ff565b83604001818152505061142f8160ff166140ff565b8360600181815250506114448260ff166141a1565b8360800181815250506114598160ff166141a1565b8360a001818152505061146e8260ff16614245565b8360c00181815250506114838160ff16614245565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6114bd60018060006142ec565b85856040518463ffffffff1660e01b81526004016114dd93929190615556565b6020604051808303816000875af11580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152091906155b9565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561155c5761155b6155e6565b5b60f81b856040518363ffffffff1660e01b815260040161157d929190615650565b6020604051808303816000875af115801561159c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c091906155b9565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6115fb60028060006142ec565b85856040518463ffffffff1660e01b815260040161161b93929190615556565b6020604051808303816000875af115801561163a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6116936001600260006142ec565b85856040518463ffffffff1660e01b81526004016116b393929190615556565b6020604051808303816000875af11580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61172b6002600160006142ec565b85856040518463ffffffff1660e01b815260040161174b93929190615556565b6020604051808303816000875af115801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6117c260038060006142ec565b85856040518463ffffffff1660e01b81526004016117e293929190615556565b6020604051808303816000875af1158015611801573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61185a6001600360006142ec565b85856040518463ffffffff1660e01b815260040161187a93929190615556565b6020604051808303816000875af1158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6118f26003600160006142ec565b85856040518463ffffffff1660e01b815260040161191293929190615556565b6020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61198a6002600360006142ec565b85856040518463ffffffff1660e01b81526004016119aa93929190615556565b6020604051808303816000875af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611a226003600260006142ec565b85856040518463ffffffff1660e01b8152600401611a4293929190615556565b6020604051808303816000875af1158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611ab960048060006142ec565b85856040518463ffffffff1660e01b8152600401611ad993929190615556565b6020604051808303816000875af1158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611b516001600460006142ec565b85856040518463ffffffff1660e01b8152600401611b7193929190615556565b6020604051808303816000875af1158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611be96004600160006142ec565b85856040518463ffffffff1660e01b8152600401611c0993929190615556565b6020604051808303816000875af1158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611c816002600460006142ec565b85856040518463ffffffff1660e01b8152600401611ca193929190615556565b6020604051808303816000875af1158015611cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611d196004600260006142ec565b85856040518463ffffffff1660e01b8152600401611d3993929190615556565b6020604051808303816000875af1158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611db16003600460006142ec565b85856040518463ffffffff1660e01b8152600401611dd193929190615556565b6020604051808303816000875af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611e496004600360006142ec565b85856040518463ffffffff1660e01b8152600401611e6993929190615556565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611ee060018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401611f0393929190615556565b6020604051808303816000875af1158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e611f7a60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401611f9d93929190615556565b6020604051808303816000875af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61201460028060016142ec565b8561ffff16856040518463ffffffff1660e01b815260040161203893929190615556565b6020604051808303816000875af1158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6120af60028060026142ec565b858561ffff166040518463ffffffff1660e01b81526004016120d393929190615556565b6020604051808303816000875af11580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61214a60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b815260040161217093929190615556565b6020604051808303816000875af115801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e6121e760038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161220d93929190615556565b6020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61228460048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016122ae93929190615556565b6020604051808303816000875af11580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636d82e45e61232560048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161234f93929190615556565b6020604051808303816000875af115801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6123c660018060006142ec565b85856040518463ffffffff1660e01b81526004016123e693929190615556565b6020604051808303816000875af1158015612405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61245d60028060006142ec565b85856040518463ffffffff1660e01b815260040161247d93929190615556565b6020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6124f56001600260006142ec565b85856040518463ffffffff1660e01b815260040161251593929190615556565b6020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61258d6002600160006142ec565b85856040518463ffffffff1660e01b81526004016125ad93929190615556565b6020604051808303816000875af11580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61262460038060006142ec565b85856040518463ffffffff1660e01b815260040161264493929190615556565b6020604051808303816000875af1158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6126bc6001600360006142ec565b85856040518463ffffffff1660e01b81526004016126dc93929190615556565b6020604051808303816000875af11580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6127546003600160006142ec565b85856040518463ffffffff1660e01b815260040161277493929190615556565b6020604051808303816000875af1158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6127ec6002600360006142ec565b85856040518463ffffffff1660e01b815260040161280c93929190615556565b6020604051808303816000875af115801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6128846003600260006142ec565b85856040518463ffffffff1660e01b81526004016128a493929190615556565b6020604051808303816000875af11580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61291b60048060006142ec565b85856040518463ffffffff1660e01b815260040161293b93929190615556565b6020604051808303816000875af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6129b36001600460006142ec565b85856040518463ffffffff1660e01b81526004016129d393929190615556565b6020604051808303816000875af11580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612a4b6004600160006142ec565b85856040518463ffffffff1660e01b8152600401612a6b93929190615556565b6020604051808303816000875af1158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612ae36002600460006142ec565b85856040518463ffffffff1660e01b8152600401612b0393929190615556565b6020604051808303816000875af1158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612b7b6004600260006142ec565b85856040518463ffffffff1660e01b8152600401612b9b93929190615556565b6020604051808303816000875af1158015612bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bde91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612c136003600460006142ec565b85856040518463ffffffff1660e01b8152600401612c3393929190615556565b6020604051808303816000875af1158015612c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612cab6004600360006142ec565b85856040518463ffffffff1660e01b8152600401612ccb93929190615556565b6020604051808303816000875af1158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612d4260018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401612d6593929190615556565b6020604051808303816000875af1158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612ddc60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401612dff93929190615556565b6020604051808303816000875af1158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612e7660028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401612e9a93929190615556565b6020604051808303816000875af1158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612f1160028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401612f3593929190615556565b6020604051808303816000875af1158015612f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c612fac60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401612fd293929190615556565b6020604051808303816000875af1158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61304960038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161306f93929190615556565b6020604051808303816000875af115801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c6130e660048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161311093929190615556565b6020604051808303816000875af115801561312f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663145fca2c61318760048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016131b193929190615556565b6020604051808303816000875af11580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361322860018060006142ec565b85856040518463ffffffff1660e01b815260040161324893929190615556565b6020604051808303816000875af1158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936132bf60028060006142ec565b85856040518463ffffffff1660e01b81526004016132df93929190615556565b6020604051808303816000875af11580156132fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936133576001600260006142ec565b85856040518463ffffffff1660e01b815260040161337793929190615556565b6020604051808303816000875af1158015613396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ba91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936133ef6002600160006142ec565b85856040518463ffffffff1660e01b815260040161340f93929190615556565b6020604051808303816000875af115801561342e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361348660038060006142ec565b85856040518463ffffffff1660e01b81526004016134a693929190615556565b6020604051808303816000875af11580156134c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361351e6001600360006142ec565b85856040518463ffffffff1660e01b815260040161353e93929190615556565b6020604051808303816000875af115801561355d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936135b66003600160006142ec565b85856040518463ffffffff1660e01b81526004016135d693929190615556565b6020604051808303816000875af11580156135f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361364e6002600360006142ec565b85856040518463ffffffff1660e01b815260040161366e93929190615556565b6020604051808303816000875af115801561368d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936136e66003600260006142ec565b85856040518463ffffffff1660e01b815260040161370693929190615556565b6020604051808303816000875af1158015613725573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361377d60048060006142ec565b85856040518463ffffffff1660e01b815260040161379d93929190615556565b6020604051808303816000875af11580156137bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936138156001600460006142ec565b85856040518463ffffffff1660e01b815260040161383593929190615556565b6020604051808303816000875af1158015613854573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936138ad6004600160006142ec565b85856040518463ffffffff1660e01b81526004016138cd93929190615556565b6020604051808303816000875af11580156138ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936139456002600460006142ec565b85856040518463ffffffff1660e01b815260040161396593929190615556565b6020604051808303816000875af1158015613984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd1486936139dd6004600260006142ec565b85856040518463ffffffff1660e01b81526004016139fd93929190615556565b6020604051808303816000875af1158015613a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613a756003600460006142ec565b85856040518463ffffffff1660e01b8152600401613a9593929190615556565b6020604051808303816000875af1158015613ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613b0d6004600360006142ec565b85856040518463ffffffff1660e01b8152600401613b2d93929190615556565b6020604051808303816000875af1158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613ba460018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401613bc793929190615556565b6020604051808303816000875af1158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613c3e60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401613c6193929190615556565b6020604051808303816000875af1158015613c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613cd860028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401613cfc93929190615556565b6020604051808303816000875af1158015613d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d3f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613d7360028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401613d9793929190615556565b6020604051808303816000875af1158015613db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dda91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613e0e60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401613e3493929190615556565b6020604051808303816000875af1158015613e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613eab60038060026142ec565b858563ffffffff166040518463ffffffff1660e01b8152600401613ed193929190615556565b6020604051808303816000875af1158015613ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613f4860048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401613f7293929190615556565b6020604051808303816000875af1158015613f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd148693613fe960048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161401393929190615556565b6020604051808303816000875af1158015614032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115614091576140906155e6565b5b60f81b8460ff166040518363ffffffff1660e01b81526004016140b5929190615650565b6020604051808303816000875af11580156140d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f891906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060026004811115614132576141316155e6565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614157929190615650565b6020604051808303816000875af1158015614176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419a91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156141d4576141d36155e6565b5b60f81b8463ffffffff166040518363ffffffff1660e01b81526004016141fb929190615650565b6020604051808303816000875af115801561421a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423e91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600480811115614277576142766155e6565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016142a2929190615650565b6020604051808303816000875af11580156142c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e591906155b9565b9050919050565b6000816002811115614301576143006155e6565b5b60ff166008846004811115614319576143186155e6565b5b61ffff16901b61ffff166010866004811115614338576143376155e6565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600060ff82169050919050565b6144448161442e565b811461444f57600080fd5b50565b6000813590506144618161443b565b92915050565b6000806040838503121561447e5761447d614429565b5b600061448c85828601614452565b925050602061449d85828601614452565b9150509250929050565b60008115159050919050565b6144bc816144a7565b82525050565b60006020820190506144d760008301846144b3565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61452b826144e2565b810181811067ffffffffffffffff8211171561454a576145496144f3565b5b80604052505050565b600061455d61441f565b90506145698282614522565b919050565b6000819050919050565b6145818161456e565b811461458c57600080fd5b50565b60008135905061459e81614578565b92915050565b6000606082840312156145ba576145b96144dd565b5b6145c46060614553565b905060006145d48482850161458f565b60008301525060206145e88482850161458f565b60208301525060406145fc8482850161458f565b60408301525092915050565b60006060828403121561461e5761461d614429565b5b600061462c848285016145a4565b91505092915050565b600060e0828403121561464b5761464a6144dd565b5b61465560e0614553565b905060006146658482850161458f565b60008301525060206146798482850161458f565b602083015250604061468d8482850161458f565b60408301525060606146a18482850161458f565b60608301525060806146b58482850161458f565b60808301525060a06146c98482850161458f565b60a08301525060c06146dd8482850161458f565b60c08301525092915050565b600060e082840312156146ff576146fe614429565b5b600061470d84828501614635565b91505092915050565b600060a0828403121561472c5761472b6144dd565b5b61473660a0614553565b905060006147468482850161458f565b600083015250602061475a8482850161458f565b602083015250604061476e8482850161458f565b60408301525060606147828482850161458f565b60608301525060806147968482850161458f565b60808301525092915050565b600060a082840312156147b8576147b7614429565b5b60006147c684828501614716565b91505092915050565b6147d88161456e565b81146147e357600080fd5b50565b6000813590506147f5816147cf565b92915050565b6148048161456e565b811461480f57600080fd5b50565b600081359050614821816147fb565b92915050565b6148308161456e565b811461483b57600080fd5b50565b60008135905061484d81614827565b92915050565b61485c8161456e565b811461486757600080fd5b50565b60008135905061487981614853565b92915050565b60006101008284031215614896576148956144dd565b5b6148a1610100614553565b905060006148b1848285016147e6565b60008301525060206148c5848285016147e6565b60208301525060406148d984828501614812565b60408301525060606148ed84828501614812565b60608301525060806149018482850161483e565b60808301525060a06149158482850161483e565b60a08301525060c06149298482850161486a565b60c08301525060e061493d8482850161486a565b60e08301525092915050565b6000806000610140848603121561496357614962614429565b5b60006149718682870161487f565b93505061010061498386828701614452565b92505061012061499586828701614452565b9150509250925092565b600082825260208201905092915050565b7f6774546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006149e660168361499f565b91506149f1826149b0565b602082019050919050565b60006020820190508181036000830152614a15816149d9565b9050919050565b7f6774546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614a5260168361499f565b9150614a5d82614a1c565b602082019050919050565b60006020820190508181036000830152614a8181614a45565b9050919050565b7f6774546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614abe60168361499f565b9150614ac982614a88565b602082019050919050565b60006020820190508181036000830152614aed81614ab1565b9050919050565b7f6774546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614b5060268361499f565b9150614b5b82614af4565b604082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f6774546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614be260278361499f565b9150614bed82614b86565b604082019050919050565b60006020820190508181036000830152614c1181614bd5565b9050919050565b7f6774546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614c7460278361499f565b9150614c7f82614c18565b604082019050919050565b60006020820190508181036000830152614ca381614c67565b9050919050565b7f6774546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614d0660278361499f565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000614dbe60468361499f565b9150614dc982614d3c565b606082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f6c65546573743a2063617374203136206661696c656400000000000000000000600082015250565b6000614e2a60168361499f565b9150614e3582614df4565b602082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b7f6c65546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614e9660168361499f565b9150614ea182614e60565b602082019050919050565b60006020820190508181036000830152614ec581614e89565b9050919050565b7f6c65546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614f0260168361499f565b9150614f0d82614ecc565b602082019050919050565b60006020820190508181036000830152614f3181614ef5565b9050919050565b7f6c65546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614f9460268361499f565b9150614f9f82614f38565b604082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f6c65546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061502660278361499f565b915061503182614fca565b604082019050919050565b6000602082019050818103600083015261505581615019565b9050919050565b7f6c65546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006150b860278361499f565b91506150c38261505c565b604082019050919050565b600060208201905081810360008301526150e7816150ab565b9050919050565b7f6c65546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061514a60278361499f565b9150615155826150ee565b604082019050919050565b600060208201905081810360008301526151798161513d565b9050919050565b7f6c6574546573743a2063617374203136206661696c6564000000000000000000600082015250565b60006151b660178361499f565b91506151c182615180565b602082019050919050565b600060208201905081810360008301526151e5816151a9565b9050919050565b7f6c6574546573743a2063617374203332206661696c6564000000000000000000600082015250565b600061522260178361499f565b915061522d826151ec565b602082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f6c6574546573743a2063617374203634206661696c6564000000000000000000600082015250565b600061528e60178361499f565b915061529982615258565b602082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f6c6574546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061532060278361499f565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f6c6574546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006153b260288361499f565b91506153bd82615356565b604082019050919050565b600060208201905081810360008301526153e1816153a5565b9050919050565b7f6c6574546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061544460288361499f565b915061544f826153e8565b604082019050919050565b6000602082019050818103600083015261547381615437565b9050919050565b7f6c6574546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006154d660288361499f565b91506154e18261547a565b604082019050919050565b60006020820190508181036000830152615505816154c9565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6155418161550c565b82525050565b6155508161456e565b82525050565b600060608201905061556b6000830186615538565b6155786020830185615547565b6155856040830184615547565b949350505050565b6155968161456e565b81146155a157600080fd5b50565b6000815190506155b38161558d565b92915050565b6000602082840312156155cf576155ce614429565b5b60006155dd848285016155a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61564a81615615565b82525050565b60006040820190506156656000830185615641565b6156726020830184615547565b939250505056fea26469706673582212201e28dc3f17982ee0788f6aff18c7d18e47db88256da1a59466d02c500ab0c69664736f6c63430008140033";
335
+ "0x608060405234801561001057600080fd5b5061282d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637d2e0f48116100765780638b6e7a8c1161005b5780638b6e7a8c1461014f578063acb3816914610162578063ebb571fd1461017557600080fd5b80637d2e0f481461013157806380f937bc1461013c57600080fd5b80632e544aa0116100a75780632e544aa0146100fa5780632e5950eb1461010d578063791175491461011e57600080fd5b806308c90f0d146100c357806329875348146100ea575b600080fd5b6100d66100d13660046124c3565b61018a565b604051901515815260200160405180910390f35b600054610100900460ff166100d6565b6100d6610108366004612547565b610818565b60005462010000900460ff166100d6565b6100d661012c3660046124c3565b6108f6565b60005460ff166100d6565b6100d661014a3660046125ca565b610f6f565b6100d661015d3660046124c3565b611014565b6100d6610170366004612675565b61168e565b61018861018336600461270c565b6116fd565b005b60006101d460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6101f860405180606001604052806000815260200160008152602001600081525090565b61022a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61026a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6102758488886116fd565b600061029161028c86600001518760200151611784565b61184a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055604086015160608701519192506102d3916118db565b8452845160608601516102e691906118f0565b84602001818152505061030185604001518660200151611906565b6040850152600061031185610818565b90508115158115151461036b5760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61037d86608001518760a0015161191c565b8452855160a08701516103909190611931565b8460200181815250506103ab86608001518760200151611947565b8460400181815250506103c686604001518760a0015161195d565b8460600181815250506103e186608001518760600151611973565b608085015260006103f18561168e565b9050801515831515146104465760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b6104588760c001518860e00151611989565b8452865160e088015161046b919061199e565b8460200181815250506104868760c0015188602001516119b4565b8460400181815250506104a187604001518860e001516119ca565b8460600181815250506104bc8760c0015188606001516119e0565b8460800181815250506104d787608001518860e001516119f6565b8460a00181815250506104f28760c001518860a00151611a0c565b60c0850152600061050285610f6f565b9050801515841515146105575760405162461bcd60e51b815260206004820152601660248201527f6774546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b61056861028c8c8a60200151611a22565b151584151514801561058d575061058661028c89600001518c611aa4565b1515841515145b6105ff5760405162461bcd60e51b815260206004820152602660248201527f6774546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b61061361028c8c60ff168a60600151611b27565b151584151514801561063b575061063461028c89604001518c60ff16611bab565b1515841515145b6106ad5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b6106c161028c8c60ff168a60a00151611c2e565b15158415151480156106e957506106e261028c89608001518c60ff16611cb4565b1515841515145b61075b5760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61076f61028c8c60ff168a60e00151611d3a565b1515841515148015610797575061079061028c8960c001518c60ff16611dc4565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6774546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b50919998505050505050505050565b600080610828836000015161184a565b9050610837836020015161184a565b15158115151480156108585750610851836040015161184a565b1515811515145b6108f05760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610362565b92915050565b600061094060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61096460405180606001604052806000815260200160008152602001600081525090565b6109966040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6109d66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6109e18488886116fd565b60006109f861028c86600001518760200151611e4e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008315150217905560408601516060870151919250610a3e91611e63565b845284516060860151610a519190611e78565b846020018181525050610a6c85604001518660200151611e8e565b60408501526000610a7c85610818565b905081151581151514610ad15760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610362565b610ae386608001518760a00151611ea4565b8452855160a0870151610af69190611eb9565b846020018181525050610b1186608001518760200151611ecf565b846040018181525050610b2c86604001518760a00151611ee5565b846060018181525050610b4786608001518760600151611efb565b60808501526000610b578561168e565b905080151583151514610bac5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610362565b610bbe8760c001518860e00151611f11565b8452865160e0880151610bd19190611f26565b846020018181525050610bec8760c001518860200151611f3c565b846040018181525050610c0787604001518860e00151611f52565b846060018181525050610c228760c001518860600151611f68565b846080018181525050610c3d87608001518860e00151611f7e565b8460a0018181525050610c588760c001518860a00151611f94565b60c08501526000610c6885610f6f565b905080151584151514610cbd5760405162461bcd60e51b815260206004820152601660248201527f6c65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610362565b610cce61028c8c8a60200151611faa565b1515841515148015610cf35750610cec61028c89600001518c611fbf565b1515841515145b610d655760405162461bcd60e51b815260206004820152602660248201527f6c65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610362565b610d7961028c8c60ff168a60600151611fd5565b1515841515148015610da15750610d9a61028c89604001518c60ff16611feb565b1515841515145b610e135760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610e2761028c8c60ff168a60a00151612000565b1515841515148015610e4f5750610e4861028c89608001518c60ff16612016565b1515841515145b610ec15760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b610ed561028c8c60ff168a60e0015161202c565b1515841515148015610efd5750610ef661028c8960c001518c60ff16612042565b1515841515145b6108095760405162461bcd60e51b815260206004820152602760248201527f6c65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b600080610f7f836000015161184a565b9050610f8e836020015161184a565b1515811515148015610faf5750610fa8836040015161184a565b1515811515145b8015610fca5750610fc3836080015161184a565b1515811515145b8015610fe55750610fde836060015161184a565b1515811515145b80156110005750610ff98360c0015161184a565b1515811515145b801561085857506108518360a0015161184a565b600061105e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61108260405180606001604052806000815260200160008152602001600081525090565b6110b46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6110f46040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110ff8488886116fd565b600061111661028c86600001518760200151612058565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000831515021790556040860151606087015191925061115d9161206d565b8452845160608601516111709190612082565b84602001818152505061118b85604001518660200151612098565b6040850152600061119b85610818565b9050811515811515146111f05760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203136206661696c65640000000000000000006044820152606401610362565b61120286608001518760a001516120ae565b8452855160a087015161121591906120c3565b846020018181525050611230866080015187602001516120d9565b84604001818152505061124b86604001518760a001516120ef565b84606001818152505061126686608001518760600151612105565b608085015260006112768561168e565b9050801515831515146112cb5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203332206661696c65640000000000000000006044820152606401610362565b6112dd8760c001518860e0015161211b565b8452865160e08801516112f09190612130565b84602001818152505061130b8760c001518860200151612146565b84604001818152505061132687604001518860e0015161215c565b8460600181815250506113418760c001518860600151612172565b84608001818152505061135c87608001518860e00151612188565b8460a00181815250506113778760c001518860a0015161219e565b60c0850152600061138785610f6f565b9050801515841515146113dc5760405162461bcd60e51b815260206004820152601760248201527f6c6574546573743a2063617374203634206661696c65640000000000000000006044820152606401610362565b6113ed61028c8c8a602001516121b4565b1515841515148015611412575061140b61028c89600001518c6121c9565b1515841515145b6114845760405162461bcd60e51b815260206004820152602760248201527f6c6574546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610362565b61149861028c8c60ff168a606001516121df565b15158415151480156114c057506114b961028c89604001518c60ff166121f5565b1515841515145b6115325760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b61154661028c8c60ff168a60a0015161220a565b151584151514801561156e575061156761028c89608001518c60ff16612220565b1515841515145b6115e05760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b6115f461028c8c60ff168a60e00151612236565b151584151514801561161c575061161561028c8960c001518c60ff1661224c565b1515841515145b6108095760405162461bcd60e51b815260206004820152602860248201527f6c6574546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c65640000000000000000000000000000000000000000000000006064820152608401610362565b60008061169e836000015161184a565b90506116ad836020015161184a565b15158115151480156116ce57506116c7836040015161184a565b1515811515145b80156116e957506116e2836080015161184a565b1515811515145b80156108585750610851836060015161184a565b61170682612262565b835261171181612262565b602084015261172260ff831661230a565b604084015261173360ff821661230a565b606084015261174460ff8316612374565b608084015261175560ff8216612374565b60a084015261176660ff83166123e0565b60c084015261177760ff82166123e0565b60e0909301929092525050565b60006064636d82e45e61179960018085612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906127af565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906127af565b15159392505050565b60006064636d82e45e61179960028085612450565b60006064636d82e45e6117996001600285612450565b60006064636d82e45e6117996002600185612450565b60006064636d82e45e61179960038085612450565b60006064636d82e45e6117996001600385612450565b60006064636d82e45e6117996003600185612450565b60006064636d82e45e6117996002600385612450565b60006064636d82e45e6117996003600285612450565b60006064636d82e45e61179960048085612450565b60006064636d82e45e6117996001600485612450565b60006064636d82e45e6117996004600185612450565b60006064636d82e45e6117996002600485612450565b60006064636d82e45e6117996004600285612450565b60006064636d82e45e6117996003600485612450565b60006064636d82e45e6117996004600385612450565b60006064636d82e45e611a3760018080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611800565b60006064636d82e45e611aba6001806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611800565b60006064636d82e45e611b3d6002806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611800565b60006064636d82e45e611bc060028080612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611800565b60006064636d82e45e611c446003806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611cca6003806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611800565b60006064636d82e45e611d506004806001612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611800565b60006064636d82e45e611dda6004806002612450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611800565b6000606463145fca2c61179960018085612450565b6000606463145fca2c61179960028085612450565b6000606463145fca2c6117996001600285612450565b6000606463145fca2c6117996002600185612450565b6000606463145fca2c61179960038085612450565b6000606463145fca2c6117996001600385612450565b6000606463145fca2c6117996003600185612450565b6000606463145fca2c6117996002600385612450565b6000606463145fca2c6117996003600285612450565b6000606463145fca2c61179960048085612450565b6000606463145fca2c6117996001600485612450565b6000606463145fca2c6117996004600185612450565b6000606463145fca2c6117996002600485612450565b6000606463145fca2c6117996004600285612450565b6000606463145fca2c6117996003600485612450565b6000606463145fca2c6117996004600385612450565b6000606463145fca2c611a3760018080612450565b6000606463145fca2c611aba6001806002612450565b6000606463145fca2c611b3d6002806001612450565b6000606463145fca2c611bc060028080612450565b6000606463145fca2c611c446003806001612450565b6000606463145fca2c611cca6003806002612450565b6000606463145fca2c611d506004806001612450565b6000606463145fca2c611dda6004806002612450565b6000606463dd14869361179960018085612450565b6000606463dd14869361179960028085612450565b6000606463dd1486936117996001600285612450565b6000606463dd1486936117996002600185612450565b6000606463dd14869361179960038085612450565b6000606463dd1486936117996001600385612450565b6000606463dd1486936117996003600185612450565b6000606463dd1486936117996002600385612450565b6000606463dd1486936117996003600285612450565b6000606463dd14869361179960048085612450565b6000606463dd1486936117996001600485612450565b6000606463dd1486936117996004600185612450565b6000606463dd1486936117996002600485612450565b6000606463dd1486936117996004600285612450565b6000606463dd1486936117996003600485612450565b6000606463dd1486936117996004600385612450565b6000606463dd148693611a3760018080612450565b6000606463dd148693611aba6001806002612450565b6000606463dd148693611b3d6002806001612450565b6000606463dd148693611bc060028080612450565b6000606463dd148693611c446003806001612450565b6000606463dd148693611cca6003806002612450565b6000606463dd148693611d506004806001612450565b6000606463dd148693611dda6004806002612450565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f091906127af565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016122c7565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016122c7565b6000816002811115612464576124646127c8565b60ff16600884600481111561247b5761247b6127c8565b61ffff16901b61ffff166010866004811115612499576124996127c8565b62ffffff16901b171760e81b949350505050565b803560ff811681146124be57600080fd5b919050565b600080604083850312156124d657600080fd5b6124df836124ad565b91506124ed602084016124ad565b90509250929050565b604051610100810167ffffffffffffffff81118282101715612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561255957600080fd5b6040516060810181811067ffffffffffffffff821117156125a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e082840312156125dc57600080fd5b60405160e0810181811067ffffffffffffffff82111715612626577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561268757600080fd5b60405160a0810181811067ffffffffffffffff821117156126d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600080600083850361014081121561272357600080fd5b6101008082121561273357600080fd5b61273b6124f6565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506127958187016124ad565b935050506127a661012085016124ad565b90509250925092565b6000602082840312156127c157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220087cd92e434ff2aa59e2d3775048ef76f83cdb8fb111e5e5d84fcb56df26fcf964736f6c63430008130033";
336
336
 
337
337
  type Comparison1TestsContractConstructorParams =
338
338
  | [signer?: Signer]
@@ -268,6 +268,16 @@ const _abi = [
268
268
  inputs: [
269
269
  {
270
270
  components: [
271
+ {
272
+ internalType: "gtBool",
273
+ name: "aBool_s",
274
+ type: "uint256",
275
+ },
276
+ {
277
+ internalType: "gtBool",
278
+ name: "bBool_s",
279
+ type: "uint256",
280
+ },
271
281
  {
272
282
  internalType: "gtUint8",
273
283
  name: "a8_s",
@@ -332,7 +342,7 @@ const _abi = [
332
342
  ] as const;
333
343
 
334
344
  const _bytecode =
335
- "0x608060405234801561001057600080fd5b506156af80620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806380f937bc1161006657806380f937bc1461016f5780639a0c13d81461019f578063acb38169146101bd578063bc3aa1ed146101ed578063ebb571fd1461021d5761009e565b80630d980bf0146100a35780631988e322146100c15780632e544aa0146100f15780632fd37f4b1461012157806370eb37ee1461013f575b600080fd5b6100ab610239565b6040516100b8919061443a565b60405180910390f35b6100db60048036038101906100d6919061449d565b61024f565b6040516100e8919061443a565b60405180910390f35b61010b60048036038101906101069190614608565b610761565b604051610118919061443a565b60405180910390f35b6101296107e9565b604051610136919061443a565b60405180910390f35b6101596004803603810190610154919061449d565b6107ff565b604051610166919061443a565b60405180910390f35b610189600480360381019061018491906146e9565b610d10565b604051610196919061443a565b60405180910390f35b6101a7610e04565b6040516101b4919061443a565b60405180910390f35b6101d760048036038101906101d291906147a2565b610e1a565b6040516101e4919061443a565b60405180910390f35b6102076004803603810190610202919061449d565b610ed8565b604051610214919061443a565b60405180910390f35b61023760048036038101906102329190614949565b6113ea565b005b60008060019054906101000a900460ff16905090565b600061025961434d565b610261614392565b6102696143b3565b6102716143e2565b61027c8488886113ea565b600061029861029386600001518760200151611491565b611528565b905080600060026101000a81548160ff0219169083151502179055506102c6856040015186606001516115cf565b8460000181815250506102e185600001518660600151611666565b8460200181815250506102fc856040015186602001516116fe565b846040018181525050600061031085610761565b905081151581151514610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f906149fc565b60405180910390fd5b61036a86608001518760a00151611796565b84600001818152505061038586600001518760a0015161182d565b8460200181815250506103a0866080015187602001516118c5565b8460400181815250506103bb86604001518760a0015161195d565b8460600181815250506103d6866080015187606001516119f5565b84608001818152505060006103ea85610e1a565b905080151583151514610432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990614a68565b60405180910390fd5b6104448760c001518860e00151611a8d565b84600001818152505061045f87600001518860e00151611b24565b84602001818152505061047a8760c001518860200151611bbc565b84604001818152505061049587604001518860e00151611c54565b8460600181815250506104b08760c001518860600151611cec565b8460800181815250506104cb87608001518860e00151611d84565b8460a00181815250506104e68760c001518860a00151611e1c565b8460c001818152505060006104fa85610d10565b905080151584151514610542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053990614ad4565b60405180910390fd5b6105586105538c8a60200151611eb4565b611528565b1515841515148015610582575061057b61057689600001518c611f4e565b611528565b1515841515145b6105c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b890614b66565b60405180910390fd5b6105da6105d58c60ff168a60600151611fe8565b611528565b151584151514801561060757506106006105fb89604001518c60ff16612083565b611528565b1515841515145b610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90614bf8565b60405180910390fd5b61065f61065a8c60ff168a60a0015161211e565b611528565b151584151514801561068c575061068561068089608001518c60ff166121bb565b611528565b1515841515145b6106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614c8a565b60405180910390fd5b6106e46106df8c60ff168a60e00151612258565b611528565b1515841515148015610711575061070a6107058960c001518c60ff166122f9565b611528565b1515841515145b610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074790614d1c565b60405180910390fd5b839850505050505050505092915050565b6000806107718360000151611528565b90506107808360200151611528565b15158115151480156107a1575061079a8360400151611528565b1515811515145b6107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790614dd4565b60405180910390fd5b80915050919050565b60008060029054906101000a900460ff16905090565b600061080961434d565b610811614392565b6108196143b3565b6108216143e2565b61082c8488886113ea565b60006108486108438660000151876020015161239a565b611528565b9050806000806101000a81548160ff02191690831515021790555061087585604001518660600151612431565b846000018181525050610890856000015186606001516124c8565b8460200181815250506108ab85604001518660200151612560565b84604001818152505060006108bf85610761565b905081151581151514610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90614e40565b60405180910390fd5b61091986608001518760a001516125f8565b84600001818152505061093486600001518760a0015161268f565b84602001818152505061094f86608001518760200151612727565b84604001818152505061096a86604001518760a001516127bf565b84606001818152505061098586608001518760600151612857565b846080018181525050600061099985610e1a565b9050801515831515146109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890614eac565b60405180910390fd5b6109f38760c001518860e001516128ef565b846000018181525050610a0e87600001518860e00151612986565b846020018181525050610a298760c001518860200151612a1e565b846040018181525050610a4487604001518860e00151612ab6565b846060018181525050610a5f8760c001518860600151612b4e565b846080018181525050610a7a87608001518860e00151612be6565b8460a0018181525050610a958760c001518860a00151612c7e565b8460c00181815250506000610aa985610d10565b905080151584151514610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890614f18565b60405180910390fd5b610b07610b028c8a60200151612d16565b611528565b1515841515148015610b315750610b2a610b2589600001518c612db0565b611528565b1515841515145b610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6790614faa565b60405180910390fd5b610b89610b848c60ff168a60600151612e4a565b611528565b1515841515148015610bb65750610baf610baa89604001518c60ff16612ee5565b611528565b1515841515145b610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061503c565b60405180910390fd5b610c0e610c098c60ff168a60a00151612f80565b611528565b1515841515148015610c3b5750610c34610c2f89608001518c60ff1661301d565b611528565b1515841515145b610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906150ce565b60405180910390fd5b610c93610c8e8c60ff168a60e001516130ba565b611528565b1515841515148015610cc05750610cb9610cb48960c001518c60ff1661315b565b611528565b1515841515145b610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690615160565b60405180910390fd5b839850505050505050505092915050565b600080610d208360000151611528565b9050610d2f8360200151611528565b1515811515148015610d505750610d498360400151611528565b1515811515145b8015610d6b5750610d648360800151611528565b1515811515145b8015610d865750610d7f8360600151611528565b1515811515145b8015610da15750610d9a8360c00151611528565b1515811515145b8015610dbc5750610db58360a00151611528565b1515811515145b610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290614dd4565b60405180910390fd5b80915050919050565b60008060009054906101000a900460ff16905090565b600080610e2a8360000151611528565b9050610e398360200151611528565b1515811515148015610e5a5750610e538360400151611528565b1515811515145b8015610e755750610e6e8360800151611528565b1515811515145b8015610e905750610e898360600151611528565b1515811515145b610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690614dd4565b60405180910390fd5b80915050919050565b6000610ee261434d565b610eea614392565b610ef26143b3565b610efa6143e2565b610f058488886113ea565b6000610f21610f1c866000015187602001516131fc565b611528565b905080600060016101000a81548160ff021916908315150217905550610f4f85604001518660600151613293565b846000018181525050610f6a8560000151866060015161332a565b846020018181525050610f85856040015186602001516133c2565b8460400181815250506000610f9985610761565b905081151581151514610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906151cc565b60405180910390fd5b610ff386608001518760a0015161345a565b84600001818152505061100e86600001518760a001516134f1565b84602001818152505061102986608001518760200151613589565b84604001818152505061104486604001518760a00151613621565b84606001818152505061105f866080015187606001516136b9565b846080018181525050600061107385610e1a565b9050801515831515146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290615238565b60405180910390fd5b6110cd8760c001518860e00151613751565b8460000181815250506110e887600001518860e001516137e8565b8460200181815250506111038760c001518860200151613880565b84604001818152505061111e87604001518860e00151613918565b8460600181815250506111398760c0015188606001516139b0565b84608001818152505061115487608001518860e00151613a48565b8460a001818152505061116f8760c001518860a00151613ae0565b8460c0018181525050600061118385610d10565b9050801515841515146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c2906152a4565b60405180910390fd5b6111e16111dc8c8a60200151613b78565b611528565b151584151514801561120b57506112046111ff89600001518c613c12565b611528565b1515841515145b61124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190615336565b60405180910390fd5b61126361125e8c60ff168a60600151613cac565b611528565b1515841515148015611290575061128961128489604001518c60ff16613d47565b611528565b1515841515145b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906153c8565b60405180910390fd5b6112e86112e38c60ff168a60a00151613de2565b611528565b1515841515148015611315575061130e61130989608001518c60ff16613e7f565b611528565b1515841515145b611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b9061545a565b60405180910390fd5b61136d6113688c60ff168a60e00151613f1c565b611528565b151584151514801561139a575061139361138e8960c001518c60ff16613fbd565b611528565b1515841515145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d0906154ec565b60405180910390fd5b839850505050505050505092915050565b6113f38261405e565b8360000181815250506114058161405e565b83602001818152505061141a8260ff166140ff565b83604001818152505061142f8160ff166140ff565b8360600181815250506114448260ff166141a1565b8360800181815250506114598160ff166141a1565b8360a001818152505061146e8260ff16614245565b8360c00181815250506114838160ff16614245565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746114bd60018060006142ec565b85856040518463ffffffff1660e01b81526004016114dd93929190615556565b6020604051808303816000875af11580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152091906155b9565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561155c5761155b6155e6565b5b60f81b856040518363ffffffff1660e01b815260040161157d929190615650565b6020604051808303816000875af115801561159c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c091906155b9565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746115fb60028060006142ec565b85856040518463ffffffff1660e01b815260040161161b93929190615556565b6020604051808303816000875af115801561163a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746116936001600260006142ec565b85856040518463ffffffff1660e01b81526004016116b393929190615556565b6020604051808303816000875af11580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461172b6002600160006142ec565b85856040518463ffffffff1660e01b815260040161174b93929190615556565b6020604051808303816000875af115801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746117c260038060006142ec565b85856040518463ffffffff1660e01b81526004016117e293929190615556565b6020604051808303816000875af1158015611801573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461185a6001600360006142ec565b85856040518463ffffffff1660e01b815260040161187a93929190615556565b6020604051808303816000875af1158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746118f26003600160006142ec565b85856040518463ffffffff1660e01b815260040161191293929190615556565b6020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461198a6002600360006142ec565b85856040518463ffffffff1660e01b81526004016119aa93929190615556565b6020604051808303816000875af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611a226003600260006142ec565b85856040518463ffffffff1660e01b8152600401611a4293929190615556565b6020604051808303816000875af1158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611ab960048060006142ec565b85856040518463ffffffff1660e01b8152600401611ad993929190615556565b6020604051808303816000875af1158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611b516001600460006142ec565b85856040518463ffffffff1660e01b8152600401611b7193929190615556565b6020604051808303816000875af1158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611be96004600160006142ec565b85856040518463ffffffff1660e01b8152600401611c0993929190615556565b6020604051808303816000875af1158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611c816002600460006142ec565b85856040518463ffffffff1660e01b8152600401611ca193929190615556565b6020604051808303816000875af1158015611cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611d196004600260006142ec565b85856040518463ffffffff1660e01b8152600401611d3993929190615556565b6020604051808303816000875af1158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611db16003600460006142ec565b85856040518463ffffffff1660e01b8152600401611dd193929190615556565b6020604051808303816000875af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611e496004600360006142ec565b85856040518463ffffffff1660e01b8152600401611e6993929190615556565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611ee060018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401611f0393929190615556565b6020604051808303816000875af1158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b2074611f7a60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401611f9d93929190615556565b6020604051808303816000875af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461201460028060016142ec565b8561ffff16856040518463ffffffff1660e01b815260040161203893929190615556565b6020604051808303816000875af1158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746120af60028060026142ec565b858561ffff166040518463ffffffff1660e01b81526004016120d393929190615556565b6020604051808303816000875af11580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461214a60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b815260040161217093929190615556565b6020604051808303816000875af115801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b20746121e760038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161220d93929190615556565b6020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461228460048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016122ae93929190615556565b6020604051808303816000875af11580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663813b207461232560048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161234f93929190615556565b6020604051808303816000875af115801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6123c660018060006142ec565b85856040518463ffffffff1660e01b81526004016123e693929190615556565b6020604051808303816000875af1158015612405573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61245d60028060006142ec565b85856040518463ffffffff1660e01b815260040161247d93929190615556565b6020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6124f56001600260006142ec565b85856040518463ffffffff1660e01b815260040161251593929190615556565b6020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61258d6002600160006142ec565b85856040518463ffffffff1660e01b81526004016125ad93929190615556565b6020604051808303816000875af11580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61262460038060006142ec565b85856040518463ffffffff1660e01b815260040161264493929190615556565b6020604051808303816000875af1158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6126bc6001600360006142ec565b85856040518463ffffffff1660e01b81526004016126dc93929190615556565b6020604051808303816000875af11580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6127546003600160006142ec565b85856040518463ffffffff1660e01b815260040161277493929190615556565b6020604051808303816000875af1158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6127ec6002600360006142ec565b85856040518463ffffffff1660e01b815260040161280c93929190615556565b6020604051808303816000875af115801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6128846003600260006142ec565b85856040518463ffffffff1660e01b81526004016128a493929190615556565b6020604051808303816000875af11580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61291b60048060006142ec565b85856040518463ffffffff1660e01b815260040161293b93929190615556565b6020604051808303816000875af115801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6129b36001600460006142ec565b85856040518463ffffffff1660e01b81526004016129d393929190615556565b6020604051808303816000875af11580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612a4b6004600160006142ec565b85856040518463ffffffff1660e01b8152600401612a6b93929190615556565b6020604051808303816000875af1158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612ae36002600460006142ec565b85856040518463ffffffff1660e01b8152600401612b0393929190615556565b6020604051808303816000875af1158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612b7b6004600260006142ec565b85856040518463ffffffff1660e01b8152600401612b9b93929190615556565b6020604051808303816000875af1158015612bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bde91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612c136003600460006142ec565b85856040518463ffffffff1660e01b8152600401612c3393929190615556565b6020604051808303816000875af1158015612c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612cab6004600360006142ec565b85856040518463ffffffff1660e01b8152600401612ccb93929190615556565b6020604051808303816000875af1158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612d4260018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401612d6593929190615556565b6020604051808303816000875af1158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612ddc60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401612dff93929190615556565b6020604051808303816000875af1158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612e7660028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401612e9a93929190615556565b6020604051808303816000875af1158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612f1160028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401612f3593929190615556565b6020604051808303816000875af1158015612f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb612fac60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401612fd293929190615556565b6020604051808303816000875af1158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61304960038060026142ec565b858563ffffffff166040518463ffffffff1660e01b815260040161306f93929190615556565b6020604051808303816000875af115801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6130e660048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161311093929190615556565b6020604051808303816000875af115801561312f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315391906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb61318760048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016131b193929190615556565b6020604051808303816000875af11580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661322860018060006142ec565b85856040518463ffffffff1660e01b815260040161324893929190615556565b6020604051808303816000875af1158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566132bf60028060006142ec565b85856040518463ffffffff1660e01b81526004016132df93929190615556565b6020604051808303816000875af11580156132fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566133576001600260006142ec565b85856040518463ffffffff1660e01b815260040161337793929190615556565b6020604051808303816000875af1158015613396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ba91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566133ef6002600160006142ec565b85856040518463ffffffff1660e01b815260040161340f93929190615556565b6020604051808303816000875af115801561342e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345291906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661348660038060006142ec565b85856040518463ffffffff1660e01b81526004016134a693929190615556565b6020604051808303816000875af11580156134c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661351e6001600360006142ec565b85856040518463ffffffff1660e01b815260040161353e93929190615556565b6020604051808303816000875af115801561355d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566135b66003600160006142ec565b85856040518463ffffffff1660e01b81526004016135d693929190615556565b6020604051808303816000875af11580156135f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661364e6002600360006142ec565b85856040518463ffffffff1660e01b815260040161366e93929190615556565b6020604051808303816000875af115801561368d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b191906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566136e66003600260006142ec565b85856040518463ffffffff1660e01b815260040161370693929190615556565b6020604051808303816000875af1158015613725573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374991906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c5661377d60048060006142ec565b85856040518463ffffffff1660e01b815260040161379d93929190615556565b6020604051808303816000875af11580156137bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566138156001600460006142ec565b85856040518463ffffffff1660e01b815260040161383593929190615556565b6020604051808303816000875af1158015613854573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566138ad6004600160006142ec565b85856040518463ffffffff1660e01b81526004016138cd93929190615556565b6020604051808303816000875af11580156138ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566139456002600460006142ec565b85856040518463ffffffff1660e01b815260040161396593929190615556565b6020604051808303816000875af1158015613984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566139dd6004600260006142ec565b85856040518463ffffffff1660e01b81526004016139fd93929190615556565b6020604051808303816000875af1158015613a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613a756003600460006142ec565b85856040518463ffffffff1660e01b8152600401613a9593929190615556565b6020604051808303816000875af1158015613ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad891906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613b0d6004600360006142ec565b85856040518463ffffffff1660e01b8152600401613b2d93929190615556565b6020604051808303816000875af1158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7091906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613ba460018060016142ec565b8560ff16856040518463ffffffff1660e01b8152600401613bc793929190615556565b6020604051808303816000875af1158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613c3e60018060026142ec565b858560ff166040518463ffffffff1660e01b8152600401613c6193929190615556565b6020604051808303816000875af1158015613c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613cd860028060016142ec565b8561ffff16856040518463ffffffff1660e01b8152600401613cfc93929190615556565b6020604051808303816000875af1158015613d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d3f91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613d7360028060026142ec565b858561ffff166040518463ffffffff1660e01b8152600401613d9793929190615556565b6020604051808303816000875af1158015613db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dda91906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613e0e60038060016142ec565b8563ffffffff16856040518463ffffffff1660e01b8152600401613e3493929190615556565b6020604051808303816000875af1158015613e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7791906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613eab60038060026142ec565b858563ffffffff166040518463ffffffff1660e01b8152600401613ed193929190615556565b6020604051808303816000875af1158015613ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1491906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613f4860048060016142ec565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401613f7293929190615556565b6020604051808303816000875af1158015613f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb591906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c56613fe960048060026142ec565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161401393929190615556565b6020604051808303816000875af1158015614032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405691906155b9565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115614091576140906155e6565b5b60f81b8460ff166040518363ffffffff1660e01b81526004016140b5929190615650565b6020604051808303816000875af11580156140d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f891906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060026004811115614132576141316155e6565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614157929190615650565b6020604051808303816000875af1158015614176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419a91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156141d4576141d36155e6565b5b60f81b8463ffffffff166040518363ffffffff1660e01b81526004016141fb929190615650565b6020604051808303816000875af115801561421a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423e91906155b9565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600480811115614277576142766155e6565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016142a2929190615650565b6020604051808303816000875af11580156142c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e591906155b9565b9050919050565b6000816002811115614301576143006155e6565b5b60ff166008846004811115614319576143186155e6565b5b61ffff16901b61ffff166010866004811115614338576143376155e6565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008115159050919050565b6144348161441f565b82525050565b600060208201905061444f600083018461442b565b92915050565b6000604051905090565b600080fd5b600060ff82169050919050565b61447a81614464565b811461448557600080fd5b50565b60008135905061449781614471565b92915050565b600080604083850312156144b4576144b361445f565b5b60006144c285828601614488565b92505060206144d385828601614488565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61452b826144e2565b810181811067ffffffffffffffff8211171561454a576145496144f3565b5b80604052505050565b600061455d614455565b90506145698282614522565b919050565b6000819050919050565b6145818161456e565b811461458c57600080fd5b50565b60008135905061459e81614578565b92915050565b6000606082840312156145ba576145b96144dd565b5b6145c46060614553565b905060006145d48482850161458f565b60008301525060206145e88482850161458f565b60208301525060406145fc8482850161458f565b60408301525092915050565b60006060828403121561461e5761461d61445f565b5b600061462c848285016145a4565b91505092915050565b600060e0828403121561464b5761464a6144dd565b5b61465560e0614553565b905060006146658482850161458f565b60008301525060206146798482850161458f565b602083015250604061468d8482850161458f565b60408301525060606146a18482850161458f565b60608301525060806146b58482850161458f565b60808301525060a06146c98482850161458f565b60a08301525060c06146dd8482850161458f565b60c08301525092915050565b600060e082840312156146ff576146fe61445f565b5b600061470d84828501614635565b91505092915050565b600060a0828403121561472c5761472b6144dd565b5b61473660a0614553565b905060006147468482850161458f565b600083015250602061475a8482850161458f565b602083015250604061476e8482850161458f565b60408301525060606147828482850161458f565b60608301525060806147968482850161458f565b60808301525092915050565b600060a082840312156147b8576147b761445f565b5b60006147c684828501614716565b91505092915050565b6147d88161456e565b81146147e357600080fd5b50565b6000813590506147f5816147cf565b92915050565b6148048161456e565b811461480f57600080fd5b50565b600081359050614821816147fb565b92915050565b6148308161456e565b811461483b57600080fd5b50565b60008135905061484d81614827565b92915050565b61485c8161456e565b811461486757600080fd5b50565b60008135905061487981614853565b92915050565b60006101008284031215614896576148956144dd565b5b6148a1610100614553565b905060006148b1848285016147e6565b60008301525060206148c5848285016147e6565b60208301525060406148d984828501614812565b60408301525060606148ed84828501614812565b60608301525060806149018482850161483e565b60808301525060a06149158482850161483e565b60a08301525060c06149298482850161486a565b60c08301525060e061493d8482850161486a565b60e08301525092915050565b600080600061014084860312156149635761496261445f565b5b60006149718682870161487f565b93505061010061498386828701614488565b92505061012061499586828701614488565b9150509250925092565b600082825260208201905092915050565b7f6765546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006149e660168361499f565b91506149f1826149b0565b602082019050919050565b60006020820190508181036000830152614a15816149d9565b9050919050565b7f6765546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614a5260168361499f565b9150614a5d82614a1c565b602082019050919050565b60006020820190508181036000830152614a8181614a45565b9050919050565b7f6765546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614abe60168361499f565b9150614ac982614a88565b602082019050919050565b60006020820190508181036000830152614aed81614ab1565b9050919050565b7f6765546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614b5060268361499f565b9150614b5b82614af4565b604082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f6765546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614be260278361499f565b9150614bed82614b86565b604082019050919050565b60006020820190508181036000830152614c1181614bd5565b9050919050565b7f6765546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614c7460278361499f565b9150614c7f82614c18565b604082019050919050565b60006020820190508181036000830152614ca381614c67565b9050919050565b7f6765546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614d0660278361499f565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000614dbe60468361499f565b9150614dc982614d3c565b606082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f6571546573743a2063617374203136206661696c656400000000000000000000600082015250565b6000614e2a60168361499f565b9150614e3582614df4565b602082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b7f6571546573743a2063617374203332206661696c656400000000000000000000600082015250565b6000614e9660168361499f565b9150614ea182614e60565b602082019050919050565b60006020820190508181036000830152614ec581614e89565b9050919050565b7f6571546573743a2063617374203634206661696c656400000000000000000000600082015250565b6000614f0260168361499f565b9150614f0d82614ecc565b602082019050919050565b60006020820190508181036000830152614f3181614ef5565b9050919050565b7f6571546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b6000614f9460268361499f565b9150614f9f82614f38565b604082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f6571546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061502660278361499f565b915061503182614fca565b604082019050919050565b6000602082019050818103600083015261505581615019565b9050919050565b7f6571546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006150b860278361499f565b91506150c38261505c565b604082019050919050565b600060208201905081810360008301526150e7816150ab565b9050919050565b7f6571546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061514a60278361499f565b9150615155826150ee565b604082019050919050565b600060208201905081810360008301526151798161513d565b9050919050565b7f6e65546573743a2063617374203136206661696c656400000000000000000000600082015250565b60006151b660168361499f565b91506151c182615180565b602082019050919050565b600060208201905081810360008301526151e5816151a9565b9050919050565b7f6e65546573743a2063617374203332206661696c656400000000000000000000600082015250565b600061522260168361499f565b915061522d826151ec565b602082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f6e65546573743a2063617374203634206661696c656400000000000000000000600082015250565b600061528e60168361499f565b915061529982615258565b602082019050919050565b600060208201905081810360008301526152bd81615281565b9050919050565b7f6e65546573743a2074657374203820626974732077697468207363616c61722060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b600061532060268361499f565b915061532b826152c4565b604082019050919050565b6000602082019050818103600083015261534f81615313565b9050919050565b7f6e65546573743a207465737420313620626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006153b260278361499f565b91506153bd82615356565b604082019050919050565b600060208201905081810360008301526153e1816153a5565b9050919050565b7f6e65546573743a207465737420333220626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061544460278361499f565b915061544f826153e8565b604082019050919050565b6000602082019050818103600083015261547381615437565b9050919050565b7f6e65546573743a207465737420363420626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006154d660278361499f565b91506154e18261547a565b604082019050919050565b60006020820190508181036000830152615505816154c9565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6155418161550c565b82525050565b6155508161456e565b82525050565b600060608201905061556b6000830186615538565b6155786020830185615547565b6155856040830184615547565b949350505050565b6155968161456e565b81146155a157600080fd5b50565b6000815190506155b38161558d565b92915050565b6000602082840312156155cf576155ce61445f565b5b60006155dd848285016155a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61564a81615615565b82525050565b60006040820190506156656000830185615641565b6156726020830184615547565b939250505056fea2646970667358221220a2dcdd0854d4c294683b4e5f1c2cae6caf648f273a6b857f91817af40e61c00b64736f6c63430008140033";
345
+ "0x608060405234801561001057600080fd5b5061294b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370eb37ee116100765780639a0c13d81161005b5780639a0c13d814610155578063acb3816914610160578063bc3aa1ed1461017357600080fd5b806370eb37ee1461012f57806380f937bc1461014257600080fd5b80632e544aa0116100a75780632e544aa0146100f65780632fd37f4b146101095780636b04608f1461011a57600080fd5b80630d980bf0146100c35780631988e322146100e3575b600080fd5b600054610100900460ff165b604051901515815260200160405180910390f35b6100cf6100f13660046125c9565b610186565b6100cf61010436600461264d565b610828565b60005462010000900460ff166100cf565b61012d6101283660046126d0565b610906565b005b6100cf61013d3660046125c9565b6109bb565b6100cf61015036600461278b565b611055565b60005460ff166100cf565b6100cf61016e366004612836565b6110fa565b6100cf6101813660046125c9565b611169565b60006101de604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61020260405180606001604052806000815260200160008152602001600081525090565b6102346040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6102746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61027f848888610906565b600061029b61029686604001518760600151611807565b6118cd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000083151502179055608086015160a08701519192506102e29161195e565b8452604085015160a08601516102f89190611973565b6020850152608085015160608601516103119190611989565b6040850152600061032185610828565b90508115158115151461037b5760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203136206661696c65640000000000000000000060448201526064015b60405180910390fd5b61038d8660c001518760e0015161199f565b8452604086015160e08701516103a391906119b4565b602085015260c086015160608701516103bc91906119ca565b6040850152608086015160e08701516103d591906119e0565b606085015260c086015160a08701516103ee91906119f6565b608085015260006103fe856110fa565b9050801515831515146104535760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610467876101000151886101200151611a0c565b8452604087015161012088015161047e9190611a21565b602085015261010087015160608801516104989190611a37565b604085015260808701516101208801516104b29190611a4d565b606085015261010087015160a08801516104cc9190611a63565b608085015260c08701516101208801516104e69190611a79565b60a085015261010087015160e08801516105009190611a8f565b60c0850152600061051085611055565b9050801515841515146105655760405162461bcd60e51b815260206004820152601660248201527f6765546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6105766102968c8a60600151611aa5565b151584151514801561059b575061059461029689604001518c611b27565b1515841515145b61060d5760405162461bcd60e51b815260206004820152602660248201527f6765546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b6106216102968c60ff168a60a00151611baa565b1515841515148015610649575061064261029689608001518c60ff16611c2e565b1515841515145b6106bb5760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6106cf6102968c60ff168a60e00151611cb1565b15158415151480156106f757506106f06102968960c001518c60ff16611d37565b1515841515145b6107695760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61077e6102968c60ff168a6101200151611dbd565b15158415151480156107a757506107a06102968961010001518c60ff16611e47565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6765546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b50919998505050505050505050565b60008061083883600001516118cd565b905061084783602001516118cd565b1515811515148015610868575061086183604001516118cd565b1515811515145b6109005760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a401610372565b92915050565b6109178160ff168360ff1611611ed1565b835261092a60ff80841690831611611ed1565b602084015261093882611f30565b604084015261094681611f30565b606084015261095760ff8316611fd8565b608084015261096860ff8216611fd8565b60a084015261097960ff8316612042565b60c084015261098a60ff8216612042565b60e084015261099b60ff83166120ae565b6101008401526109ad60ff82166120ae565b610120909301929092525050565b6000610a13604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610a3760405180606001604052806000815260200160008152602001600081525090565b610a696040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610aa96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610ab4848888610906565b610ac96102968560000151866020015161211e565b506000610ae161029686604001518760600151612132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055608086015160a0870151919250610b2391612147565b8452604085015160a0860151610b39919061215c565b602085015260808501516060860151610b529190612172565b60408501526000610b6285610828565b905081151581151514610bb75760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b610bc98660c001518760e00151612188565b8452604086015160e0870151610bdf919061219d565b602085015260c08601516060870151610bf891906121b3565b6040850152608086015160e0870151610c1191906121c9565b606085015260c086015160a0870151610c2a91906121df565b60808501526000610c3a856110fa565b905080151583151514610c8f5760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b610ca38761010001518861012001516121f5565b84526040870151610120880151610cba919061220a565b60208501526101008701516060880151610cd49190612220565b60408501526080870151610120880151610cee9190612236565b606085015261010087015160a0880151610d08919061224c565b608085015260c0870151610120880151610d229190612262565b60a085015261010087015160e0880151610d3c9190612278565b60c08501526000610d4c85611055565b905080151584151514610da15760405162461bcd60e51b815260206004820152601660248201527f6571546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b610db26102968c8a6060015161228e565b1515841515148015610dd75750610dd061029689604001518c6122a3565b1515841515145b610e495760405162461bcd60e51b815260206004820152602660248201527f6571546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b610e5d6102968c60ff168a60a001516122b9565b1515841515148015610e855750610e7e61029689608001518c60ff166122cf565b1515841515145b610ef75760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610f0b6102968c60ff168a60e001516122e4565b1515841515148015610f335750610f2c6102968960c001518c60ff166122fa565b1515841515145b610fa55760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b610fba6102968c60ff168a6101200151612310565b1515841515148015610fe35750610fdc6102968961010001518c60ff16612326565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6571546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b60008061106583600001516118cd565b905061107483602001516118cd565b1515811515148015611095575061108e83604001516118cd565b1515811515145b80156110b057506110a983608001516118cd565b1515811515145b80156110cb57506110c483606001516118cd565b1515811515145b80156110e657506110df8360c001516118cd565b1515811515145b801561086857506108618360a001516118cd565b60008061110a83600001516118cd565b905061111983602001516118cd565b151581151514801561113a575061113383604001516118cd565b1515811515145b8015611155575061114e83608001516118cd565b1515811515145b8015610868575061086183606001516118cd565b60006111c1604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6111e560405180606001604052806000815260200160008152602001600081525090565b6112176040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6112576040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611262848888610906565b6112776102968560000151866020015161233c565b50600061128f61029686604001518760600151612350565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010083151502179055608086015160a08701519192506112d591612365565b8452604085015160a08601516112eb919061237a565b6020850152608085015160608601516113049190612390565b6040850152600061131485610828565b9050811515811515146113695760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203136206661696c6564000000000000000000006044820152606401610372565b61137b8660c001518760e001516123a6565b8452604086015160e087015161139191906123bb565b602085015260c086015160608701516113aa91906123d1565b6040850152608086015160e08701516113c391906123e7565b606085015260c086015160a08701516113dc91906123fd565b608085015260006113ec856110fa565b9050801515831515146114415760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203332206661696c6564000000000000000000006044820152606401610372565b611455876101000151886101200151612413565b8452604087015161012088015161146c9190612428565b60208501526101008701516060880151611486919061243e565b604085015260808701516101208801516114a09190612454565b606085015261010087015160a08801516114ba919061246a565b608085015260c08701516101208801516114d49190612480565b60a085015261010087015160e08801516114ee9190612496565b60c085015260006114fe85611055565b9050801515841515146115535760405162461bcd60e51b815260206004820152601660248201527f6e65546573743a2063617374203634206661696c6564000000000000000000006044820152606401610372565b6115646102968c8a606001516124ac565b1515841515148015611589575061158261029689604001518c6124c1565b1515841515145b6115fb5760405162461bcd60e51b815260206004820152602660248201527f6e65546573743a2074657374203820626974732077697468207363616c61722060448201527f6661696c656400000000000000000000000000000000000000000000000000006064820152608401610372565b61160f6102968c60ff168a60a001516124d7565b1515841515148015611637575061163061029689608001518c60ff166124ed565b1515841515145b6116a95760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420313620626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6116bd6102968c60ff168a60e00151612502565b15158415151480156116e557506116de6102968960c001518c60ff16612518565b1515841515145b6117575760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420333220626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b61176c6102968c60ff168a610120015161252e565b1515841515148015611795575061178e6102968961010001518c60ff16612544565b1515841515145b6108195760405162461bcd60e51b815260206004820152602760248201527f6e65546573743a207465737420363420626974732077697468207363616c617260448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610372565b6000606463813b207461181c60018085612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af11580156118a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c691906128cd565b9392505050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195591906128cd565b15159392505050565b6000606463813b207461181c60028085612556565b6000606463813b207461181c6001600285612556565b6000606463813b207461181c6002600185612556565b6000606463813b207461181c60038085612556565b6000606463813b207461181c6001600385612556565b6000606463813b207461181c6003600185612556565b6000606463813b207461181c6002600385612556565b6000606463813b207461181c6003600285612556565b6000606463813b207461181c60048085612556565b6000606463813b207461181c6001600485612556565b6000606463813b207461181c6004600185612556565b6000606463813b207461181c6002600485612556565b6000606463813b207461181c6004600285612556565b6000606463813b207461181c6003600485612556565b6000606463813b207461181c6004600385612556565b6000606463813b2074611aba60018080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff8616602482015260448101859052606401611883565b6000606463813b2074611b3d6001806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff85166044820152606401611883565b6000606463813b2074611bc06002806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff8616602482015260448101859052606401611883565b6000606463813b2074611c4360028080612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff85166044820152606401611883565b6000606463813b2074611cc76003806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff8616602482015260448101859052606401611883565b6000606463813b2074611d4d6003806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff85166044820152606401611883565b6000606463813b2074611dd36004806001612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8616602482015260448101859052606401611883565b6000606463813b2074611e5d6004806002612556565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff85166044820152606401611883565b60008082611ee0576000611ee3565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611883565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906128cd565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611f95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611f95565b60006064637c12a1eb61181c838080612556565b60006064637c12a1eb61181c60018085612556565b60006064637c12a1eb61181c60028085612556565b60006064637c12a1eb61181c6001600285612556565b60006064637c12a1eb61181c6002600185612556565b60006064637c12a1eb61181c60038085612556565b60006064637c12a1eb61181c6001600385612556565b60006064637c12a1eb61181c6003600185612556565b60006064637c12a1eb61181c6002600385612556565b60006064637c12a1eb61181c6003600285612556565b60006064637c12a1eb61181c60048085612556565b60006064637c12a1eb61181c6001600485612556565b60006064637c12a1eb61181c6004600185612556565b60006064637c12a1eb61181c6002600485612556565b60006064637c12a1eb61181c6004600285612556565b60006064637c12a1eb61181c6003600485612556565b60006064637c12a1eb61181c6004600385612556565b60006064637c12a1eb611aba60018080612556565b60006064637c12a1eb611b3d6001806002612556565b60006064637c12a1eb611bc06002806001612556565b60006064637c12a1eb611c4360028080612556565b60006064637c12a1eb611cc76003806001612556565b60006064637c12a1eb611d4d6003806002612556565b60006064637c12a1eb611dd36004806001612556565b60006064637c12a1eb611e5d6004806002612556565b600060646342094c5661181c838080612556565b600060646342094c5661181c60018085612556565b600060646342094c5661181c60028085612556565b600060646342094c5661181c6001600285612556565b600060646342094c5661181c6002600185612556565b600060646342094c5661181c60038085612556565b600060646342094c5661181c6001600385612556565b600060646342094c5661181c6003600185612556565b600060646342094c5661181c6002600385612556565b600060646342094c5661181c6003600285612556565b600060646342094c5661181c60048085612556565b600060646342094c5661181c6001600485612556565b600060646342094c5661181c6004600185612556565b600060646342094c5661181c6002600485612556565b600060646342094c5661181c6004600285612556565b600060646342094c5661181c6003600485612556565b600060646342094c5661181c6004600385612556565b600060646342094c56611aba60018080612556565b600060646342094c56611b3d6001806002612556565b600060646342094c56611bc06002806001612556565b600060646342094c56611c4360028080612556565b600060646342094c56611cc76003806001612556565b600060646342094c56611d4d6003806002612556565b600060646342094c56611dd36004806001612556565b600060646342094c56611e5d60048060025b600081600281111561256a5761256a6128e6565b60ff166008846004811115612581576125816128e6565b61ffff16901b61ffff16601086600481111561259f5761259f6128e6565b62ffffff16901b171760e81b949350505050565b803560ff811681146125c457600080fd5b919050565b600080604083850312156125dc57600080fd5b6125e5836125b3565b91506125f3602084016125b3565b90509250929050565b604051610140810167ffffffffffffffff81118282101715612647577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60006060828403121561265f57600080fd5b6040516060810181811067ffffffffffffffff821117156126a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b60008060008385036101808112156126e757600080fd5b610140808212156126f757600080fd5b6126ff6125fc565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101008087013581840152506101208087013581840152508194506127718187016125b3565b9350505061278261016085016125b3565b90509250925092565b600060e0828403121561279d57600080fd5b60405160e0810181811067ffffffffffffffff821117156127e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a0828403121561284857600080fd5b60405160a0810181811067ffffffffffffffff82111715612892577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6000602082840312156128df57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220023a2c4bedb5aead76b11780961b1a5bdfada6d39e8fe1b6c8ab2c044eb7930964736f6c63430008130033";
336
346
 
337
347
  type Comparison2TestsContractConstructorParams =
338
348
  | [signer?: Signer]
@@ -295,7 +295,7 @@ const _abi = [
295
295
  ] as const;
296
296
 
297
297
  const _bytecode =
298
- "0x608060405234801561001057600080fd5b50614059806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d4c1db711161005b578063d4c1db711461013b578063dad85e0a14610159578063e23a217614610189578063ebb571fd146101b957610088565b80632e544aa01461008d5780634ea83705146100bd57806380f937bc146100db578063acb381691461010b575b600080fd5b6100a760048036038101906100a2919061345f565b6101d5565b6040516100b491906134a9565b60405180910390f35b6100c5610265565b6040516100d291906134e0565b60405180910390f35b6100f560048036038101906100f091906135db565b61027b565b604051610102919061362b565b60405180910390f35b610125600480360381019061012091906136fe565b6103cf565b604051610132919061374a565b60405180910390f35b6101436104ad565b60405161015091906134e0565b60405180910390f35b610173600480360381019061016e9190613791565b6104c3565b60405161018091906134e0565b60405180910390f35b6101a3600480360381019061019e9190613791565b610a22565b6040516101b091906134e0565b60405180910390f35b6101d360048036038101906101ce91906138c7565b610f82565b005b6000806101e58360000151611029565b90506101f48360200151611029565b61ffff168161ffff1614801561021d57506102128360400151611029565b61ffff168161ffff16145b61025c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610253906139c6565b60405180910390fd5b80915050919050565b60008060009054906101000a900460ff16905090565b60008061028b83600001516110c7565b905061029a83602001516110c7565b67ffffffffffffffff168167ffffffffffffffff161480156102db57506102c483604001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561030657506102ef83608001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b8015610331575061031a83606001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561035c57506103458360c001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b801561038757506103708360a001516110c7565b67ffffffffffffffff168167ffffffffffffffff16145b6103c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bd906139c6565b60405180910390fd5b80915050919050565b6000806103df8360000151611164565b90506103ee8360200151611164565b63ffffffff168163ffffffff1614801561041f57506104108360400151611164565b63ffffffff168163ffffffff16145b801561044257506104338360800151611164565b63ffffffff168163ffffffff16145b801561046557506104568360600151611164565b63ffffffff168163ffffffff16145b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049b906139c6565b60405180910390fd5b80915050919050565b60008060019054906101000a900460ff16905090565b60006104cd613253565b6104d5613298565b6104dd6132b9565b6104e56132e8565b6104f0848888610f82565b600061050c61050786600001518760200151611202565b611299565b9050806000806101000a81548160ff021916908360ff16021790555061053a85604001518660600151611337565b846000018181525050610555856000015186606001516113ce565b84602001818152505061057085604001518660200151611466565b8460400181815250506000610584856101d5565b90508160ff168161ffff16146105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690613a32565b60405180910390fd5b6105e186608001518760a001516114fe565b8460000181815250506105fc86600001518760a00151611595565b8460200181815250506106178660800151876020015161162d565b84604001818152505061063286604001518760a001516116c5565b84606001818152505061064d8660800151876060015161175d565b8460800181815250506000610661856103cf565b90508063ffffffff168360ff16146106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590613a9e565b60405180910390fd5b6106c08760c001518860e001516117f5565b8460000181815250506106db87600001518860e0015161188c565b8460200181815250506106f68760c001518860200151611924565b84604001818152505061071187604001518860e001516119bc565b84606001818152505061072c8760c001518860600151611a54565b84608001818152505061074787608001518860e00151611aec565b8460a00181815250506107628760c001518860a00151611b84565b8460c001818152505060006107768561027b565b90508067ffffffffffffffff168460ff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be90613b0a565b60405180910390fd5b6107dd6107d88c8a60200151611c1c565b611299565b60ff168460ff1614801561080b57506108026107fd89600001518c611cb6565b611299565b60ff168460ff16145b61084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190613b9c565b60405180910390fd5b61086361085e8c60ff168a60600151611d50565b611029565b61ffff168361ffff16148015610898575061088d61088889604001518c60ff16611deb565b611029565b61ffff168361ffff16145b6108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90613c2e565b60405180910390fd5b6108f06108eb8c60ff168a60a00151611e86565b611164565b63ffffffff168263ffffffff1614801561092d575061091e61091989608001518c60ff16611f23565b611164565b63ffffffff168263ffffffff16145b61096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390613cc0565b60405180910390fd5b6109856109808c60ff168a60e00151611fc0565b6110c7565b67ffffffffffffffff168167ffffffffffffffff161480156109d257506109bb6109b68960c001518c60ff16612061565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16145b610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0890613d52565b60405180910390fd5b839850505050505050505092915050565b6000610a2c613253565b610a34613298565b610a3c6132b9565b610a446132e8565b610a4f848888610f82565b6000610a6b610a6686600001518760200151612102565b611299565b905080600060016101000a81548160ff021916908360ff160217905550610a9a85604001518660600151612199565b846000018181525050610ab585600001518660600151612230565b846020018181525050610ad0856040015186602001516122c8565b8460400181815250506000610ae4856101d5565b90508160ff168161ffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613dbe565b60405180910390fd5b610b4186608001518760a00151612360565b846000018181525050610b5c86600001518760a001516123f7565b846020018181525050610b778660800151876020015161248f565b846040018181525050610b9286604001518760a00151612527565b846060018181525050610bad866080015187606001516125bf565b8460800181815250506000610bc1856103cf565b90508063ffffffff168360ff1614610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0590613e2a565b60405180910390fd5b610c208760c001518860e00151612657565b846000018181525050610c3b87600001518860e001516126ee565b846020018181525050610c568760c001518860200151612786565b846040018181525050610c7187604001518860e0015161281e565b846060018181525050610c8c8760c0015188606001516128b6565b846080018181525050610ca787608001518860e0015161294e565b8460a0018181525050610cc28760c001518860a001516129e6565b8460c00181815250506000610cd68561027b565b90508067ffffffffffffffff168460ff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613e96565b60405180910390fd5b610d3d610d388c8a60200151612a7e565b611299565b60ff168460ff16148015610d6b5750610d62610d5d89600001518c612b18565b611299565b60ff168460ff16145b610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613b9c565b60405180910390fd5b610dc3610dbe8c60ff168a60600151612bb2565b611029565b61ffff168361ffff16148015610df85750610ded610de889604001518c60ff16612c4d565b611029565b61ffff168361ffff16145b610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90613c2e565b60405180910390fd5b610e50610e4b8c60ff168a60a00151612ce8565b611164565b63ffffffff168263ffffffff16148015610e8d5750610e7e610e7989608001518c60ff16612d85565b611164565b63ffffffff168263ffffffff16145b610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613cc0565b60405180910390fd5b610ee5610ee08c60ff168a60e00151612e22565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16148015610f325750610f1b610f168960c001518c60ff16612ec3565b6110c7565b67ffffffffffffffff168167ffffffffffffffff16145b610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613d52565b60405180910390fd5b839850505050505050505092915050565b610f8b82612f64565b836000018181525050610f9d81612f64565b836020018181525050610fb28260ff16613005565b836040018181525050610fc78160ff16613005565b836060018181525050610fdc8260ff166130a7565b836080018181525050610ff18160ff166130a7565b8360a00181815250506110068260ff1661314b565b8360c001818152505061101b8160ff1661314b565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616002600481111561105c5761105b613eb6565b5b60f81b846040518363ffffffff1660e01b815260040161107d929190613f2f565b6020604051808303816000875af115801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c09190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616004808111156110f9576110f8613eb6565b5b60f81b846040518363ffffffff1660e01b815260040161111a929190613f2f565b6020604051808303816000875af1158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616003600481111561119757611196613eb6565b5b60f81b846040518363ffffffff1660e01b81526004016111b8929190613f2f565b6020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461122e60018060006131f2565b85856040518463ffffffff1660e01b815260040161124e93929190613fec565b6020604051808303816000875af115801561126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600160048111156112cc576112cb613eb6565b5b60f81b846040518363ffffffff1660e01b81526004016112ed929190613f2f565b6020604051808303816000875af115801561130c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113309190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461136360028060006131f2565b85856040518463ffffffff1660e01b815260040161138393929190613fec565b6020604051808303816000875af11580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746113fb6001600260006131f2565b85856040518463ffffffff1660e01b815260040161141b93929190613fec565b6020604051808303816000875af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746114936002600160006131f2565b85856040518463ffffffff1660e01b81526004016114b393929190613fec565b6020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461152a60038060006131f2565b85856040518463ffffffff1660e01b815260040161154a93929190613fec565b6020604051808303816000875af1158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746115c26001600360006131f2565b85856040518463ffffffff1660e01b81526004016115e293929190613fec565b6020604051808303816000875af1158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461165a6003600160006131f2565b85856040518463ffffffff1660e01b815260040161167a93929190613fec565b6020604051808303816000875af1158015611699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bd9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746116f26002600360006131f2565b85856040518463ffffffff1660e01b815260040161171293929190613fec565b6020604051808303816000875af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461178a6003600260006131f2565b85856040518463ffffffff1660e01b81526004016117aa93929190613fec565b6020604051808303816000875af11580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461182160048060006131f2565b85856040518463ffffffff1660e01b815260040161184193929190613fec565b6020604051808303816000875af1158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746118b96001600460006131f2565b85856040518463ffffffff1660e01b81526004016118d993929190613fec565b6020604051808303816000875af11580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746119516004600160006131f2565b85856040518463ffffffff1660e01b815260040161197193929190613fec565b6020604051808303816000875af1158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b49190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca08746119e96002600460006131f2565b85856040518463ffffffff1660e01b8152600401611a0993929190613fec565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611a816004600260006131f2565b85856040518463ffffffff1660e01b8152600401611aa193929190613fec565b6020604051808303816000875af1158015611ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae49190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611b196003600460006131f2565b85856040518463ffffffff1660e01b8152600401611b3993929190613fec565b6020604051808303816000875af1158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611bb16004600360006131f2565b85856040518463ffffffff1660e01b8152600401611bd193929190613fec565b6020604051808303816000875af1158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c149190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611c4860018060016131f2565b8560ff16856040518463ffffffff1660e01b8152600401611c6b93929190613fec565b6020604051808303816000875af1158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611ce260018060026131f2565b858560ff166040518463ffffffff1660e01b8152600401611d0593929190613fec565b6020604051808303816000875af1158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611d7c60028060016131f2565b8561ffff16856040518463ffffffff1660e01b8152600401611da093929190613fec565b6020604051808303816000875af1158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611e1760028060026131f2565b858561ffff166040518463ffffffff1660e01b8152600401611e3b93929190613fec565b6020604051808303816000875af1158015611e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611eb260038060016131f2565b8563ffffffff16856040518463ffffffff1660e01b8152600401611ed893929190613fec565b6020604051808303816000875af1158015611ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1b9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611f4f60038060026131f2565b858563ffffffff166040518463ffffffff1660e01b8152600401611f7593929190613fec565b6020604051808303816000875af1158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb89190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca0874611fec60048060016131f2565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161201693929190613fec565b6020604051808303816000875af1158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166369ca087461208d60048060026131f2565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016120b793929190613fec565b6020604051808303816000875af11580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261212e60018060006131f2565b85856040518463ffffffff1660e01b815260040161214e93929190613fec565b6020604051808303816000875af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121919190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826121c560028060006131f2565b85856040518463ffffffff1660e01b81526004016121e593929190613fec565b6020604051808303816000875af1158015612204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122289190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261225d6001600260006131f2565b85856040518463ffffffff1660e01b815260040161227d93929190613fec565b6020604051808303816000875af115801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826122f56002600160006131f2565b85856040518463ffffffff1660e01b815260040161231593929190613fec565b6020604051808303816000875af1158015612334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123589190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261238c60038060006131f2565b85856040518463ffffffff1660e01b81526004016123ac93929190613fec565b6020604051808303816000875af11580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826124246001600360006131f2565b85856040518463ffffffff1660e01b815260040161244493929190613fec565b6020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826124bc6003600160006131f2565b85856040518463ffffffff1660e01b81526004016124dc93929190613fec565b6020604051808303816000875af11580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826125546002600360006131f2565b85856040518463ffffffff1660e01b815260040161257493929190613fec565b6020604051808303816000875af1158015612593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b79190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826125ec6003600260006131f2565b85856040518463ffffffff1660e01b815260040161260c93929190613fec565b6020604051808303816000875af115801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261268360048060006131f2565b85856040518463ffffffff1660e01b81526004016126a393929190613fec565b6020604051808303816000875af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e69190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261271b6001600460006131f2565b85856040518463ffffffff1660e01b815260040161273b93929190613fec565b6020604051808303816000875af115801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826127b36004600160006131f2565b85856040518463ffffffff1660e01b81526004016127d393929190613fec565b6020604051808303816000875af11580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128169190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261284b6002600460006131f2565b85856040518463ffffffff1660e01b815260040161286b93929190613fec565b6020604051808303816000875af115801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda07826128e36004600260006131f2565b85856040518463ffffffff1660e01b815260040161290393929190613fec565b6020604051808303816000875af1158015612922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129469190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda078261297b6003600460006131f2565b85856040518463ffffffff1660e01b815260040161299b93929190613fec565b6020604051808303816000875af11580156129ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129de9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612a136004600360006131f2565b85856040518463ffffffff1660e01b8152600401612a3393929190613fec565b6020604051808303816000875af1158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612aaa60018060016131f2565b8560ff16856040518463ffffffff1660e01b8152600401612acd93929190613fec565b6020604051808303816000875af1158015612aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b109190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612b4460018060026131f2565b858560ff166040518463ffffffff1660e01b8152600401612b6793929190613fec565b6020604051808303816000875af1158015612b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612baa9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612bde60028060016131f2565b8561ffff16856040518463ffffffff1660e01b8152600401612c0293929190613fec565b6020604051808303816000875af1158015612c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c459190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612c7960028060026131f2565b858561ffff166040518463ffffffff1660e01b8152600401612c9d93929190613fec565b6020604051808303816000875af1158015612cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce09190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612d1460038060016131f2565b8563ffffffff16856040518463ffffffff1660e01b8152600401612d3a93929190613fec565b6020604051808303816000875af1158015612d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7d9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612db160038060026131f2565b858563ffffffff166040518463ffffffff1660e01b8152600401612dd793929190613fec565b6020604051808303816000875af1158015612df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1a9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612e4e60048060016131f2565b8567ffffffffffffffff16856040518463ffffffff1660e01b8152600401612e7893929190613fec565b6020604051808303816000875af1158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16639bda0782612eef60048060026131f2565b858567ffffffffffffffff166040518463ffffffff1660e01b8152600401612f1993929190613fec565b6020604051808303816000875af1158015612f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5c9190613f84565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060016004811115612f9757612f96613eb6565b5b60f81b8460ff166040518363ffffffff1660e01b8152600401612fbb929190613f2f565b6020604051808303816000875af1158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe9190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606002600481111561303857613037613eb6565b5b60f81b8461ffff166040518363ffffffff1660e01b815260040161305d929190613f2f565b6020604051808303816000875af115801561307c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a09190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156130da576130d9613eb6565b5b60f81b8463ffffffff166040518363ffffffff1660e01b8152600401613101929190613f2f565b6020604051808303816000875af1158015613120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131449190613f84565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561317d5761317c613eb6565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016131a8929190613f2f565b6020604051808303816000875af11580156131c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131eb9190613f84565b9050919050565b600081600281111561320757613206613eb6565b5b60ff16600884600481111561321f5761321e613eb6565b5b61ffff16901b61ffff16601086600481111561323e5761323d613eb6565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61338282613339565b810181811067ffffffffffffffff821117156133a1576133a061334a565b5b80604052505050565b60006133b4613325565b90506133c08282613379565b919050565b6000819050919050565b6133d8816133c5565b81146133e357600080fd5b50565b6000813590506133f5816133cf565b92915050565b60006060828403121561341157613410613334565b5b61341b60606133aa565b9050600061342b848285016133e6565b600083015250602061343f848285016133e6565b6020830152506040613453848285016133e6565b60408301525092915050565b6000606082840312156134755761347461332f565b5b6000613483848285016133fb565b91505092915050565b600061ffff82169050919050565b6134a38161348c565b82525050565b60006020820190506134be600083018461349a565b92915050565b600060ff82169050919050565b6134da816134c4565b82525050565b60006020820190506134f560008301846134d1565b92915050565b613504816133c5565b811461350f57600080fd5b50565b600081359050613521816134fb565b92915050565b600060e0828403121561353d5761353c613334565b5b61354760e06133aa565b9050600061355784828501613512565b600083015250602061356b84828501613512565b602083015250604061357f84828501613512565b604083015250606061359384828501613512565b60608301525060806135a784828501613512565b60808301525060a06135bb84828501613512565b60a08301525060c06135cf84828501613512565b60c08301525092915050565b600060e082840312156135f1576135f061332f565b5b60006135ff84828501613527565b91505092915050565b600067ffffffffffffffff82169050919050565b61362581613608565b82525050565b6000602082019050613640600083018461361c565b92915050565b61364f816133c5565b811461365a57600080fd5b50565b60008135905061366c81613646565b92915050565b600060a0828403121561368857613687613334565b5b61369260a06133aa565b905060006136a28482850161365d565b60008301525060206136b68482850161365d565b60208301525060406136ca8482850161365d565b60408301525060606136de8482850161365d565b60608301525060806136f28482850161365d565b60808301525092915050565b600060a082840312156137145761371361332f565b5b600061372284828501613672565b91505092915050565b600063ffffffff82169050919050565b6137448161372b565b82525050565b600060208201905061375f600083018461373b565b92915050565b61376e816134c4565b811461377957600080fd5b50565b60008135905061378b81613765565b92915050565b600080604083850312156137a8576137a761332f565b5b60006137b68582860161377c565b92505060206137c78582860161377c565b9150509250929050565b6137da816133c5565b81146137e557600080fd5b50565b6000813590506137f7816137d1565b92915050565b6000610100828403121561381457613813613334565b5b61381f6101006133aa565b9050600061382f848285016137e8565b6000830152506020613843848285016137e8565b6020830152506040613857848285016133e6565b604083015250606061386b848285016133e6565b606083015250608061387f8482850161365d565b60808301525060a06138938482850161365d565b60a08301525060c06138a784828501613512565b60c08301525060e06138bb84828501613512565b60e08301525092915050565b600080600061014084860312156138e1576138e061332f565b5b60006138ef868287016137fd565b9350506101006139018682870161377c565b9250506101206139138682870161377c565b9150509250925092565b600082825260208201905092915050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b60006139b060468361391d565b91506139bb8261392e565b606082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b7f6d696e546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613a1c60178361391d565b9150613a27826139e6565b602082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f6d696e546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613a8860178361391d565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f6d696e546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613af460178361391d565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f6d696e546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000613b8660278361391d565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f6d696e546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613c1860288361391d565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f6d696e546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613caa60288361391d565b9150613cb582613c4e565b604082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b7f6d696e546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000613d3c60288361391d565b9150613d4782613ce0565b604082019050919050565b60006020820190508181036000830152613d6b81613d2f565b9050919050565b7f6d6178546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000613da860178361391d565b9150613db382613d72565b602082019050919050565b60006020820190508181036000830152613dd781613d9b565b9050919050565b7f6d6178546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000613e1460178361391d565b9150613e1f82613dde565b602082019050919050565b60006020820190508181036000830152613e4381613e07565b9050919050565b7f6d6178546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000613e8060178361391d565b9150613e8b82613e4a565b602082019050919050565b60006020820190508181036000830152613eaf81613e73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613f1a81613ee5565b82525050565b613f29816133c5565b82525050565b6000604082019050613f446000830185613f11565b613f516020830184613f20565b9392505050565b613f61816133c5565b8114613f6c57600080fd5b50565b600081519050613f7e81613f58565b92915050565b600060208284031215613f9a57613f9961332f565b5b6000613fa884828501613f6f565b91505092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b613fe681613fb1565b82525050565b60006060820190506140016000830186613fdd565b61400e6020830185613f20565b61401b6040830184613f20565b94935050505056fea2646970667358221220c3ebea5c8ab2b8200d08d5dde2bc3e9b44cc18e9fb64c729eec21c00584dabb664736f6c63430008140033";
298
+ "0x608060405234801561001057600080fd5b50612172806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d4c1db711161005b578063d4c1db7114610125578063dad85e0a14610135578063e23a217614610148578063ebb571fd1461015b57600080fd5b80632e544aa01461008d5780634ea83705146100b857806380f937bc146100d1578063acb38169146100fd575b600080fd5b6100a061009b366004611e43565b610170565b60405161ffff90911681526020015b60405180910390f35b60005460ff165b60405160ff90911681526020016100af565b6100e46100df366004611ec6565b61025b565b60405167ffffffffffffffff90911681526020016100af565b61011061010b366004611f71565b6103fe565b60405163ffffffff90911681526020016100af565b600054610100900460ff166100bf565b6100bf61014336600461201e565b61052b565b6100bf61015636600461201e565b610c11565b61016e610169366004612051565b61124f565b005b60008061018083600001516112d6565b905061018f83602001516112d6565b61ffff168161ffff161480156101b857506101ad83604001516112d6565b61ffff168161ffff16145b6102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b92915050565b60008061026b8360000151611373565b905061027a8360200151611373565b67ffffffffffffffff168167ffffffffffffffff161480156102bb57506102a48360400151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156102e657506102cf8360800151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561031157506102fa8360600151611373565b67ffffffffffffffff168167ffffffffffffffff16145b801561033c57506103258360c00151611373565b67ffffffffffffffff168167ffffffffffffffff16145b80156101b857506103508360a00151611373565b67ffffffffffffffff168167ffffffffffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b60008061040e8360000151611383565b905061041d8360200151611383565b63ffffffff168163ffffffff1614801561044e575061043f8360400151611383565b63ffffffff168163ffffffff16145b801561047157506104628360800151611383565b63ffffffff168163ffffffff16145b80156101b857506104858360600151611383565b63ffffffff168163ffffffff16146102555760405162461bcd60e51b815260206004820152604660248201527f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960448201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260648201527f6573756c74730000000000000000000000000000000000000000000000000000608482015260a40161024c565b600061057560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61059960405180606001604052806000815260200160008152602001600081525090565b6105cb6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61060b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61061684888861124f565b600061063261062d86600001518760200151611393565b611459565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556040860151606087015191925061067591611469565b845284516060860151610688919061147e565b8460200181815250506106a385604001518660200151611494565b604085015260006106b385610170565b90508160ff168161ffff161461070b5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b61071d86608001518760a001516114aa565b8452855160a087015161073091906114bf565b84602001818152505061074b866080015187602001516114d5565b84604001818152505061076686604001518760a001516114eb565b84606001818152505061078186608001518760600151611501565b60808501526000610791856103fe565b90508063ffffffff168360ff16146107eb5760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b6107fd8760c001518860e00151611517565b8452865160e0880151610810919061152c565b84602001818152505061082b8760c001518860200151611542565b84604001818152505061084687604001518860e00151611558565b8460600181815250506108618760c00151886060015161156e565b84608001818152505061087c87608001518860e00151611584565b8460a00181815250506108978760c001518860a0015161159a565b60c085015260006108a78561025b565b90508067ffffffffffffffff168460ff16146109055760405162461bcd60e51b815260206004820152601760248201527f6d696e546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b61091661062d8c8a602001516115b0565b60ff168460ff1614801561093f575061093661062d89600001518c611632565b60ff168460ff16145b6109b15760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6109ca6109c58c60ff168a606001516116b5565b6112d6565b61ffff168361ffff161480156109fa57506109ef6109c589604001518c60ff16611739565b61ffff168361ffff16145b610a6c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610a85610a808c60ff168a60a001516117bc565b611383565b63ffffffff168263ffffffff16148015610abd5750610aae610a8089608001518c60ff16611842565b63ffffffff168263ffffffff16145b610b2f5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b610b48610b438c60ff168a60e001516118c8565b611373565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611952565b67ffffffffffffffff168167ffffffffffffffff16145b610c025760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420363420626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b50919998505050505050505050565b6000610c5b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610c7f60405180606001604052806000815260200160008152602001600081525090565b610cb16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610cf16040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610cfc84888861124f565b6000610d1361062d866000015187602001516119dc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff84160217905560408601516060870151919250610d5a916119f1565b845284516060860151610d6d9190611a06565b846020018181525050610d8885604001518660200151611a1c565b60408501526000610d9885610170565b90508160ff168161ffff1614610df05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203136206661696c6564000000000000000000604482015260640161024c565b610e0286608001518760a00151611a32565b8452855160a0870151610e159190611a47565b846020018181525050610e3086608001518760200151611a5d565b846040018181525050610e4b86604001518760a00151611a73565b846060018181525050610e6686608001518760600151611a89565b60808501526000610e76856103fe565b90508063ffffffff168360ff1614610ed05760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203332206661696c6564000000000000000000604482015260640161024c565b610ee28760c001518860e00151611a9f565b8452865160e0880151610ef59190611ab4565b846020018181525050610f108760c001518860200151611aca565b846040018181525050610f2b87604001518860e00151611ae0565b846060018181525050610f468760c001518860600151611af6565b846080018181525050610f6187608001518860e00151611b0c565b8460a0018181525050610f7c8760c001518860a00151611b22565b60c08501526000610f8c8561025b565b90508067ffffffffffffffff168460ff1614610fea5760405162461bcd60e51b815260206004820152601760248201527f6d6178546573743a2063617374203634206661696c6564000000000000000000604482015260640161024c565b610ffb61062d8c8a60200151611b38565b60ff168460ff16148015611024575061101b61062d89600001518c611b4d565b60ff168460ff16145b6110965760405162461bcd60e51b815260206004820152602760248201527f6d696e546573743a2074657374203820626974732077697468207363616c617260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015260840161024c565b6110aa6109c58c60ff168a60600151611b63565b61ffff168361ffff161480156110da57506110cf6109c589604001518c60ff16611b79565b61ffff168361ffff16145b61114c5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420313620626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b611160610a808c60ff168a60a00151611b8e565b63ffffffff168263ffffffff161480156111985750611189610a8089608001518c60ff16611ba4565b63ffffffff168263ffffffff16145b61120a5760405162461bcd60e51b815260206004820152602860248201527f6d696e546573743a207465737420333220626974732077697468207363616c6160448201527f72206661696c6564000000000000000000000000000000000000000000000000606482015260840161024c565b61121e610b438c60ff168a60e00151611bba565b67ffffffffffffffff168167ffffffffffffffff16148015610b905750610b79610b438960c001518c60ff16611bd0565b61125882611be6565b835261126381611be6565b602084015261127460ff8316611c4f565b604084015261128560ff8216611c4f565b606084015261129660ff8316611cb9565b60808401526112a760ff8216611cb9565b60a08401526112b860ff8316611d25565b60c08401526112c960ff8216611d25565b60e0909301929092525050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016113309291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102559190612123565b60006064630cfed56160046112e2565b60006064630cfed56160036112e2565b600060646369ca08746113a860018085611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190612123565b9392505050565b60006064630cfed56160016112e2565b600060646369ca08746113a860028085611d95565b600060646369ca08746113a86001600285611d95565b600060646369ca08746113a86002600185611d95565b600060646369ca08746113a860038085611d95565b600060646369ca08746113a86001600385611d95565b600060646369ca08746113a86003600185611d95565b600060646369ca08746113a86002600385611d95565b600060646369ca08746113a86003600285611d95565b600060646369ca08746113a860048085611d95565b600060646369ca08746113a86001600485611d95565b600060646369ca08746113a86004600185611d95565b600060646369ca08746113a86002600485611d95565b600060646369ca08746113a86004600285611d95565b600060646369ca08746113a86003600485611d95565b600060646369ca08746113a86004600385611d95565b600060646369ca08746115c560018080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260ff861660248201526044810185905260640161140f565b600060646369ca08746116486001806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161140f565b600060646369ca08746116cb6002806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015261ffff861660248201526044810185905260640161140f565b600060646369ca087461174e60028080611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905261ffff8516604482015260640161140f565b600060646369ca08746117d26003806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015263ffffffff861660248201526044810185905260640161140f565b600060646369ca08746118586003806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905263ffffffff8516604482015260640161140f565b600060646369ca08746118de6004806001611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161140f565b600060646369ca08746119686004806002611d95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161140f565b60006064639bda07826113a860018085611d95565b60006064639bda07826113a860028085611d95565b60006064639bda07826113a86001600285611d95565b60006064639bda07826113a86002600185611d95565b60006064639bda07826113a860038085611d95565b60006064639bda07826113a86001600385611d95565b60006064639bda07826113a86003600185611d95565b60006064639bda07826113a86002600385611d95565b60006064639bda07826113a86003600285611d95565b60006064639bda07826113a860048085611d95565b60006064639bda07826113a86001600485611d95565b60006064639bda07826113a86004600185611d95565b60006064639bda07826113a86002600485611d95565b60006064639bda07826113a86004600285611d95565b60006064639bda07826113a86003600485611d95565b60006064639bda07826113a86004600385611d95565b60006064639bda07826115c560018080611d95565b60006064639bda07826116486001806002611d95565b60006064639bda07826116cb6002806001611d95565b60006064639bda078261174e60028080611d95565b60006064639bda07826117d26003806001611d95565b60006064639bda07826118586003806002611d95565b60006064639bda07826118de6004806001611d95565b60006064639bda07826119686004806002611d95565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611330565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611330565b6000816002811115611da957611da96120f4565b60ff166008846004811115611dc057611dc06120f4565b61ffff16901b61ffff166010866004811115611dde57611dde6120f4565b62ffffff16901b171760e81b949350505050565b604051610100810167ffffffffffffffff81118282101715611e3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031215611e5557600080fd5b6040516060810181811067ffffffffffffffff82111715611e9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060e08284031215611ed857600080fd5b60405160e0810181811067ffffffffffffffff82111715611f22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b600060a08284031215611f8357600080fd5b60405160a0810181811067ffffffffffffffff82111715611fcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b803560ff8116811461201957600080fd5b919050565b6000806040838503121561203157600080fd5b61203a83612008565b915061204860208401612008565b90509250929050565b600080600083850361014081121561206857600080fd5b6101008082121561207857600080fd5b612080611df2565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506120da818701612008565b935050506120eb6101208501612008565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561213557600080fd5b505191905056fea2646970667358221220b0bb60f8becf44d8165b2a7ce03d8b966a8c22e085331bd006c700309b02c8b264736f6c63430008130033";
299
299
 
300
300
  type MinMaxTestsContractConstructorParams =
301
301
  | [signer?: Signer]
@@ -246,7 +246,7 @@ const _abi = [
246
246
  ] as const;
247
247
 
248
248
  const _bytecode =
249
- "0x608060405260008060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008060086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801561006257600080fd5b50612b25806100726000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806392660578116100665780639266057814610164578063aacc5a1714610180578063d3d8aff41461019e578063dbc221d0146101bc578063dfbba08f146101d85761009e565b8063103bdb87146100a3578063276b8288146100c857806334c7c817146100f8578063598f9579146101165780635adb577814610146575b600080fd5b6100ab610208565b6040516100bf989796959493929190611eff565b60405180910390f35b6100e260048036038101906100dd91906120b0565b6102ae565b6040516100ef9190612166565b60405180910390f35b6101006105c9565b60405161010d9190612166565b60405180910390f35b610130600480360381019061012b91906121ad565b6105df565b60405161013d91906121fd565b60405180910390f35b61014e6105f3565b60405161015b91906121fd565b60405180910390f35b61017e60048036038101906101799190612244565b610605565b005b610188610799565b60405161019591906121fd565b60405180910390f35b6101a66107b6565b6040516101b391906121fd565b60405180910390f35b6101d660048036038101906101d1919061242c565b6107d3565b005b6101f260048036038101906101ed9190612482565b610861565b6040516101ff91906121fd565b60405180910390f35b600080600080600080600080600060109054906101000a900460ff16600060119054906101000a900460ff16600060129054906101000a900460ff16600060139054906101000a900460ff16600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900460ff16600060179054906101000a900460ff16975097509750975097509750975097509091929394959697565b60006102b8611e59565b8781600001818152505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250610317611e73565b8781600001818152505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250610376611e8d565b8781600001818152505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081602001819052506103d5611ea7565b8781600001818152505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816020018190525061043d61043885610c79565b610d21565b600060186101000a81548160ff021916908360ff160217905550600061046a61046585610dbf565b610e67565b9050600060189054906101000a900460ff1660ff168161ffff16146104c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bb90612545565b60405180910390fd5b60006104d76104d285610f05565b610fad565b9050600060189054906101000a900460ff1660ff168163ffffffff1614610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a906125d7565b60405180910390fd5b60006105466105418561104b565b6110f2565b9050600060189054906101000a900460ff1660ff168167ffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059d90612669565b60405180910390fd5b600060189054906101000a900460ff169750505050505050509695505050505050565b60008060189054906101000a900460ff16905090565b60006105ec600183610861565b9050919050565b6000610600600080610861565b905090565b60006106108461118f565b9050600061061d8461118f565b9050600061062a8461118f565b905061063e6106398484611243565b6112da565b600060106101000a81548160ff0219169083151502179055506106696106648484611381565b6112da565b600060116101000a81548160ff02191690831515021790555061069461068f8484611418565b6112da565b600060126101000a81548160ff0219169083151502179055506106be6106b9846114af565b6112da565b600060136101000a81548160ff0219169083151502179055506106e96106e4848461154d565b6112da565b600060146101000a81548160ff02191690831515021790555061071461070f84846115e4565b6112da565b600060156101000a81548160ff02191690831515021790555061074061073b82858561167b565b6112da565b600060166101000a81548160ff021916908315150217905550600061076484611715565b9050610777610772826117b3565b6112da565b600060176101000a81548160ff02191690831515021790555050505050505050565b60008060009054906101000a900467ffffffffffffffff16905090565b60008060089054906101000a900467ffffffffffffffff16905090565b60005b8281101561085b578160ff166001901b8482600a81106107f9576107f8612689565b5b602002015167ffffffffffffffff1610610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f9061272a565b60405180910390fd5b808061085390612779565b9150506107d6565b50505050565b600080600a9050610870611ec1565b60005b8281101561092457856108ca5761089061088b611851565b610d21565b60ff168282600a81106108a6576108a5612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610911565b6108db6108d6866118eb565b610d21565b60ff168282600a81106108f1576108f0612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061091c90612779565b915050610873565b508415610937576109368183866107d3565b5b6109418183611989565b8461094b57600391505b60005b82811015610a0157856109a65761096b610966611a52565b610e67565b61ffff168282600a811061098257610981612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250506109ee565b6109b76109b286611aec565b610e67565b61ffff168282600a81106109ce576109cd612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b80806109f990612779565b91505061094e565b508415610a1457610a138183866107d3565b5b610a1e8183611989565b84610a2857600391505b60005b82811015610ae25785610a8557610a48610a43611b8a565b610fad565b63ffffffff168282600a8110610a6157610a60612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610acf565b610a96610a9186611c24565b610fad565b63ffffffff168282600a8110610aaf57610aae612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b8080610ada90612779565b915050610a2b565b508415610af557610af48183866107d3565b5b610aff8183611989565b84610b0957600291505b60005b82811015610bb75785610b6057610b29610b24611cc2565b6110f2565b8282600a8110610b3c57610b3b612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050610ba4565b610b71610b6c86611d5b565b6110f2565b8282600a8110610b8457610b83612689565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250505b8080610baf90612779565b915050610b0c565b508415610c0f57610bc98183866107d3565b806000600a8110610bdd57610bdc612689565b5b6020020151600060086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c50565b806000600a8110610c2357610c22612689565b5b60200201516000806101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610c5a8183611989565b60008054906101000a900467ffffffffffffffff169250505092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060016004811115610cac57610cab6127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610cd7939291906128b9565b6020604051808303816000875af1158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160016004811115610d5457610d536127c1565b5b60f81b846040518363ffffffff1660e01b8152600401610d75929190612939565b6020604051808303816000875af1158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db8919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060026004811115610df257610df16127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610e1d939291906128b9565b6020604051808303816000875af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e60919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160026004811115610e9a57610e996127c1565b5b60f81b846040518363ffffffff1660e01b8152600401610ebb929190612939565b6020604051808303816000875af1158015610eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efe919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060036004811115610f3857610f376127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610f63939291906128b9565b6020604051808303816000875af1158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa6919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160036004811115610fe057610fdf6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611001929190612939565b6020604051808303816000875af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611044919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e1060048081111561107d5761107c6127c1565b5b60f81b846000015185602001516040518463ffffffff1660e01b81526004016110a8939291906128b9565b6020604051808303816000875af11580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600480811115611124576111236127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611145929190612939565b6020604051808303816000875af1158015611164573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611188919061290c565b9050919050565b6000808261119e5760006111a1565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600060048111156111d7576111d66127c1565b5b60f81b836040518363ffffffff1660e01b81526004016111f8929190612939565b6020604051808303816000875af1158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b919061290c565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fe9c73d161126f6000806000611df8565b85856040518463ffffffff1660e01b815260040161128f9392919061299d565b6020604051808303816000875af11580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d2919061290c565b905092915050565b600080606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616000600481111561130e5761130d6127c1565b5b60f81b856040518363ffffffff1660e01b815260040161132f929190612939565b6020604051808303816000875af115801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061290c565b90506000811415915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f6113ad6000806000611df8565b85856040518463ffffffff1660e01b81526004016113cd9392919061299d565b6020604051808303816000875af11580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16636f962e2c6114446000806000611df8565b85856040518463ffffffff1660e01b81526004016114649392919061299d565b6020604051808303816000875af1158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16631d79e49a600060048111156114e2576114e16127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611503929190612939565b6020604051808303816000875af1158015611522573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611546919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6115796000806000611df8565b85856040518463ffffffff1660e01b81526004016115999392919061299d565b6020604051808303816000875af11580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166342094c566116106000806000611df8565b85856040518463ffffffff1660e01b81526004016116309392919061299d565b6020604051808303816000875af115801561164f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611673919061290c565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d6116a76000806000611df8565b8686866040518563ffffffff1660e01b81526004016116c994939291906129d4565b6020604051808303816000875af11580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061290c565b90509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c0260006004811115611748576117476127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611769929190612939565b6020604051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e5600060048111156117e6576117e56127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611807929190612939565b6020604051808303816000875af1158015611826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184a919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060016004811115611884576118836127c1565b5b60f81b6040518263ffffffff1660e01b81526004016118a39190612a19565b6020604051808303816000875af11580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e6919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc6001600481111561191e5761191d6127c1565b5b60f81b846040518363ffffffff1660e01b815260040161193f929190612a34565b6020604051808303816000875af115801561195e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611982919061290c565b9050919050565b6000600190506000600190505b82811015611a0a578381600a81106119b1576119b0612689565b5b602002015167ffffffffffffffff16846000600a81106119d4576119d3612689565b5b602002015167ffffffffffffffff16036119f75781806119f390612779565b9250505b8080611a0290612779565b915050611996565b50818103611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490612acf565b60405180910390fd5b505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060026004811115611a8557611a846127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611aa49190612a19565b6020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae7919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc60026004811115611b1f57611b1e6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611b40929190612a34565b6020604051808303816000875af1158015611b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b83919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb89060036004811115611bbd57611bbc6127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611bdc9190612a19565b6020604051808303816000875af1158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc60036004811115611c5757611c566127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611c78929190612a34565b6020604051808303816000875af1158015611c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbb919061290c565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663134eb890600480811115611cf457611cf36127c1565b5b60f81b6040518263ffffffff1660e01b8152600401611d139190612a19565b6020604051808303816000875af1158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d56919061290c565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663072d17fc600480811115611d8d57611d8c6127c1565b5b60f81b846040518363ffffffff1660e01b8152600401611dae929190612a34565b6020604051808303816000875af1158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df1919061290c565b9050919050565b6000816002811115611e0d57611e0c6127c1565b5b60ff166008846004811115611e2557611e246127c1565b5b61ffff16901b61ffff166010866004811115611e4457611e436127c1565b5b62ffffff16901b171760e81b90509392505050565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806040016040528060008152602001606081525090565b604051806101400160405280600a90602082028036833780820191505090505090565b60008115159050919050565b611ef981611ee4565b82525050565b600061010082019050611f15600083018b611ef0565b611f22602083018a611ef0565b611f2f6040830189611ef0565b611f3c6060830188611ef0565b611f496080830187611ef0565b611f5660a0830186611ef0565b611f6360c0830185611ef0565b611f7060e0830184611ef0565b9998505050505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b611fa481611f91565b8114611faf57600080fd5b50565b600081359050611fc181611f9b565b92915050565b611fd081611f91565b8114611fdb57600080fd5b50565b600081359050611fed81611fc7565b92915050565b611ffc81611f91565b811461200757600080fd5b50565b60008135905061201981611ff3565b92915050565b61202881611f91565b811461203357600080fd5b50565b6000813590506120458161201f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120705761206f61204b565b5b8235905067ffffffffffffffff81111561208d5761208c612050565b5b6020830191508360018202830111156120a9576120a8612055565b5b9250929050565b60008060008060008060a087890312156120cd576120cc611f87565b5b60006120db89828a01611fb2565b96505060206120ec89828a01611fde565b95505060406120fd89828a0161200a565b945050606061210e89828a01612036565b935050608087013567ffffffffffffffff81111561212f5761212e611f8c565b5b61213b89828a0161205a565b92509250509295509295509295565b600060ff82169050919050565b6121608161214a565b82525050565b600060208201905061217b6000830184612157565b92915050565b61218a8161214a565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b6000602082840312156121c3576121c2611f87565b5b60006121d184828501612198565b91505092915050565b600067ffffffffffffffff82169050919050565b6121f7816121da565b82525050565b600060208201905061221260008301846121ee565b92915050565b61222181611ee4565b811461222c57600080fd5b50565b60008135905061223e81612218565b92915050565b60008060006060848603121561225d5761225c611f87565b5b600061226b8682870161222f565b935050602061227c8682870161222f565b925050604061228d8682870161222f565b9150509250925092565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122e082612297565b810181811067ffffffffffffffff821117156122ff576122fe6122a8565b5b80604052505050565b6000612312611f7d565b905061231e82826122d7565b919050565b600067ffffffffffffffff82111561233e5761233d6122a8565b5b602082029050919050565b612352816121da565b811461235d57600080fd5b50565b60008135905061236f81612349565b92915050565b600061238861238384612323565b612308565b905080602084028301858111156123a2576123a1612055565b5b835b818110156123cb57806123b78882612360565b8452602084019350506020810190506123a4565b5050509392505050565b600082601f8301126123ea576123e961204b565b5b600a6123f7848285612375565b91505092915050565b61240981611f91565b811461241457600080fd5b50565b60008135905061242681612400565b92915050565b6000806000610180848603121561244657612445611f87565b5b6000612454868287016123d5565b93505061014061246686828701612417565b92505061016061247886828701612198565b9150509250925092565b6000806040838503121561249957612498611f87565b5b60006124a78582860161222f565b92505060206124b885828601612198565b9150509250929050565b600082825260208201905092915050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682031362062697473206661696c65640000602082015250565b600061252f603e836124c2565b915061253a826124d3565b604082019050919050565b6000602082019050818103600083015261255e81612522565b9050919050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682033322062697473206661696c65640000602082015250565b60006125c1603e836124c2565b91506125cc82612565565b604082019050919050565b600060208201905081810360008301526125f0816125b4565b9050919050565b7f76616c696461746543697068657274657874546573743a2076616c696461746560008201527f4369706865727465787420776974682036342062697473206661696c65640000602082015250565b6000612653603e836124c2565b915061265e826125f7565b604082019050919050565b6000602082019050818103600083015261268281612646565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60008201527f6620626f756e6473000000000000000000000000000000000000000000000000602082015250565b60006127146028836124c2565b915061271f826126b8565b604082019050919050565b6000602082019050818103600083015261274381612707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061278482611f91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127b6576127b561274a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612825816127f0565b82525050565b61283481611f91565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612874578082015181840152602081019050612859565b60008484015250505050565b600061288b8261283a565b6128958185612845565b93506128a5818560208601612856565b6128ae81612297565b840191505092915050565b60006060820190506128ce600083018661281c565b6128db602083018561282b565b81810360408301526128ed8184612880565b9050949350505050565b60008151905061290681612400565b92915050565b60006020828403121561292257612921611f87565b5b6000612930848285016128f7565b91505092915050565b600060408201905061294e600083018561281c565b61295b602083018461282b565b9392505050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61299781612962565b82525050565b60006060820190506129b2600083018661298e565b6129bf602083018561282b565b6129cc604083018461282b565b949350505050565b60006080820190506129e9600083018761298e565b6129f6602083018661282b565b612a03604083018561282b565b612a10606083018461282b565b95945050505050565b6000602082019050612a2e600083018461281c565b92915050565b6000604082019050612a49600083018561281c565b612a566020830184612157565b9392505050565b7f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660008201527f616c75657320617265207468652073616d650000000000000000000000000000602082015250565b6000612ab96032836124c2565b9150612ac482612a5d565b604082019050919050565b60006020820190508181036000830152612ae881612aac565b905091905056fea2646970667358221220037d1b5cbfb930824555d1d36942f71d543a221e0e26ea9a53edea8e7c2aa02364736f6c63430008140033";
249
+ "0x6080604052600080546001600160801b031916905534801561002057600080fd5b50611a48806100306000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80639266057811610076578063d3d8aff41161005b578063d3d8aff414610284578063dbc221d0146102a2578063dfbba08f146102b557600080fd5b8063926605781461025d578063aacc5a171461027257600080fd5b806334c7c817116100a757806334c7c81714610202578063598f9579146102295780635adb57781461025557600080fd5b8063103bdb87146100c3578063276b8288146101dd575b600080fd5b6000546040805160ff70010000000000000000000000000000000084048116151582527101000000000000000000000000000000000084048116151560208301527201000000000000000000000000000000000000840481161515928201929092527301000000000000000000000000000000000000008304821615156060820152740100000000000000000000000000000000000000008304821615156080820152750100000000000000000000000000000000000000000083048216151560a082015276010000000000000000000000000000000000000000000083048216151560c08201527701000000000000000000000000000000000000000000000090920416151560e0820152610100015b60405180910390f35b6101f06101eb366004611675565b6102c8565b60405160ff90911681526020016101d4565b6000547801000000000000000000000000000000000000000000000000900460ff166101f0565b61023c610237366004611723565b610731565b60405167ffffffffffffffff90911681526020016101d4565b61023c610744565b61027061026b36600461174e565b610756565b005b60005467ffffffffffffffff1661023c565b60005468010000000000000000900467ffffffffffffffff1661023c565b6102706102b03660046117d8565b610a39565b61023c6102c336600461186c565b610b11565b60006102e7604051806040016040528060008152602001606081525090565b878152604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201829052506020808701959095526040805180820190915290815260609481019490945250610342915050565b878152604080516020601f87018190048102820181019092528581529086908690819084018382808284376000920182905250602080870195909552604080518082019091529081526060948101949094525061039d915050565b878152604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092018290525060208087019590955260408051808201909152908152606094810194909452506103f8915050565b878152604080516020601f8901819004810282018101909252878152908890889081908401838280828437600092019190915250505050602082015261044561044085610ef5565b610f89565b6000805460ff929092167801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911781556104a56104a085610fe3565b610ff3565b6000549091507801000000000000000000000000000000000000000000000000900460ff1661ffff821614610561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682031362062697473206661696c6564000060648201526084015b60405180910390fd5b600061057461056f85611003565b611013565b6000549091507801000000000000000000000000000000000000000000000000900460ff1663ffffffff82161461062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682033322062697473206661696c656400006064820152608401610558565b600061064061063b85611023565b611033565b6000549091507801000000000000000000000000000000000000000000000000900460ff1667ffffffffffffffff8216146106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f76616c696461746543697068657274657874546573743a2076616c696461746560448201527f4369706865727465787420776974682036342062697473206661696c656400006064820152608401610558565b50506000547801000000000000000000000000000000000000000000000000900460ff169c9b505050505050505050505050565b600061073e600183610b11565b92915050565b6000610751600080610b11565b905090565b600061076184611043565b9050600061076e84611043565b9050600061077b84611043565b905061078f61078a84846110e7565b611180565b60008054911515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff9092169190911790556107e061078a8484611211565b6000805491151571010000000000000000000000000000000000027fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff90921691909117905561083261078a8484611225565b600080549115157201000000000000000000000000000000000000027fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff90921691909117905561088461078a84611239565b60008054911515730100000000000000000000000000000000000000027fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff9092169190911790556108d861078a8484611248565b6000805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117905561092d61078a848461125c565b600080549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90921691909117905561098461078a828585611270565b60008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9092169190911781556109d78461133c565b90506109e561078a8261134b565b6000805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90921691909117905550505050505050565b60005b82811015610b0b57600160ff83161b8482600a8110610a5d57610a5d61189f565b602002015167ffffffffffffffff1610610af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c206f7574206f60448201527f6620626f756e64730000000000000000000000000000000000000000000000006064820152608401610558565b80610b03816118ce565b915050610a3c565b50505050565b6000600a610b1d611656565b84610b715760005b82811015610b6657610b3861078a61135a565b8282600a8110610b4a57610b4a61189f565b9115156020909202015280610b5e816118ce565b915050610b25565b50610b7181836113ef565b610b79611656565b85610b8357600a92505b60005b83811015610c145786610bcc57610b9e6104406114d4565b60ff168282600a8110610bb357610bb361189f565b67ffffffffffffffff9092166020929092020152610c02565b610bd8610440876114e4565b60ff168282600a8110610bed57610bed61189f565b67ffffffffffffffff90921660209290920201525b80610c0c816118ce565b915050610b86565b508515610c2657610c26818487610a39565b610c308184611541565b85610c3a57600392505b60005b83811015610ccd5786610c8457610c556104a0611599565b61ffff168282600a8110610c6b57610c6b61189f565b67ffffffffffffffff9092166020929092020152610cbb565b610c906104a0876115a9565b61ffff168282600a8110610ca657610ca661189f565b67ffffffffffffffff90921660209290920201525b80610cc5816118ce565b915050610c3d565b508515610cdf57610cdf818487610a39565b610ce98184611541565b85610cf357600392505b60005b83811015610d8a5786610d3f57610d0e61056f6115b9565b63ffffffff168282600a8110610d2657610d2661189f565b67ffffffffffffffff9092166020929092020152610d78565b610d4b61056f876115c9565b63ffffffff168282600a8110610d6357610d6361189f565b67ffffffffffffffff90921660209290920201525b80610d82816118ce565b915050610cf6565b508515610d9c57610d9c818487610a39565b610da68184611541565b85610db057600292505b60005b83811015610e3b5786610df657610dcb61063b6115d9565b8282600a8110610ddd57610ddd61189f565b67ffffffffffffffff9092166020929092020152610e29565b610e0261063b876115e9565b8282600a8110610e1457610e1461189f565b67ffffffffffffffff90921660209290920201525b80610e33816118ce565b915050610db3565b508515610e9957610e4d818487610a39565b80516000805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055610ed4565b8051600080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790555b610ede8184611541565b505060005467ffffffffffffffff16949350505050565b6000606463e4f36e1060015b845160208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152610f469360f81b92919060040161195c565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e91906119f9565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463e4f36e106002610f01565b60006064630cfed5616002610f95565b6000606463e4f36e106003610f01565b60006064630cfed5616003610f95565b6000606463e4f36e106004610f01565b60006064630cfed5616004610f95565b60008082611052576000611055565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906119f9565b9392505050565b6000606463fe9c73d16110fb8380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af11580156110bc573d6000803e3d6000fd5b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120891906119f9565b15159392505050565b6000606463fb7da35f6110fb8380806115f9565b60006064636f962e2c6110fb8380806115f9565b60006064631d79e49a82610f95565b60006064637c12a1eb6110fb8380806115f9565b600060646342094c566110fb8380806115f9565b600060646320cc408d6112848380806115f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133491906119f9565b949350505050565b6000606463c50c9c0282610f95565b6000606463d2c135e582610f95565b6000606463134eb890825b60f81b6040518263ffffffff1660e01b81526004016113ac91907fff0000000000000000000000000000000000000000000000000000000000000091909116815260200190565b6020604051808303816000875af11580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075191906119f9565b6001805b8281101561143f578381600a811061140d5761140d61189f565b602002015184519015159015150361142d5781611429816118ce565b9250505b80611437816118ce565b9150506113f3565b508181036114cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f72616e646f6d546573743a2072616e646f6d206661696c65642c20616c6c207660448201527f616c75657320617265207468652073616d6500000000000000000000000000006064820152608401610558565b505050565b6000606463134eb8906001611365565b6000606463072d17fc60015b60f81b846040518363ffffffff1660e01b8152600401610f469291907fff0000000000000000000000000000000000000000000000000000000000000092909216825260ff16602082015260400190565b6001805b8281101561143f578381600a811061155f5761155f61189f565b6020020151845167ffffffffffffffff9182169116036115875781611583816118ce565b9250505b80611591816118ce565b915050611545565b6000606463134eb8906002611365565b6000606463072d17fc60026114f0565b6000606463134eb8906003611365565b6000606463072d17fc60036114f0565b6000606463134eb8906004611365565b6000606463072d17fc60046114f0565b600081600281111561160d5761160d61192d565b60ff1660088460048111156116245761162461192d565b61ffff16901b61ffff1660108660048111156116425761164261192d565b62ffffff16901b171760e81b949350505050565b604051806101400160405280600a906020820280368337509192915050565b60008060008060008060a0878903121561168e57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff808211156116c257600080fd5b818901915089601f8301126116d657600080fd5b8135818111156116e557600080fd5b8a60208285010111156116f757600080fd5b6020830194508093505050509295509295509295565b803560ff8116811461171e57600080fd5b919050565b60006020828403121561173557600080fd5b6110e08261170d565b8035801515811461171e57600080fd5b60008060006060848603121561176357600080fd5b61176c8461173e565b925061177a6020850161173e565b91506117886040850161173e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803567ffffffffffffffff8116811461171e57600080fd5b600080600061018084860312156117ee57600080fd5b84601f8501126117fd57600080fd5b60405161014080820182811067ffffffffffffffff8211171561182257611822611791565b6040528501818782111561183557600080fd5b865b8281101561185657611848816117c0565b825260209182019101611837565b509194503592506117889050610160850161170d565b6000806040838503121561187f57600080fd5b6118888361173e565b91506118966020840161170d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611926577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b818110156119b85785810183015185820160800152820161199c565b5060006080828601015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050949350505050565b600060208284031215611a0b57600080fd5b505191905056fea26469706673582212207d49553ea3b67e219ae484a4db0fb047adc866e3e044640a8ddd106a45a9259e64736f6c63430008130033";
250
250
 
251
251
  type Miscellaneous1TestsContractConstructorParams =
252
252
  | [signer?: Signer]