@dolomite-exchange/dolomite-margin 0.2.6 → 0.2.7

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 (200) hide show
  1. package/build/contracts/Account.json +11 -11
  2. package/build/contracts/Actions.json +11 -11
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/Admin.json +23 -23
  5. package/build/contracts/AdminImpl.json +35 -307
  6. package/build/contracts/AdvancedMath.json +7 -7
  7. package/build/contracts/AmmRebalancerProxy.json +577 -621
  8. package/build/contracts/AmmRebalancerProxyV1.json +78 -32
  9. package/build/contracts/Babylonian.json +1 -1
  10. package/build/contracts/Bits.json +9 -9
  11. package/build/contracts/Cache.json +13 -13
  12. package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
  13. package/build/contracts/Context.json +1 -1
  14. package/build/contracts/CustomTestToken.json +9 -9
  15. package/build/contracts/Decimal.json +9 -9
  16. package/build/contracts/DelayedMultiSig.json +9 -9
  17. package/build/contracts/DolomiteAmmERC20.json +11 -11
  18. package/build/contracts/DolomiteAmmFactory.json +14 -52
  19. package/build/contracts/DolomiteAmmLibrary.json +24 -24
  20. package/build/contracts/DolomiteAmmPair.json +27 -27
  21. package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
  22. package/build/contracts/DolomiteMargin.json +21 -67
  23. package/build/contracts/DoubleExponentInterestSetter.json +15 -21
  24. package/build/contracts/EnumerableSet.json +7 -7
  25. package/build/contracts/ErroringOmiseToken.json +9 -9
  26. package/build/contracts/ErroringToken.json +10 -10
  27. package/build/contracts/Events.json +17 -17
  28. package/build/contracts/ExcessivelySafeCall.json +35 -35
  29. package/build/contracts/Exchange.json +15 -15
  30. package/build/contracts/Expiry.json +36 -36
  31. package/build/contracts/Getters.json +33 -33
  32. package/build/contracts/IAutoTrader.json +9 -9
  33. package/build/contracts/ICallee.json +7 -7
  34. package/build/contracts/IChainlinkAggregator.json +5 -5
  35. package/build/contracts/IDolomiteAmmERC20.json +5 -5
  36. package/build/contracts/IDolomiteAmmFactory.json +9 -9
  37. package/build/contracts/IDolomiteAmmPair.json +9 -9
  38. package/build/contracts/IDolomiteMargin.json +23 -23
  39. package/build/contracts/IERC20.json +1 -1
  40. package/build/contracts/IERC20Detailed.json +5 -5
  41. package/build/contracts/IExchangeWrapper.json +5 -5
  42. package/build/contracts/IExpiry.json +9 -9
  43. package/build/contracts/IInterestSetter.json +7 -7
  44. package/build/contracts/ILiquidationCallback.json +7 -7
  45. package/build/contracts/IMakerOracle.json +5 -5
  46. package/build/contracts/IOasisDex.json +5 -5
  47. package/build/contracts/IPriceOracle.json +7 -7
  48. package/build/contracts/IRecyclable.json +9 -9
  49. package/build/contracts/ITransferProxy.json +5 -5
  50. package/build/contracts/IUniswapV2Callee.json +5 -5
  51. package/build/contracts/IUniswapV2Factory.json +5 -5
  52. package/build/contracts/IUniswapV2Pair.json +5 -5
  53. package/build/contracts/IUniswapV2Router.json +5 -5
  54. package/build/contracts/IWETH.json +5 -5
  55. package/build/contracts/Interest.json +15 -15
  56. package/build/contracts/LiquidateOrVaporizeImpl.json +32 -83
  57. package/build/contracts/LiquidatorProxyHelper.json +23 -23
  58. package/build/contracts/LiquidatorProxyV1.json +30 -36
  59. package/build/contracts/LiquidatorProxyV1WithAmm.json +49 -105
  60. package/build/contracts/Math.json +1 -1
  61. package/build/contracts/Migrations.json +8 -14
  62. package/build/contracts/Monetary.json +7 -7
  63. package/build/contracts/MultiCall.json +8 -14
  64. package/build/contracts/MultiSig.json +7 -7
  65. package/build/contracts/OmiseToken.json +8 -8
  66. package/build/contracts/OnlyDolomiteMargin.json +11 -11
  67. package/build/contracts/Operation.json +15 -15
  68. package/build/contracts/OperationImpl.json +39 -47
  69. package/build/contracts/Ownable.json +1 -1
  70. package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
  71. package/build/contracts/PayableProxy.json +17 -23
  72. package/build/contracts/Permission.json +11 -11
  73. package/build/contracts/PolynomialInterestSetter.json +13 -13
  74. package/build/contracts/RecyclableTokenProxy.json +25 -25
  75. package/build/contracts/ReentrancyGuard.json +1 -1
  76. package/build/contracts/Require.json +7 -7
  77. package/build/contracts/SafeERC20.json +1 -1
  78. package/build/contracts/SafeETH.json +7 -7
  79. package/build/contracts/SafeLiquidationCallback.json +17 -17
  80. package/build/contracts/SafeMath.json +1 -1
  81. package/build/contracts/SignedOperationProxy.json +21 -104
  82. package/build/contracts/SimpleFeeOwner.json +18 -63
  83. package/build/contracts/State.json +9 -9
  84. package/build/contracts/Storage.json +37 -37
  85. package/build/contracts/TestAmmRebalancerProxy.json +32 -58
  86. package/build/contracts/TestAutoTrader.json +22 -22
  87. package/build/contracts/TestBtcUsdChainlinkAggregator.json +10 -10
  88. package/build/contracts/TestCallee.json +19 -19
  89. package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
  90. package/build/contracts/TestCounter.json +7 -7
  91. package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
  92. package/build/contracts/TestDolomiteMargin.json +22 -22
  93. package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
  94. package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
  95. package/build/contracts/TestExchangeWrapper.json +28 -28
  96. package/build/contracts/TestInterestSetter.json +13 -13
  97. package/build/contracts/TestLib.json +22 -22
  98. package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
  99. package/build/contracts/TestLiquidateCallback.json +719 -719
  100. package/build/contracts/TestLiquidationCallback.json +13 -13
  101. package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
  102. package/build/contracts/TestMakerOracle.json +10 -10
  103. package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
  104. package/build/contracts/TestOasisDex.json +12 -12
  105. package/build/contracts/TestOperationImpl.json +14 -14
  106. package/build/contracts/TestPolynomialInterestSetter.json +10 -10
  107. package/build/contracts/TestPriceAggregator.json +9 -9
  108. package/build/contracts/TestPriceOracle.json +13 -13
  109. package/build/contracts/TestRecyclableToken.json +9 -9
  110. package/build/contracts/TestSimpleCallee.json +15 -15
  111. package/build/contracts/TestToken.json +9 -9
  112. package/build/contracts/TestTrader.json +17 -17
  113. package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
  114. package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
  115. package/build/contracts/TestWETH.json +9 -9
  116. package/build/contracts/Time.json +9 -9
  117. package/build/contracts/Token.json +9 -9
  118. package/build/contracts/TokenA.json +10 -10
  119. package/build/contracts/TokenB.json +10 -10
  120. package/build/contracts/TokenC.json +10 -10
  121. package/build/contracts/TokenD.json +10 -10
  122. package/build/contracts/TokenE.json +10 -10
  123. package/build/contracts/TokenF.json +10 -10
  124. package/build/contracts/TransferProxy.json +22 -28
  125. package/build/contracts/TypedSignature.json +9 -9
  126. package/build/contracts/Types.json +9 -9
  127. package/build/contracts/UQ112x112.json +7 -7
  128. package/build/contracts/UniswapV2ERC20.json +7 -7
  129. package/build/contracts/UniswapV2Factory.json +12 -12
  130. package/build/contracts/UniswapV2Library.json +20 -20
  131. package/build/contracts/UniswapV2Pair.json +17 -17
  132. package/build/contracts/UniswapV2Router02.json +16 -16
  133. package/build/contracts/WETH9.json +1 -1
  134. package/contracts/external/amm/DolomiteAmmERC20.sol +135 -0
  135. package/contracts/external/amm/DolomiteAmmFactory.sol +122 -0
  136. package/contracts/external/amm/DolomiteAmmPair.sol +573 -0
  137. package/contracts/external/amm/SimpleFeeOwner.sol +107 -0
  138. package/contracts/external/helpers/LiquidatorProxyHelper.sol +252 -0
  139. package/contracts/external/helpers/OnlyDolomiteMargin.sol +63 -0
  140. package/contracts/external/interestsetters/DoubleExponentInterestSetter.sol +212 -0
  141. package/contracts/external/interestsetters/PolynomialInterestSetter.sol +205 -0
  142. package/contracts/external/interfaces/IChainlinkAggregator.sol +33 -0
  143. package/contracts/external/interfaces/IDolomiteAmmERC20.sol +52 -0
  144. package/contracts/external/interfaces/IDolomiteAmmFactory.sol +42 -0
  145. package/contracts/external/interfaces/IDolomiteAmmPair.sol +116 -0
  146. package/contracts/external/interfaces/IExpiry.sol +70 -0
  147. package/contracts/external/interfaces/IMakerOracle.sol +52 -0
  148. package/contracts/external/interfaces/IOasisDex.sol +326 -0
  149. package/contracts/external/interfaces/ITransferProxy.sol +53 -0
  150. package/contracts/external/interfaces/IUniswapV2Router.sol +134 -0
  151. package/contracts/external/lib/AdvancedMath.sol +23 -0
  152. package/contracts/external/lib/DolomiteAmmLibrary.sol +323 -0
  153. package/contracts/external/lib/TypedSignature.sol +120 -0
  154. package/contracts/external/lib/UQ112x112.sol +22 -0
  155. package/contracts/external/multisig/DelayedMultiSig.sol +206 -0
  156. package/contracts/external/multisig/MultiSig.sol +571 -0
  157. package/contracts/external/multisig/PartiallyDelayedMultiSig.sol +174 -0
  158. package/contracts/external/oracles/ChainlinkPriceOracleV1.sol +197 -0
  159. package/contracts/external/oracles/TestChainlinkPriceOracleV1.sol +98 -0
  160. package/contracts/external/proxies/AmmRebalancerProxyV1.sol +465 -0
  161. package/contracts/external/proxies/DolomiteAmmRouterProxy.sol +877 -0
  162. package/contracts/external/proxies/LiquidatorProxyV1.sol +507 -0
  163. package/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol +574 -0
  164. package/contracts/external/proxies/PayableProxy.sol +146 -0
  165. package/contracts/external/proxies/RecyclableTokenProxy.sol +463 -0
  166. package/contracts/external/proxies/SignedOperationProxy.sol +553 -0
  167. package/contracts/external/proxies/TransferProxy.sol +207 -0
  168. package/contracts/external/traders/Expiry.sol +532 -0
  169. package/contracts/external/uniswap-v2/UniswapV2ERC20.sol +118 -0
  170. package/contracts/external/uniswap-v2/UniswapV2Factory.sol +67 -0
  171. package/contracts/external/uniswap-v2/UniswapV2Pair.sol +283 -0
  172. package/contracts/external/uniswap-v2/UniswapV2Router02.sol +566 -0
  173. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Callee.sol +13 -0
  174. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol +18 -0
  175. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol +67 -0
  176. package/contracts/external/uniswap-v2/interfaces/IWETH.sol +7 -0
  177. package/contracts/external/uniswap-v2/libraries/SafeETH.sol +29 -0
  178. package/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol +117 -0
  179. package/contracts/external/utils/MultiCall.sol +95 -0
  180. package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
  181. package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
  182. package/dist/build/published_contracts/AdminImpl.json +2 -2
  183. package/dist/build/published_contracts/AmmRebalancerProxyV1.json +5 -0
  184. package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
  185. package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
  186. package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
  187. package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
  188. package/dist/build/published_contracts/Expiry.json +1 -1
  189. package/dist/build/published_contracts/LiquidatorProxyV1.json +1 -1
  190. package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
  191. package/dist/build/published_contracts/MultiCall.json +1 -1
  192. package/dist/build/published_contracts/PayableProxy.json +2 -2
  193. package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
  194. package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
  195. package/dist/build/published_contracts/TestUniswapAmmRebalancerProxy.json +140 -0
  196. package/dist/build/published_contracts/TransferProxy.json +1 -1
  197. package/dist/src/lib/Contracts.d.ts +3 -1
  198. package/dist/src/lib/Contracts.js +7 -3
  199. package/dist/src/lib/Contracts.js.map +1 -1
  200. package/package.json +2 -1
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "contractName": "OperationImpl",
3
3
  "abi": [],
4
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"dYdX * Logic for processing actions\",\"methods\":{},\"title\":\"OperationImpl\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":\"OperationImpl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xcc8da88b265e994c6e29c16de47d7f07ae772d8b35f25c95bfd7e9e56160efe0\",\"urls\":[\"bzz-raw://3d4f2e52ab9590093b7ae981e203d04b84b4fe670d6a6ff5a568645a92ea0e0d\",\"dweb:/ipfs/QmfFeAaG497cu6j2ykGV8guwUgwdYjUFXDwCjbLYNS2T58\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0x32e415843e918648c740cbffc591e04bd158ae06f911d60ed844ce30ad13e7f0\",\"urls\":[\"bzz-raw://cee2fd0c63854065d2504f87a12ea3bede82d25552520c8bb72b752a697754b1\",\"dweb:/ipfs/QmedgadJUphfSxAPrg1EPvJoAhBBxU1hK18xQ2QVocmDyX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0xfca7f5635821bbc8ff21db6982471a5f20071365496b74a8202e59494d0f327f\",\"urls\":[\"bzz-raw://eb289cb96c83a3ff7fd72d9a646694d324ee955874ef61e986850459b5841d16\",\"dweb:/ipfs/QmeeiaqShMqWpttPJ3GuDwxFzmq235HMVG7vDnLWnCupaZ\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0xad98b922c02e36b8ce992097639f6ecd859b5dc97b62334e72fc97dc68a2adc7\",\"urls\":[\"bzz-raw://fd1a2c1f7b1fb114430bda41d963c61e1f5467cf45ca9a4e0b4c8e9f2dfff2c5\",\"dweb:/ipfs/QmWv82ML6nUfnWb1S5rPjKQc8ncZDY4tQkaGjBWczWCT2C\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x44694441ccb1a3ec0328a4336680549e4dfb606616d022acfe3ed8c4359ba478\",\"urls\":[\"bzz-raw://948143d0061a02614f0e1a833e676b49d138dda5e098b14f14f3be9908f32d38\",\"dweb:/ipfs/QmbtgtpmjHY5ksTWa4h7E8wayjfjW5uun1Ek8ZRcLSYXMT\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x793484b5aa923b4cb7c9671914e3d9f2d19bee6ee680424adaa97e3b9de930c4\",\"urls\":[\"bzz-raw://cebf09a8d36b303b0b92ee850ea2a802946ac43cb26d1da819f5ea74d6e5110f\",\"dweb:/ipfs/QmeQJZSaHmJskcgL3spQTvn6tYqE9Yo3vfbMTuhJenzhwf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/SafeLiquidationCallback.sol\":{\"keccak256\":\"0x8084c1137ea386da7b6b943d3469f102bb4a5f69c944fe32503cb034d47ea26e\",\"urls\":[\"bzz-raw://387f7373cd99c62049d7139852ceda52b611ccfe305d2a19c7366d1de81c9919\",\"dweb:/ipfs/QmVHnW1gZ9MwLxWxFhZJwjW86SDv89o22phCBx11jQGxdY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
5
- "bytecode": "0x615f8562000027600b82828239805160001a60731461001a57fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bd76ecfd1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046152f0565b61005c565b005b6100646100a6565b61006e82826100df565b6060610078614c2c565b61008385858561025a565b9150915061009385858584610577565b61009f8585848461078d565b5050505050565b7f91b01baeee3a24b590d112613814d86801005c7ef9353e7fc1eaeaf33ccf83b0336040516100d591906159b2565b60405180910390a1565b61012f8251600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f206163636f756e747300000000000000610aab565b61017f8151600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f20616374696f6e730000000000000000610aab565b60005b825181101561025557600181015b835181101561024c576102446101cc8584815181106101ab57fe5b60200260200101518684815181106101bf57fe5b6020026020010151610b5c565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f74206475706c6963617465206163636f756e74730000000000000087868151811061021b57fe5b60200260200101516000015188878151811061023357fe5b602002602001015160200151610b8d565b600101610190565b50600101610182565b505050565b6060610264614c2c565b845484516040805182815260208084028201019091526060918015610293578160200160208202803883390190505b50905061029e614c2c565b6102a783610c51565b905060005b86518110156104e6576102bd614c4d565b8782815181106102c957fe5b6020026020010151905060008160000151905060006102e782610cb2565b905060006102f483610d1f565b9050600081600281111561030457fe5b14610403576103608460c00151856020015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206163636f756e747320696e20616374696f6e0000000088610d8d565b600181600281111561036e57fe5b141561039b576001878560c001518151811061038657fe5b91151560209283029190910190910152610403565b610403878560c00151815181106103ae57fe5b6020026020010151157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5265717569726573206e6f6e2d7072696d617279206163636f756e74000000008760c00151610d8d565b60018785602001518151811061041557fe5b91151560209283029190910190910152600182600281111561043357fe5b141561044d576104488d878660600151610e2b565b6104d6565b600282600281111561045b57fe5b14156104d6576104b88460800151856060015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206d61726b65747320696e20616374696f6e000000000088610d8d565b6104c78d878660600151610e2b565b6104d68d878660800151610e2b565b5050600190920191506102ac9050565b5060005b875181101561055957606061051b89838151811061050457fe5b60200260200101518b610e6890919063ffffffff16565b905060005b815181101561054f576105478b8584848151811061053a57fe5b6020026020010151610e2b565b600101610520565b50506001016104ea565b5061056a888263ffffffff610ea016565b9097909650945050505050565b60005b825181101561009f5761058b614c4d565b83828151811061059757fe5b6020908102919091010151805190915060008160088111156105b557fe5b14156105d3576105ce876105c988856110e6565b611143565b610783565b60018160088111156105e157fe5b14156105fa576105ce876105f588856110e6565b611264565b600281600881111561060857fe5b1415610621576105ce8761061c88856112fd565b611364565b600381600881111561062f57fe5b1415610648576105ce876106438885611414565b611485565b600481600881111561065657fe5b141561066f576105ce8761066a8885611414565b6115f5565b600581600881111561067d57fe5b1415610696576105ce8761069188856116ec565b611736565b60068160088111156106a457fe5b14156107235773__LiquidateOrVaporizeImpl_______________6383d848b3886106cf8986611a0b565b876040518463ffffffff1660e01b81526004016106ee93929190615b18565b60006040518083038186803b15801561070657600080fd5b505af415801561071a573d6000803e3d6000fd5b50505050610783565b600781600881111561073157fe5b141561075c5773__LiquidateOrVaporizeImpl_______________632e077456886106cf8986611a0b565b600881600881111561076a57fe5b1415610783576107838761077e8885611a7c565b611acf565b505060010161057a565b600061079882611b74565b905060005b818110156109af5760006107b7848363ffffffff611b7916565b5190506107ca848363ffffffff611b7916565b6040015115610869576108696107e6858463ffffffff611b7916565b606001516fffffffffffffffffffffffffffffffff1661080c898463ffffffff611bf516565b516fffffffffffffffffffffffffffffffff1611157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4d61726b657420697320636c6f73696e6700000000000000000000000000000084610d8d565b60008181526001880160205260409020547501000000000000000000000000000000000000000000900460ff16156109a65760005b86518110156109a4576108b7858463ffffffff611b7916565b602001516001600160a01b03168782815181106108d057fe5b6020026020010151600001516001600160a01b03161461099c5761099c610923836109178a858151811061090057fe5b60200260200101518c611c5590919063ffffffff16565b9063ffffffff611c8616565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f696e76616c69642072656379636c61626c65206f776e657200000000000000008a858151811061097257fe5b6020026020010151600001518b868151811061098a57fe5b60200260200101516020015187611c9e565b60010161089e565b505b5060010161079d565b5060005b8451811015610aa3576109c4614c9f565b8582815181106109d057fe5b602002602001015190508482815181106109e657fe5b60200260200101516109f85750610a9b565b6000610a0d888387600163ffffffff611d8e16565b9050610a64817f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e646572636f6c6c61746572616c697a6564206163636f756e74000000000085600001518660200151610b8d565b6000610a76898463ffffffff611e9516565b6002811115610a8157fe5b14610a9857610a988883600063ffffffff611ec716565b50505b6001016109b3565b505050505050565b8261025557610ab982611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610ae383611f2f565b604051602001610af593929190615808565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b5391600401615ad9565b60405180910390fd5b805182516000916001600160a01b039182169116148015610b84575081602001518360200151145b90505b92915050565b8461009f57610b9b84611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610bc585611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612007565b7f2c20000000000000000000000000000000000000000000000000000000000000610c1987612171565b604051610af597969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161588e565b610c59614c2c565b604080516000606082018181526080830190935290918291610c91565b610c7e614cb6565b815260200190600190039081610c765790505b508152602001610ca084612280565b8152602001600081525090505b919050565b600080826008811115610cc157fe5b1480610cd857506001826008811115610cd657fe5b145b80610cee57506002826008811115610cec57fe5b145b15610cfb57506001610cad565b6008826008811115610d0957fe5b1415610d1757506000610cad565b506002919050565b60006002826008811115610d2f57fe5b1480610d4657506005826008811115610d4457fe5b145b15610d5357506001610cad565b6006826008811115610d6157fe5b1480610d7857506007826008811115610d7657fe5b145b15610d8557506002610cad565b506000919050565b83610e2557610d9b83611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610dc584611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612171565b604051610af59594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615830565b50505050565b610e3b828263ffffffff6122ba16565b61025557610e4f828263ffffffff6122ca16565b61025581610e63858263ffffffff61233416565b612497565b80516001600160a01b0316600090815260048301602090815260408083208285015184529091529020606090610b84906001016124d3565b8060400151604051908082528060200260200182016040528015610ede57816020015b610ecb614cb6565b815260200190600190039081610ec35790505b5081526000805b82602001515181101561108c57600083602001518281518110610f0457fe5b602002602001015190505b8015611071576000610f208261252f565b90506000610f2e8483612706565b90506000610f42888363ffffffff61271116565b600083815260018a01602052604090205490915074010000000000000000000000000000000000000000900460ff1615610ffc576040805160a0810182528381526001600160a01b038316602082015260019181019190915260608101610faf8a8563ffffffff611bf516565b516fffffffffffffffffffffffffffffffff168152602001610fd88a858563ffffffff61273016565b9052875180516001890198908110610fec57fe5b602002602001018190525061105d565b6040805160a0810182528381526001600160a01b0383166020820152600091810182905260608101919091526080810161103d8a858563ffffffff61273016565b905287518051600189019890811061105157fe5b60200260200101819052505b6110678484612850565b9350505050610f0f565b8360400151831415611083575061108c565b50600101610ee5565b50604082015182515161025591808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c790000000091612859565b6110ee614d07565b6040518060800160405280836040015181526020018484602001518151811061111357fe5b60200260200101518152602001836060015181526020018360a001516001600160a01b0316815250905092915050565b602081015161115a9083903363ffffffff6128bb16565b60608101516111e2906001600160a01b031633148061119657508160200151600001516001600160a01b031682606001516001600160a01b0316145b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008460600151612950565b6111ea614c9f565b6111f2614c9f565b602083015160408401518451611211928792909163ffffffff6129b216565b91509150611234836020015184604001518487612b68909392919063ffffffff16565b61125961124e84604001518661271190919063ffffffff16565b846060015183613006565b610e2584848361306f565b602081015161127b9083903363ffffffff6128bb16565b611283614c9f565b61128b614c9f565b6020830151604084015184516112aa928792909163ffffffff6129b216565b915091506112cd836020015184604001518487612b68909392919063ffffffff16565b6112f26112e784604001518661271190919063ffffffff16565b8460600151836130dd565b610e25848483613145565b611305614d3b565b6040518060800160405280836040015181526020018484602001518151811061132a57fe5b60200260200101518152602001848460c001518151811061134757fe5b602002602001015181526020018360600151815250905092915050565b602081015161137b9083903363ffffffff6128bb16565b60408101516113929083903363ffffffff6128bb16565b61139a614c9f565b6113a2614c9f565b6020830151606084015184516113c1928792909163ffffffff6129b216565b915091506113e4836020015184606001518487612b68909392919063ffffffff16565b611409836040015184606001516113fa84613191565b8792919063ffffffff6131b816565b610e25848483613240565b61141c614d75565b6040518060c00160405280836040015181526020018484602001518151811061144157fe5b6020026020010151815260200183606001518152602001836080015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b602081015161149c9083903363ffffffff6128bb16565b60006114b582606001518461271190919063ffffffff16565b905060006114d083604001518561271190919063ffffffff16565b90506114da614c9f565b6114e2614c9f565b602085015160408601518651611501928992909163ffffffff6129b216565b9150915061150d614c9f565b61152286608001518587858a60a001516132d7565b905061152c614c9f565b61154a87608001518860200151600001518789868c60a001516133f4565b90506115a78360200151826020015110157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f42757920616d6f756e74206c657373207468616e2070726f6d697365640000008460200151610d8d565b602087015160408801516115c3918a918763ffffffff612b6816565b602087015160608801516115df918a918563ffffffff6131b816565b6115eb8888848661352e565b5050505050505050565b602081015161160c9083903363ffffffff6128bb16565b600061162582604001518461271190919063ffffffff16565b9050600061164083606001518561271190919063ffffffff16565b905061164a614c9f565b611652614c9f565b602085015160408601518651611671928992909163ffffffff6129b216565b9150915061167d614c9f565b61169b86608001518760200151600001518688868b60a001516133f4565b602087015160408801519192506116bb918991908663ffffffff612b6816565b602086015160608701516116d79189918463ffffffff6131b816565b6116e3878784846135b8565b50505050505050565b6116f4614dc0565b6040518060e00160405280836040015181526020018484602001518151811061171957fe5b60200260200101518152602001848460c001518151811061144157fe5b602081015161174d9083903363ffffffff6128bb16565b604081015160a082015161176891849163ffffffff6128bb16565b60a081015161177e90839063ffffffff61361d16565b156117dd576117dd611796833363ffffffff61363f16565b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e7065726d697373696f6e6564207472616465206f70657261746f72000000610aab565b6117e5614c9f565b6040820151606083015161180091859163ffffffff61366116565b905061180a614c9f565b611812614c9f565b604084015160608501518551611831928892909163ffffffff6129b216565b9150915061183d614de0565b8460a001516001600160a01b031663448f706586606001518760800151886040015189602001518989898d60c001516040518963ffffffff1660e01b815260040161188f989796959493929190615b97565b608060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118e191908101906152b4565b90506118eb614c9f565b6118f3614c9f565b6040870151608088015161190f918a918663ffffffff6129b216565b9150915061198c61191f826136d3565b8061192e575061192e856136d3565b80611940575084518251151590151514155b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5472616465732063616e6e6f74206265206f6e652d73696465640000000000008a60a00151612950565b604087015160608801516119a8918a918863ffffffff612b6816565b604087015160808801516119c4918a918563ffffffff612b6816565b6119e9876020015188606001516119da87613191565b8b92919063ffffffff6131b816565b6119ff876020015188608001516119da84613191565b6115eb888886846136db565b611a13614e01565b6040518060a001604052808360400151815260200184846020015181518110611a3857fe5b60200260200101518152602001848460c0015181518110611a5557fe5b60200260200101518152602001836060015181526020018360800151815250905092915050565b611a84614e42565b604051806060016040528084846020015181518110611a9f57fe5b602002602001015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b8051611ae39083903363ffffffff6128bb16565b6020810151815160408084015190517f8b4187130000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692638b41871392611b359233926004016159c0565b600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050611b70816137f6565b5050565b515190565b611b81614cb6565b825151611bd790808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e64657800000000000000000000000000000000000000908690612859565b8251805183908110611be557fe5b6020026020010151905092915050565b611bfd614c9f565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902060010190565b60009081526001919091016020526040902054151590565b85610aa357611cac85611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000611cd686611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000611d0087612007565b7f2c20000000000000000000000000000000000000000000000000000000000000611d2a88612171565b7f2c20000000000000000000000000000000000000000000000000000000000000611d5489612171565b604051610af5999897969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161590a565b6000611da0858563ffffffff61384a16565b611dac57506001611e8d565b611db4614e69565b611dbc614e69565b611dcf878787600163ffffffff61388416565b80519193509150611de557600192505050611e8d565b8315611e4b57600b870154815187516020890151611e4b9390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610b8d565b8051604080516020810190915260088901548152600091611e6b916139e7565b8251909150611e80908263ffffffff613a0016565b8360000151101593505050505b949350505050565b80516001600160a01b031660009081526004929092016020908152604080842092820151845291905290205460ff1690565b81516001600160a01b031660009081526004840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611f2557fe5b0217905550505050565b60608082604051602001611f4391906157e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611fec5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611faf57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611fe75760010181529050610cad565b611f76565b5060408051600080825260208201909252905b509392505050565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b8160008151811061204657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061208757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611fff57600281026120d2600f8516613a3f565b8382602903815181106120e157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612123600f8516613a3f565b83826028038151811061213257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016120b9565b6060816121b2575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cad565b8160005b81156121ca57600101600a820491506121b6565b6060816040519080825280601f01601f1916602001820160405280156121f7576020820181803883390190505b508593509050815b8015612277577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061223d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506121ff565b50949350505050565b606060016101008304016040519080825280602002602001820160405280156122b3578160200160208202803883390190505b5092915050565b6000610b84836020015183613a61565b81515161231990157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610aab565b612327826020015182613aa1565b5060400180516001019052565b61233c614e7c565b612344614e7c565b612354848463ffffffff613ad716565b905061235e613b5b565b63ffffffff16816040015163ffffffff16141561237c579050610b87565b61238d84848363ffffffff613b6b16565b6000938452600194909401602090815260409384902085516002909101805487840151978701517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091166bffffffffffffffffffffffff938416177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000009884168902177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9283168102919091179283905587516060810189528385168152988304909316938801939093520416928401929092525090919050565b817ff4626fd1187f91e6761ffb8a6ac3e8d9235a4a92da54e43feb0c57c4a4a322ab826040516124c79190615b0a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561252357602002820191906000526020600020905b81548152602001906001019080831161250f575b50505050509050919050565b600060ff6fffffffffffffffffffffffffffffffff831615612572577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161257a565b608083901c92505b67ffffffffffffffff8316156125b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016125b9565b604083901c92505b63ffffffff8316156125ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016125f4565b602083901c92505b61ffff831615612625577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161262d565b601083901c92505b60ff83161561265d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801612665565b600883901c92505b600f831615612695577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161269d565b600483901c92505b60038316156126cd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016126d5565b600283901c92505b6001831615610b87577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b600090815260019190910160205260409020546001600160a01b031690565b612738614e69565b60008381526001850160205260409020600301546001600160a01b031661275d614e69565b6040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038316906341976e09906127a29087906004016159a4565b60206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f291908101906152d2565b80519091506128459015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f00000000000000000000000088610d8d565b9150505b9392505050565b6001901b900390565b8461009f5761286784611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061289185611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612171565b600082600001516001600160a01b0316826001600160a01b031614806128ec57506128ec848363ffffffff61363f16565b80612906575082516129069085908463ffffffff613bba16565b9050610e25817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f72000000000000000000855b83610e255761295e83611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061298884611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612007565b6129ba614c9f565b6129c2614c9f565b6129ca614c9f565b6129db87878763ffffffff61366116565b905083606001516000148015612a0057506000846040015160018111156129fe57fe5b145b15612a185780612a0e613bea565b9250925050612b5f565b612a20614e7c565b612a30888763ffffffff613ad716565b9050612a3a614c9f565b612a448383613c0a565b9050612a4e614c9f565b612a56614c9f565b600088602001516001811115612a6857fe5b1415612ad457506040805180820190915287511515815260608801516020820152600188604001516001811115612a9b57fe5b1415612ab457612ab1818463ffffffff613cbb16565b90505b612acd612ac7848363ffffffff613cd016565b85613d62565b9150612b56565b6040518060400160405280896000015115158152602001612af88a60600151613e25565b6fffffffffffffffffffffffffffffffff1690529150600088604001516001811115612b2057fe5b1415612b3957612b36858363ffffffff613e8816565b91505b612b5383612b478487613c0a565b9063ffffffff613cbb16565b90505b90955093505050505b94509492505050565b612b70614c9f565b612b8185858563ffffffff61366116565b9050612b8d8183613fad565b15612b985750610e25565b612ba0614c9f565b612bb0868563ffffffff611bf516565b825190915015612c1d57612c01612bfc83602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661401f90919063ffffffff16565b613e25565b6fffffffffffffffffffffffffffffffff166020820152612c62565b60208201518151612c4d91612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff61401f16565b6fffffffffffffffffffffffffffffffff1681525b825115612cc757612cab612bfc84602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16613a0090919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152612d0c565b60208301518151612cf791612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff613a0016565b6fffffffffffffffffffffffffffffffff1681525b612d1582614061565b8015612d255750612d2583614089565b15612db55784516001600160a01b031660009081526004870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff909116179055612e3a565b612dbe82614089565b8015612dce5750612dce83614061565b15612e3a5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b612e438361409f565b8015612e555750612e538261409f565b155b15612e9c5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612e96906001018563ffffffff6140b916565b50612ef9565b612ea58361409f565b158015612eb65750612eb68261409f565b15612ef95784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612ef7906001018563ffffffff61419f16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff000000000000000000000000000000009097169690961786169390931790925587516001600160a01b031683526004890181528183208882015184528152818320878452600301815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61305f613012826141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e656761746976650000000000008460200151610d8d565b6102558383308460200151614200565b60208083015180519181015160408501516001600160a01b03909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f926130bb90889083886142fd565b86606001516040516130d09493929190615b62565b60405180910390a2505050565b6131366130e982614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e736665724f757420706f73697469766500000000008460200151610d8d565b61025583838360200151614348565b60208083015180519181015160408501516001600160a01b03909316927fbc83c08f0b269b1726990c8348ffdf1ae1696244a14868d766e542a2f18cd7d4926130bb90889083886142fd565b613199614c9f565b5060408051808201909152815115815260208083015190820152919050565b6131c1816136d3565b156131cb57610e25565b6131d3614e7c565b6131e3858463ffffffff613ad716565b90506131ed614c9f565b6131fe86868663ffffffff61443a16565b9050613208614c9f565b613218828563ffffffff613cd016565b9050613222614c9f565b61322c8285613d62565b90506115eb8888888463ffffffff612b6816565b60408201518051602080850151805181830151929094015160608701516001600160a01b0394851695909416937f21281f8d59117d0399dc467dbdd321538ceffe3225e80e2bd4de6f1b3355cbc7939261329d908a90838a6142fd565b6132b98a8a604001518b606001516132b48c613191565b6142fd565b6040516132ca959493929190615c17565b60405180910390a3505050565b6132df614c9f565b6133386132eb846141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f7420676574436f7374206e656761746976650000000000000000008660200151610d8d565b613340614c9f565b6000815260208401516040517f3a8fdd7d0000000000000000000000000000000000000000000000000000000081526001600160a01b03891691633a8fdd7d91613393918a918a91908990600401615a69565b60206040518083038186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e3919081019061536d565b602082015290505b95945050505050565b6133fc614c9f565b61345561340884614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f742065786368616e676520706f73697469766500000000000000008660200151610d8d565b6134608488856130dd565b613468614c9f565b6001815260208401516040517f7d98ebac0000000000000000000000000000000000000000000000000000000081526001600160a01b038a1691637d98ebac916134bf918b9130918c918c91908b906004016159ed565b602060405180830381600087803b1580156134d957600080fd5b505af11580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613511919081019061536d565b6020820152613521868983613006565b90505b9695505050505050565b602080840151805191810151606086015160408701516001600160a01b03909416937f2e346762bf4ae4568971c30b51fcebd2138275aafcfe12d872956e9f3e1208939361357f908a90848a6142fd565b6135938a8a602001518b604001518a6142fd565b89608001516040516135aa96959493929190615c5a565b60405180910390a250505050565b602080840151805191810151604086015160608701516001600160a01b03909416937fcc3330184b6d88cad87f9e9543b4d4110a6a3eaf20164ca5252d598d0acba3f193613609908a90848a6142fd565b6135938a8a602001518b606001518a6142fd565b6001600160a01b03166000908152600791909101602052604090205460ff1690565b6001600160a01b03166000908152600691909101602052604090205460ff1690565b613669614c9f565b5081516001600160a01b031660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b602001511590565b6136e3614e9c565b604051806080016040528061370587876020015188606001516132b489613191565b815260200161372187876020015188608001516132b488613191565b815260200161373a8787604001518860600151886142fd565b81526020016137538787604001518860800151876142fd565b9052604085015180516020808801518051908201519190930151606089015160808a01519596506001600160a01b039384169593909416937f54d4cc60cf7d570631cc1a58942812cb0fc461713613400f56932040c3497d19938760006020020151886001602002015189600260200201518a600360200201518e60a001516040516137e799989796959493929190615cb6565b60405180910390a35050505050565b80518051602091820151918301516040516001600160a01b03909216927fab38cdc4a831ebe6542bf277d36b65dbc5c66a4d03ec6cf56ac38de05dc300989261383f9290615b47565b60405180910390a250565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b61388c614e69565b613894614e69565b61389c614e69565b6138a4614e69565b60006138af87611b74565b905060005b818110156139d8576138c4614c9f565b6138e78a6138d88b8563ffffffff611b7916565b518d919063ffffffff61443a16565b90506138f2816136d3565b156138fd57506139d0565b60006139286139128b8563ffffffff611b7916565b608001515160208401519063ffffffff61449f16565b9050613932614e69565b61393a6144f3565b905089156139855761398260018e01600061395b8e8863ffffffff611b7916565b51815260208082019290925260409081016000208151928301909152600501548152614515565b90505b8251156139ae576139a7613999838361454c565b88519063ffffffff613a0016565b87526139cc565b6139c96139bb83836139e7565b87519063ffffffff613a0016565b86525b5050505b6001016138b4565b50919890975095505050505050565b6000610b84838360000151670de0b6b3a7640000614561565b600082820183811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615aea565b6000600a821015613a5757506030810160f81b610cad565b5060570160f81b90565b600080610100830490506000610100840690506000816001901b868481518110613a8757fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b90859084908110613abf57fe5b60200260200101818151179150818152505050505050565b613adf614e7c565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000613b6642614583565b905090565b613b73614e7c565b613b7b614e69565b613b8c85858563ffffffff6145da16565b90506128458382613ba3888863ffffffff611bf516565b6040805160208101909152600a8a015481526146d8565b6001600160a01b039182166000908152600593909301602090815260408085209290931684525290205460ff1690565b613bf2614c9f565b50604080518082019091526000808252602082015290565b613c12614c9f565b602083015183516fffffffffffffffffffffffffffffffff9091169015613c7e57604080518082019091526001815260208481015190820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b815250915050610b87565b604080518082019091526000815283516020820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b613cc3614c9f565b610b8483613cd084613191565b613cd8614c9f565b613ce0614c9f565b8251845115159015151415613d135783511515815260208085015190840151613d099190613a00565b6020820152610b84565b8260200151846020015110613d3c5783511515815260208085015190840151613d09919061401f565b82511515815260208084015190850151613d56919061401f565b60208201529392505050565b613d6a614c9f565b825115613de0576040518060400160405280600115158152602001613dc5612bfc670de0b6b3a764000067ffffffffffffffff1686602001516bffffffffffffffffffffffff1688602001516148429092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610b87565b6040805180820190915260008152825160208581015190830191613dc591612bfc91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61484216565b600081610b876fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610d8d565b613e90614c9f565b613e98614c9f565b8251845115159015151415613ef65783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff9182169116613a00565b6fffffffffffffffffffffffffffffffff166020820152610b84565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613f5c5783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b82511515815260208084015190850151613f8f91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156140165760208301516fffffffffffffffffffffffffffffffff1661400657506001610b87565b5080518251151590151514610b87565b50600092915050565b6000610b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506148ca565b60008082602001516fffffffffffffffffffffffffffffffff16118015610b87575050511590565b60006140948261409f565b80610b875750505190565b602001516fffffffffffffffffffffffffffffffff161590565b600081815260018301602052604081205480156141955783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461414f57600086600001828154811061411057fe5b906000526020600020015490508087600001848154811061412d57fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061415a57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b87565b6000915050610b87565b60006141ab8383611c86565b6141e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b87565b506000610b87565b8051600090158015610b8757505060200151151590565b80158061421e5750826001600160a01b0316826001600160a01b0316145b1561422857610e25565b604051610e259085907f23b872dd000000000000000000000000000000000000000000000000000000009061426590879087908790602401615a41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250614910565b614305614ec9565b604080518082019091528281526020810161432787878763ffffffff61366116565b905295945050505050565b80516000908015610b8757505060200151151590565b80158061435d57506001600160a01b03821630145b1561436757610255565b6040516102559084907fa9059cbb00000000000000000000000000000000000000000000000000000000906143a29086908690602401615aa3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601681526020017f546f6b656e3a207472616e73666572206661696c656400000000000000000000815250614910565b614442614c9f565b61444a614c9f565b61445b85858563ffffffff61366116565b90506144668161409f565b1561447b57614473613bea565b915050612849565b614483614e7c565b614493868563ffffffff613ad716565b90506135248282613c0a565b6000826144ae57506000610b87565b828202828482816144bb57fe5b0414610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615afa565b6144fb614e69565b506040805160208101909152670de0b6b3a7640000815290565b61451d614e69565b60408051602081019091528251819061454490670de0b6b3a764000063ffffffff613a0016565b905292915050565b6000610b8483670de0b6b3a764000084600001515b6000611e8d82614577868663ffffffff61449f16565b9063ffffffff614a0216565b600081610b8763ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610d8d565b6145e2614e69565b6145ea614c9f565b6145fa858563ffffffff611bf516565b9050614604614c9f565b61460c614c9f565b6146168386614a44565b91509150614622614e69565b60008781526001890160205260409020600401546001600160a01b031663e8177dcf6146548a8a63ffffffff61271116565b846020015186602001516040518463ffffffff1660e01b815260040161467c93929190615abe565b60206040518083038186803b15801561469457600080fd5b505afa1580156146a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506146cc91908101906152d2565b98975050505050505050565b6146e0614e7c565b6146e8614c9f565b6146f0614c9f565b6146fa8588614a44565b915091506000614708613b5b565b905060006147406147328a6040015163ffffffff168463ffffffff1661401f90919063ffffffff16565b89519063ffffffff61449f16565b9050600061474d856136d3565b1561475a5750600061478c565b61476482886139e7565b905084602001518460200151101561478c576147898185602001518760200151614561565b90505b8181111561479657fe5b60408051606081019091528a5181906147df906147da906bffffffffffffffffffffffff166147ce8188670de0b6b3a7640000614561565b9063ffffffff613a0016565b614aec565b6bffffffffffffffffffffffff908116825260208d810151920191614816916147da91166147ce8187670de0b6b3a7640000614561565b6bffffffffffffffffffffffff1681526020018463ffffffff1681525095505050505050949350505050565b600083158061484f575082155b156148665761485f600083614a02565b9050612849565b6000614878858563ffffffff61449f16565b905061284561489760016147ce6002614577888463ffffffff61401f16565b6148a7838663ffffffff614b4b16565b10156148b45760006148b7565b60015b60ff166147ce838663ffffffff614a0216565b60008184841115614908576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b505050900390565b60006060846001600160a01b03168460405161492c91906157fc565b6000604051808303816000865af19150503d8060008114614969576040519150601f19603f3d011682016040523d82523d6000602084013e61496e565b606091505b50915091508183906149ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b5080511561009f57808060200190516149c99190810190615296565b8390610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b6000610b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614b8d565b614a4c614c9f565b614a54614c9f565b614a5c614c9f565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152614a8f614c9f565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152614abf614c9f565b614ac98387613c0a565b9050614ad3614c9f565b614add8388613c0a565b91989197509095505050505050565b600081610b876bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743936000000000000000000000084610d8d565b6000610b8483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614bde565b60008183614bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b506000838581614bd457fe5b0495945050505050565b60008183614c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b50828481614c2357fe5b06949350505050565b60405180606001604052806060815260200160608152602001600081525090565b604080516101008101825260008082526020820152908101614c6d614de0565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b6040518060a001604052806000815260200160006001600160a01b0316815260200160001515815260200160006fffffffffffffffffffffffffffffffff168152602001614d02614e69565b905290565b6040518060800160405280614d1a614de0565b8152602001614d27614c9f565b815260006020820181905260409091015290565b6040518060800160405280614d4e614de0565b8152602001614d5b614c9f565b8152602001614d68614c9f565b8152602001600081525090565b6040518060c00160405280614d88614de0565b8152602001614d95614c9f565b8152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b6040518060e00160405280614dd3614de0565b8152602001614d88614c9f565b60408051608081019091526000808252602082019081526020016000614d68565b6040518060a00160405280614e14614de0565b8152602001614e21614c9f565b8152602001614e2e614c9f565b815260200160008152602001600081525090565b6040518060600160405280614e55614c9f565b815260006020820152606060409091015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806004905b614eb3614ec9565b815260200190600190039081614eab5790505090565b6040518060400160405280614edc614c9f565b8152602001614d02614c9f565b8035610b8781615f02565b600082601f830112614f0557600080fd5b8135614f18614f1382615d58565b615d31565b81815260209384019390925082018360005b83811015614f565781358601614f408882615058565b8452506020928301929190910190600101614f2a565b5050505092915050565b600082601f830112614f7157600080fd5b8135614f7f614f1382615d58565b91508181835260208401935060208101905083856040840282011115614fa457600080fd5b60005b83811015614f565781614fba8882615206565b84525060209092019160409190910190600101614fa7565b8035610b8781615f16565b8051610b8781615f16565b600082601f830112614ff957600080fd5b8135615007614f1382615d79565b9150808252602083016020830185838301111561502357600080fd5b61502e838284615e95565b50505092915050565b8035610b8781615f1f565b8035610b8781615f2c565b8051610b8781615f2c565b6000610160828403121561506b57600080fd5b615076610100615d31565b905060006150848484615037565b825250602061509584848301615280565b60208301525060406150a984828501615134565b60408301525060c06150bd84828501615280565b60608301525060e06150d184828501615280565b6080830152506101006150e684828501614ee9565b60a0830152506101206150fb84828501615280565b60c08301525061014082013567ffffffffffffffff81111561511c57600080fd5b61512884828501614fe8565b60e08301525092915050565b60006080828403121561514657600080fd5b6151506080615d31565b9050600061515e8484614fd2565b825250602061516f84848301615042565b602083015250604061518384828501615042565b604083015250606061519784828501615280565b60608301525092915050565b6000608082840312156151b557600080fd5b6151bf6080615d31565b905060006151cd8484614fdd565b82525060206151de8484830161504d565b60208301525060406151f28482850161504d565b60408301525060606151978482850161528b565b60006040828403121561521857600080fd5b6152226040615d31565b905060006152308484614ee9565b825250602061524184848301615280565b60208301525092915050565b60006020828403121561525f57600080fd5b6152696020615d31565b90506000615277848461528b565b82525092915050565b8035610b8781615f39565b8051610b8781615f39565b6000602082840312156152a857600080fd5b6000611e8d8484614fdd565b6000608082840312156152c657600080fd5b6000611e8d84846151a3565b6000602082840312156152e457600080fd5b6000611e8d848461524d565b60008060006060848603121561530557600080fd5b60006153118686615280565b935050602084013567ffffffffffffffff81111561532e57600080fd5b61533a86828701614f60565b925050604084013567ffffffffffffffff81111561535757600080fd5b61536386828701614ef4565b9150509250925092565b60006020828403121561537f57600080fd5b6000611e8d848461528b565b6000615397838361571c565b505060a00190565b60006153ab83836157cc565b505060200190565b6153bc81615e74565b82525050565b6153bc81615dd2565b60006153d682615dc5565b6153e08185615dc9565b93506153eb83615dbf565b8060005b83811015615419578151615403888261538b565b975061540e83615dbf565b9250506001016153ef565b509495945050505050565b600061542f82615dc5565b6154398185615dc9565b935061544483615dbf565b8060005b8381101561541957815161545c888261539f565b975061546783615dbf565b925050600101615448565b6153bc81615ddd565b6153bc61548782615de2565b615e2c565b6153bc61548782615e07565b6153bc61548782615e2c565b60006154af82615dc5565b6154b98185615dc9565b93506154c9818560208601615ea1565b6154d281615ecd565b9093019392505050565b60006154e782615dc5565b6154f18185610cad565b9350615501818560208601615ea1565b9290920192915050565b6153bc81615e7f565b6000615521601b83615dc9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061555a602183615dc9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160808301906155bd8482615472565b5060208201516155d0602085018261550b565b5060408201516155e3604085018261550b565b506060820151610e2560608501826157cc565b8051608083019061560784826157b2565b506020820151610e256040850182615779565b8051606083019061562b84826157de565b50602082015161563e60208501826157de565b506040820151610e2560408501826157d5565b8051604083019061566284826153c2565b506020820151610e2560208501826157cc565b805161014083019061568784826155ac565b50602082015161569a6080850182615651565b5060408201516156ad60c0850182615651565b5060608201516156c16101008501826157cc565b506080820151610e256101208501826157cc565b80516060808452600091908401906156ed82826153cb565b915050602083015184820360208601526157078282615424565b9150506040830151611fff60408601826157cc565b805160a083019061572d84826157cc565b50602082015161574060208501826153c2565b5060408201516157536040850182615472565b50606082015161576660608501826157c3565b506080820151610e25608085018261579d565b8051604083019061578a8482615472565b506020820151610e2560208501826157c3565b80516020830190610e2584826157cc565b9052565b805160408301906156628482615472565b6153bc81615e39565b6153bc81615e2c565b6153bc81615e5a565b6153bc81615e63565b60006157f38284615498565b50602001919050565b600061284982846154dc565b600061581482866154dc565b9150615820828561548c565b6002820191506133eb82846154dc565b600061583c82896154dc565b9150615848828861548c565b60028201915061585882876154dc565b9150615864828661548c565b60028201915061587482856154dc565b9150615880828461547b565b506001019695505050505050565b600061589a828b6154dc565b91506158a6828a61548c565b6002820191506158b682896154dc565b91506158c2828861548c565b6002820191506158d282876154dc565b91506158de828661548c565b6002820191506158ee82856154dc565b91506158fa828461547b565b5060010198975050505050505050565b6000615916828d6154dc565b9150615922828c61548c565b600282019150615932828b6154dc565b915061593e828a61548c565b60028201915061594e82896154dc565b915061595a828861548c565b60028201915061596a82876154dc565b9150615976828661548c565b60028201915061598682856154dc565b9150615992828461547b565b506001019a9950505050505050505050565b60208101610b8782846153c2565b60208101610b8782846153b3565b608081016159ce82866153b3565b6159db6020830185615651565b81810360608301526133eb81846154a4565b60c081016159fb82896153c2565b615a0860208301886153c2565b615a1560408301876153c2565b615a2260608301866153c2565b615a2f60808301856157cc565b81810360a08301526146cc81846154a4565b60608101615a4f82866153c2565b615a5c60208301856153c2565b611e8d60408301846157cc565b60808101615a7782876153c2565b615a8460208301866153c2565b615a9160408301856157cc565b818103606083015261352481846154a4565b60408101615ab182856153c2565b61284960208301846157cc565b60608101615acc82866153c2565b615a5c60208301856157cc565b60208082528101610b8481846154a4565b60208082528101610b8781615514565b60208082528101610b878161554d565b60608101610b87828461561a565b6101808101615b2782866157ae565b615b346020830185615675565b8181036101608301526133eb81846156d5565b60408101615b5582856157cc565b61284960208301846153c2565b60e08101615b7082876157cc565b615b7d60208301866157cc565b615b8a60408301856155f6565b6133eb60c08301846153c2565b6101a08101615ba6828b6157cc565b615bb3602083018a6157cc565b615bc06040830189615651565b615bcd6080830188615651565b615bda60c0830187615779565b615be8610100830186615779565b615bf66101408301856157b2565b818103610180830152615c0981846154a4565b9a9950505050505050505050565b6101608101615c2682886157cc565b615c3360208301876157cc565b615c4060408301866157cc565b615c4d60608301856155f6565b61352460e08301846155f6565b6101808101615c6982896157cc565b615c7660208301886157cc565b615c8360408301876157cc565b615c9060608301866155f6565b615c9d60e08301856155f6565b615cab6101608301846153c2565b979650505050505050565b6102a08101615cc5828c6157cc565b615cd2602083018b6157cc565b615cdf604083018a6157cc565b615cec60608301896157cc565b615cf960808301886155f6565b615d076101008301876155f6565b615d156101808301866155f6565b615d236102008301856155f6565b615c096102808301846153c2565b60405181810167ffffffffffffffff81118282101715615d5057600080fd5b604052919050565b600067ffffffffffffffff821115615d6f57600080fd5b5060209081020190565b600067ffffffffffffffff821115615d9057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610b8782615e4e565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610cad81615ef5565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b8782615e8a565b6000610b8782615e2f565b6000610b8782615dd2565b82818337506000910152565b60005b83811015615ebc578181015183820152602001615ea4565b83811115610e255750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60028110615eff57fe5b50565b615f0b81615dd2565b8114615eff57600080fd5b615f0b81615ddd565b60098110615eff57600080fd5b60028110615eff57600080fd5b615f0b81615e2c56fea365627a7a7231582032d73b935e66d15cac514dbb366d2a624c6c080e7db6a22475ff310a727a6ee46c6578706572696d656e74616cf564736f6c63430005100040",
6
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bd76ecfd1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046152f0565b61005c565b005b6100646100a6565b61006e82826100df565b6060610078614c2c565b61008385858561025a565b9150915061009385858584610577565b61009f8585848461078d565b5050505050565b7f91b01baeee3a24b590d112613814d86801005c7ef9353e7fc1eaeaf33ccf83b0336040516100d591906159b2565b60405180910390a1565b61012f8251600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f206163636f756e747300000000000000610aab565b61017f8151600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f20616374696f6e730000000000000000610aab565b60005b825181101561025557600181015b835181101561024c576102446101cc8584815181106101ab57fe5b60200260200101518684815181106101bf57fe5b6020026020010151610b5c565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f74206475706c6963617465206163636f756e74730000000000000087868151811061021b57fe5b60200260200101516000015188878151811061023357fe5b602002602001015160200151610b8d565b600101610190565b50600101610182565b505050565b6060610264614c2c565b845484516040805182815260208084028201019091526060918015610293578160200160208202803883390190505b50905061029e614c2c565b6102a783610c51565b905060005b86518110156104e6576102bd614c4d565b8782815181106102c957fe5b6020026020010151905060008160000151905060006102e782610cb2565b905060006102f483610d1f565b9050600081600281111561030457fe5b14610403576103608460c00151856020015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206163636f756e747320696e20616374696f6e0000000088610d8d565b600181600281111561036e57fe5b141561039b576001878560c001518151811061038657fe5b91151560209283029190910190910152610403565b610403878560c00151815181106103ae57fe5b6020026020010151157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5265717569726573206e6f6e2d7072696d617279206163636f756e74000000008760c00151610d8d565b60018785602001518151811061041557fe5b91151560209283029190910190910152600182600281111561043357fe5b141561044d576104488d878660600151610e2b565b6104d6565b600282600281111561045b57fe5b14156104d6576104b88460800151856060015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206d61726b65747320696e20616374696f6e000000000088610d8d565b6104c78d878660600151610e2b565b6104d68d878660800151610e2b565b5050600190920191506102ac9050565b5060005b875181101561055957606061051b89838151811061050457fe5b60200260200101518b610e6890919063ffffffff16565b905060005b815181101561054f576105478b8584848151811061053a57fe5b6020026020010151610e2b565b600101610520565b50506001016104ea565b5061056a888263ffffffff610ea016565b9097909650945050505050565b60005b825181101561009f5761058b614c4d565b83828151811061059757fe5b6020908102919091010151805190915060008160088111156105b557fe5b14156105d3576105ce876105c988856110e6565b611143565b610783565b60018160088111156105e157fe5b14156105fa576105ce876105f588856110e6565b611264565b600281600881111561060857fe5b1415610621576105ce8761061c88856112fd565b611364565b600381600881111561062f57fe5b1415610648576105ce876106438885611414565b611485565b600481600881111561065657fe5b141561066f576105ce8761066a8885611414565b6115f5565b600581600881111561067d57fe5b1415610696576105ce8761069188856116ec565b611736565b60068160088111156106a457fe5b14156107235773__LiquidateOrVaporizeImpl_______________6383d848b3886106cf8986611a0b565b876040518463ffffffff1660e01b81526004016106ee93929190615b18565b60006040518083038186803b15801561070657600080fd5b505af415801561071a573d6000803e3d6000fd5b50505050610783565b600781600881111561073157fe5b141561075c5773__LiquidateOrVaporizeImpl_______________632e077456886106cf8986611a0b565b600881600881111561076a57fe5b1415610783576107838761077e8885611a7c565b611acf565b505060010161057a565b600061079882611b74565b905060005b818110156109af5760006107b7848363ffffffff611b7916565b5190506107ca848363ffffffff611b7916565b6040015115610869576108696107e6858463ffffffff611b7916565b606001516fffffffffffffffffffffffffffffffff1661080c898463ffffffff611bf516565b516fffffffffffffffffffffffffffffffff1611157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4d61726b657420697320636c6f73696e6700000000000000000000000000000084610d8d565b60008181526001880160205260409020547501000000000000000000000000000000000000000000900460ff16156109a65760005b86518110156109a4576108b7858463ffffffff611b7916565b602001516001600160a01b03168782815181106108d057fe5b6020026020010151600001516001600160a01b03161461099c5761099c610923836109178a858151811061090057fe5b60200260200101518c611c5590919063ffffffff16565b9063ffffffff611c8616565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f696e76616c69642072656379636c61626c65206f776e657200000000000000008a858151811061097257fe5b6020026020010151600001518b868151811061098a57fe5b60200260200101516020015187611c9e565b60010161089e565b505b5060010161079d565b5060005b8451811015610aa3576109c4614c9f565b8582815181106109d057fe5b602002602001015190508482815181106109e657fe5b60200260200101516109f85750610a9b565b6000610a0d888387600163ffffffff611d8e16565b9050610a64817f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e646572636f6c6c61746572616c697a6564206163636f756e74000000000085600001518660200151610b8d565b6000610a76898463ffffffff611e9516565b6002811115610a8157fe5b14610a9857610a988883600063ffffffff611ec716565b50505b6001016109b3565b505050505050565b8261025557610ab982611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610ae383611f2f565b604051602001610af593929190615808565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b5391600401615ad9565b60405180910390fd5b805182516000916001600160a01b039182169116148015610b84575081602001518360200151145b90505b92915050565b8461009f57610b9b84611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610bc585611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612007565b7f2c20000000000000000000000000000000000000000000000000000000000000610c1987612171565b604051610af597969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161588e565b610c59614c2c565b604080516000606082018181526080830190935290918291610c91565b610c7e614cb6565b815260200190600190039081610c765790505b508152602001610ca084612280565b8152602001600081525090505b919050565b600080826008811115610cc157fe5b1480610cd857506001826008811115610cd657fe5b145b80610cee57506002826008811115610cec57fe5b145b15610cfb57506001610cad565b6008826008811115610d0957fe5b1415610d1757506000610cad565b506002919050565b60006002826008811115610d2f57fe5b1480610d4657506005826008811115610d4457fe5b145b15610d5357506001610cad565b6006826008811115610d6157fe5b1480610d7857506007826008811115610d7657fe5b145b15610d8557506002610cad565b506000919050565b83610e2557610d9b83611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610dc584611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612171565b604051610af59594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615830565b50505050565b610e3b828263ffffffff6122ba16565b61025557610e4f828263ffffffff6122ca16565b61025581610e63858263ffffffff61233416565b612497565b80516001600160a01b0316600090815260048301602090815260408083208285015184529091529020606090610b84906001016124d3565b8060400151604051908082528060200260200182016040528015610ede57816020015b610ecb614cb6565b815260200190600190039081610ec35790505b5081526000805b82602001515181101561108c57600083602001518281518110610f0457fe5b602002602001015190505b8015611071576000610f208261252f565b90506000610f2e8483612706565b90506000610f42888363ffffffff61271116565b600083815260018a01602052604090205490915074010000000000000000000000000000000000000000900460ff1615610ffc576040805160a0810182528381526001600160a01b038316602082015260019181019190915260608101610faf8a8563ffffffff611bf516565b516fffffffffffffffffffffffffffffffff168152602001610fd88a858563ffffffff61273016565b9052875180516001890198908110610fec57fe5b602002602001018190525061105d565b6040805160a0810182528381526001600160a01b0383166020820152600091810182905260608101919091526080810161103d8a858563ffffffff61273016565b905287518051600189019890811061105157fe5b60200260200101819052505b6110678484612850565b9350505050610f0f565b8360400151831415611083575061108c565b50600101610ee5565b50604082015182515161025591808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c790000000091612859565b6110ee614d07565b6040518060800160405280836040015181526020018484602001518151811061111357fe5b60200260200101518152602001836060015181526020018360a001516001600160a01b0316815250905092915050565b602081015161115a9083903363ffffffff6128bb16565b60608101516111e2906001600160a01b031633148061119657508160200151600001516001600160a01b031682606001516001600160a01b0316145b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008460600151612950565b6111ea614c9f565b6111f2614c9f565b602083015160408401518451611211928792909163ffffffff6129b216565b91509150611234836020015184604001518487612b68909392919063ffffffff16565b61125961124e84604001518661271190919063ffffffff16565b846060015183613006565b610e2584848361306f565b602081015161127b9083903363ffffffff6128bb16565b611283614c9f565b61128b614c9f565b6020830151604084015184516112aa928792909163ffffffff6129b216565b915091506112cd836020015184604001518487612b68909392919063ffffffff16565b6112f26112e784604001518661271190919063ffffffff16565b8460600151836130dd565b610e25848483613145565b611305614d3b565b6040518060800160405280836040015181526020018484602001518151811061132a57fe5b60200260200101518152602001848460c001518151811061134757fe5b602002602001015181526020018360600151815250905092915050565b602081015161137b9083903363ffffffff6128bb16565b60408101516113929083903363ffffffff6128bb16565b61139a614c9f565b6113a2614c9f565b6020830151606084015184516113c1928792909163ffffffff6129b216565b915091506113e4836020015184606001518487612b68909392919063ffffffff16565b611409836040015184606001516113fa84613191565b8792919063ffffffff6131b816565b610e25848483613240565b61141c614d75565b6040518060c00160405280836040015181526020018484602001518151811061144157fe5b6020026020010151815260200183606001518152602001836080015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b602081015161149c9083903363ffffffff6128bb16565b60006114b582606001518461271190919063ffffffff16565b905060006114d083604001518561271190919063ffffffff16565b90506114da614c9f565b6114e2614c9f565b602085015160408601518651611501928992909163ffffffff6129b216565b9150915061150d614c9f565b61152286608001518587858a60a001516132d7565b905061152c614c9f565b61154a87608001518860200151600001518789868c60a001516133f4565b90506115a78360200151826020015110157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f42757920616d6f756e74206c657373207468616e2070726f6d697365640000008460200151610d8d565b602087015160408801516115c3918a918763ffffffff612b6816565b602087015160608801516115df918a918563ffffffff6131b816565b6115eb8888848661352e565b5050505050505050565b602081015161160c9083903363ffffffff6128bb16565b600061162582604001518461271190919063ffffffff16565b9050600061164083606001518561271190919063ffffffff16565b905061164a614c9f565b611652614c9f565b602085015160408601518651611671928992909163ffffffff6129b216565b9150915061167d614c9f565b61169b86608001518760200151600001518688868b60a001516133f4565b602087015160408801519192506116bb918991908663ffffffff612b6816565b602086015160608701516116d79189918463ffffffff6131b816565b6116e3878784846135b8565b50505050505050565b6116f4614dc0565b6040518060e00160405280836040015181526020018484602001518151811061171957fe5b60200260200101518152602001848460c001518151811061144157fe5b602081015161174d9083903363ffffffff6128bb16565b604081015160a082015161176891849163ffffffff6128bb16565b60a081015161177e90839063ffffffff61361d16565b156117dd576117dd611796833363ffffffff61363f16565b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e7065726d697373696f6e6564207472616465206f70657261746f72000000610aab565b6117e5614c9f565b6040820151606083015161180091859163ffffffff61366116565b905061180a614c9f565b611812614c9f565b604084015160608501518551611831928892909163ffffffff6129b216565b9150915061183d614de0565b8460a001516001600160a01b031663448f706586606001518760800151886040015189602001518989898d60c001516040518963ffffffff1660e01b815260040161188f989796959493929190615b97565b608060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118e191908101906152b4565b90506118eb614c9f565b6118f3614c9f565b6040870151608088015161190f918a918663ffffffff6129b216565b9150915061198c61191f826136d3565b8061192e575061192e856136d3565b80611940575084518251151590151514155b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5472616465732063616e6e6f74206265206f6e652d73696465640000000000008a60a00151612950565b604087015160608801516119a8918a918863ffffffff612b6816565b604087015160808801516119c4918a918563ffffffff612b6816565b6119e9876020015188606001516119da87613191565b8b92919063ffffffff6131b816565b6119ff876020015188608001516119da84613191565b6115eb888886846136db565b611a13614e01565b6040518060a001604052808360400151815260200184846020015181518110611a3857fe5b60200260200101518152602001848460c0015181518110611a5557fe5b60200260200101518152602001836060015181526020018360800151815250905092915050565b611a84614e42565b604051806060016040528084846020015181518110611a9f57fe5b602002602001015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b8051611ae39083903363ffffffff6128bb16565b6020810151815160408084015190517f8b4187130000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692638b41871392611b359233926004016159c0565b600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050611b70816137f6565b5050565b515190565b611b81614cb6565b825151611bd790808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e64657800000000000000000000000000000000000000908690612859565b8251805183908110611be557fe5b6020026020010151905092915050565b611bfd614c9f565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902060010190565b60009081526001919091016020526040902054151590565b85610aa357611cac85611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000611cd686611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000611d0087612007565b7f2c20000000000000000000000000000000000000000000000000000000000000611d2a88612171565b7f2c20000000000000000000000000000000000000000000000000000000000000611d5489612171565b604051610af5999897969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161590a565b6000611da0858563ffffffff61384a16565b611dac57506001611e8d565b611db4614e69565b611dbc614e69565b611dcf878787600163ffffffff61388416565b80519193509150611de557600192505050611e8d565b8315611e4b57600b870154815187516020890151611e4b9390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610b8d565b8051604080516020810190915260088901548152600091611e6b916139e7565b8251909150611e80908263ffffffff613a0016565b8360000151101593505050505b949350505050565b80516001600160a01b031660009081526004929092016020908152604080842092820151845291905290205460ff1690565b81516001600160a01b031660009081526004840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611f2557fe5b0217905550505050565b60608082604051602001611f4391906157e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611fec5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611faf57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611fe75760010181529050610cad565b611f76565b5060408051600080825260208201909252905b509392505050565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b8160008151811061204657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061208757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611fff57600281026120d2600f8516613a3f565b8382602903815181106120e157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612123600f8516613a3f565b83826028038151811061213257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016120b9565b6060816121b2575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cad565b8160005b81156121ca57600101600a820491506121b6565b6060816040519080825280601f01601f1916602001820160405280156121f7576020820181803883390190505b508593509050815b8015612277577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061223d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506121ff565b50949350505050565b606060016101008304016040519080825280602002602001820160405280156122b3578160200160208202803883390190505b5092915050565b6000610b84836020015183613a61565b81515161231990157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610aab565b612327826020015182613aa1565b5060400180516001019052565b61233c614e7c565b612344614e7c565b612354848463ffffffff613ad716565b905061235e613b5b565b63ffffffff16816040015163ffffffff16141561237c579050610b87565b61238d84848363ffffffff613b6b16565b6000938452600194909401602090815260409384902085516002909101805487840151978701517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091166bffffffffffffffffffffffff938416177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000009884168902177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9283168102919091179283905587516060810189528385168152988304909316938801939093520416928401929092525090919050565b817ff4626fd1187f91e6761ffb8a6ac3e8d9235a4a92da54e43feb0c57c4a4a322ab826040516124c79190615b0a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561252357602002820191906000526020600020905b81548152602001906001019080831161250f575b50505050509050919050565b600060ff6fffffffffffffffffffffffffffffffff831615612572577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161257a565b608083901c92505b67ffffffffffffffff8316156125b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016125b9565b604083901c92505b63ffffffff8316156125ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016125f4565b602083901c92505b61ffff831615612625577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161262d565b601083901c92505b60ff83161561265d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801612665565b600883901c92505b600f831615612695577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161269d565b600483901c92505b60038316156126cd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016126d5565b600283901c92505b6001831615610b87577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b600090815260019190910160205260409020546001600160a01b031690565b612738614e69565b60008381526001850160205260409020600301546001600160a01b031661275d614e69565b6040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038316906341976e09906127a29087906004016159a4565b60206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f291908101906152d2565b80519091506128459015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f00000000000000000000000088610d8d565b9150505b9392505050565b6001901b900390565b8461009f5761286784611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061289185611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612171565b600082600001516001600160a01b0316826001600160a01b031614806128ec57506128ec848363ffffffff61363f16565b80612906575082516129069085908463ffffffff613bba16565b9050610e25817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f72000000000000000000855b83610e255761295e83611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061298884611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612007565b6129ba614c9f565b6129c2614c9f565b6129ca614c9f565b6129db87878763ffffffff61366116565b905083606001516000148015612a0057506000846040015160018111156129fe57fe5b145b15612a185780612a0e613bea565b9250925050612b5f565b612a20614e7c565b612a30888763ffffffff613ad716565b9050612a3a614c9f565b612a448383613c0a565b9050612a4e614c9f565b612a56614c9f565b600088602001516001811115612a6857fe5b1415612ad457506040805180820190915287511515815260608801516020820152600188604001516001811115612a9b57fe5b1415612ab457612ab1818463ffffffff613cbb16565b90505b612acd612ac7848363ffffffff613cd016565b85613d62565b9150612b56565b6040518060400160405280896000015115158152602001612af88a60600151613e25565b6fffffffffffffffffffffffffffffffff1690529150600088604001516001811115612b2057fe5b1415612b3957612b36858363ffffffff613e8816565b91505b612b5383612b478487613c0a565b9063ffffffff613cbb16565b90505b90955093505050505b94509492505050565b612b70614c9f565b612b8185858563ffffffff61366116565b9050612b8d8183613fad565b15612b985750610e25565b612ba0614c9f565b612bb0868563ffffffff611bf516565b825190915015612c1d57612c01612bfc83602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661401f90919063ffffffff16565b613e25565b6fffffffffffffffffffffffffffffffff166020820152612c62565b60208201518151612c4d91612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff61401f16565b6fffffffffffffffffffffffffffffffff1681525b825115612cc757612cab612bfc84602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16613a0090919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152612d0c565b60208301518151612cf791612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff613a0016565b6fffffffffffffffffffffffffffffffff1681525b612d1582614061565b8015612d255750612d2583614089565b15612db55784516001600160a01b031660009081526004870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff909116179055612e3a565b612dbe82614089565b8015612dce5750612dce83614061565b15612e3a5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b612e438361409f565b8015612e555750612e538261409f565b155b15612e9c5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612e96906001018563ffffffff6140b916565b50612ef9565b612ea58361409f565b158015612eb65750612eb68261409f565b15612ef95784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612ef7906001018563ffffffff61419f16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff000000000000000000000000000000009097169690961786169390931790925587516001600160a01b031683526004890181528183208882015184528152818320878452600301815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61305f613012826141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e656761746976650000000000008460200151610d8d565b6102558383308460200151614200565b60208083015180519181015160408501516001600160a01b03909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f926130bb90889083886142fd565b86606001516040516130d09493929190615b62565b60405180910390a2505050565b6131366130e982614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e736665724f757420706f73697469766500000000008460200151610d8d565b61025583838360200151614348565b60208083015180519181015160408501516001600160a01b03909316927fbc83c08f0b269b1726990c8348ffdf1ae1696244a14868d766e542a2f18cd7d4926130bb90889083886142fd565b613199614c9f565b5060408051808201909152815115815260208083015190820152919050565b6131c1816136d3565b156131cb57610e25565b6131d3614e7c565b6131e3858463ffffffff613ad716565b90506131ed614c9f565b6131fe86868663ffffffff61443a16565b9050613208614c9f565b613218828563ffffffff613cd016565b9050613222614c9f565b61322c8285613d62565b90506115eb8888888463ffffffff612b6816565b60408201518051602080850151805181830151929094015160608701516001600160a01b0394851695909416937f21281f8d59117d0399dc467dbdd321538ceffe3225e80e2bd4de6f1b3355cbc7939261329d908a90838a6142fd565b6132b98a8a604001518b606001516132b48c613191565b6142fd565b6040516132ca959493929190615c17565b60405180910390a3505050565b6132df614c9f565b6133386132eb846141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f7420676574436f7374206e656761746976650000000000000000008660200151610d8d565b613340614c9f565b6000815260208401516040517f3a8fdd7d0000000000000000000000000000000000000000000000000000000081526001600160a01b03891691633a8fdd7d91613393918a918a91908990600401615a69565b60206040518083038186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e3919081019061536d565b602082015290505b95945050505050565b6133fc614c9f565b61345561340884614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f742065786368616e676520706f73697469766500000000000000008660200151610d8d565b6134608488856130dd565b613468614c9f565b6001815260208401516040517f7d98ebac0000000000000000000000000000000000000000000000000000000081526001600160a01b038a1691637d98ebac916134bf918b9130918c918c91908b906004016159ed565b602060405180830381600087803b1580156134d957600080fd5b505af11580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613511919081019061536d565b6020820152613521868983613006565b90505b9695505050505050565b602080840151805191810151606086015160408701516001600160a01b03909416937f2e346762bf4ae4568971c30b51fcebd2138275aafcfe12d872956e9f3e1208939361357f908a90848a6142fd565b6135938a8a602001518b604001518a6142fd565b89608001516040516135aa96959493929190615c5a565b60405180910390a250505050565b602080840151805191810151604086015160608701516001600160a01b03909416937fcc3330184b6d88cad87f9e9543b4d4110a6a3eaf20164ca5252d598d0acba3f193613609908a90848a6142fd565b6135938a8a602001518b606001518a6142fd565b6001600160a01b03166000908152600791909101602052604090205460ff1690565b6001600160a01b03166000908152600691909101602052604090205460ff1690565b613669614c9f565b5081516001600160a01b031660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b602001511590565b6136e3614e9c565b604051806080016040528061370587876020015188606001516132b489613191565b815260200161372187876020015188608001516132b488613191565b815260200161373a8787604001518860600151886142fd565b81526020016137538787604001518860800151876142fd565b9052604085015180516020808801518051908201519190930151606089015160808a01519596506001600160a01b039384169593909416937f54d4cc60cf7d570631cc1a58942812cb0fc461713613400f56932040c3497d19938760006020020151886001602002015189600260200201518a600360200201518e60a001516040516137e799989796959493929190615cb6565b60405180910390a35050505050565b80518051602091820151918301516040516001600160a01b03909216927fab38cdc4a831ebe6542bf277d36b65dbc5c66a4d03ec6cf56ac38de05dc300989261383f9290615b47565b60405180910390a250565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b61388c614e69565b613894614e69565b61389c614e69565b6138a4614e69565b60006138af87611b74565b905060005b818110156139d8576138c4614c9f565b6138e78a6138d88b8563ffffffff611b7916565b518d919063ffffffff61443a16565b90506138f2816136d3565b156138fd57506139d0565b60006139286139128b8563ffffffff611b7916565b608001515160208401519063ffffffff61449f16565b9050613932614e69565b61393a6144f3565b905089156139855761398260018e01600061395b8e8863ffffffff611b7916565b51815260208082019290925260409081016000208151928301909152600501548152614515565b90505b8251156139ae576139a7613999838361454c565b88519063ffffffff613a0016565b87526139cc565b6139c96139bb83836139e7565b87519063ffffffff613a0016565b86525b5050505b6001016138b4565b50919890975095505050505050565b6000610b84838360000151670de0b6b3a7640000614561565b600082820183811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615aea565b6000600a821015613a5757506030810160f81b610cad565b5060570160f81b90565b600080610100830490506000610100840690506000816001901b868481518110613a8757fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b90859084908110613abf57fe5b60200260200101818151179150818152505050505050565b613adf614e7c565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000613b6642614583565b905090565b613b73614e7c565b613b7b614e69565b613b8c85858563ffffffff6145da16565b90506128458382613ba3888863ffffffff611bf516565b6040805160208101909152600a8a015481526146d8565b6001600160a01b039182166000908152600593909301602090815260408085209290931684525290205460ff1690565b613bf2614c9f565b50604080518082019091526000808252602082015290565b613c12614c9f565b602083015183516fffffffffffffffffffffffffffffffff9091169015613c7e57604080518082019091526001815260208481015190820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b815250915050610b87565b604080518082019091526000815283516020820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b613cc3614c9f565b610b8483613cd084613191565b613cd8614c9f565b613ce0614c9f565b8251845115159015151415613d135783511515815260208085015190840151613d099190613a00565b6020820152610b84565b8260200151846020015110613d3c5783511515815260208085015190840151613d09919061401f565b82511515815260208084015190850151613d56919061401f565b60208201529392505050565b613d6a614c9f565b825115613de0576040518060400160405280600115158152602001613dc5612bfc670de0b6b3a764000067ffffffffffffffff1686602001516bffffffffffffffffffffffff1688602001516148429092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610b87565b6040805180820190915260008152825160208581015190830191613dc591612bfc91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61484216565b600081610b876fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610d8d565b613e90614c9f565b613e98614c9f565b8251845115159015151415613ef65783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff9182169116613a00565b6fffffffffffffffffffffffffffffffff166020820152610b84565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613f5c5783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b82511515815260208084015190850151613f8f91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156140165760208301516fffffffffffffffffffffffffffffffff1661400657506001610b87565b5080518251151590151514610b87565b50600092915050565b6000610b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506148ca565b60008082602001516fffffffffffffffffffffffffffffffff16118015610b87575050511590565b60006140948261409f565b80610b875750505190565b602001516fffffffffffffffffffffffffffffffff161590565b600081815260018301602052604081205480156141955783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461414f57600086600001828154811061411057fe5b906000526020600020015490508087600001848154811061412d57fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061415a57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b87565b6000915050610b87565b60006141ab8383611c86565b6141e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b87565b506000610b87565b8051600090158015610b8757505060200151151590565b80158061421e5750826001600160a01b0316826001600160a01b0316145b1561422857610e25565b604051610e259085907f23b872dd000000000000000000000000000000000000000000000000000000009061426590879087908790602401615a41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250614910565b614305614ec9565b604080518082019091528281526020810161432787878763ffffffff61366116565b905295945050505050565b80516000908015610b8757505060200151151590565b80158061435d57506001600160a01b03821630145b1561436757610255565b6040516102559084907fa9059cbb00000000000000000000000000000000000000000000000000000000906143a29086908690602401615aa3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601681526020017f546f6b656e3a207472616e73666572206661696c656400000000000000000000815250614910565b614442614c9f565b61444a614c9f565b61445b85858563ffffffff61366116565b90506144668161409f565b1561447b57614473613bea565b915050612849565b614483614e7c565b614493868563ffffffff613ad716565b90506135248282613c0a565b6000826144ae57506000610b87565b828202828482816144bb57fe5b0414610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615afa565b6144fb614e69565b506040805160208101909152670de0b6b3a7640000815290565b61451d614e69565b60408051602081019091528251819061454490670de0b6b3a764000063ffffffff613a0016565b905292915050565b6000610b8483670de0b6b3a764000084600001515b6000611e8d82614577868663ffffffff61449f16565b9063ffffffff614a0216565b600081610b8763ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610d8d565b6145e2614e69565b6145ea614c9f565b6145fa858563ffffffff611bf516565b9050614604614c9f565b61460c614c9f565b6146168386614a44565b91509150614622614e69565b60008781526001890160205260409020600401546001600160a01b031663e8177dcf6146548a8a63ffffffff61271116565b846020015186602001516040518463ffffffff1660e01b815260040161467c93929190615abe565b60206040518083038186803b15801561469457600080fd5b505afa1580156146a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506146cc91908101906152d2565b98975050505050505050565b6146e0614e7c565b6146e8614c9f565b6146f0614c9f565b6146fa8588614a44565b915091506000614708613b5b565b905060006147406147328a6040015163ffffffff168463ffffffff1661401f90919063ffffffff16565b89519063ffffffff61449f16565b9050600061474d856136d3565b1561475a5750600061478c565b61476482886139e7565b905084602001518460200151101561478c576147898185602001518760200151614561565b90505b8181111561479657fe5b60408051606081019091528a5181906147df906147da906bffffffffffffffffffffffff166147ce8188670de0b6b3a7640000614561565b9063ffffffff613a0016565b614aec565b6bffffffffffffffffffffffff908116825260208d810151920191614816916147da91166147ce8187670de0b6b3a7640000614561565b6bffffffffffffffffffffffff1681526020018463ffffffff1681525095505050505050949350505050565b600083158061484f575082155b156148665761485f600083614a02565b9050612849565b6000614878858563ffffffff61449f16565b905061284561489760016147ce6002614577888463ffffffff61401f16565b6148a7838663ffffffff614b4b16565b10156148b45760006148b7565b60015b60ff166147ce838663ffffffff614a0216565b60008184841115614908576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b505050900390565b60006060846001600160a01b03168460405161492c91906157fc565b6000604051808303816000865af19150503d8060008114614969576040519150601f19603f3d011682016040523d82523d6000602084013e61496e565b606091505b50915091508183906149ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b5080511561009f57808060200190516149c99190810190615296565b8390610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b6000610b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614b8d565b614a4c614c9f565b614a54614c9f565b614a5c614c9f565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152614a8f614c9f565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152614abf614c9f565b614ac98387613c0a565b9050614ad3614c9f565b614add8388613c0a565b91989197509095505050505050565b600081610b876bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743936000000000000000000000084610d8d565b6000610b8483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614bde565b60008183614bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b506000838581614bd457fe5b0495945050505050565b60008183614c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b50828481614c2357fe5b06949350505050565b60405180606001604052806060815260200160608152602001600081525090565b604080516101008101825260008082526020820152908101614c6d614de0565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b6040518060a001604052806000815260200160006001600160a01b0316815260200160001515815260200160006fffffffffffffffffffffffffffffffff168152602001614d02614e69565b905290565b6040518060800160405280614d1a614de0565b8152602001614d27614c9f565b815260006020820181905260409091015290565b6040518060800160405280614d4e614de0565b8152602001614d5b614c9f565b8152602001614d68614c9f565b8152602001600081525090565b6040518060c00160405280614d88614de0565b8152602001614d95614c9f565b8152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b6040518060e00160405280614dd3614de0565b8152602001614d88614c9f565b60408051608081019091526000808252602082019081526020016000614d68565b6040518060a00160405280614e14614de0565b8152602001614e21614c9f565b8152602001614e2e614c9f565b815260200160008152602001600081525090565b6040518060600160405280614e55614c9f565b815260006020820152606060409091015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806004905b614eb3614ec9565b815260200190600190039081614eab5790505090565b6040518060400160405280614edc614c9f565b8152602001614d02614c9f565b8035610b8781615f02565b600082601f830112614f0557600080fd5b8135614f18614f1382615d58565b615d31565b81815260209384019390925082018360005b83811015614f565781358601614f408882615058565b8452506020928301929190910190600101614f2a565b5050505092915050565b600082601f830112614f7157600080fd5b8135614f7f614f1382615d58565b91508181835260208401935060208101905083856040840282011115614fa457600080fd5b60005b83811015614f565781614fba8882615206565b84525060209092019160409190910190600101614fa7565b8035610b8781615f16565b8051610b8781615f16565b600082601f830112614ff957600080fd5b8135615007614f1382615d79565b9150808252602083016020830185838301111561502357600080fd5b61502e838284615e95565b50505092915050565b8035610b8781615f1f565b8035610b8781615f2c565b8051610b8781615f2c565b6000610160828403121561506b57600080fd5b615076610100615d31565b905060006150848484615037565b825250602061509584848301615280565b60208301525060406150a984828501615134565b60408301525060c06150bd84828501615280565b60608301525060e06150d184828501615280565b6080830152506101006150e684828501614ee9565b60a0830152506101206150fb84828501615280565b60c08301525061014082013567ffffffffffffffff81111561511c57600080fd5b61512884828501614fe8565b60e08301525092915050565b60006080828403121561514657600080fd5b6151506080615d31565b9050600061515e8484614fd2565b825250602061516f84848301615042565b602083015250604061518384828501615042565b604083015250606061519784828501615280565b60608301525092915050565b6000608082840312156151b557600080fd5b6151bf6080615d31565b905060006151cd8484614fdd565b82525060206151de8484830161504d565b60208301525060406151f28482850161504d565b60408301525060606151978482850161528b565b60006040828403121561521857600080fd5b6152226040615d31565b905060006152308484614ee9565b825250602061524184848301615280565b60208301525092915050565b60006020828403121561525f57600080fd5b6152696020615d31565b90506000615277848461528b565b82525092915050565b8035610b8781615f39565b8051610b8781615f39565b6000602082840312156152a857600080fd5b6000611e8d8484614fdd565b6000608082840312156152c657600080fd5b6000611e8d84846151a3565b6000602082840312156152e457600080fd5b6000611e8d848461524d565b60008060006060848603121561530557600080fd5b60006153118686615280565b935050602084013567ffffffffffffffff81111561532e57600080fd5b61533a86828701614f60565b925050604084013567ffffffffffffffff81111561535757600080fd5b61536386828701614ef4565b9150509250925092565b60006020828403121561537f57600080fd5b6000611e8d848461528b565b6000615397838361571c565b505060a00190565b60006153ab83836157cc565b505060200190565b6153bc81615e74565b82525050565b6153bc81615dd2565b60006153d682615dc5565b6153e08185615dc9565b93506153eb83615dbf565b8060005b83811015615419578151615403888261538b565b975061540e83615dbf565b9250506001016153ef565b509495945050505050565b600061542f82615dc5565b6154398185615dc9565b935061544483615dbf565b8060005b8381101561541957815161545c888261539f565b975061546783615dbf565b925050600101615448565b6153bc81615ddd565b6153bc61548782615de2565b615e2c565b6153bc61548782615e07565b6153bc61548782615e2c565b60006154af82615dc5565b6154b98185615dc9565b93506154c9818560208601615ea1565b6154d281615ecd565b9093019392505050565b60006154e782615dc5565b6154f18185610cad565b9350615501818560208601615ea1565b9290920192915050565b6153bc81615e7f565b6000615521601b83615dc9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061555a602183615dc9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160808301906155bd8482615472565b5060208201516155d0602085018261550b565b5060408201516155e3604085018261550b565b506060820151610e2560608501826157cc565b8051608083019061560784826157b2565b506020820151610e256040850182615779565b8051606083019061562b84826157de565b50602082015161563e60208501826157de565b506040820151610e2560408501826157d5565b8051604083019061566284826153c2565b506020820151610e2560208501826157cc565b805161014083019061568784826155ac565b50602082015161569a6080850182615651565b5060408201516156ad60c0850182615651565b5060608201516156c16101008501826157cc565b506080820151610e256101208501826157cc565b80516060808452600091908401906156ed82826153cb565b915050602083015184820360208601526157078282615424565b9150506040830151611fff60408601826157cc565b805160a083019061572d84826157cc565b50602082015161574060208501826153c2565b5060408201516157536040850182615472565b50606082015161576660608501826157c3565b506080820151610e25608085018261579d565b8051604083019061578a8482615472565b506020820151610e2560208501826157c3565b80516020830190610e2584826157cc565b9052565b805160408301906156628482615472565b6153bc81615e39565b6153bc81615e2c565b6153bc81615e5a565b6153bc81615e63565b60006157f38284615498565b50602001919050565b600061284982846154dc565b600061581482866154dc565b9150615820828561548c565b6002820191506133eb82846154dc565b600061583c82896154dc565b9150615848828861548c565b60028201915061585882876154dc565b9150615864828661548c565b60028201915061587482856154dc565b9150615880828461547b565b506001019695505050505050565b600061589a828b6154dc565b91506158a6828a61548c565b6002820191506158b682896154dc565b91506158c2828861548c565b6002820191506158d282876154dc565b91506158de828661548c565b6002820191506158ee82856154dc565b91506158fa828461547b565b5060010198975050505050505050565b6000615916828d6154dc565b9150615922828c61548c565b600282019150615932828b6154dc565b915061593e828a61548c565b60028201915061594e82896154dc565b915061595a828861548c565b60028201915061596a82876154dc565b9150615976828661548c565b60028201915061598682856154dc565b9150615992828461547b565b506001019a9950505050505050505050565b60208101610b8782846153c2565b60208101610b8782846153b3565b608081016159ce82866153b3565b6159db6020830185615651565b81810360608301526133eb81846154a4565b60c081016159fb82896153c2565b615a0860208301886153c2565b615a1560408301876153c2565b615a2260608301866153c2565b615a2f60808301856157cc565b81810360a08301526146cc81846154a4565b60608101615a4f82866153c2565b615a5c60208301856153c2565b611e8d60408301846157cc565b60808101615a7782876153c2565b615a8460208301866153c2565b615a9160408301856157cc565b818103606083015261352481846154a4565b60408101615ab182856153c2565b61284960208301846157cc565b60608101615acc82866153c2565b615a5c60208301856157cc565b60208082528101610b8481846154a4565b60208082528101610b8781615514565b60208082528101610b878161554d565b60608101610b87828461561a565b6101808101615b2782866157ae565b615b346020830185615675565b8181036101608301526133eb81846156d5565b60408101615b5582856157cc565b61284960208301846153c2565b60e08101615b7082876157cc565b615b7d60208301866157cc565b615b8a60408301856155f6565b6133eb60c08301846153c2565b6101a08101615ba6828b6157cc565b615bb3602083018a6157cc565b615bc06040830189615651565b615bcd6080830188615651565b615bda60c0830187615779565b615be8610100830186615779565b615bf66101408301856157b2565b818103610180830152615c0981846154a4565b9a9950505050505050505050565b6101608101615c2682886157cc565b615c3360208301876157cc565b615c4060408301866157cc565b615c4d60608301856155f6565b61352460e08301846155f6565b6101808101615c6982896157cc565b615c7660208301886157cc565b615c8360408301876157cc565b615c9060608301866155f6565b615c9d60e08301856155f6565b615cab6101608301846153c2565b979650505050505050565b6102a08101615cc5828c6157cc565b615cd2602083018b6157cc565b615cdf604083018a6157cc565b615cec60608301896157cc565b615cf960808301886155f6565b615d076101008301876155f6565b615d156101808301866155f6565b615d236102008301856155f6565b615c096102808301846153c2565b60405181810167ffffffffffffffff81118282101715615d5057600080fd5b604052919050565b600067ffffffffffffffff821115615d6f57600080fd5b5060209081020190565b600067ffffffffffffffff821115615d9057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610b8782615e4e565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610cad81615ef5565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b8782615e8a565b6000610b8782615e2f565b6000610b8782615dd2565b82818337506000910152565b60005b83811015615ebc578181015183820152602001615ea4565b83811115610e255750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60028110615eff57fe5b50565b615f0b81615dd2565b8114615eff57600080fd5b615f0b81615ddd565b60098110615eff57600080fd5b60028110615eff57600080fd5b615f0b81615e2c56fea365627a7a7231582032d73b935e66d15cac514dbb366d2a624c6c080e7db6a22475ff310a727a6ee46c6578706572696d656e74616cf564736f6c63430005100040",
4
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"dYdX * Logic for processing actions\",\"methods\":{},\"title\":\"OperationImpl\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol\":\"OperationImpl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xcc8da88b265e994c6e29c16de47d7f07ae772d8b35f25c95bfd7e9e56160efe0\",\"urls\":[\"bzz-raw://3d4f2e52ab9590093b7ae981e203d04b84b4fe670d6a6ff5a568645a92ea0e0d\",\"dweb:/ipfs/QmfFeAaG497cu6j2ykGV8guwUgwdYjUFXDwCjbLYNS2T58\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0x32e415843e918648c740cbffc591e04bd158ae06f911d60ed844ce30ad13e7f0\",\"urls\":[\"bzz-raw://cee2fd0c63854065d2504f87a12ea3bede82d25552520c8bb72b752a697754b1\",\"dweb:/ipfs/QmedgadJUphfSxAPrg1EPvJoAhBBxU1hK18xQ2QVocmDyX\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0xfca7f5635821bbc8ff21db6982471a5f20071365496b74a8202e59494d0f327f\",\"urls\":[\"bzz-raw://eb289cb96c83a3ff7fd72d9a646694d324ee955874ef61e986850459b5841d16\",\"dweb:/ipfs/QmeeiaqShMqWpttPJ3GuDwxFzmq235HMVG7vDnLWnCupaZ\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0xad98b922c02e36b8ce992097639f6ecd859b5dc97b62334e72fc97dc68a2adc7\",\"urls\":[\"bzz-raw://fd1a2c1f7b1fb114430bda41d963c61e1f5467cf45ca9a4e0b4c8e9f2dfff2c5\",\"dweb:/ipfs/QmWv82ML6nUfnWb1S5rPjKQc8ncZDY4tQkaGjBWczWCT2C\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x44694441ccb1a3ec0328a4336680549e4dfb606616d022acfe3ed8c4359ba478\",\"urls\":[\"bzz-raw://948143d0061a02614f0e1a833e676b49d138dda5e098b14f14f3be9908f32d38\",\"dweb:/ipfs/QmbtgtpmjHY5ksTWa4h7E8wayjfjW5uun1Ek8ZRcLSYXMT\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x793484b5aa923b4cb7c9671914e3d9f2d19bee6ee680424adaa97e3b9de930c4\",\"urls\":[\"bzz-raw://cebf09a8d36b303b0b92ee850ea2a802946ac43cb26d1da819f5ea74d6e5110f\",\"dweb:/ipfs/QmeQJZSaHmJskcgL3spQTvn6tYqE9Yo3vfbMTuhJenzhwf\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/SafeLiquidationCallback.sol\":{\"keccak256\":\"0x8084c1137ea386da7b6b943d3469f102bb4a5f69c944fe32503cb034d47ea26e\",\"urls\":[\"bzz-raw://387f7373cd99c62049d7139852ceda52b611ccfe305d2a19c7366d1de81c9919\",\"dweb:/ipfs/QmVHnW1gZ9MwLxWxFhZJwjW86SDv89o22phCBx11jQGxdY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
5
+ "bytecode": "0x615f8562000027600b82828239805160001a60731461001a57fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bd76ecfd1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046152f0565b61005c565b005b6100646100a6565b61006e82826100df565b6060610078614c2c565b61008385858561025a565b9150915061009385858584610577565b61009f8585848461078d565b5050505050565b7f91b01baeee3a24b590d112613814d86801005c7ef9353e7fc1eaeaf33ccf83b0336040516100d591906159b2565b60405180910390a1565b61012f8251600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f206163636f756e747300000000000000610aab565b61017f8151600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f20616374696f6e730000000000000000610aab565b60005b825181101561025557600181015b835181101561024c576102446101cc8584815181106101ab57fe5b60200260200101518684815181106101bf57fe5b6020026020010151610b5c565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f74206475706c6963617465206163636f756e74730000000000000087868151811061021b57fe5b60200260200101516000015188878151811061023357fe5b602002602001015160200151610b8d565b600101610190565b50600101610182565b505050565b6060610264614c2c565b845484516040805182815260208084028201019091526060918015610293578160200160208202803883390190505b50905061029e614c2c565b6102a783610c51565b905060005b86518110156104e6576102bd614c4d565b8782815181106102c957fe5b6020026020010151905060008160000151905060006102e782610cb2565b905060006102f483610d1f565b9050600081600281111561030457fe5b14610403576103608460c00151856020015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206163636f756e747320696e20616374696f6e0000000088610d8d565b600181600281111561036e57fe5b141561039b576001878560c001518151811061038657fe5b91151560209283029190910190910152610403565b610403878560c00151815181106103ae57fe5b6020026020010151157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5265717569726573206e6f6e2d7072696d617279206163636f756e74000000008760c00151610d8d565b60018785602001518151811061041557fe5b91151560209283029190910190910152600182600281111561043357fe5b141561044d576104488d878660600151610e2b565b6104d6565b600282600281111561045b57fe5b14156104d6576104b88460800151856060015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206d61726b65747320696e20616374696f6e000000000088610d8d565b6104c78d878660600151610e2b565b6104d68d878660800151610e2b565b5050600190920191506102ac9050565b5060005b875181101561055957606061051b89838151811061050457fe5b60200260200101518b610e6890919063ffffffff16565b905060005b815181101561054f576105478b8584848151811061053a57fe5b6020026020010151610e2b565b600101610520565b50506001016104ea565b5061056a888263ffffffff610ea016565b9097909650945050505050565b60005b825181101561009f5761058b614c4d565b83828151811061059757fe5b6020908102919091010151805190915060008160088111156105b557fe5b14156105d3576105ce876105c988856110e6565b611143565b610783565b60018160088111156105e157fe5b14156105fa576105ce876105f588856110e6565b611264565b600281600881111561060857fe5b1415610621576105ce8761061c88856112fd565b611364565b600381600881111561062f57fe5b1415610648576105ce876106438885611414565b611485565b600481600881111561065657fe5b141561066f576105ce8761066a8885611414565b6115f5565b600581600881111561067d57fe5b1415610696576105ce8761069188856116ec565b611736565b60068160088111156106a457fe5b14156107235773__LiquidateOrVaporizeImpl_______________6383d848b3886106cf8986611a0b565b876040518463ffffffff1660e01b81526004016106ee93929190615b18565b60006040518083038186803b15801561070657600080fd5b505af415801561071a573d6000803e3d6000fd5b50505050610783565b600781600881111561073157fe5b141561075c5773__LiquidateOrVaporizeImpl_______________632e077456886106cf8986611a0b565b600881600881111561076a57fe5b1415610783576107838761077e8885611a7c565b611acf565b505060010161057a565b600061079882611b74565b905060005b818110156109af5760006107b7848363ffffffff611b7916565b5190506107ca848363ffffffff611b7916565b6040015115610869576108696107e6858463ffffffff611b7916565b606001516fffffffffffffffffffffffffffffffff1661080c898463ffffffff611bf516565b516fffffffffffffffffffffffffffffffff1611157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4d61726b657420697320636c6f73696e6700000000000000000000000000000084610d8d565b60008181526001880160205260409020547501000000000000000000000000000000000000000000900460ff16156109a65760005b86518110156109a4576108b7858463ffffffff611b7916565b602001516001600160a01b03168782815181106108d057fe5b6020026020010151600001516001600160a01b03161461099c5761099c610923836109178a858151811061090057fe5b60200260200101518c611c5590919063ffffffff16565b9063ffffffff611c8616565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f696e76616c69642072656379636c61626c65206f776e657200000000000000008a858151811061097257fe5b6020026020010151600001518b868151811061098a57fe5b60200260200101516020015187611c9e565b60010161089e565b505b5060010161079d565b5060005b8451811015610aa3576109c4614c9f565b8582815181106109d057fe5b602002602001015190508482815181106109e657fe5b60200260200101516109f85750610a9b565b6000610a0d888387600163ffffffff611d8e16565b9050610a64817f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e646572636f6c6c61746572616c697a6564206163636f756e74000000000085600001518660200151610b8d565b6000610a76898463ffffffff611e9516565b6002811115610a8157fe5b14610a9857610a988883600063ffffffff611ec716565b50505b6001016109b3565b505050505050565b8261025557610ab982611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610ae383611f2f565b604051602001610af593929190615808565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b5391600401615ad9565b60405180910390fd5b805182516000916001600160a01b039182169116148015610b84575081602001518360200151145b90505b92915050565b8461009f57610b9b84611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610bc585611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612007565b7f2c20000000000000000000000000000000000000000000000000000000000000610c1987612171565b604051610af597969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161588e565b610c59614c2c565b604080516000606082018181526080830190935290918291610c91565b610c7e614cb6565b815260200190600190039081610c765790505b508152602001610ca084612280565b8152602001600081525090505b919050565b600080826008811115610cc157fe5b1480610cd857506001826008811115610cd657fe5b145b80610cee57506002826008811115610cec57fe5b145b15610cfb57506001610cad565b6008826008811115610d0957fe5b1415610d1757506000610cad565b506002919050565b60006002826008811115610d2f57fe5b1480610d4657506005826008811115610d4457fe5b145b15610d5357506001610cad565b6006826008811115610d6157fe5b1480610d7857506007826008811115610d7657fe5b145b15610d8557506002610cad565b506000919050565b83610e2557610d9b83611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610dc584611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612171565b604051610af59594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615830565b50505050565b610e3b828263ffffffff6122ba16565b61025557610e4f828263ffffffff6122ca16565b61025581610e63858263ffffffff61233416565b612497565b80516001600160a01b0316600090815260048301602090815260408083208285015184529091529020606090610b84906001016124d3565b8060400151604051908082528060200260200182016040528015610ede57816020015b610ecb614cb6565b815260200190600190039081610ec35790505b5081526000805b82602001515181101561108c57600083602001518281518110610f0457fe5b602002602001015190505b8015611071576000610f208261252f565b90506000610f2e8483612706565b90506000610f42888363ffffffff61271116565b600083815260018a01602052604090205490915074010000000000000000000000000000000000000000900460ff1615610ffc576040805160a0810182528381526001600160a01b038316602082015260019181019190915260608101610faf8a8563ffffffff611bf516565b516fffffffffffffffffffffffffffffffff168152602001610fd88a858563ffffffff61273016565b9052875180516001890198908110610fec57fe5b602002602001018190525061105d565b6040805160a0810182528381526001600160a01b0383166020820152600091810182905260608101919091526080810161103d8a858563ffffffff61273016565b905287518051600189019890811061105157fe5b60200260200101819052505b6110678484612850565b9350505050610f0f565b8360400151831415611083575061108c565b50600101610ee5565b50604082015182515161025591808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c790000000091612859565b6110ee614d07565b6040518060800160405280836040015181526020018484602001518151811061111357fe5b60200260200101518152602001836060015181526020018360a001516001600160a01b0316815250905092915050565b602081015161115a9083903363ffffffff6128bb16565b60608101516111e2906001600160a01b031633148061119657508160200151600001516001600160a01b031682606001516001600160a01b0316145b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008460600151612950565b6111ea614c9f565b6111f2614c9f565b602083015160408401518451611211928792909163ffffffff6129b216565b91509150611234836020015184604001518487612b68909392919063ffffffff16565b61125961124e84604001518661271190919063ffffffff16565b846060015183613006565b610e2584848361306f565b602081015161127b9083903363ffffffff6128bb16565b611283614c9f565b61128b614c9f565b6020830151604084015184516112aa928792909163ffffffff6129b216565b915091506112cd836020015184604001518487612b68909392919063ffffffff16565b6112f26112e784604001518661271190919063ffffffff16565b8460600151836130dd565b610e25848483613145565b611305614d3b565b6040518060800160405280836040015181526020018484602001518151811061132a57fe5b60200260200101518152602001848460c001518151811061134757fe5b602002602001015181526020018360600151815250905092915050565b602081015161137b9083903363ffffffff6128bb16565b60408101516113929083903363ffffffff6128bb16565b61139a614c9f565b6113a2614c9f565b6020830151606084015184516113c1928792909163ffffffff6129b216565b915091506113e4836020015184606001518487612b68909392919063ffffffff16565b611409836040015184606001516113fa84613191565b8792919063ffffffff6131b816565b610e25848483613240565b61141c614d75565b6040518060c00160405280836040015181526020018484602001518151811061144157fe5b6020026020010151815260200183606001518152602001836080015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b602081015161149c9083903363ffffffff6128bb16565b60006114b582606001518461271190919063ffffffff16565b905060006114d083604001518561271190919063ffffffff16565b90506114da614c9f565b6114e2614c9f565b602085015160408601518651611501928992909163ffffffff6129b216565b9150915061150d614c9f565b61152286608001518587858a60a001516132d7565b905061152c614c9f565b61154a87608001518860200151600001518789868c60a001516133f4565b90506115a78360200151826020015110157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f42757920616d6f756e74206c657373207468616e2070726f6d697365640000008460200151610d8d565b602087015160408801516115c3918a918763ffffffff612b6816565b602087015160608801516115df918a918563ffffffff6131b816565b6115eb8888848661352e565b5050505050505050565b602081015161160c9083903363ffffffff6128bb16565b600061162582604001518461271190919063ffffffff16565b9050600061164083606001518561271190919063ffffffff16565b905061164a614c9f565b611652614c9f565b602085015160408601518651611671928992909163ffffffff6129b216565b9150915061167d614c9f565b61169b86608001518760200151600001518688868b60a001516133f4565b602087015160408801519192506116bb918991908663ffffffff612b6816565b602086015160608701516116d79189918463ffffffff6131b816565b6116e3878784846135b8565b50505050505050565b6116f4614dc0565b6040518060e00160405280836040015181526020018484602001518151811061171957fe5b60200260200101518152602001848460c001518151811061144157fe5b602081015161174d9083903363ffffffff6128bb16565b604081015160a082015161176891849163ffffffff6128bb16565b60a081015161177e90839063ffffffff61361d16565b156117dd576117dd611796833363ffffffff61363f16565b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e7065726d697373696f6e6564207472616465206f70657261746f72000000610aab565b6117e5614c9f565b6040820151606083015161180091859163ffffffff61366116565b905061180a614c9f565b611812614c9f565b604084015160608501518551611831928892909163ffffffff6129b216565b9150915061183d614de0565b8460a001516001600160a01b031663448f706586606001518760800151886040015189602001518989898d60c001516040518963ffffffff1660e01b815260040161188f989796959493929190615b97565b608060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118e191908101906152b4565b90506118eb614c9f565b6118f3614c9f565b6040870151608088015161190f918a918663ffffffff6129b216565b9150915061198c61191f826136d3565b8061192e575061192e856136d3565b80611940575084518251151590151514155b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5472616465732063616e6e6f74206265206f6e652d73696465640000000000008a60a00151612950565b604087015160608801516119a8918a918863ffffffff612b6816565b604087015160808801516119c4918a918563ffffffff612b6816565b6119e9876020015188606001516119da87613191565b8b92919063ffffffff6131b816565b6119ff876020015188608001516119da84613191565b6115eb888886846136db565b611a13614e01565b6040518060a001604052808360400151815260200184846020015181518110611a3857fe5b60200260200101518152602001848460c0015181518110611a5557fe5b60200260200101518152602001836060015181526020018360800151815250905092915050565b611a84614e42565b604051806060016040528084846020015181518110611a9f57fe5b602002602001015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b8051611ae39083903363ffffffff6128bb16565b6020810151815160408084015190517f8b4187130000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692638b41871392611b359233926004016159c0565b600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050611b70816137f6565b5050565b515190565b611b81614cb6565b825151611bd790808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e64657800000000000000000000000000000000000000908690612859565b8251805183908110611be557fe5b6020026020010151905092915050565b611bfd614c9f565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902060010190565b60009081526001919091016020526040902054151590565b85610aa357611cac85611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000611cd686611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000611d0087612007565b7f2c20000000000000000000000000000000000000000000000000000000000000611d2a88612171565b7f2c20000000000000000000000000000000000000000000000000000000000000611d5489612171565b604051610af5999897969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161590a565b6000611da0858563ffffffff61384a16565b611dac57506001611e8d565b611db4614e69565b611dbc614e69565b611dcf878787600163ffffffff61388416565b80519193509150611de557600192505050611e8d565b8315611e4b57600b870154815187516020890151611e4b9390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610b8d565b8051604080516020810190915260088901548152600091611e6b916139e7565b8251909150611e80908263ffffffff613a0016565b8360000151101593505050505b949350505050565b80516001600160a01b031660009081526004929092016020908152604080842092820151845291905290205460ff1690565b81516001600160a01b031660009081526004840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611f2557fe5b0217905550505050565b60608082604051602001611f4391906157e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611fec5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611faf57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611fe75760010181529050610cad565b611f76565b5060408051600080825260208201909252905b509392505050565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b8160008151811061204657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061208757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611fff57600281026120d2600f8516613a3f565b8382602903815181106120e157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612123600f8516613a3f565b83826028038151811061213257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016120b9565b6060816121b2575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cad565b8160005b81156121ca57600101600a820491506121b6565b6060816040519080825280601f01601f1916602001820160405280156121f7576020820181803883390190505b508593509050815b8015612277577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061223d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506121ff565b50949350505050565b606060016101008304016040519080825280602002602001820160405280156122b3578160200160208202803883390190505b5092915050565b6000610b84836020015183613a61565b81515161231990157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610aab565b612327826020015182613aa1565b5060400180516001019052565b61233c614e7c565b612344614e7c565b612354848463ffffffff613ad716565b905061235e613b5b565b63ffffffff16816040015163ffffffff16141561237c579050610b87565b61238d84848363ffffffff613b6b16565b6000938452600194909401602090815260409384902085516002909101805487840151978701517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091166bffffffffffffffffffffffff938416177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000009884168902177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9283168102919091179283905587516060810189528385168152988304909316938801939093520416928401929092525090919050565b817ff4626fd1187f91e6761ffb8a6ac3e8d9235a4a92da54e43feb0c57c4a4a322ab826040516124c79190615b0a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561252357602002820191906000526020600020905b81548152602001906001019080831161250f575b50505050509050919050565b600060ff6fffffffffffffffffffffffffffffffff831615612572577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161257a565b608083901c92505b67ffffffffffffffff8316156125b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016125b9565b604083901c92505b63ffffffff8316156125ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016125f4565b602083901c92505b61ffff831615612625577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161262d565b601083901c92505b60ff83161561265d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801612665565b600883901c92505b600f831615612695577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161269d565b600483901c92505b60038316156126cd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016126d5565b600283901c92505b6001831615610b87577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b600090815260019190910160205260409020546001600160a01b031690565b612738614e69565b60008381526001850160205260409020600301546001600160a01b031661275d614e69565b6040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038316906341976e09906127a29087906004016159a4565b60206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f291908101906152d2565b80519091506128459015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f00000000000000000000000088610d8d565b9150505b9392505050565b6001901b900390565b8461009f5761286784611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061289185611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612171565b600082600001516001600160a01b0316826001600160a01b031614806128ec57506128ec848363ffffffff61363f16565b80612906575082516129069085908463ffffffff613bba16565b9050610e25817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f72000000000000000000855b83610e255761295e83611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061298884611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612007565b6129ba614c9f565b6129c2614c9f565b6129ca614c9f565b6129db87878763ffffffff61366116565b905083606001516000148015612a0057506000846040015160018111156129fe57fe5b145b15612a185780612a0e613bea565b9250925050612b5f565b612a20614e7c565b612a30888763ffffffff613ad716565b9050612a3a614c9f565b612a448383613c0a565b9050612a4e614c9f565b612a56614c9f565b600088602001516001811115612a6857fe5b1415612ad457506040805180820190915287511515815260608801516020820152600188604001516001811115612a9b57fe5b1415612ab457612ab1818463ffffffff613cbb16565b90505b612acd612ac7848363ffffffff613cd016565b85613d62565b9150612b56565b6040518060400160405280896000015115158152602001612af88a60600151613e25565b6fffffffffffffffffffffffffffffffff1690529150600088604001516001811115612b2057fe5b1415612b3957612b36858363ffffffff613e8816565b91505b612b5383612b478487613c0a565b9063ffffffff613cbb16565b90505b90955093505050505b94509492505050565b612b70614c9f565b612b8185858563ffffffff61366116565b9050612b8d8183613fad565b15612b985750610e25565b612ba0614c9f565b612bb0868563ffffffff611bf516565b825190915015612c1d57612c01612bfc83602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661401f90919063ffffffff16565b613e25565b6fffffffffffffffffffffffffffffffff166020820152612c62565b60208201518151612c4d91612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff61401f16565b6fffffffffffffffffffffffffffffffff1681525b825115612cc757612cab612bfc84602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16613a0090919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152612d0c565b60208301518151612cf791612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff613a0016565b6fffffffffffffffffffffffffffffffff1681525b612d1582614061565b8015612d255750612d2583614089565b15612db55784516001600160a01b031660009081526004870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff909116179055612e3a565b612dbe82614089565b8015612dce5750612dce83614061565b15612e3a5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b612e438361409f565b8015612e555750612e538261409f565b155b15612e9c5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612e96906001018563ffffffff6140b916565b50612ef9565b612ea58361409f565b158015612eb65750612eb68261409f565b15612ef95784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612ef7906001018563ffffffff61419f16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff000000000000000000000000000000009097169690961786169390931790925587516001600160a01b031683526004890181528183208882015184528152818320878452600301815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61305f613012826141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e656761746976650000000000008460200151610d8d565b6102558383308460200151614200565b60208083015180519181015160408501516001600160a01b03909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f926130bb90889083886142fd565b86606001516040516130d09493929190615b62565b60405180910390a2505050565b6131366130e982614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e736665724f757420706f73697469766500000000008460200151610d8d565b61025583838360200151614348565b60208083015180519181015160408501516001600160a01b03909316927fbc83c08f0b269b1726990c8348ffdf1ae1696244a14868d766e542a2f18cd7d4926130bb90889083886142fd565b613199614c9f565b5060408051808201909152815115815260208083015190820152919050565b6131c1816136d3565b156131cb57610e25565b6131d3614e7c565b6131e3858463ffffffff613ad716565b90506131ed614c9f565b6131fe86868663ffffffff61443a16565b9050613208614c9f565b613218828563ffffffff613cd016565b9050613222614c9f565b61322c8285613d62565b90506115eb8888888463ffffffff612b6816565b60408201518051602080850151805181830151929094015160608701516001600160a01b0394851695909416937f21281f8d59117d0399dc467dbdd321538ceffe3225e80e2bd4de6f1b3355cbc7939261329d908a90838a6142fd565b6132b98a8a604001518b606001516132b48c613191565b6142fd565b6040516132ca959493929190615c17565b60405180910390a3505050565b6132df614c9f565b6133386132eb846141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f7420676574436f7374206e656761746976650000000000000000008660200151610d8d565b613340614c9f565b6000815260208401516040517f3a8fdd7d0000000000000000000000000000000000000000000000000000000081526001600160a01b03891691633a8fdd7d91613393918a918a91908990600401615a69565b60206040518083038186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e3919081019061536d565b602082015290505b95945050505050565b6133fc614c9f565b61345561340884614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f742065786368616e676520706f73697469766500000000000000008660200151610d8d565b6134608488856130dd565b613468614c9f565b6001815260208401516040517f7d98ebac0000000000000000000000000000000000000000000000000000000081526001600160a01b038a1691637d98ebac916134bf918b9130918c918c91908b906004016159ed565b602060405180830381600087803b1580156134d957600080fd5b505af11580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613511919081019061536d565b6020820152613521868983613006565b90505b9695505050505050565b602080840151805191810151606086015160408701516001600160a01b03909416937f2e346762bf4ae4568971c30b51fcebd2138275aafcfe12d872956e9f3e1208939361357f908a90848a6142fd565b6135938a8a602001518b604001518a6142fd565b89608001516040516135aa96959493929190615c5a565b60405180910390a250505050565b602080840151805191810151604086015160608701516001600160a01b03909416937fcc3330184b6d88cad87f9e9543b4d4110a6a3eaf20164ca5252d598d0acba3f193613609908a90848a6142fd565b6135938a8a602001518b606001518a6142fd565b6001600160a01b03166000908152600791909101602052604090205460ff1690565b6001600160a01b03166000908152600691909101602052604090205460ff1690565b613669614c9f565b5081516001600160a01b031660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b602001511590565b6136e3614e9c565b604051806080016040528061370587876020015188606001516132b489613191565b815260200161372187876020015188608001516132b488613191565b815260200161373a8787604001518860600151886142fd565b81526020016137538787604001518860800151876142fd565b9052604085015180516020808801518051908201519190930151606089015160808a01519596506001600160a01b039384169593909416937f54d4cc60cf7d570631cc1a58942812cb0fc461713613400f56932040c3497d19938760006020020151886001602002015189600260200201518a600360200201518e60a001516040516137e799989796959493929190615cb6565b60405180910390a35050505050565b80518051602091820151918301516040516001600160a01b03909216927fab38cdc4a831ebe6542bf277d36b65dbc5c66a4d03ec6cf56ac38de05dc300989261383f9290615b47565b60405180910390a250565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b61388c614e69565b613894614e69565b61389c614e69565b6138a4614e69565b60006138af87611b74565b905060005b818110156139d8576138c4614c9f565b6138e78a6138d88b8563ffffffff611b7916565b518d919063ffffffff61443a16565b90506138f2816136d3565b156138fd57506139d0565b60006139286139128b8563ffffffff611b7916565b608001515160208401519063ffffffff61449f16565b9050613932614e69565b61393a6144f3565b905089156139855761398260018e01600061395b8e8863ffffffff611b7916565b51815260208082019290925260409081016000208151928301909152600501548152614515565b90505b8251156139ae576139a7613999838361454c565b88519063ffffffff613a0016565b87526139cc565b6139c96139bb83836139e7565b87519063ffffffff613a0016565b86525b5050505b6001016138b4565b50919890975095505050505050565b6000610b84838360000151670de0b6b3a7640000614561565b600082820183811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615aea565b6000600a821015613a5757506030810160f81b610cad565b5060570160f81b90565b600080610100830490506000610100840690506000816001901b868481518110613a8757fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b90859084908110613abf57fe5b60200260200101818151179150818152505050505050565b613adf614e7c565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000613b6642614583565b905090565b613b73614e7c565b613b7b614e69565b613b8c85858563ffffffff6145da16565b90506128458382613ba3888863ffffffff611bf516565b6040805160208101909152600a8a015481526146d8565b6001600160a01b039182166000908152600593909301602090815260408085209290931684525290205460ff1690565b613bf2614c9f565b50604080518082019091526000808252602082015290565b613c12614c9f565b602083015183516fffffffffffffffffffffffffffffffff9091169015613c7e57604080518082019091526001815260208481015190820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b815250915050610b87565b604080518082019091526000815283516020820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b613cc3614c9f565b610b8483613cd084613191565b613cd8614c9f565b613ce0614c9f565b8251845115159015151415613d135783511515815260208085015190840151613d099190613a00565b6020820152610b84565b8260200151846020015110613d3c5783511515815260208085015190840151613d09919061401f565b82511515815260208084015190850151613d56919061401f565b60208201529392505050565b613d6a614c9f565b825115613de0576040518060400160405280600115158152602001613dc5612bfc670de0b6b3a764000067ffffffffffffffff1686602001516bffffffffffffffffffffffff1688602001516148429092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610b87565b6040805180820190915260008152825160208581015190830191613dc591612bfc91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61484216565b600081610b876fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610d8d565b613e90614c9f565b613e98614c9f565b8251845115159015151415613ef65783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff9182169116613a00565b6fffffffffffffffffffffffffffffffff166020820152610b84565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613f5c5783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b82511515815260208084015190850151613f8f91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156140165760208301516fffffffffffffffffffffffffffffffff1661400657506001610b87565b5080518251151590151514610b87565b50600092915050565b6000610b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506148ca565b60008082602001516fffffffffffffffffffffffffffffffff16118015610b87575050511590565b60006140948261409f565b80610b875750505190565b602001516fffffffffffffffffffffffffffffffff161590565b600081815260018301602052604081205480156141955783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461414f57600086600001828154811061411057fe5b906000526020600020015490508087600001848154811061412d57fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061415a57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b87565b6000915050610b87565b60006141ab8383611c86565b6141e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b87565b506000610b87565b8051600090158015610b8757505060200151151590565b80158061421e5750826001600160a01b0316826001600160a01b0316145b1561422857610e25565b604051610e259085907f23b872dd000000000000000000000000000000000000000000000000000000009061426590879087908790602401615a41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250614910565b614305614ec9565b604080518082019091528281526020810161432787878763ffffffff61366116565b905295945050505050565b80516000908015610b8757505060200151151590565b80158061435d57506001600160a01b03821630145b1561436757610255565b6040516102559084907fa9059cbb00000000000000000000000000000000000000000000000000000000906143a29086908690602401615aa3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601681526020017f546f6b656e3a207472616e73666572206661696c656400000000000000000000815250614910565b614442614c9f565b61444a614c9f565b61445b85858563ffffffff61366116565b90506144668161409f565b1561447b57614473613bea565b915050612849565b614483614e7c565b614493868563ffffffff613ad716565b90506135248282613c0a565b6000826144ae57506000610b87565b828202828482816144bb57fe5b0414610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615afa565b6144fb614e69565b506040805160208101909152670de0b6b3a7640000815290565b61451d614e69565b60408051602081019091528251819061454490670de0b6b3a764000063ffffffff613a0016565b905292915050565b6000610b8483670de0b6b3a764000084600001515b6000611e8d82614577868663ffffffff61449f16565b9063ffffffff614a0216565b600081610b8763ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610d8d565b6145e2614e69565b6145ea614c9f565b6145fa858563ffffffff611bf516565b9050614604614c9f565b61460c614c9f565b6146168386614a44565b91509150614622614e69565b60008781526001890160205260409020600401546001600160a01b031663e8177dcf6146548a8a63ffffffff61271116565b846020015186602001516040518463ffffffff1660e01b815260040161467c93929190615abe565b60206040518083038186803b15801561469457600080fd5b505afa1580156146a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506146cc91908101906152d2565b98975050505050505050565b6146e0614e7c565b6146e8614c9f565b6146f0614c9f565b6146fa8588614a44565b915091506000614708613b5b565b905060006147406147328a6040015163ffffffff168463ffffffff1661401f90919063ffffffff16565b89519063ffffffff61449f16565b9050600061474d856136d3565b1561475a5750600061478c565b61476482886139e7565b905084602001518460200151101561478c576147898185602001518760200151614561565b90505b8181111561479657fe5b60408051606081019091528a5181906147df906147da906bffffffffffffffffffffffff166147ce8188670de0b6b3a7640000614561565b9063ffffffff613a0016565b614aec565b6bffffffffffffffffffffffff908116825260208d810151920191614816916147da91166147ce8187670de0b6b3a7640000614561565b6bffffffffffffffffffffffff1681526020018463ffffffff1681525095505050505050949350505050565b600083158061484f575082155b156148665761485f600083614a02565b9050612849565b6000614878858563ffffffff61449f16565b905061284561489760016147ce6002614577888463ffffffff61401f16565b6148a7838663ffffffff614b4b16565b10156148b45760006148b7565b60015b60ff166147ce838663ffffffff614a0216565b60008184841115614908576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b505050900390565b60006060846001600160a01b03168460405161492c91906157fc565b6000604051808303816000865af19150503d8060008114614969576040519150601f19603f3d011682016040523d82523d6000602084013e61496e565b606091505b50915091508183906149ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b5080511561009f57808060200190516149c99190810190615296565b8390610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b6000610b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614b8d565b614a4c614c9f565b614a54614c9f565b614a5c614c9f565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152614a8f614c9f565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152614abf614c9f565b614ac98387613c0a565b9050614ad3614c9f565b614add8388613c0a565b91989197509095505050505050565b600081610b876bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743936000000000000000000000084610d8d565b6000610b8483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614bde565b60008183614bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b506000838581614bd457fe5b0495945050505050565b60008183614c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b50828481614c2357fe5b06949350505050565b60405180606001604052806060815260200160608152602001600081525090565b604080516101008101825260008082526020820152908101614c6d614de0565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b6040518060a001604052806000815260200160006001600160a01b0316815260200160001515815260200160006fffffffffffffffffffffffffffffffff168152602001614d02614e69565b905290565b6040518060800160405280614d1a614de0565b8152602001614d27614c9f565b815260006020820181905260409091015290565b6040518060800160405280614d4e614de0565b8152602001614d5b614c9f565b8152602001614d68614c9f565b8152602001600081525090565b6040518060c00160405280614d88614de0565b8152602001614d95614c9f565b8152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b6040518060e00160405280614dd3614de0565b8152602001614d88614c9f565b60408051608081019091526000808252602082019081526020016000614d68565b6040518060a00160405280614e14614de0565b8152602001614e21614c9f565b8152602001614e2e614c9f565b815260200160008152602001600081525090565b6040518060600160405280614e55614c9f565b815260006020820152606060409091015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806004905b614eb3614ec9565b815260200190600190039081614eab5790505090565b6040518060400160405280614edc614c9f565b8152602001614d02614c9f565b8035610b8781615f02565b600082601f830112614f0557600080fd5b8135614f18614f1382615d58565b615d31565b81815260209384019390925082018360005b83811015614f565781358601614f408882615058565b8452506020928301929190910190600101614f2a565b5050505092915050565b600082601f830112614f7157600080fd5b8135614f7f614f1382615d58565b91508181835260208401935060208101905083856040840282011115614fa457600080fd5b60005b83811015614f565781614fba8882615206565b84525060209092019160409190910190600101614fa7565b8035610b8781615f16565b8051610b8781615f16565b600082601f830112614ff957600080fd5b8135615007614f1382615d79565b9150808252602083016020830185838301111561502357600080fd5b61502e838284615e95565b50505092915050565b8035610b8781615f1f565b8035610b8781615f2c565b8051610b8781615f2c565b6000610160828403121561506b57600080fd5b615076610100615d31565b905060006150848484615037565b825250602061509584848301615280565b60208301525060406150a984828501615134565b60408301525060c06150bd84828501615280565b60608301525060e06150d184828501615280565b6080830152506101006150e684828501614ee9565b60a0830152506101206150fb84828501615280565b60c08301525061014082013567ffffffffffffffff81111561511c57600080fd5b61512884828501614fe8565b60e08301525092915050565b60006080828403121561514657600080fd5b6151506080615d31565b9050600061515e8484614fd2565b825250602061516f84848301615042565b602083015250604061518384828501615042565b604083015250606061519784828501615280565b60608301525092915050565b6000608082840312156151b557600080fd5b6151bf6080615d31565b905060006151cd8484614fdd565b82525060206151de8484830161504d565b60208301525060406151f28482850161504d565b60408301525060606151978482850161528b565b60006040828403121561521857600080fd5b6152226040615d31565b905060006152308484614ee9565b825250602061524184848301615280565b60208301525092915050565b60006020828403121561525f57600080fd5b6152696020615d31565b90506000615277848461528b565b82525092915050565b8035610b8781615f39565b8051610b8781615f39565b6000602082840312156152a857600080fd5b6000611e8d8484614fdd565b6000608082840312156152c657600080fd5b6000611e8d84846151a3565b6000602082840312156152e457600080fd5b6000611e8d848461524d565b60008060006060848603121561530557600080fd5b60006153118686615280565b935050602084013567ffffffffffffffff81111561532e57600080fd5b61533a86828701614f60565b925050604084013567ffffffffffffffff81111561535757600080fd5b61536386828701614ef4565b9150509250925092565b60006020828403121561537f57600080fd5b6000611e8d848461528b565b6000615397838361571c565b505060a00190565b60006153ab83836157cc565b505060200190565b6153bc81615e74565b82525050565b6153bc81615dd2565b60006153d682615dc5565b6153e08185615dc9565b93506153eb83615dbf565b8060005b83811015615419578151615403888261538b565b975061540e83615dbf565b9250506001016153ef565b509495945050505050565b600061542f82615dc5565b6154398185615dc9565b935061544483615dbf565b8060005b8381101561541957815161545c888261539f565b975061546783615dbf565b925050600101615448565b6153bc81615ddd565b6153bc61548782615de2565b615e2c565b6153bc61548782615e07565b6153bc61548782615e2c565b60006154af82615dc5565b6154b98185615dc9565b93506154c9818560208601615ea1565b6154d281615ecd565b9093019392505050565b60006154e782615dc5565b6154f18185610cad565b9350615501818560208601615ea1565b9290920192915050565b6153bc81615e7f565b6000615521601b83615dc9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061555a602183615dc9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160808301906155bd8482615472565b5060208201516155d0602085018261550b565b5060408201516155e3604085018261550b565b506060820151610e2560608501826157cc565b8051608083019061560784826157b2565b506020820151610e256040850182615779565b8051606083019061562b84826157de565b50602082015161563e60208501826157de565b506040820151610e2560408501826157d5565b8051604083019061566284826153c2565b506020820151610e2560208501826157cc565b805161014083019061568784826155ac565b50602082015161569a6080850182615651565b5060408201516156ad60c0850182615651565b5060608201516156c16101008501826157cc565b506080820151610e256101208501826157cc565b80516060808452600091908401906156ed82826153cb565b915050602083015184820360208601526157078282615424565b9150506040830151611fff60408601826157cc565b805160a083019061572d84826157cc565b50602082015161574060208501826153c2565b5060408201516157536040850182615472565b50606082015161576660608501826157c3565b506080820151610e25608085018261579d565b8051604083019061578a8482615472565b506020820151610e2560208501826157c3565b80516020830190610e2584826157cc565b9052565b805160408301906156628482615472565b6153bc81615e39565b6153bc81615e2c565b6153bc81615e5a565b6153bc81615e63565b60006157f38284615498565b50602001919050565b600061284982846154dc565b600061581482866154dc565b9150615820828561548c565b6002820191506133eb82846154dc565b600061583c82896154dc565b9150615848828861548c565b60028201915061585882876154dc565b9150615864828661548c565b60028201915061587482856154dc565b9150615880828461547b565b506001019695505050505050565b600061589a828b6154dc565b91506158a6828a61548c565b6002820191506158b682896154dc565b91506158c2828861548c565b6002820191506158d282876154dc565b91506158de828661548c565b6002820191506158ee82856154dc565b91506158fa828461547b565b5060010198975050505050505050565b6000615916828d6154dc565b9150615922828c61548c565b600282019150615932828b6154dc565b915061593e828a61548c565b60028201915061594e82896154dc565b915061595a828861548c565b60028201915061596a82876154dc565b9150615976828661548c565b60028201915061598682856154dc565b9150615992828461547b565b506001019a9950505050505050505050565b60208101610b8782846153c2565b60208101610b8782846153b3565b608081016159ce82866153b3565b6159db6020830185615651565b81810360608301526133eb81846154a4565b60c081016159fb82896153c2565b615a0860208301886153c2565b615a1560408301876153c2565b615a2260608301866153c2565b615a2f60808301856157cc565b81810360a08301526146cc81846154a4565b60608101615a4f82866153c2565b615a5c60208301856153c2565b611e8d60408301846157cc565b60808101615a7782876153c2565b615a8460208301866153c2565b615a9160408301856157cc565b818103606083015261352481846154a4565b60408101615ab182856153c2565b61284960208301846157cc565b60608101615acc82866153c2565b615a5c60208301856157cc565b60208082528101610b8481846154a4565b60208082528101610b8781615514565b60208082528101610b878161554d565b60608101610b87828461561a565b6101808101615b2782866157ae565b615b346020830185615675565b8181036101608301526133eb81846156d5565b60408101615b5582856157cc565b61284960208301846153c2565b60e08101615b7082876157cc565b615b7d60208301866157cc565b615b8a60408301856155f6565b6133eb60c08301846153c2565b6101a08101615ba6828b6157cc565b615bb3602083018a6157cc565b615bc06040830189615651565b615bcd6080830188615651565b615bda60c0830187615779565b615be8610100830186615779565b615bf66101408301856157b2565b818103610180830152615c0981846154a4565b9a9950505050505050505050565b6101608101615c2682886157cc565b615c3360208301876157cc565b615c4060408301866157cc565b615c4d60608301856155f6565b61352460e08301846155f6565b6101808101615c6982896157cc565b615c7660208301886157cc565b615c8360408301876157cc565b615c9060608301866155f6565b615c9d60e08301856155f6565b615cab6101608301846153c2565b979650505050505050565b6102a08101615cc5828c6157cc565b615cd2602083018b6157cc565b615cdf604083018a6157cc565b615cec60608301896157cc565b615cf960808301886155f6565b615d076101008301876155f6565b615d156101808301866155f6565b615d236102008301856155f6565b615c096102808301846153c2565b60405181810167ffffffffffffffff81118282101715615d5057600080fd5b604052919050565b600067ffffffffffffffff821115615d6f57600080fd5b5060209081020190565b600067ffffffffffffffff821115615d9057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610b8782615e4e565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610cad81615ef5565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b8782615e8a565b6000610b8782615e2f565b6000610b8782615dd2565b82818337506000910152565b60005b83811015615ebc578181015183820152602001615ea4565b83811115610e255750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60028110615eff57fe5b50565b615f0b81615dd2565b8114615eff57600080fd5b615f0b81615ddd565b60098110615eff57600080fd5b60028110615eff57600080fd5b615f0b81615e2c56fea365627a7a72315820268731d59b01e264fb83bb253356ce98f1c943681a89c3e2d955cd82c0d7ad646c6578706572696d656e74616cf564736f6c63430005100040",
6
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bd76ecfd1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046152f0565b61005c565b005b6100646100a6565b61006e82826100df565b6060610078614c2c565b61008385858561025a565b9150915061009385858584610577565b61009f8585848461078d565b5050505050565b7f91b01baeee3a24b590d112613814d86801005c7ef9353e7fc1eaeaf33ccf83b0336040516100d591906159b2565b60405180910390a1565b61012f8251600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f206163636f756e747300000000000000610aab565b61017f8151600014157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f742068617665207a65726f20616374696f6e730000000000000000610aab565b60005b825181101561025557600181015b835181101561024c576102446101cc8584815181106101ab57fe5b60200260200101518684815181106101bf57fe5b6020026020010151610b5c565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f43616e6e6f74206475706c6963617465206163636f756e74730000000000000087868151811061021b57fe5b60200260200101516000015188878151811061023357fe5b602002602001015160200151610b8d565b600101610190565b50600101610182565b505050565b6060610264614c2c565b845484516040805182815260208084028201019091526060918015610293578160200160208202803883390190505b50905061029e614c2c565b6102a783610c51565b905060005b86518110156104e6576102bd614c4d565b8782815181106102c957fe5b6020026020010151905060008160000151905060006102e782610cb2565b905060006102f483610d1f565b9050600081600281111561030457fe5b14610403576103608460c00151856020015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206163636f756e747320696e20616374696f6e0000000088610d8d565b600181600281111561036e57fe5b141561039b576001878560c001518151811061038657fe5b91151560209283029190910190910152610403565b610403878560c00151815181106103ae57fe5b6020026020010151157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5265717569726573206e6f6e2d7072696d617279206163636f756e74000000008760c00151610d8d565b60018785602001518151811061041557fe5b91151560209283029190910190910152600182600281111561043357fe5b141561044d576104488d878660600151610e2b565b6104d6565b600282600281111561045b57fe5b14156104d6576104b88460800151856060015114157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4475706c6963617465206d61726b65747320696e20616374696f6e000000000088610d8d565b6104c78d878660600151610e2b565b6104d68d878660800151610e2b565b5050600190920191506102ac9050565b5060005b875181101561055957606061051b89838151811061050457fe5b60200260200101518b610e6890919063ffffffff16565b905060005b815181101561054f576105478b8584848151811061053a57fe5b6020026020010151610e2b565b600101610520565b50506001016104ea565b5061056a888263ffffffff610ea016565b9097909650945050505050565b60005b825181101561009f5761058b614c4d565b83828151811061059757fe5b6020908102919091010151805190915060008160088111156105b557fe5b14156105d3576105ce876105c988856110e6565b611143565b610783565b60018160088111156105e157fe5b14156105fa576105ce876105f588856110e6565b611264565b600281600881111561060857fe5b1415610621576105ce8761061c88856112fd565b611364565b600381600881111561062f57fe5b1415610648576105ce876106438885611414565b611485565b600481600881111561065657fe5b141561066f576105ce8761066a8885611414565b6115f5565b600581600881111561067d57fe5b1415610696576105ce8761069188856116ec565b611736565b60068160088111156106a457fe5b14156107235773__LiquidateOrVaporizeImpl_______________6383d848b3886106cf8986611a0b565b876040518463ffffffff1660e01b81526004016106ee93929190615b18565b60006040518083038186803b15801561070657600080fd5b505af415801561071a573d6000803e3d6000fd5b50505050610783565b600781600881111561073157fe5b141561075c5773__LiquidateOrVaporizeImpl_______________632e077456886106cf8986611a0b565b600881600881111561076a57fe5b1415610783576107838761077e8885611a7c565b611acf565b505060010161057a565b600061079882611b74565b905060005b818110156109af5760006107b7848363ffffffff611b7916565b5190506107ca848363ffffffff611b7916565b6040015115610869576108696107e6858463ffffffff611b7916565b606001516fffffffffffffffffffffffffffffffff1661080c898463ffffffff611bf516565b516fffffffffffffffffffffffffffffffff1611157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f4d61726b657420697320636c6f73696e6700000000000000000000000000000084610d8d565b60008181526001880160205260409020547501000000000000000000000000000000000000000000900460ff16156109a65760005b86518110156109a4576108b7858463ffffffff611b7916565b602001516001600160a01b03168782815181106108d057fe5b6020026020010151600001516001600160a01b03161461099c5761099c610923836109178a858151811061090057fe5b60200260200101518c611c5590919063ffffffff16565b9063ffffffff611c8616565b157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f696e76616c69642072656379636c61626c65206f776e657200000000000000008a858151811061097257fe5b6020026020010151600001518b868151811061098a57fe5b60200260200101516020015187611c9e565b60010161089e565b505b5060010161079d565b5060005b8451811015610aa3576109c4614c9f565b8582815181106109d057fe5b602002602001015190508482815181106109e657fe5b60200260200101516109f85750610a9b565b6000610a0d888387600163ffffffff611d8e16565b9050610a64817f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e646572636f6c6c61746572616c697a6564206163636f756e74000000000085600001518660200151610b8d565b6000610a76898463ffffffff611e9516565b6002811115610a8157fe5b14610a9857610a988883600063ffffffff611ec716565b50505b6001016109b3565b505050505050565b8261025557610ab982611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610ae383611f2f565b604051602001610af593929190615808565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b5391600401615ad9565b60405180910390fd5b805182516000916001600160a01b039182169116148015610b84575081602001518360200151145b90505b92915050565b8461009f57610b9b84611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610bc585611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612007565b7f2c20000000000000000000000000000000000000000000000000000000000000610c1987612171565b604051610af597969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161588e565b610c59614c2c565b604080516000606082018181526080830190935290918291610c91565b610c7e614cb6565b815260200190600190039081610c765790505b508152602001610ca084612280565b8152602001600081525090505b919050565b600080826008811115610cc157fe5b1480610cd857506001826008811115610cd657fe5b145b80610cee57506002826008811115610cec57fe5b145b15610cfb57506001610cad565b6008826008811115610d0957fe5b1415610d1757506000610cad565b506002919050565b60006002826008811115610d2f57fe5b1480610d4657506005826008811115610d4457fe5b145b15610d5357506001610cad565b6006826008811115610d6157fe5b1480610d7857506007826008811115610d7657fe5b145b15610d8557506002610cad565b506000919050565b83610e2557610d9b83611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000610dc584611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612171565b604051610af59594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615830565b50505050565b610e3b828263ffffffff6122ba16565b61025557610e4f828263ffffffff6122ca16565b61025581610e63858263ffffffff61233416565b612497565b80516001600160a01b0316600090815260048301602090815260408083208285015184529091529020606090610b84906001016124d3565b8060400151604051908082528060200260200182016040528015610ede57816020015b610ecb614cb6565b815260200190600190039081610ec35790505b5081526000805b82602001515181101561108c57600083602001518281518110610f0457fe5b602002602001015190505b8015611071576000610f208261252f565b90506000610f2e8483612706565b90506000610f42888363ffffffff61271116565b600083815260018a01602052604090205490915074010000000000000000000000000000000000000000900460ff1615610ffc576040805160a0810182528381526001600160a01b038316602082015260019181019190915260608101610faf8a8563ffffffff611bf516565b516fffffffffffffffffffffffffffffffff168152602001610fd88a858563ffffffff61273016565b9052875180516001890198908110610fec57fe5b602002602001018190525061105d565b6040805160a0810182528381526001600160a01b0383166020820152600091810182905260608101919091526080810161103d8a858563ffffffff61273016565b905287518051600189019890811061105157fe5b60200260200101819052505b6110678484612850565b9350505050610f0f565b8360400151831415611083575061108c565b50600101610ee5565b50604082015182515161025591808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c790000000091612859565b6110ee614d07565b6040518060800160405280836040015181526020018484602001518151811061111357fe5b60200260200101518152602001836060015181526020018360a001516001600160a01b0316815250905092915050565b602081015161115a9083903363ffffffff6128bb16565b60608101516111e2906001600160a01b031633148061119657508160200151600001516001600160a01b031682606001516001600160a01b0316145b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f496e76616c6964206465706f73697420736f75726365000000000000000000008460600151612950565b6111ea614c9f565b6111f2614c9f565b602083015160408401518451611211928792909163ffffffff6129b216565b91509150611234836020015184604001518487612b68909392919063ffffffff16565b61125961124e84604001518661271190919063ffffffff16565b846060015183613006565b610e2584848361306f565b602081015161127b9083903363ffffffff6128bb16565b611283614c9f565b61128b614c9f565b6020830151604084015184516112aa928792909163ffffffff6129b216565b915091506112cd836020015184604001518487612b68909392919063ffffffff16565b6112f26112e784604001518661271190919063ffffffff16565b8460600151836130dd565b610e25848483613145565b611305614d3b565b6040518060800160405280836040015181526020018484602001518151811061132a57fe5b60200260200101518152602001848460c001518151811061134757fe5b602002602001015181526020018360600151815250905092915050565b602081015161137b9083903363ffffffff6128bb16565b60408101516113929083903363ffffffff6128bb16565b61139a614c9f565b6113a2614c9f565b6020830151606084015184516113c1928792909163ffffffff6129b216565b915091506113e4836020015184606001518487612b68909392919063ffffffff16565b611409836040015184606001516113fa84613191565b8792919063ffffffff6131b816565b610e25848483613240565b61141c614d75565b6040518060c00160405280836040015181526020018484602001518151811061144157fe5b6020026020010151815260200183606001518152602001836080015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b602081015161149c9083903363ffffffff6128bb16565b60006114b582606001518461271190919063ffffffff16565b905060006114d083604001518561271190919063ffffffff16565b90506114da614c9f565b6114e2614c9f565b602085015160408601518651611501928992909163ffffffff6129b216565b9150915061150d614c9f565b61152286608001518587858a60a001516132d7565b905061152c614c9f565b61154a87608001518860200151600001518789868c60a001516133f4565b90506115a78360200151826020015110157f4f7065726174696f6e496d706c000000000000000000000000000000000000007f42757920616d6f756e74206c657373207468616e2070726f6d697365640000008460200151610d8d565b602087015160408801516115c3918a918763ffffffff612b6816565b602087015160608801516115df918a918563ffffffff6131b816565b6115eb8888848661352e565b5050505050505050565b602081015161160c9083903363ffffffff6128bb16565b600061162582604001518461271190919063ffffffff16565b9050600061164083606001518561271190919063ffffffff16565b905061164a614c9f565b611652614c9f565b602085015160408601518651611671928992909163ffffffff6129b216565b9150915061167d614c9f565b61169b86608001518760200151600001518688868b60a001516133f4565b602087015160408801519192506116bb918991908663ffffffff612b6816565b602086015160608701516116d79189918463ffffffff6131b816565b6116e3878784846135b8565b50505050505050565b6116f4614dc0565b6040518060e00160405280836040015181526020018484602001518151811061171957fe5b60200260200101518152602001848460c001518151811061144157fe5b602081015161174d9083903363ffffffff6128bb16565b604081015160a082015161176891849163ffffffff6128bb16565b60a081015161177e90839063ffffffff61361d16565b156117dd576117dd611796833363ffffffff61363f16565b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f556e7065726d697373696f6e6564207472616465206f70657261746f72000000610aab565b6117e5614c9f565b6040820151606083015161180091859163ffffffff61366116565b905061180a614c9f565b611812614c9f565b604084015160608501518551611831928892909163ffffffff6129b216565b9150915061183d614de0565b8460a001516001600160a01b031663448f706586606001518760800151886040015189602001518989898d60c001516040518963ffffffff1660e01b815260040161188f989796959493929190615b97565b608060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118e191908101906152b4565b90506118eb614c9f565b6118f3614c9f565b6040870151608088015161190f918a918663ffffffff6129b216565b9150915061198c61191f826136d3565b8061192e575061192e856136d3565b80611940575084518251151590151514155b7f4f7065726174696f6e496d706c000000000000000000000000000000000000007f5472616465732063616e6e6f74206265206f6e652d73696465640000000000008a60a00151612950565b604087015160608801516119a8918a918863ffffffff612b6816565b604087015160808801516119c4918a918563ffffffff612b6816565b6119e9876020015188606001516119da87613191565b8b92919063ffffffff6131b816565b6119ff876020015188608001516119da84613191565b6115eb888886846136db565b611a13614e01565b6040518060a001604052808360400151815260200184846020015181518110611a3857fe5b60200260200101518152602001848460c0015181518110611a5557fe5b60200260200101518152602001836060015181526020018360800151815250905092915050565b611a84614e42565b604051806060016040528084846020015181518110611a9f57fe5b602002602001015181526020018360a001516001600160a01b031681526020018360e00151815250905092915050565b8051611ae39083903363ffffffff6128bb16565b6020810151815160408084015190517f8b4187130000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692638b41871392611b359233926004016159c0565b600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050611b70816137f6565b5050565b515190565b611b81614cb6565b825151611bd790808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e64657800000000000000000000000000000000000000908690612859565b8251805183908110611be557fe5b6020026020010151905092915050565b611bfd614c9f565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902060010190565b60009081526001919091016020526040902054151590565b85610aa357611cac85611f2f565b7f3a20000000000000000000000000000000000000000000000000000000000000611cd686611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000611d0087612007565b7f2c20000000000000000000000000000000000000000000000000000000000000611d2a88612171565b7f2c20000000000000000000000000000000000000000000000000000000000000611d5489612171565b604051610af5999897969594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161590a565b6000611da0858563ffffffff61384a16565b611dac57506001611e8d565b611db4614e69565b611dbc614e69565b611dcf878787600163ffffffff61388416565b80519193509150611de557600192505050611e8d565b8315611e4b57600b870154815187516020890151611e4b9390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610b8d565b8051604080516020810190915260088901548152600091611e6b916139e7565b8251909150611e80908263ffffffff613a0016565b8360000151101593505050505b949350505050565b80516001600160a01b031660009081526004929092016020908152604080842092820151845291905290205460ff1690565b81516001600160a01b031660009081526004840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611f2557fe5b0217905550505050565b60608082604051602001611f4391906157e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611fec5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611faf57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611fe75760010181529050610cad565b611f76565b5060408051600080825260208201909252905b509392505050565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b8160008151811061204657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061208757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611fff57600281026120d2600f8516613a3f565b8382602903815181106120e157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612123600f8516613a3f565b83826028038151811061213257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016120b9565b6060816121b2575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cad565b8160005b81156121ca57600101600a820491506121b6565b6060816040519080825280601f01601f1916602001820160405280156121f7576020820181803883390190505b508593509050815b8015612277577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061223d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506121ff565b50949350505050565b606060016101008304016040519080825280602002602001820160405280156122b3578160200160208202803883390190505b5092915050565b6000610b84836020015183613a61565b81515161231990157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610aab565b612327826020015182613aa1565b5060400180516001019052565b61233c614e7c565b612344614e7c565b612354848463ffffffff613ad716565b905061235e613b5b565b63ffffffff16816040015163ffffffff16141561237c579050610b87565b61238d84848363ffffffff613b6b16565b6000938452600194909401602090815260409384902085516002909101805487840151978701517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091166bffffffffffffffffffffffff938416177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000009884168902177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9283168102919091179283905587516060810189528385168152988304909316938801939093520416928401929092525090919050565b817ff4626fd1187f91e6761ffb8a6ac3e8d9235a4a92da54e43feb0c57c4a4a322ab826040516124c79190615b0a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561252357602002820191906000526020600020905b81548152602001906001019080831161250f575b50505050509050919050565b600060ff6fffffffffffffffffffffffffffffffff831615612572577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161257a565b608083901c92505b67ffffffffffffffff8316156125b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016125b9565b604083901c92505b63ffffffff8316156125ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016125f4565b602083901c92505b61ffff831615612625577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161262d565b601083901c92505b60ff83161561265d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801612665565b600883901c92505b600f831615612695577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161269d565b600483901c92505b60038316156126cd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016126d5565b600283901c92505b6001831615610b87577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b600090815260019190910160205260409020546001600160a01b031690565b612738614e69565b60008381526001850160205260409020600301546001600160a01b031661275d614e69565b6040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038316906341976e09906127a29087906004016159a4565b60206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f291908101906152d2565b80519091506128459015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f00000000000000000000000088610d8d565b9150505b9392505050565b6001901b900390565b8461009f5761286784611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061289185611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610bef86612171565b600082600001516001600160a01b0316826001600160a01b031614806128ec57506128ec848363ffffffff61363f16565b80612906575082516129069085908463ffffffff613bba16565b9050610e25817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f72000000000000000000855b83610e255761295e83611f2f565b7f3a2000000000000000000000000000000000000000000000000000000000000061298884611f2f565b7f203c000000000000000000000000000000000000000000000000000000000000610def85612007565b6129ba614c9f565b6129c2614c9f565b6129ca614c9f565b6129db87878763ffffffff61366116565b905083606001516000148015612a0057506000846040015160018111156129fe57fe5b145b15612a185780612a0e613bea565b9250925050612b5f565b612a20614e7c565b612a30888763ffffffff613ad716565b9050612a3a614c9f565b612a448383613c0a565b9050612a4e614c9f565b612a56614c9f565b600088602001516001811115612a6857fe5b1415612ad457506040805180820190915287511515815260608801516020820152600188604001516001811115612a9b57fe5b1415612ab457612ab1818463ffffffff613cbb16565b90505b612acd612ac7848363ffffffff613cd016565b85613d62565b9150612b56565b6040518060400160405280896000015115158152602001612af88a60600151613e25565b6fffffffffffffffffffffffffffffffff1690529150600088604001516001811115612b2057fe5b1415612b3957612b36858363ffffffff613e8816565b91505b612b5383612b478487613c0a565b9063ffffffff613cbb16565b90505b90955093505050505b94509492505050565b612b70614c9f565b612b8185858563ffffffff61366116565b9050612b8d8183613fad565b15612b985750610e25565b612ba0614c9f565b612bb0868563ffffffff611bf516565b825190915015612c1d57612c01612bfc83602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1661401f90919063ffffffff16565b613e25565b6fffffffffffffffffffffffffffffffff166020820152612c62565b60208201518151612c4d91612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff61401f16565b6fffffffffffffffffffffffffffffffff1681525b825115612cc757612cab612bfc84602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16613a0090919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152612d0c565b60208301518151612cf791612bfc916fffffffffffffffffffffffffffffffff908116911663ffffffff613a0016565b6fffffffffffffffffffffffffffffffff1681525b612d1582614061565b8015612d255750612d2583614089565b15612db55784516001600160a01b031660009081526004870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff909116179055612e3a565b612dbe82614089565b8015612dce5750612dce83614061565b15612e3a5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b612e438361409f565b8015612e555750612e538261409f565b155b15612e9c5784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612e96906001018563ffffffff6140b916565b50612ef9565b612ea58361409f565b158015612eb65750612eb68261409f565b15612ef95784516001600160a01b0316600090815260048701602090815260408083208289015184529091529020612ef7906001018563ffffffff61419f16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff000000000000000000000000000000009097169690961786169390931790925587516001600160a01b031683526004890181528183208882015184528152818320878452600301815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61305f613012826141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e73666572496e206e656761746976650000000000008460200151610d8d565b6102558383308460200151614200565b60208083015180519181015160408501516001600160a01b03909316927f2bad8bc95088af2c247b30fa2b2e6a0886f88625e0945cd3051008e0e270198f926130bb90889083886142fd565b86606001516040516130d09493929190615b62565b60405180910390a2505050565b6131366130e982614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f74207472616e736665724f757420706f73697469766500000000008460200151610d8d565b61025583838360200151614348565b60208083015180519181015160408501516001600160a01b03909316927fbc83c08f0b269b1726990c8348ffdf1ae1696244a14868d766e542a2f18cd7d4926130bb90889083886142fd565b613199614c9f565b5060408051808201909152815115815260208083015190820152919050565b6131c1816136d3565b156131cb57610e25565b6131d3614e7c565b6131e3858463ffffffff613ad716565b90506131ed614c9f565b6131fe86868663ffffffff61443a16565b9050613208614c9f565b613218828563ffffffff613cd016565b9050613222614c9f565b61322c8285613d62565b90506115eb8888888463ffffffff612b6816565b60408201518051602080850151805181830151929094015160608701516001600160a01b0394851695909416937f21281f8d59117d0399dc467dbdd321538ceffe3225e80e2bd4de6f1b3355cbc7939261329d908a90838a6142fd565b6132b98a8a604001518b606001516132b48c613191565b6142fd565b6040516132ca959493929190615c17565b60405180910390a3505050565b6132df614c9f565b6133386132eb846141e9565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f7420676574436f7374206e656761746976650000000000000000008660200151610d8d565b613340614c9f565b6000815260208401516040517f3a8fdd7d0000000000000000000000000000000000000000000000000000000081526001600160a01b03891691633a8fdd7d91613393918a918a91908990600401615a69565b60206040518083038186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e3919081019061536d565b602082015290505b95945050505050565b6133fc614c9f565b61345561340884614332565b157f45786368616e67650000000000000000000000000000000000000000000000007f43616e6e6f742065786368616e676520706f73697469766500000000000000008660200151610d8d565b6134608488856130dd565b613468614c9f565b6001815260208401516040517f7d98ebac0000000000000000000000000000000000000000000000000000000081526001600160a01b038a1691637d98ebac916134bf918b9130918c918c91908b906004016159ed565b602060405180830381600087803b1580156134d957600080fd5b505af11580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613511919081019061536d565b6020820152613521868983613006565b90505b9695505050505050565b602080840151805191810151606086015160408701516001600160a01b03909416937f2e346762bf4ae4568971c30b51fcebd2138275aafcfe12d872956e9f3e1208939361357f908a90848a6142fd565b6135938a8a602001518b604001518a6142fd565b89608001516040516135aa96959493929190615c5a565b60405180910390a250505050565b602080840151805191810151604086015160608701516001600160a01b03909416937fcc3330184b6d88cad87f9e9543b4d4110a6a3eaf20164ca5252d598d0acba3f193613609908a90848a6142fd565b6135938a8a602001518b606001518a6142fd565b6001600160a01b03166000908152600791909101602052604090205460ff1690565b6001600160a01b03166000908152600691909101602052604090205460ff1690565b613669614c9f565b5081516001600160a01b031660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b602001511590565b6136e3614e9c565b604051806080016040528061370587876020015188606001516132b489613191565b815260200161372187876020015188608001516132b488613191565b815260200161373a8787604001518860600151886142fd565b81526020016137538787604001518860800151876142fd565b9052604085015180516020808801518051908201519190930151606089015160808a01519596506001600160a01b039384169593909416937f54d4cc60cf7d570631cc1a58942812cb0fc461713613400f56932040c3497d19938760006020020151886001602002015189600260200201518a600360200201518e60a001516040516137e799989796959493929190615cb6565b60405180910390a35050505050565b80518051602091820151918301516040516001600160a01b03909216927fab38cdc4a831ebe6542bf277d36b65dbc5c66a4d03ec6cf56ac38de05dc300989261383f9290615b47565b60405180910390a250565b80516001600160a01b0316600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b61388c614e69565b613894614e69565b61389c614e69565b6138a4614e69565b60006138af87611b74565b905060005b818110156139d8576138c4614c9f565b6138e78a6138d88b8563ffffffff611b7916565b518d919063ffffffff61443a16565b90506138f2816136d3565b156138fd57506139d0565b60006139286139128b8563ffffffff611b7916565b608001515160208401519063ffffffff61449f16565b9050613932614e69565b61393a6144f3565b905089156139855761398260018e01600061395b8e8863ffffffff611b7916565b51815260208082019290925260409081016000208151928301909152600501548152614515565b90505b8251156139ae576139a7613999838361454c565b88519063ffffffff613a0016565b87526139cc565b6139c96139bb83836139e7565b87519063ffffffff613a0016565b86525b5050505b6001016138b4565b50919890975095505050505050565b6000610b84838360000151670de0b6b3a7640000614561565b600082820183811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615aea565b6000600a821015613a5757506030810160f81b610cad565b5060570160f81b90565b600080610100830490506000610100840690506000816001901b868481518110613a8757fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b90859084908110613abf57fe5b60200260200101818151179150818152505050505050565b613adf614e7c565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000613b6642614583565b905090565b613b73614e7c565b613b7b614e69565b613b8c85858563ffffffff6145da16565b90506128458382613ba3888863ffffffff611bf516565b6040805160208101909152600a8a015481526146d8565b6001600160a01b039182166000908152600593909301602090815260408085209290931684525290205460ff1690565b613bf2614c9f565b50604080518082019091526000808252602082015290565b613c12614c9f565b602083015183516fffffffffffffffffffffffffffffffff9091169015613c7e57604080518082019091526001815260208481015190820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b815250915050610b87565b604080518082019091526000815283516020820190613c739084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61484216565b613cc3614c9f565b610b8483613cd084613191565b613cd8614c9f565b613ce0614c9f565b8251845115159015151415613d135783511515815260208085015190840151613d099190613a00565b6020820152610b84565b8260200151846020015110613d3c5783511515815260208085015190840151613d09919061401f565b82511515815260208084015190850151613d56919061401f565b60208201529392505050565b613d6a614c9f565b825115613de0576040518060400160405280600115158152602001613dc5612bfc670de0b6b3a764000067ffffffffffffffff1686602001516bffffffffffffffffffffffff1688602001516148429092919063ffffffff16565b6fffffffffffffffffffffffffffffffff1690529050610b87565b6040805180820190915260008152825160208581015190830191613dc591612bfc91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61484216565b600081610b876fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610d8d565b613e90614c9f565b613e98614c9f565b8251845115159015151415613ef65783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff9182169116613a00565b6fffffffffffffffffffffffffffffffff166020820152610b84565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613f5c5783511515815260208085015190840151613eda91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b82511515815260208084015190850151613f8f91612bfc916fffffffffffffffffffffffffffffffff918216911661401f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156140165760208301516fffffffffffffffffffffffffffffffff1661400657506001610b87565b5080518251151590151514610b87565b50600092915050565b6000610b8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506148ca565b60008082602001516fffffffffffffffffffffffffffffffff16118015610b87575050511590565b60006140948261409f565b80610b875750505190565b602001516fffffffffffffffffffffffffffffffff161590565b600081815260018301602052604081205480156141955783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461414f57600086600001828154811061411057fe5b906000526020600020015490508087600001848154811061412d57fe5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061415a57fe5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b87565b6000915050610b87565b60006141ab8383611c86565b6141e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b87565b506000610b87565b8051600090158015610b8757505060200151151590565b80158061421e5750826001600160a01b0316826001600160a01b0316145b1561422857610e25565b604051610e259085907f23b872dd000000000000000000000000000000000000000000000000000000009061426590879087908790602401615a41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601a81526020017f546f6b656e3a207472616e7366657246726f6d206661696c6564000000000000815250614910565b614305614ec9565b604080518082019091528281526020810161432787878763ffffffff61366116565b905295945050505050565b80516000908015610b8757505060200151151590565b80158061435d57506001600160a01b03821630145b1561436757610255565b6040516102559084907fa9059cbb00000000000000000000000000000000000000000000000000000000906143a29086908690602401615aa3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601681526020017f546f6b656e3a207472616e73666572206661696c656400000000000000000000815250614910565b614442614c9f565b61444a614c9f565b61445b85858563ffffffff61366116565b90506144668161409f565b1561447b57614473613bea565b915050612849565b614483614e7c565b614493868563ffffffff613ad716565b90506135248282613c0a565b6000826144ae57506000610b87565b828202828482816144bb57fe5b0414610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390615afa565b6144fb614e69565b506040805160208101909152670de0b6b3a7640000815290565b61451d614e69565b60408051602081019091528251819061454490670de0b6b3a764000063ffffffff613a0016565b905292915050565b6000610b8483670de0b6b3a764000084600001515b6000611e8d82614577868663ffffffff61449f16565b9063ffffffff614a0216565b600081610b8763ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610d8d565b6145e2614e69565b6145ea614c9f565b6145fa858563ffffffff611bf516565b9050614604614c9f565b61460c614c9f565b6146168386614a44565b91509150614622614e69565b60008781526001890160205260409020600401546001600160a01b031663e8177dcf6146548a8a63ffffffff61271116565b846020015186602001516040518463ffffffff1660e01b815260040161467c93929190615abe565b60206040518083038186803b15801561469457600080fd5b505afa1580156146a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506146cc91908101906152d2565b98975050505050505050565b6146e0614e7c565b6146e8614c9f565b6146f0614c9f565b6146fa8588614a44565b915091506000614708613b5b565b905060006147406147328a6040015163ffffffff168463ffffffff1661401f90919063ffffffff16565b89519063ffffffff61449f16565b9050600061474d856136d3565b1561475a5750600061478c565b61476482886139e7565b905084602001518460200151101561478c576147898185602001518760200151614561565b90505b8181111561479657fe5b60408051606081019091528a5181906147df906147da906bffffffffffffffffffffffff166147ce8188670de0b6b3a7640000614561565b9063ffffffff613a0016565b614aec565b6bffffffffffffffffffffffff908116825260208d810151920191614816916147da91166147ce8187670de0b6b3a7640000614561565b6bffffffffffffffffffffffff1681526020018463ffffffff1681525095505050505050949350505050565b600083158061484f575082155b156148665761485f600083614a02565b9050612849565b6000614878858563ffffffff61449f16565b905061284561489760016147ce6002614577888463ffffffff61401f16565b6148a7838663ffffffff614b4b16565b10156148b45760006148b7565b60015b60ff166147ce838663ffffffff614a0216565b60008184841115614908576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b505050900390565b60006060846001600160a01b03168460405161492c91906157fc565b6000604051808303816000865af19150503d8060008114614969576040519150601f19603f3d011682016040523d82523d6000602084013e61496e565b606091505b50915091508183906149ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b5080511561009f57808060200190516149c99190810190615296565b8390610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b6000610b8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614b8d565b614a4c614c9f565b614a54614c9f565b614a5c614c9f565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152614a8f614c9f565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152614abf614c9f565b614ac98387613c0a565b9050614ad3614c9f565b614add8388613c0a565b91989197509095505050505050565b600081610b876bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743936000000000000000000000084610d8d565b6000610b8483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614bde565b60008183614bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b506000838581614bd457fe5b0495945050505050565b60008183614c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b539190615ad9565b50828481614c2357fe5b06949350505050565b60405180606001604052806060815260200160608152602001600081525090565b604080516101008101825260008082526020820152908101614c6d614de0565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b6040518060a001604052806000815260200160006001600160a01b0316815260200160001515815260200160006fffffffffffffffffffffffffffffffff168152602001614d02614e69565b905290565b6040518060800160405280614d1a614de0565b8152602001614d27614c9f565b815260006020820181905260409091015290565b6040518060800160405280614d4e614de0565b8152602001614d5b614c9f565b8152602001614d68614c9f565b8152602001600081525090565b6040518060c00160405280614d88614de0565b8152602001614d95614c9f565b8152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b6040518060e00160405280614dd3614de0565b8152602001614d88614c9f565b60408051608081019091526000808252602082019081526020016000614d68565b6040518060a00160405280614e14614de0565b8152602001614e21614c9f565b8152602001614e2e614c9f565b815260200160008152602001600081525090565b6040518060600160405280614e55614c9f565b815260006020820152606060409091015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806004905b614eb3614ec9565b815260200190600190039081614eab5790505090565b6040518060400160405280614edc614c9f565b8152602001614d02614c9f565b8035610b8781615f02565b600082601f830112614f0557600080fd5b8135614f18614f1382615d58565b615d31565b81815260209384019390925082018360005b83811015614f565781358601614f408882615058565b8452506020928301929190910190600101614f2a565b5050505092915050565b600082601f830112614f7157600080fd5b8135614f7f614f1382615d58565b91508181835260208401935060208101905083856040840282011115614fa457600080fd5b60005b83811015614f565781614fba8882615206565b84525060209092019160409190910190600101614fa7565b8035610b8781615f16565b8051610b8781615f16565b600082601f830112614ff957600080fd5b8135615007614f1382615d79565b9150808252602083016020830185838301111561502357600080fd5b61502e838284615e95565b50505092915050565b8035610b8781615f1f565b8035610b8781615f2c565b8051610b8781615f2c565b6000610160828403121561506b57600080fd5b615076610100615d31565b905060006150848484615037565b825250602061509584848301615280565b60208301525060406150a984828501615134565b60408301525060c06150bd84828501615280565b60608301525060e06150d184828501615280565b6080830152506101006150e684828501614ee9565b60a0830152506101206150fb84828501615280565b60c08301525061014082013567ffffffffffffffff81111561511c57600080fd5b61512884828501614fe8565b60e08301525092915050565b60006080828403121561514657600080fd5b6151506080615d31565b9050600061515e8484614fd2565b825250602061516f84848301615042565b602083015250604061518384828501615042565b604083015250606061519784828501615280565b60608301525092915050565b6000608082840312156151b557600080fd5b6151bf6080615d31565b905060006151cd8484614fdd565b82525060206151de8484830161504d565b60208301525060406151f28482850161504d565b60408301525060606151978482850161528b565b60006040828403121561521857600080fd5b6152226040615d31565b905060006152308484614ee9565b825250602061524184848301615280565b60208301525092915050565b60006020828403121561525f57600080fd5b6152696020615d31565b90506000615277848461528b565b82525092915050565b8035610b8781615f39565b8051610b8781615f39565b6000602082840312156152a857600080fd5b6000611e8d8484614fdd565b6000608082840312156152c657600080fd5b6000611e8d84846151a3565b6000602082840312156152e457600080fd5b6000611e8d848461524d565b60008060006060848603121561530557600080fd5b60006153118686615280565b935050602084013567ffffffffffffffff81111561532e57600080fd5b61533a86828701614f60565b925050604084013567ffffffffffffffff81111561535757600080fd5b61536386828701614ef4565b9150509250925092565b60006020828403121561537f57600080fd5b6000611e8d848461528b565b6000615397838361571c565b505060a00190565b60006153ab83836157cc565b505060200190565b6153bc81615e74565b82525050565b6153bc81615dd2565b60006153d682615dc5565b6153e08185615dc9565b93506153eb83615dbf565b8060005b83811015615419578151615403888261538b565b975061540e83615dbf565b9250506001016153ef565b509495945050505050565b600061542f82615dc5565b6154398185615dc9565b935061544483615dbf565b8060005b8381101561541957815161545c888261539f565b975061546783615dbf565b925050600101615448565b6153bc81615ddd565b6153bc61548782615de2565b615e2c565b6153bc61548782615e07565b6153bc61548782615e2c565b60006154af82615dc5565b6154b98185615dc9565b93506154c9818560208601615ea1565b6154d281615ecd565b9093019392505050565b60006154e782615dc5565b6154f18185610cad565b9350615501818560208601615ea1565b9290920192915050565b6153bc81615e7f565b6000615521601b83615dc9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061555a602183615dc9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160808301906155bd8482615472565b5060208201516155d0602085018261550b565b5060408201516155e3604085018261550b565b506060820151610e2560608501826157cc565b8051608083019061560784826157b2565b506020820151610e256040850182615779565b8051606083019061562b84826157de565b50602082015161563e60208501826157de565b506040820151610e2560408501826157d5565b8051604083019061566284826153c2565b506020820151610e2560208501826157cc565b805161014083019061568784826155ac565b50602082015161569a6080850182615651565b5060408201516156ad60c0850182615651565b5060608201516156c16101008501826157cc565b506080820151610e256101208501826157cc565b80516060808452600091908401906156ed82826153cb565b915050602083015184820360208601526157078282615424565b9150506040830151611fff60408601826157cc565b805160a083019061572d84826157cc565b50602082015161574060208501826153c2565b5060408201516157536040850182615472565b50606082015161576660608501826157c3565b506080820151610e25608085018261579d565b8051604083019061578a8482615472565b506020820151610e2560208501826157c3565b80516020830190610e2584826157cc565b9052565b805160408301906156628482615472565b6153bc81615e39565b6153bc81615e2c565b6153bc81615e5a565b6153bc81615e63565b60006157f38284615498565b50602001919050565b600061284982846154dc565b600061581482866154dc565b9150615820828561548c565b6002820191506133eb82846154dc565b600061583c82896154dc565b9150615848828861548c565b60028201915061585882876154dc565b9150615864828661548c565b60028201915061587482856154dc565b9150615880828461547b565b506001019695505050505050565b600061589a828b6154dc565b91506158a6828a61548c565b6002820191506158b682896154dc565b91506158c2828861548c565b6002820191506158d282876154dc565b91506158de828661548c565b6002820191506158ee82856154dc565b91506158fa828461547b565b5060010198975050505050505050565b6000615916828d6154dc565b9150615922828c61548c565b600282019150615932828b6154dc565b915061593e828a61548c565b60028201915061594e82896154dc565b915061595a828861548c565b60028201915061596a82876154dc565b9150615976828661548c565b60028201915061598682856154dc565b9150615992828461547b565b506001019a9950505050505050505050565b60208101610b8782846153c2565b60208101610b8782846153b3565b608081016159ce82866153b3565b6159db6020830185615651565b81810360608301526133eb81846154a4565b60c081016159fb82896153c2565b615a0860208301886153c2565b615a1560408301876153c2565b615a2260608301866153c2565b615a2f60808301856157cc565b81810360a08301526146cc81846154a4565b60608101615a4f82866153c2565b615a5c60208301856153c2565b611e8d60408301846157cc565b60808101615a7782876153c2565b615a8460208301866153c2565b615a9160408301856157cc565b818103606083015261352481846154a4565b60408101615ab182856153c2565b61284960208301846157cc565b60608101615acc82866153c2565b615a5c60208301856157cc565b60208082528101610b8481846154a4565b60208082528101610b8781615514565b60208082528101610b878161554d565b60608101610b87828461561a565b6101808101615b2782866157ae565b615b346020830185615675565b8181036101608301526133eb81846156d5565b60408101615b5582856157cc565b61284960208301846153c2565b60e08101615b7082876157cc565b615b7d60208301866157cc565b615b8a60408301856155f6565b6133eb60c08301846153c2565b6101a08101615ba6828b6157cc565b615bb3602083018a6157cc565b615bc06040830189615651565b615bcd6080830188615651565b615bda60c0830187615779565b615be8610100830186615779565b615bf66101408301856157b2565b818103610180830152615c0981846154a4565b9a9950505050505050505050565b6101608101615c2682886157cc565b615c3360208301876157cc565b615c4060408301866157cc565b615c4d60608301856155f6565b61352460e08301846155f6565b6101808101615c6982896157cc565b615c7660208301886157cc565b615c8360408301876157cc565b615c9060608301866155f6565b615c9d60e08301856155f6565b615cab6101608301846153c2565b979650505050505050565b6102a08101615cc5828c6157cc565b615cd2602083018b6157cc565b615cdf604083018a6157cc565b615cec60608301896157cc565b615cf960808301886155f6565b615d076101008301876155f6565b615d156101808301866155f6565b615d236102008301856155f6565b615c096102808301846153c2565b60405181810167ffffffffffffffff81118282101715615d5057600080fd5b604052919050565b600067ffffffffffffffff821115615d6f57600080fd5b5060209081020190565b600067ffffffffffffffff821115615d9057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610b8782615e4e565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610cad81615ef5565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b8782615e8a565b6000610b8782615e2f565b6000610b8782615dd2565b82818337506000910152565b60005b83811015615ebc578181015183820152602001615ea4565b83811115610e255750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60028110615eff57fe5b50565b615f0b81615dd2565b8114615eff57600080fd5b615f0b81615ddd565b60098110615eff57600080fd5b60028110615eff57600080fd5b615f0b81615e2c56fea365627a7a72315820268731d59b01e264fb83bb253356ce98f1c943681a89c3e2d955cd82c0d7ad646c6578706572696d656e74616cf564736f6c63430005100040",
7
7
  "sourceMap": "1556:17558:55:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
8
8
  "deployedSourceMap": "1556:17558:55:-;;;;;;;;;;;;;;;;;;;;;;;;1943:685;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1943:685:55;;;;;;;;:::i;:::-;;;2117:21;:19;:21::i;:::-;2149:32;2163:8;2173:7;2149:13;:32::i;:::-;2206:29;2249:30;;:::i;:::-;2292:89;2323:5;2342:8;2364:7;2292:17;:89::i;:::-;2192:189;;;;2392:102;2417:5;2436:8;2458:7;2479:5;2392:11;:102::i;:::-;2505:116;2536:5;2555:8;2577:15;2606:5;2505:17;:116::i;:::-;1943:685;;;;;:::o;4128:91:71:-;4188:24;4201:10;4188:24;;;;;;;;;;;;;;;4128:91::o;2685:812:55:-;2842:115;2868:8;:15;2887:1;2868:20;;2902:4;2842:115;:12;:115::i;:::-;2967:113;2993:7;:14;3011:1;2993:19;;3026:4;2967:113;:12;:113::i;:::-;3096:9;3091:400;3115:8;:15;3111:1;:19;3091:400;;;3172:1;3168:5;;3151:330;3179:8;:15;3175:1;:19;3151:330;;;3219:247;3254:40;3269:8;3278:1;3269:11;;;;;;;;;;;;;;3282:8;3291:1;3282:11;;;;;;;;;;;;;;3254:14;:40::i;:::-;3253:41;3316:4;3219:247;3391:8;3400:1;3391:11;;;;;;;;;;;;;;:17;;;3430:8;3439:1;3430:11;;;;;;;;;;;;;;:18;;;3219:12;:247::i;:::-;3196:3;;3151:330;;;-1:-1:-1;3132:3:55;;3091:400;;;;2685:812;;:::o;3503:2858::-;3704:13;3731:24;;:::i;:::-;3801:16;;3870:15;;3859:27;;;;;;;;;;;;;;;;3827:29;;3859:27;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3859:27:55;;3827:59;;3896:30;;:::i;:::-;3929:24;3942:10;3929:12;:24::i;:::-;3896:57;-1:-1:-1;4042:9:55;4037:1854;4061:7;:14;4057:1;:18;4037:1854;;;4096:29;;:::i;:::-;4128:7;4136:1;4128:10;;;;;;;;;;;;;;4096:42;;4152:29;4184:3;:14;;;4152:46;;4212:33;4248:35;4272:10;4248:23;:35::i;:::-;4212:71;;4297:35;4335:36;4360:10;4335:24;:36::i;:::-;4297:74;-1:-1:-1;4449:32:55;4432:13;:49;;;;;;;;;4428:786;;4501:188;4552:3;:18;;;4535:3;:13;;;:35;;4592:4;4501:188;4670:1;4501:12;:188::i;:::-;4728:32;4711:13;:49;;;;;;;;;4707:493;;;4822:4;4784:15;4800:3;:18;;;4784:35;;;;;;;;:42;;;:35;;;;;;;;;;;:42;4707:493;;;4955:226;4994:15;5010:3;:18;;;4994:35;;;;;;;;;;;;;;4993:36;5055:4;4955:226;5141:3;:18;;;4955:12;:226::i;:::-;5260:4;5227:15;5243:3;:13;;;5227:30;;;;;;;;:37;;;:30;;;;;;;;;;;:37;5346:30;5330:12;:46;;;;;;;;;5326:555;;;5396:48;5410:5;5417;5424:3;:19;;;5396:13;:48::i;:::-;5326:555;;;5485:31;5469:12;:47;;;;;;;;;5465:416;;;5536:196;5593:3;:21;;;5570:3;:19;;;:44;;5636:4;5536:196;5713:1;5536:12;:196::i;:::-;5750:48;5764:5;5771;5778:3;:19;;;5750:13;:48::i;:::-;5816:50;5830:5;5837;5844:3;:21;;;5816:13;:50::i;:::-;-1:-1:-1;;4077:3:55;;;;;-1:-1:-1;4037:1854:55;;-1:-1:-1;4037:1854:55;;-1:-1:-1;5974:9:55;5969:305;5993:8;:15;5989:1;:19;5969:305;;;6029:34;6066:41;6095:8;6104:1;6095:11;;;;;;;;;;;;;;6066:5;:28;;:41;;;;:::i;:::-;6029:78;-1:-1:-1;6126:9:55;6121:143;6145:20;:27;6141:1;:31;6121:143;;;6197:52;6211:5;6218;6225:20;6246:1;6225:23;;;;;;;;;;;;;;6197:13;:52::i;:::-;6174:3;;6121:143;;;-1:-1:-1;;6010:3:55;;5969:305;;;-1:-1:-1;6284:28:55;:5;6306;6284:28;:21;:28;:::i;:::-;6331:15;;;;-1:-1:-1;3503:2858:55;-1:-1:-1;;;;;3503:2858:55:o;6691:1934::-;6915:9;6910:1709;6934:7;:14;6930:1;:18;6910:1709;;;6969:32;;:::i;:::-;7004:7;7012:1;7004:10;;;;;;;;;;;;;;;;;;7060:17;;7004:10;;-1:-1:-1;7028:29:55;7097:10;:40;;;;;;;;;7093:1516;;;7157:59;7166:5;7173:42;7198:8;7208:6;7173:24;:42::i;:::-;7157:8;:59::i;:::-;7093:1516;;;7267:27;7253:10;:41;;;;;;;;;7249:1360;;;7314:61;7324:5;7331:43;7357:8;7367:6;7331:25;:43::i;:::-;7314:9;:61::i;7249:1360::-;7426:27;7412:10;:41;;;;;;;;;7408:1201;;;7473:61;7483:5;7490:43;7516:8;7526:6;7490:25;:43::i;:::-;7473:9;:61::i;7408:1201::-;7585:22;7571:10;:36;;;;;;;;;7567:1042;;;7627:51;7632:5;7639:38;7660:8;7670:6;7639:20;:38::i;:::-;7627:4;:51::i;7567:1042::-;7729:23;7715:10;:37;;;;;;;;;7711:898;;;7772:53;7778:5;7785:39;7807:8;7817:6;7785:21;:39::i;:::-;7772:5;:53::i;7711:898::-;7876:24;7862:10;:38;;;;;;;;;7858:751;;;7920:55;7927:5;7934:40;7957:8;7967:6;7934:22;:40::i;:::-;7920:6;:55::i;7858:751::-;8026:28;8012:10;:42;;;;;;;;;8008:601;;;8074:23;:33;8108:5;8115:44;8142:8;8152:6;8115:26;:44::i;:::-;8161:5;8074:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8074:93:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8074:93:55;;;;8008:601;;;8218:27;8204:10;:41;;;;;;;;;8200:409;;;8356:23;:32;8389:5;8396:43;8422:8;8432:6;8396:25;:43::i;8200:409::-;8498:23;8484:10;:37;;;;;;;;;8480:129;;;8541:53;8547:5;8554:39;8576:8;8586:6;8554:21;:39::i;:::-;8541:5;:53::i;:::-;-1:-1:-1;;6950:3:55;;6910:1709;;8631:2598;8913:18;8934:21;:5;:19;:21::i;:::-;8913:42;-1:-1:-1;8970:9:55;8965:1321;8989:10;8985:1;:14;8965:1321;;;9020:16;9039:19;:5;9056:1;9039:19;:16;:19;:::i;:::-;:28;;-1:-1:-1;9085:19:55;:5;9102:1;9085:19;:16;:19;:::i;:::-;:29;;;9081:284;;;9134:216;9206:19;:5;9223:1;9206:19;:16;:19;:::i;:::-;:29;;;9168:67;;:27;:5;9186:8;9168:27;:17;:27;:::i;:::-;:34;:67;;;;9257:4;9134:216;9324:8;9134:12;:216::i;:::-;9382:23;;;;:13;;;:23;;;;;:36;;;;;;9378:898;;;9530:9;9525:737;9549:8;:15;9545:1;:19;9525:737;;;9618:19;:5;9635:1;9618:19;:16;:19;:::i;:::-;:25;;;-1:-1:-1;;;;;9597:46:55;:8;9606:1;9597:11;;;;;;;;;;;;;;:17;;;-1:-1:-1;;;;;9597:46:55;;9593:651;;9866:355;9909:63;9963:8;9909:44;9941:8;9950:1;9941:11;;;;;;;;;;;;;;9909:5;:31;;:44;;;;:::i;:::-;:53;:63;:53;:63;:::i;:::-;9908:64;10002:4;9866:355;10092:8;10101:1;10092:11;;;;;;;;;;;;;;:17;;;10139:8;10148:1;10139:11;;;;;;;;;;;;;;:18;;;10187:8;9866:12;:355::i;:::-;9566:3;;9525:737;;;;9378:898;-1:-1:-1;9001:3:55;;8965:1321;;;-1:-1:-1;10345:9:55;10340:883;10364:8;:15;10360:1;:19;10340:883;;;10400:27;;:::i;:::-;10430:8;10439:1;10430:11;;;;;;;;;;;;;;10400:41;;10531:15;10547:1;10531:18;;;;;;;;;;;;;;10526:66;;10569:8;;;10526:66;10647:19;10669:69;:5;10692:7;10701:5;10733:4;10669:69;:22;:69;:::i;:::-;10647:91;;10813:190;10843:14;10875:4;10813:190;10944:7;:13;;;10975:7;:14;;;10813:12;:190::i;:::-;11110:21;11082:24;:5;11098:7;11082:24;:15;:24;:::i;:::-;:49;;;;;;;;;11078:135;;11151:47;:5;11167:7;11176:21;11151:47;:15;:47;:::i;:::-;10340:883;;;10381:3;;10340:883;;;;8631:2598;;;;;:::o;1294:426:77:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:77;;;;1448:255;;;;;;;;;;;;;;;;;1994:191:65;2147:7;;2136;;2109:4;;-1:-1:-1;;;;;2136:18:65;;;;;;:42;;;;;2170:1;:8;;;2158:1;:8;;;:20;2136:42;2129:49;;1994:191;;;;;:::o;3529:663:77:-;3715:4;3710:476;;3829:24;3848:4;3829:18;:24::i;:::-;3879:5;3910:26;3929:6;3910:18;:26::i;:::-;3962:6;3994:19;4004:8;3994:9;:19::i;:::-;4039:5;4070:19;4080:8;4070:9;:19::i;:::-;3787:356;;;;;;;;;;;4115:6;;3787:356;;;;1453:299:68;1550:18;;:::i;:::-;1591:154;;;-1:-1:-1;1591:154:68;;;1626:19;;;;;;;;;1591:154;;;;1626:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1591:154;;;;1674:30;1693:10;1674:18;:30::i;:::-;1591:154;;;;1733:1;1591:154;;;1584:161;;1453:299;;;;:::o;7529:532:66:-;7638:12;;7683:10;:40;;;;;;;;;:97;;;-1:-1:-1;7753:27:66;7739:10;:41;;;;;;;;;7683:97;:154;;;-1:-1:-1;7810:27:66;7796:10;:41;;;;;;;;;7683:154;7666:349;;;-1:-1:-1;7869:22:66;7862:29;;7666:349;7934:23;7920:10;:37;;;;;;;;;7916:99;;;-1:-1:-1;7980:24:66;7973:31;;7916:99;-1:-1:-1;8031:23:66;7529:532;;;:::o;8067:563::-;8177:13;8237:27;8223:10;:41;;;;;;;;;:95;;;-1:-1:-1;8294:24:66;8280:10;:38;;;;;;;;;8223:95;8206:377;;;-1:-1:-1;8350:24:66;8343:31;;8206:377;8422:28;8408:10;:42;;;;;;;;;:99;;;-1:-1:-1;8480:27:66;8466:10;:41;;;;;;;;;8408:99;8391:192;;;-1:-1:-1;8539:33:66;8532:40;;8391:192;-1:-1:-1;8599:24:66;8067:563;;;:::o;1726:561:77:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;:::-;1958:280;;;;;;;;;2210:6;;1958:280;;;;1881:400;1726:561;;;;:::o;6367:318:55:-;6534:25;:5;6550:8;6534:25;:15;:25;:::i;:::-;6529:150;;6575:19;:5;6585:8;6575:19;:9;:19;:::i;:::-;6608:60;6630:8;6640:27;:5;6630:8;6640:27;:17;:27;:::i;:::-;6608:21;:60::i;9644:276:79:-;9845:13;;-1:-1:-1;;;;;9830:29:79;;;;;:14;;;:29;;;;;;;;9860:14;;;;9830:45;;;;;;;9791:16;;9830:83;;:74;;:81;:83::i;23520:2105::-;23691:5;:19;;;23668:43;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;23652:59:79;;:13;;24061:1352;24082:5;:19;;;:26;24078:1;:30;24061:1352;;;24129:11;24143:5;:19;;;24163:1;24143:22;;;;;;;;;;;;;;24129:36;;24179:1137;24186:11;;24179:1137;;24217:15;24235:35;24263:6;24235:27;:35::i;:::-;24217:53;;24288:13;24304:38;24328:1;24331:10;24304:23;:38::i;:::-;24288:54;-1:-1:-1;24360:13:79;24376:24;:5;24288:54;24376:24;:14;:24;:::i;:::-;24422:23;;;;:13;;;:23;;;;;:33;24360:40;;-1:-1:-1;24422:33:79;;;;;24418:786;;;24506:280;;;;;;;;;;;-1:-1:-1;;;;;24506:280:79;;;;;;24630:4;24506:280;;;;;;;;;;24667:27;:5;24555:8;24667:27;:17;:27;:::i;:::-;:34;24506:280;;;;;;24730:33;:5;24747:8;24757:5;24730:33;:16;:33;:::i;:::-;24506:280;;24479:13;;:24;;24493:9;;;;;24479:24;;;;;;;;;;;:307;;;;24418:786;;;24937:248;;;;;;;;;;;-1:-1:-1;;;;;24937:248:79;;;;;;-1:-1:-1;24937:248:79;;;;;;;;;;;;;;;;25129:33;:5;24986:8;25023:5;25129:33;:16;:33;:::i;:::-;24937:248;;24910:13;;:24;;24924:9;;;;;24910:24;;;;;;;;;;;:275;;;;24418:786;25268:33;25282:6;25290:10;25268:13;:33::i;:::-;25259:42;;24179:1137;;;;;;25344:5;:19;;;25333:7;:30;25329:74;;;25383:5;;;25329:74;-1:-1:-1;24110:3:79;;24061:1352;;;-1:-1:-1;25449:19:79;;;;25588:13;;:20;25423:195;;25449:30;;;;25493:4;;25423:195;;:12;:195::i;8688:381:66:-;8839:18;;:::i;:::-;8880:182;;;;;;;;8914:4;:11;;;8880:182;;;;8948:8;8957:4;:14;;;8948:24;;;;;;;;;;;;;;8880:182;;;;8994:4;:20;;;8880:182;;;;9034:4;:17;;;-1:-1:-1;;;;;8880:182:66;;;;8873:189;;8688:381;;;;:::o;11286:951:55:-;11442:12;;;;11418:49;;:5;;11456:10;11418:49;:23;:49;:::i;:::-;11504:9;;;;11478:173;;-1:-1:-1;;;;;11504:23:55;11517:10;11504:23;;:58;;;11544:4;:12;;;:18;;;-1:-1:-1;;;;;11531:31:55;:4;:9;;;-1:-1:-1;;;;;11531:31:55;;11504:58;11576:4;11478:173;11632:4;:9;;;11478:12;:173::i;:::-;11676:23;;:::i;:::-;11713:25;;:::i;:::-;11791:12;;;;11817:11;;;;11842;;11751:112;;:5;;11791:12;;11751:112;:26;:112;:::i;:::-;11662:201;;;;11874:93;11900:4;:12;;;11926:4;:11;;;11951:6;11874:5;:12;;:93;;;;;;:::i;:::-;12018:115;12051:27;12066:4;:11;;;12051:5;:14;;:27;;;;:::i;:::-;12092:4;:9;;;12115:8;12018:19;:115::i;:::-;12144:86;12175:5;12194:4;12212:8;12144:17;:86::i;12243:769::-;12401:12;;;;12377:49;;:5;;12415:10;12377:49;:23;:49;:::i;:::-;12451:23;;:::i;:::-;12488:25;;:::i;:::-;12566:12;;;;12592:11;;;;12617;;12526:112;;:5;;12566:12;;12526:112;:26;:112;:::i;:::-;12437:201;;;;12649:93;12675:4;:12;;;12701:4;:11;;;12726:6;12649:5;:12;;:93;;;;;;:::i;:::-;12793:114;12827:27;12842:4;:11;;;12827:5;:14;;:27;;;;:::i;:::-;12868:4;:7;;;12889:8;12793:20;:114::i;:::-;12918:87;12950:5;12969:4;12987:8;12918:18;:87::i;9463:405:66:-;9615:19;;:::i;:::-;9657:204;;;;;;;;9692:4;:11;;;9657:204;;;;9729:8;9738:4;:14;;;9729:24;;;;;;;;;;;;;;9657:204;;;;9779:8;9788:4;:19;;;9779:29;;;;;;;;;;;;;;9657:204;;;;9830:4;:20;;;9657:204;;;9650:211;;9463:405;;;;:::o;13018:807:55:-;13176:15;;;;13152:52;;:5;;13193:10;13152:52;:23;:52;:::i;:::-;13238:15;;;;13214:52;;:5;;13255:10;13214:52;:23;:52;:::i;:::-;13291:23;;:::i;:::-;13328:25;;:::i;:::-;13406:15;;;;13435:11;;;;13460;;13366:115;;:5;;13406:15;;13366:115;:26;:115;:::i;:::-;13277:204;;;;13492:96;13518:4;:15;;;13547:4;:11;;;13572:6;13492:5;:12;;:96;;;;;;:::i;:::-;13599:121;13637:4;:15;;;13666:4;:11;;;13691:19;:8;:17;:19::i;:::-;13599:5;;:121;;;:24;:121;:::i;:::-;13731:87;13763:5;13782:4;13800:8;13731:18;:87::i;9874:468:66:-;10021:14;;:::i;:::-;10058:277;;;;;;;;10088:4;:11;;;10058:277;;;;10122:8;10131:4;:14;;;10122:24;;;;;;;;;;;;;;10058:277;;;;10173:4;:20;;;10058:277;;;;10220:4;:22;;;10058:277;;;;10273:4;:17;;;-1:-1:-1;;;;;10058:277:66;;;;;10315:4;:9;;;10058:277;;;10051:284;;9874:468;;;;:::o;13831:1490:55:-;13979:12;;;;13955:49;;:5;;13993:10;13955:49;:23;:49;:::i;:::-;14015:18;14036:32;14051:4;:16;;;14036:5;:14;;:32;;;;:::i;:::-;14015:53;;14078:18;14099:32;14114:4;:16;;;14099:5;:14;;:32;;;;:::i;:::-;14078:53;;14156:25;;:::i;:::-;14195;;:::i;:::-;14273:12;;;;14299:16;;;;14329:11;;14233:117;;:5;;14273:12;;14233:117;:26;:117;:::i;:::-;14142:208;;;;14361:25;;:::i;:::-;14389:158;14419:4;:20;;;14453:10;14477;14501:8;14523:4;:14;;;14389:16;:158::i;:::-;14361:186;;14558:31;;:::i;:::-;14592:191;14623:4;:20;;;14657:4;:12;;;:18;;;14689:10;14713;14737:8;14759:4;:14;;;14592:17;:191::i;:::-;14558:225;;14794:171;14844:8;:14;;;14820;:20;;;:38;;14872:4;14794:171;14935:14;:20;;;14794:12;:171::i;:::-;15002:12;;;;15028:16;;;;14976:100;;:5;;15058:8;14976:100;:12;:100;:::i;:::-;15125:12;;;;15151:16;;;;15087:112;;:5;;15181:8;15087:112;:24;:112;:::i;:::-;15210:104;15237:5;15256:4;15274:8;15296;15210:13;:104::i;:::-;13831:1490;;;;;;;;:::o;15327:1108::-;15477:12;;;;15453:49;;:5;;15491:10;15453:49;:23;:49;:::i;:::-;15513:18;15534:32;15549:4;:16;;;15534:5;:14;;:32;;;;:::i;:::-;15513:53;;15576:18;15597:32;15612:4;:16;;;15597:5;:14;;:32;;;;:::i;:::-;15576:53;;15654:25;;:::i;:::-;15693;;:::i;:::-;15771:12;;;;15797:16;;;;15827:11;;15731:117;;:5;;15771:12;;15731:117;:26;:117;:::i;:::-;15640:208;;;;15859:25;;:::i;:::-;15887:191;15918:4;:20;;;15952:4;:12;;;:18;;;15984:10;16008;16032:8;16054:4;:14;;;15887:17;:191::i;:::-;16115:12;;;;16141:16;;;;15859:219;;-1:-1:-1;16089:100:55;;:5;;16115:12;16171:8;16089:100;:12;:100;:::i;:::-;16238:12;;;;16264:16;;;;16200:112;;:5;;16294:8;16200:112;:24;:112;:::i;:::-;16323:105;16351:5;16370:4;16388:8;16410;16323:14;:105::i;:::-;15327:1108;;;;;;;:::o;10825:532:66:-;10974:16;;:::i;:::-;11013:337;;;;;;;;11045:4;:11;;;11013:337;;;;11084:8;11093:4;:14;;;11084:24;;;;;;;;;;;;;;11013:337;;;;11136:8;11145:4;:19;;;11136:29;;;;;;;16441:2324:55;16593:17;;;;16569:54;;:5;;16612:10;16569:54;:23;:54;:::i;:::-;16657:17;;;;16676:15;;;;16633:59;;:5;;:59;:23;:59;:::i;:::-;16732:15;;;;16706:42;;:5;;:42;:25;:42;:::i;:::-;16702:222;;;16764:149;16794:34;:5;16817:10;16794:34;:22;:34;:::i;:::-;16846:4;16764:149;:12;:149::i;:::-;16934:28;;:::i;:::-;16991:17;;;;17022:16;;;;16965:83;;:5;;:83;:12;:83;:::i;:::-;16934:114;;17072:28;;:::i;:::-;17114:25;;:::i;:::-;17192:17;;;;17223:16;;;;17253:11;;17152:122;;:5;;17192:17;;17152:122;:26;:122;:::i;:::-;17058:216;;;;17285:37;;:::i;:::-;17337:4;:15;;;-1:-1:-1;;;;;17325:41:55;;17380:4;:16;;;17410:4;:17;;;17441:4;:17;;;17472:4;:17;;;17503:11;17528;17553:8;17575:4;:14;;;17325:274;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17325:274:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17325:274:55;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17325:274:55;;;;;;;;;17285:314;;17624:29;;:::i;:::-;17667:26;;:::i;:::-;17746:17;;;;17777;;;;17706:124;;:5;;17808:12;17706:124;:26;:124;:::i;:::-;17610:220;;;;17841:199;17867:18;:9;:16;:18::i;:::-;:39;;;;17889:17;:8;:15;:17::i;:::-;17867:74;;;-1:-1:-1;17928:13:55;;17910:14;;:31;;;;;;;17867:74;17955:4;17841:199;18015:4;:15;;;17841:12;:199::i;:::-;18118:17;;;;18149:16;;;;18092:108;;:5;;18179:11;18092:108;:12;:108;:::i;:::-;18236:17;;;;18267;;;;18210:110;;:5;;18298:12;18210:110;:12;:110;:::i;:::-;18372:128;18410:4;:17;;;18441:4;:16;;;18471:19;:8;:17;:19::i;:::-;18372:5;;:128;;;:24;:128;:::i;:::-;18510:130;18548:4;:17;;;18579:4;:17;;;18610:20;:9;:18;:20::i;18510:130::-;18651:107;18680:5;18699:4;18717:8;18739:9;18651:15;:107::i;11363:465:66:-;11516:20;;:::i;:::-;11559:262;;;;;;;;11595:4;:11;;;11559:262;;;;11634:8;11643:4;:14;;;11634:24;;;;;;;;;;;;;;11559:262;;;;11687:8;11696:4;:19;;;11687:29;;;;;;;;;;;;;;11559:262;;;;11742:4;:20;;;11559:262;;;;11788:4;:22;;;11559:262;;;11552:269;;11363:465;;;;:::o;12301:328::-;12449:15;;:::i;:::-;12487:135;;;;;;;;12519:8;12528:4;:14;;;12519:24;;;;;;;;;;;;;;12487:135;;;;12565:4;:17;;;-1:-1:-1;;;;;12487:135:66;;;;;12602:4;:9;;;12487:135;;;12480:142;;12301:328;;;;:::o;18771:340:55:-;18921:12;;18897:49;;:5;;18935:10;18897:49;:23;:49;:::i;:::-;18965:11;;;;19028:12;;19054:9;;;;;18957:116;;;;;-1:-1:-1;;;;;18957:33:55;;;;;;:116;;19004:10;;18957:116;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18957:116:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18957:116:55;;;;19084:20;19099:4;19084:14;:20::i;:::-;18771:340;;:::o;1809:167:68:-;1949:13;:20;;1809:167::o;3072:371::-;3202:17;;:::i;:::-;3269:13;;:20;3235:164;;3261:28;;;;3303:4;;3235:164;;3261:5;;3235:12;:164::i;:::-;3416:13;;:20;;3430:5;;3416:20;;;;;;;;;;;;3409:27;;3072:371;;;;:::o;7126:220:79:-;7263:21;;:::i;:::-;-1:-1:-1;7307:23:79;;;;:13;;;;:23;;;;;;;;;7300:39;;;;;;;;7307:32;;;7300:39;;;;;;;;;;;;;;;;7126:220;;;;:::o;9359:279::-;9572:13;;-1:-1:-1;;;;;9557:29:79;9509:25;9557:29;;;:14;;;;;:29;;;;;;;;9587:14;;;;9557:45;;;;;;;:74;;;9359:279::o;3174:135:70:-;3247:4;3270:27;;;:20;;;;;:27;;;;;;:32;;;3174:135::o;4198:765:77:-;4410:4;4405:552;;4524:24;4543:4;4524:18;:24::i;:::-;4574:5;4605:26;4624:6;4605:18;:26::i;:::-;4657:6;4689:19;4699:8;4689:9;:19::i;:::-;4734:5;4765:19;4775:8;4765:9;:19::i;:::-;4810:5;4841:19;4851:8;4841:9;:19::i;:::-;4482:432;;;;;;;;;;;;;4886:6;;4482:432;;;;13621:1217:79;13845:4;13869:43;:5;13904:7;13869:43;:34;:43;:::i;:::-;13865:191;;-1:-1:-1;14041:4:79;14034:11;;13865:191;14135:33;;:::i;:::-;14182;;:::i;:::-;14228:71;:5;14251:7;14260:5;14294:4;14228:71;:22;:71;:::i;:::-;14314:17;;14121:178;;-1:-1:-1;14121:178:79;-1:-1:-1;14310:64:79;;14359:4;14352:11;;;;;;14310:64;14388:16;14384:276;;;14471:33;;;:39;14450:17;;14590:13;;14621:14;;;;14420:229;;14450:60;;;;;14528:4;;14420:229;;:12;:229::i;:::-;14707:17;;14695:60;;;;;;;;;14726:16;;;14695:60;;;14670:22;;14695:60;;:11;:60::i;:::-;14794:17;;14670:85;;-1:-1:-1;14794:37:79;;14670:85;14794:37;:21;:37;:::i;:::-;14773:11;:17;;;:58;;14766:65;;;;;13621:1217;;;;;;;:::o;8372:242::-;8570:13;;-1:-1:-1;;;;;8555:29:79;8518:14;8555:29;;;:14;;;;;:29;;;;;;;;8585:14;;;;8555:45;;;;;;;:52;;;;8372:242::o;20515:229::-;20691:13;;-1:-1:-1;;;;;20676:29:79;;;;;:14;;;:29;;;;;;;;20706:14;;;;20676:45;;;;;;;:61;;20731:6;;20676:45;:61;;;20731:6;20676:61;;;;;;;;;;;;;20515:229;;;:::o;6359:966:77:-;6462:12;6537:19;6576:5;6559:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6559:23:77;;;;-1:-1:-1;49:4;6688:571:77;6709:5;;6688:571;;6960:9;;6862:3;;;;;6960:6;;6862:3;;6960:9;;;;;;;;;;;;:14;6956:293;;7015:1;7011:5;7141:22;;7148:6;-1:-1:-1;7221:13:77;;6956:293;6688:571;;;-1:-1:-1;7306:12:77;;;7316:1;7306:12;;;;;;;;;;;-1:-1:-1;7299:19:77;6359:966;-1:-1:-1;;;6359:966:77:o;8249:962::-;8521:13;;;8531:2;8521:13;;;8343:12;8521:13;;;;;;-1:-1:-1;;;;;8383:14:77;;;8343:12;;8521:13;;;21:6:-1;;104:10;8521:13:77;87:34:-1;135:17;;-1:-1;8521:13:77;8499:35;;902:2;8598:23;;8586:6;8593:1;8586:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8643:27;;8631:6;8638:1;8631:9;;;;;;;;;;;:39;;;;;;;;;;-1:-1:-1;8784:9:77;8779:402;8803:2;8799:1;:6;8779:402;;;8892:1;8888:5;;8985:23;1232:3;8990:17;;8985:4;:23::i;:::-;8964:6;8976:5;8971:2;:10;8964:18;;;;;;;;;;;:44;;;;;;;;;;;9031:1;9026;:6;;9022:10;;9123:23;1232:3;9128:1;:17;9123:4;:23::i;:::-;9102:6;9114:5;9109:2;:10;9102:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9169:1:77;9164:6;;;;;8807:3;;8779:402;;7331:912;7425:12;7457:10;7453:51;;-1:-1:-1;7483:10:77;;;;;;;;;;;;;;;;;;;7453:51;7565:5;7553:9;7604:69;7611:6;;7604:69;;7633:8;;7660:2;7655:7;;;;7604:69;;;7714:17;7744:6;7734:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7734:17:77;87:34:-1;135:17;;-1:-1;7734:17:77;-1:-1:-1;7843:5:77;;-1:-1:-1;7714:37:77;-1:-1:-1;7875:6:77;7858:357;7883:5;;7858:357;;8036:3;;8132:2;8128:1;:6;902:2;8114:21;8103:34;;8093:4;8098:1;8093:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8202:2:77;8197:7;;;;7858:357;;;-1:-1:-1;8232:4:77;7331:912;-1:-1:-1;;;;7331:912:77:o;996:146:67:-;1058:13;893:1;942:3;1102:9;:25;1101:33;1090:45;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;1090:45:67;-1:-1:-1;1083:52:67;996:146;-1:-1:-1;;996:146:67:o;1982:208:68:-;2114:4;2141:42;2153:5;:19;;;2174:8;2141:11;:42::i;2613:453::-;2883:13;;:20;2857:114;;2883:25;2922:4;2857:114;:12;:114::i;:::-;2982:42;2994:5;:19;;;3015:8;2982:11;:42::i;:::-;-1:-1:-1;3035:19:68;;:24;;3058:1;3035:24;;;2613:453::o;20112:397:79:-;20236:21;;:::i;:::-;20273:27;;:::i;:::-;20303:24;:5;20318:8;20303:24;:14;:24;:::i;:::-;20273:54;;20361:18;:16;:18::i;:::-;20341:38;;:5;:16;;;:38;;;20337:81;;;20402:5;-1:-1:-1;20395:12:79;;20337:81;20466:36;:5;20486:8;20496:5;20466:36;:19;:36;:::i;:::-;20434:23;;;;:13;;;;;:23;;;;;;;;;:68;;:29;;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20427:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20427:75:79;;20112:397;-1:-1:-1;20112:397:79:o;3921:201:71:-;4078:8;4050:65;4100:5;4050:65;;;;;;;;;;;;;;;3921:201;;:::o;4037:109:70:-;4093:16;4128:3;:11;;4121:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4037:109;;;:::o;2086:1014:67:-;2152:4;2223:3;2241:15;;;:19;2237:100;;2276:10;;2237:100;;;2323:3;2317:9;;;;;2237:100;2351:14;;;:18;2347:97;;2385:9;;2347:97;;;2431:2;2425:8;;;;;2347:97;2458:14;;;:18;2454:97;;2492:9;;2454:97;;;2538:2;2532:8;;;;;2454:97;2565:14;;;:18;2561:97;;2599:9;;2561:97;;;2645:2;2639:8;;;;;2561:97;2672:13;;;:17;2668:94;;2705:8;;2668:94;;;2750:1;2744:7;;;;;2668:94;2780:3;2776:7;;:11;2772:88;;2803:8;;2772:88;;;2848:1;2842:7;;;;;2772:88;2878:3;2874:7;;:11;2870:143;;2901:8;;2870:143;;;2946:1;2940:7;;;;;2870:143;3031:3;3027:7;;:11;3023:50;;3054:8;;3090:3;2086:1014;-1:-1:-1;;2086:1014:67:o;1148:154::-;942:3;1267:21;;;;1266:29;;1148:154::o;6920:200:79:-;7054:7;7084:23;;;:13;;;;;:23;;;;;:29;-1:-1:-1;;;;;7084:29:79;;6920:200::o;11870:496::-;12029:21;;:::i;:::-;12066:19;12101:23;;;:13;;;:23;;;;;:35;;;-1:-1:-1;;;;;12101:35:79;12147:27;;:::i;:::-;12177:22;;;;;-1:-1:-1;;;;;12177:15:79;;;;;:22;;12193:5;;12177:22;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12177:22:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12177:22:79;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12177:22:79;;;;;;;;;12235:11;;12147:52;;-1:-1:-1;12209:128:79;;12235:16;;12265:4;12209:128;12319:8;12209:12;:128::i;:::-;12354:5;-1:-1:-1;;11870:496:79;;;;;;:::o;1895:137:67:-;893:1;2014:10;;2004:21;;;1895:137::o;2293:663:77:-;2479:4;2474:476;;2593:24;2612:4;2593:18;:24::i;:::-;2643:5;2674:26;2693:6;2674:18;:26::i;:::-;2726:6;2758:19;2768:8;2758:9;:19::i;15878:495:79:-;16055:20;16102:7;:13;;;-1:-1:-1;;;;;16090:25:79;:8;-1:-1:-1;;;;;16090:25:79;;:73;;;-1:-1:-1;16131:32:79;:5;16154:8;16131:32;:22;:32;:::i;:::-;16090:135;;;-1:-1:-1;16201:13:79;;16179:46;;:5;;16216:8;16179:46;:21;:46;:::i;:::-;16055:170;;16236:130;16262:15;16291:4;16236:130;16348:8;2962:561:77;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;16522:1459:79:-;16746:16;;:::i;:::-;16764;;:::i;:::-;16796:23;;:::i;:::-;16822:31;:5;16835:7;16844:8;16822:31;:12;:31;:::i;:::-;16796:57;;16868:6;:12;;;16884:1;16868:17;:61;;;;-1:-1:-1;16903:26:79;16889:6;:10;;;:40;;;;;;;;;16868:61;16864:124;;;16953:6;16961:15;:13;:15::i;:::-;16945:32;;;;;;;16864:124;16998:27;;:::i;:::-;17028:24;:5;17043:8;17028:24;:14;:24;:::i;:::-;16998:54;;17062:23;;:::i;:::-;17088:32;17106:6;17114:5;17088:17;:32::i;:::-;17062:58;;17130:23;;:::i;:::-;17163:25;;:::i;:::-;17226:27;17203:6;:19;;;:50;;;;;;;;;17199:740;;;-1:-1:-1;17280:97:79;;;;;;;;;17314:11;;17280:97;;;;17350:12;;;;17280:97;;;;17409:27;17395:6;:10;;;:41;;;;;;;;;17391:111;;;17467:20;:8;17480:6;17467:20;:12;:20;:::i;:::-;17456:31;;17391:111;17524:46;17542:20;:6;17553:8;17542:20;:10;:20;:::i;:::-;17564:5;17524:17;:46::i;:::-;17515:55;;17199:740;;;17635:105;;;;;;;;17669:6;:11;;;17635:105;;;;;;17705:20;:6;:12;;;:18;:20::i;:::-;17635:105;;;;17626:114;-1:-1:-1;17772:26:79;17758:6;:10;;;:40;;;;;;;;;17754:106;;;17827:18;:6;17838;17827:18;:10;:18;:::i;:::-;17818:27;;17754:106;17884:44;17921:6;17884:32;17902:6;17910:5;17884:17;:32::i;:::-;:36;:44;:36;:44;:::i;:::-;17873:55;;17199:740;17957:6;;-1:-1:-1;17965:8:79;-1:-1:-1;;;;16522:1459:79;;;;;;;;:::o;20750:2061::-;20936:23;;:::i;:::-;20962:31;:5;20975:7;20984:8;20962:31;:12;:31;:::i;:::-;20936:57;;21008:28;21021:6;21029;21008:12;:28::i;:::-;21004:96;;;21083:7;;;21004:96;21136:30;;:::i;:::-;21169:27;:5;21187:8;21169:27;:17;:27;:::i;:::-;21239:11;;21136:60;;-1:-1:-1;21235:209:79;;;21284:50;:42;21313:6;:12;;;21284:42;;21292:8;:15;;;21284:24;;:28;;:42;;;;:::i;:::-;:48;:50::i;:::-;21266:68;;:15;;;:68;21235:209;;;21412:12;;;;21391:15;;21383:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;21365:68;;;;21235:209;21489:11;;21485:209;;;21534:50;:42;21563:6;:12;;;21534:42;;21542:8;:15;;;21534:24;;:28;;:42;;;;:::i;:50::-;21516:68;;:15;;;:68;21485:209;;;21662:12;;;;21641:15;;21633:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;21615:68;;;;21485:209;21708:23;:6;:21;:23::i;:::-;:62;;;;;21735:35;:6;:33;:35::i;:::-;21704:468;;;21865:13;;-1:-1:-1;;;;;21850:29:79;;;;;:14;;;:29;;;;;;;;21880:14;;;;21850:45;;;;;;;:76;;;;;;;;;;;;;;;;;;;;;;;21704:468;;;21947:35;:6;:33;:35::i;:::-;:62;;;;;21986:23;:6;:21;:23::i;:::-;21943:229;;;22100:13;;-1:-1:-1;;;;;22085:29:79;;;;;:14;;;:29;;;;;;;;22115:14;;;;22085:45;;;;;;;:76;;;;;;;;;22160:1;22085:76;;;;;;;;;;;;21943:229;22186:15;:6;:13;:15::i;:::-;:37;;;;;22207:15;:6;:13;:15::i;:::-;22206:16;22186:37;22182:486;;;22344:13;;-1:-1:-1;;;;;22329:29:79;;;;;:14;;;:29;;;;;;;;22359:14;;;;22329:45;;;;;;;:91;;:74;;22411:8;22329:91;:81;:91;:::i;:::-;;22182:486;;;22443:15;:6;:13;:15::i;:::-;22442:16;22441:37;;;;;22463:15;:6;:13;:15::i;:::-;22437:231;;;22584:13;;-1:-1:-1;;;;;22569:29:79;;;;;:14;;;:29;;;;;;;;22599:14;;;;22569:45;;;;;;;:88;;:74;;22648:8;22569:88;:78;:88;:::i;:::-;;22437:231;22678:23;;;;:13;;;;:23;;;;;;;;:43;;:32;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22746:13;;-1:-1:-1;;;;;22731:29:79;;;:14;;;:29;;;;;22761:14;;;;22731:45;;;;;;;:64;;;:54;;:64;;;;:73;;;;;;;;;;;22678:43;22731:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20750:2061:79;;;;:::o;1579:421:73:-;1716:146;1743:21;:8;:19;:21::i;:::-;1742:22;1778:4;1716:146;1838:8;:14;;;1716:12;:146::i;:::-;1873:120;1905:5;1924:4;1950;1969:8;:14;;;1873:18;:120::i;4225:467:71:-;4424:12;;;;;:18;;4456:19;;;;4489:11;;;;-1:-1:-1;;;;;4400:285:71;;;;;;4514:138;;4548:5;;4489:11;4630:8;4514:16;:138::i;:::-;4666:4;:9;;;4400:285;;;;;;;;;;;;;;;;;;4225:467;;;:::o;1185:388:73:-;1321:147;1348:21;:8;:19;:21::i;:::-;1347:22;1383:4;1321:147;1444:8;:14;;;1321:12;:147::i;:::-;1479:87;1507:5;1526:2;1542:8;:14;;;1479;:87::i;4698:468:71:-;4900:12;;;;;:18;;4932:19;;;;4965:11;;;;-1:-1:-1;;;;;4875:284:71;;;;;;4990:138;;5024:5;;4965:11;5106:8;4990:16;:138::i;5660:203:82:-;5753:10;;:::i;:::-;-1:-1:-1;5786:70:82;;;;;;;;;5811:6;;5810:7;5786:70;;;5838:7;;;;5786:70;;;;5660:203;;;:::o;22904:610:79:-;23108:17;:8;:15;:17::i;:::-;23104:54;;;23141:7;;23104:54;23167:27;;:::i;:::-;23197:24;:5;23212:8;23197:24;:14;:24;:::i;:::-;23167:54;;23231:23;;:::i;:::-;23257:31;:5;23270:7;23279:8;23257:31;:12;:31;:::i;:::-;23231:57;;23298:23;;:::i;:::-;23324:20;:6;23335:8;23324:20;:10;:20;:::i;:::-;23298:46;;23354:23;;:::i;:::-;23380:32;23398:6;23406:5;23380:17;:32::i;:::-;23354:58;-1:-1:-1;23422:85:79;:5;23448:7;23469:8;23354:58;23422:85;:12;:85;:::i;5172:693:71:-;5445:15;;;;:21;;5374:15;;;;;:21;;5409:22;;;;5480;;;;;5516:11;;;;-1:-1:-1;;;;;5349:509:71;;;;;;;;;;5409:22;5541:141;;5575:5;;5516:11;5660:8;5541:16;:141::i;:::-;5696:152;5730:5;5753:4;:15;;;5786:4;:11;;;5815:19;:8;:17;:19::i;:::-;5696:16;:152::i;:::-;5349:509;;;;;;;;;;;;;;;;;;;5172:693;;;:::o;2006:702:73:-;2239:16;;:::i;:::-;2271:153;2298:26;:13;:24;:26::i;:::-;2297:27;2338:4;2271:153;2395:13;:19;;;2271:12;:153::i;:::-;2435:23;;:::i;:::-;2482:5;2468:19;;2625;;;;2512:165;;;;;-1:-1:-1;;;;;2512:49:73;;;;;:165;;2575:11;;2600;;2625:19;2658:9;;2512:165;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2512:165:73;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2512:165:73;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2512:165:73;;;;;;;;;2497:12;;;:180;:6;-1:-1:-1;2006:702:73;;;;;;;;:::o;2714:922::-;2971:16;;:::i;:::-;3003:166;3030:32;:19;:30;:32::i;:::-;3029:33;3076:4;3003:166;3134:19;:25;;;3003:12;:166::i;:::-;3180:62;3192:11;3205:15;3222:19;3180:11;:62::i;:::-;3253:23;;:::i;:::-;3300:4;3286:18;;3488:25;;;;3329:217;;;;;-1:-1:-1;;;;;3329:42:73;;;;;:217;;3385:12;;3419:4;;3438:11;;3463;;3488:25;3527:9;;3329:217;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3329:217:73;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3329:217:73;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3329:217:73;;;;;;;;;3314:12;;;:232;3557:48;3568:11;3581:15;3314:6;3557:10;:48::i;:::-;3623:6;-1:-1:-1;2714:922:73;;;;;;;;;:::o;5871:698:71:-;6093:12;;;;;:18;;6125:19;;;;6158:16;;;;6188;;;;-1:-1:-1;;;;;6073:489:71;;;;;;6218:143;;6252:5;;6158:16;6339:8;6218:16;:143::i;:::-;6375;6409:5;6432:4;:12;;;6462:4;:16;;;6496:8;6375:16;:143::i;:::-;6532:4;:20;;;6073:489;;;;;;;;;;;;;;;;;;;;5871:698;;;;:::o;6575:701::-;6800:12;;;;;:18;;6832:19;;;;6865:16;;;;6895;;;;-1:-1:-1;;;;;6779:490:71;;;;;;6925:143;;6959:5;;6865:16;7046:8;6925:16;:143::i;:::-;7082;7116:5;7139:4;:12;;;7169:4;:16;;;7203:8;7082:16;:143::i;15057:217:79:-;-1:-1:-1;;;;;15231:36:79;15204:4;15231:36;;;:24;;;;;:36;;;;;;;;;15057:217::o;14844:207::-;-1:-1:-1;;;;;15013:31:79;14986:4;15013:31;;;:21;;;;;:31;;;;;;;;;14844:207::o;8620:279::-;8789:16;;:::i;:::-;-1:-1:-1;8843:13:79;;-1:-1:-1;;;;;8828:29:79;;;;;:14;;;:29;;;;;;;;8858:14;;;;8828:45;;;;;;;:64;;;:54;;:64;;;;;;8821:71;;;;;;;;;;;;;;;;;;;;;;;;;;8620:279;;;;;:::o;6182:137:82:-;6300:7;;;:12;;6182:137::o;7282:1306:71:-;7484:31;;:::i;:::-;:718;;;;;;;;7532:159;7566:5;7589:4;:17;;;7624:4;:16;;;7658:19;:8;:17;:19::i;7532:159::-;7484:718;;;;7705:161;7739:5;7762:4;:17;;;7797:4;:17;;;7832:20;:9;:18;:20::i;7705:161::-;7484:718;;;;7880:148;7914:5;7937:4;:17;;;7972:4;:16;;;8006:8;7880:16;:148::i;:::-;7484:718;;;;8042:150;8076:5;8099:4;:17;;;8134:4;:17;;;8169:9;8042:16;:150::i;:::-;7484:718;;8324:17;;;;:23;;8249:17;;;;;:23;;8286:24;;;;8361;;;;;8399:16;;;;8429:17;;;;7484:718;;-1:-1:-1;;;;;;8227:354:71;;;;;;;;;;;7484:718;8324:23;8460:10;;;;8484:7;8492:1;8484:10;;;;8508:7;8516:1;8508:10;;;;8532:7;8540:1;8532:10;;;;8556:4;:15;;;8227:354;;;;;;;;;;;;;;;;;;;;;;;7282:1306;;;;;:::o;8594:211::-;8712:12;;:18;;8744:19;;;;;8777:11;;;;8691:107;;-1:-1:-1;;;;;8691:107:71;;;;;;;;8777:11;8691:107;;;;;;;;;;8594:211;:::o;9926:261:79:-;10124:13;;-1:-1:-1;;;;;10109:29:79;10079:7;10109:29;;;:14;;;;;:29;;;;;;;;10139:14;;;;10109:45;;;;;;;:71;;;;;;;9926:261::o;12372:1243::-;12598:21;;:::i;:::-;12621;;:::i;:::-;12658:33;;:::i;:::-;12701;;:::i;:::-;12745:18;12766:21;:5;:19;:21::i;:::-;12745:42;-1:-1:-1;12802:9:79;12797:768;12821:10;12817:1;:14;12797:768;;;12852:24;;:::i;:::-;12879:51;12892:7;12901:19;:5;12918:1;12901:19;:16;:19;:::i;:::-;:28;12879:5;;:51;;:12;:51;:::i;:::-;12852:78;;12949:16;:7;:14;:16::i;:::-;12945:63;;;12985:8;;;12945:63;13022:18;13043:50;13061:19;:5;13078:1;13061:19;:16;:19;:::i;:::-;:25;;;:31;13043:13;;;;;:50;:17;:50;:::i;:::-;13022:71;;13107:26;;:::i;:::-;13136:13;:11;:13::i;:::-;13107:42;;13167:18;13163:140;;;13214:74;13230:13;;;:43;13244:19;:5;13261:1;13244:19;:16;:19;:::i;:::-;:28;13230:43;;;;;;;;;;;;;;13244:28;13230:43;13214:74;;;;;;;;13230:57;;13214:74;;;:15;:74::i;:::-;13205:83;;13163:140;13321:12;;13317:238;;;13373:54;13395:31;13407:10;13419:6;13395:11;:31::i;:::-;13373:17;;;:54;:21;:54;:::i;:::-;13353:74;;13317:238;;;13486:54;13508:31;13520:10;13532:6;13508:11;:31::i;:::-;13486:17;;;:54;:21;:54;:::i;:::-;13466:74;;13317:238;12797:768;;;;12833:3;;12797:768;;;-1:-1:-1;13583:11:79;;13596;;-1:-1:-1;12372:1243:79;-1:-1:-1;;;;;;12372:1243:79:o;1457:188:69:-;1570:7;1600:38;1616:6;1624:1;:7;;;1006:6;1600:15;:38::i;834:176:124:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;10183:325:77;10272:4;10340:2;10332:5;:10;10328:79;;;-1:-1:-1;902:2:77;10376:18;;10365:31;;10358:38;;10328:79;-1:-1:-1;956:2:77;10472:27;10461:40;;;10183:325::o;1577:312:67:-;1676:4;;942:3;1711:8;:24;;-1:-1:-1;1745:19:67;942:3;1767:8;:24;1745:46;;1801:8;1843:14;893:1;1836:21;;1812:7;1820:11;1812:20;;;;;;;;;;;;;;:46;1801:57;;1881:1;1875:3;:7;1868:14;;;;;1577:312;;;;:::o;1308:263::-;1517:20;;942:3;1427:24;;;1483;;;;893:1;1542:21;;;1517:7;;1427:24;;1517:20;;;;;;;;;;;:47;;;;;;;;;;;1308:263;;;;:::o;7352:214:79:-;7486:21;;:::i;:::-;-1:-1:-1;7530:23:79;;;;:13;;;;;:23;;;;;;;;;7523:36;;;;;;;7530:29;;;;7523:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:214::o;910:132:80:-;980:6;1009:26;1019:15;1009:9;:26::i;:::-;1002:33;;910:132;:::o;10749:463:79:-;10925:21;;:::i;:::-;10962:25;;:::i;:::-;10990:40;:5;11014:8;11024:5;10990:40;:23;:40;:::i;:::-;10962:68;-1:-1:-1;11048:157:79;11088:5;10962:68;11125:27;:5;11143:8;11125:27;:17;:27;:::i;:::-;11048:157;;;;;;;;;11166:29;;;11048:157;;;:26;:157::i;15280:230::-;-1:-1:-1;;;;;15471:22:79;;;15444:4;15471:22;;;:15;;;;;:22;;;;;;;;:32;;;;;;;;;;;;;15280:230::o;4381:168:82:-;4447:10;;:::i;:::-;-1:-1:-1;4480:62:82;;;;;;;;;-1:-1:-1;4480:62:82;;;;;;;4381:168;:::o;4154:567:74:-;4285:16;;:::i;:::-;4346:11;;;;4372:10;;4338:20;;;;;4368:347;;;4405:130;;;;;;;;;4439:4;4405:130;;;4501:12;;;;4405:130;;;;4468:52;;:10;;:52;;1200:6;4468:52;:32;:52;:::i;:::-;4405:130;;;4398:137;;;;;4368:347;4573:131;;;;;;;;;-1:-1:-1;4573:131:74;;4670:12;;4573:131;;;;4637:52;;:10;;:52;;1200:6;4637:52;:32;:52;:::i;4555:169:82:-;4665:10;;:::i;:::-;4698:19;4702:1;4705:11;4714:1;4705:8;:11::i;:::-;4840:10;;:::i;:::-;4866:17;;:::i;:::-;4907:6;;4897;;:16;;;;;;4893:418;;;4943:6;;4929:20;;;;4991:7;;;;;5000;;;;4978:30;;4991:7;4978:12;:30::i;:::-;4963:12;;;:45;4893:418;;;5054:1;:7;;;5043:1;:7;;;:18;5039:262;;5095:6;;5081:20;;;;5147:7;;;;;5156;;;;5134:30;;5147:7;5134:12;:30::i;5039:262::-;5217:6;;5203:20;;;;5269:7;;;;;5278;;;;5256:30;;5269:7;5256:12;:30::i;:::-;5241:12;;;:45;:12;4730:610;-1:-1:-1;;;4730:610:82:o;4810:534:74:-;4941:16;;:::i;:::-;4977:10;;4973:365;;;5010:139;;;;;;;;5044:4;5010:139;;;;;;5073:61;:53;1200:6;5073:53;;5113:5;:12;;;5073:53;;:5;:11;;;:33;;:53;;;;;:::i;:61::-;5010:139;;;;5003:146;-1:-1:-1;5003:146:74;;4973:365;5187:140;;;;;;;;;-1:-1:-1;5187:140:74;;5291:12;;5187:140;5251:11;;;;5187:140;;;;5251:61;;:53;;1200:6;;5251:53;;;:33;:53;:::i;2789:315:75:-;2881:7;2929:6;2946:128;2972:16;;;;;3002:4;2946:128;2929:6;2946:12;:128::i;2246:634:82:-;2356:10;;:::i;:::-;2382:17;;:::i;:::-;2423:6;;2413;;:16;;;;;;2409:442;;;2459:6;;2445:20;;;;2507:7;;;;;2516;;;;2494:38;;:30;;;;;;;;:12;:30::i;:38::-;2479:53;;:12;;;:53;2409:442;;;2578:1;:7;;;2567:18;;:1;:7;;;:18;;;2563:278;;2619:6;;2605:20;;;;2671:7;;;;;2680;;;;2658:38;;:30;;;;;;;;:12;:30::i;2563:278::-;2749:6;;2735:20;;;;2801:7;;;;;2810;;;;2788:38;;:30;;;;;;;;:12;:30::i;:38::-;2773:53;;:12;;;:53;:12;2246:634;-1:-1:-1;;;2246:634:82:o;2886:308::-;2999:4;3034:1;:7;;;3023:18;;:1;:7;;;:18;;;3019:147;;;3061:7;;;;:12;;3057:62;;-1:-1:-1;3100:4:82;3093:11;;3057:62;-1:-1:-1;3149:6:82;;3139;;:16;;;;;;3132:23;;3019:147;-1:-1:-1;3182:5:82;2886:308;;;;:::o;1274:134:124:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;3865:155:82:-;3964:4;4001:1;3991;:7;;;:11;;;:22;;;;-1:-1:-1;;4007:6:82;4006:7;;3865:155::o;4026:164::-;4137:4;4164:9;4171:1;4164:6;:9::i;:::-;:19;;;-1:-1:-1;;4177:6:82;;4026:164::o;3722:137::-;3840:7;;;:12;;;;3722:137::o;1656:1437:70:-;1722:4;1859:27;;;:20;;;:27;;;;;;1901:15;;1897:1190;;2342:18;;2294:14;;;;;2342:22;2383:26;;;2379:406;;2429:17;2449:3;:11;;2461:9;2449:22;;;;;;;;;;;;;;;;2429:42;;2600:9;2571:3;:11;;2583:13;2571:26;;;;;;;;;;;;;;;;;;;:38;;;;2683:31;;;:20;;;:31;;;;;:44;;;2379:406;2888:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;2980:3;:20;;:27;3001:5;2980:27;;;;;;;;;;;2973:34;;;3029:4;3022:11;;;;;;;1897:1190;3071:5;3064:12;;;;;1084:411;1147:4;1168:20;1177:3;1182:5;1168:8;:20::i;:::-;1163:326;;-1:-1:-1;27:10;;39:1;23:18;;;45:23;;1204:11:70;:23;;;;;;;;;;;;;1392:18;;1362:27;;;:20;;;:27;;;;;;:48;;;;1424:11;;1163:326;-1:-1:-1;1473:5:70;1466:12;;5869:151:82;5992:6;;5964:4;;5991:7;:22;;;;-1:-1:-1;;6002:7:82;;;:11;;;5869:151::o;1465:493:81:-;1617:11;;;:25;;;1638:4;-1:-1:-1;;;;;1632:10:81;:2;-1:-1:-1;;;;;1632:10:81;;1617:25;1613:62;;;1658:7;;1613:62;1776:85;;1724:189;;1757:5;;1799:43;;1776:85;;1844:4;;1850:2;;1854:6;;1776:85;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1776:85:81;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1776:85:81;1724:189;;;;;;;;;;;;;;;;;:19;:189::i;11303:369:71:-;11514:20;;:::i;:::-;11557:108;;;;;;;;;;;;;;;11625:29;:5;11638:7;11647:6;11625:29;:12;:29;:::i;:::-;11557:108;;11550:115;11303:369;-1:-1:-1;;;;;11303:369:71:o;6026:150:82:-;6148:6;;6121:4;;6148:21;;;;-1:-1:-1;;6158:7:82;;;:11;;;6026:150::o;1074:385:81:-;1200:11;;;:34;;-1:-1:-1;;;;;;1215:19:81;;1229:4;1215:19;1200:34;1196:71;;;1250:7;;1196:71;1329:75;;1277:175;;1310:5;;1352:39;;1329:75;;1393:2;;1397:6;;1329:75;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1329:75:81;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1329:75:81;1277:175;;;;;;;;;;;;;;;;;:19;:175::i;8905:448:79:-;9074:16;;:::i;:::-;9106:20;;:::i;:::-;9129:31;:5;9142:7;9151:8;9129:31;:12;:31;:::i;:::-;9106:54;;9175:12;:3;:10;:12::i;:::-;9171:65;;;9210:15;:13;:15::i;:::-;9203:22;;;;;9171:65;9246:27;;:::i;:::-;9276:24;:5;9291:8;9276:24;:14;:24;:::i;:::-;9246:54;;9317:29;9335:3;9340:5;9317:17;:29::i;2159:459:124:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:124;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;1153:124:69;1215:11;;:::i;:::-;-1:-1:-1;1249:21:69;;;;;;;;;1006:6;1249:21;;1153:124;:::o;1283:168::-;1376:11;;:::i;:::-;1410:34;;;;;;;;;1424:7;;1410:34;;1424:17;;1006:6;1424:17;:11;:17;:::i;:::-;1410:34;;1403:41;1283:168;-1:-1:-1;;1283:168:69:o;1651:188::-;1764:7;1794:38;1810:6;1006;1824:1;:7;;;1110:228:75;1263:7;1293:38;1319:11;1293:21;:6;1304:9;1293:21;:10;:21;:::i;:::-;:25;:38;:25;:38;:::i;3426:310::-;3517:6;3562;3579:127;3605:16;;;;;3635:4;3579:127;3562:6;3579:12;:127::i;11218:646:79:-;11398:20;;:::i;:::-;11434:30;;:::i;:::-;11467:27;:5;11485:8;11467:27;:17;:27;:::i;:::-;11434:60;;11518:26;;:::i;:::-;11558;;:::i;:::-;11597:39;11620:8;11630:5;11597:22;:39::i;:::-;11504:132;;;;11647:25;;:::i;:::-;11675:23;;;;:13;;;:23;;;;;:38;;;-1:-1:-1;;;;;11675:38:79;:54;11743:24;11675:5;11689:8;11743:24;:14;:24;:::i;:::-;11781:9;:15;;;11810:9;:15;;;11675:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11675:160:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11675:160:79;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11675:160:79;;;;;;;;;11647:188;11218:646;-1:-1:-1;;;;;;;;11218:646:79:o;2227:1610:74:-;2443:12;;:::i;:::-;2485:26;;:::i;:::-;2525;;:::i;:::-;2564:30;2578:8;2588:5;2564:13;:30::i;:::-;2471:123;;;;2652:18;2673;:16;:18::i;:::-;2652:39;;2701:22;2726:58;2741:42;2766:5;:16;;;2741:42;;2749:11;2741:20;;:24;;:42;;;;:::i;:::-;2726:10;;;:58;:14;:58;:::i;:::-;2701:83;;2842:22;2878:23;2891:9;2878:12;:23::i;:::-;2874:639;;;-1:-1:-1;2934:1:74;2874:639;;;2983:41;2995:14;3011:12;2983:11;:41::i;:::-;2966:58;;3060:9;:15;;;3042:9;:15;;;:33;3038:465;;;3423:65;3439:14;3455:9;:15;;;3472:9;:15;;;3423;:65::i;:::-;3406:82;;3038:465;3547:14;3529;:32;;3522:40;;;;3580:250;;;;;;;;;3664:12;;3580:250;;3608:76;;:69;;;;:51;:69;3638:14;1200:6;3608:15;:51::i;:::-;:55;:69;:55;:69;:::i;:::-;:74;:76::i;:::-;3580:250;;;;;;;3762:12;;;;3580:250;;;3706:76;;:69;;;:51;:69;3736:14;1200:6;3706:15;:51::i;:76::-;3580:250;;;;;;3808:11;3580:250;;;;;3573:257;;;;;;;2227:1610;;;;;;:::o;2059:724:75:-;2223:7;2250:11;;;:29;;-1:-1:-1;2265:14:75;;2250:29;2246:151;;;2358:28;2371:1;2374:11;2358:12;:28::i;:::-;2351:35;;;;2246:151;2406:11;2420:21;:6;2431:9;2420:21;:10;:21;:::i;:::-;2406:35;-1:-1:-1;2680:96:75;2735:32;2765:1;2735:25;2758:1;2735:18;:11;2765:1;2735:18;:15;:18;:::i;:32::-;2708:23;:6;2719:11;2708:23;:10;:23;:::i;:::-;:59;;:67;;2774:1;2708:67;;;2770:1;2708:67;2680:96;;:23;:6;2691:11;2680:23;:10;:23;:::i;1732:187:124:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:124;;;1732:187::o;2016:897:81:-;2669:12;2683:23;2710:5;-1:-1:-1;;;;;2710:10:81;2721:4;2710:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2668:58:81;;;;2744:7;2753:5;2736:23;;;;;;;;;;;;;;;;-1:-1:-1;2774:17:81;;:21;2770:137;;2869:10;2858:30;;;;;;;;;;;;;;2890:5;2850:46;;;;;;;;;;;;;;;3073:130:124;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;5487:601:74:-;5631:16;;:::i;:::-;5649;;:::i;:::-;5681:26;;:::i;:::-;-1:-1:-1;5710:81:74;;;;;;;;;5740:4;5710:81;;;5765:15;;;;5710:81;;;;;;5801:26;;:::i;:::-;-1:-1:-1;5830:82:74;;;;;;;;;-1:-1:-1;5830:82:74;;5886:15;;5830:82;;;;;;5922:26;;:::i;:::-;5951;5960:9;5971:5;5951:8;:26::i;:::-;5922:55;;5987:26;;:::i;:::-;6016;6025:9;6036:5;6016:8;:26::i;:::-;6060:9;;;;-1:-1:-1;5487:601:74;;-1:-1:-1;;;;;;5487:601:74:o;3110:310:75:-;3201:6;3246;3263:127;3289:16;;;;;3319:4;3263:127;3246:6;3263:12;:127::i;4500:128:124:-;4558:7;4584:37;4588:1;4591;4584:37;;;;;;;;;;;;;;;;;:3;:37::i;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:124:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;;;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:124:o;1556:17558:55:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1556:17558:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1556:17558:55;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1556:17558:55;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1556:17558:55;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1556:17558:55;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;1556:17558:55;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1556:17558:55;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5:130:-1:-;72:20;;97:33;72:20;97:33;;178:753;;320:3;313:4;305:6;301:17;297:27;287:2;;338:1;335;328:12;287:2;375:6;362:20;397:105;412:89;494:6;412:89;;;397:105;;;530:21;;;574:4;562:17;;;;388:114;;-1:-1;587:14;;562:17;682:1;667:258;692:6;689:1;686:13;667:258;;;775:3;762:17;754:6;750:30;799:62;857:3;845:10;799:62;;;787:75;;-1:-1;885:4;876:14;;;;904;;;;;714:1;707:9;667:258;;;671:14;280:651;;;;;;;;969:764;;1105:3;1098:4;1090:6;1086:17;1082:27;1072:2;;1123:1;1120;1113:12;1072:2;1160:6;1147:20;1182:99;1197:83;1273:6;1197:83;;1182:99;1173:108;;1298:5;1323:6;1316:5;1309:21;1353:4;1345:6;1341:17;1331:27;;1375:4;1370:3;1366:14;1359:21;;1428:6;1475:3;1467:4;1459:6;1455:17;1450:3;1446:27;1443:36;1440:2;;;1492:1;1489;1482:12;1440:2;1517:1;1502:225;1527:6;1524:1;1521:13;1502:225;;;1585:3;1607:56;1659:3;1647:10;1607:56;;;1595:69;;-1:-1;1687:4;1678:14;;;;1715:4;1706:14;;;;;1549:1;1542:9;1502:225;;1741:124;1805:20;;1830:30;1805:20;1830:30;;1872:128;1947:13;;1965:30;1947:13;1965:30;;2008:432;;2105:3;2098:4;2090:6;2086:17;2082:27;2072:2;;2123:1;2120;2113:12;2072:2;2160:6;2147:20;2182:60;2197:44;2234:6;2197:44;;2182:60;2173:69;;2262:6;2255:5;2248:21;2298:4;2290:6;2286:17;2331:4;2324:5;2320:16;2366:3;2357:6;2352:3;2348:16;2345:25;2342:2;;;2383:1;2380;2373:12;2342:2;2393:41;2427:6;2422:3;2417;2393:41;;;2065:375;;;;;;;;2448:162;2531:20;;2556:49;2531:20;2556:49;;2617:176;2707:20;;2732:56;2707:20;2732:56;;2800:180;2901:13;;2919:56;2901:13;2919:56;;3377:1528;;3491:6;3479:9;3474:3;3470:19;3466:32;3463:2;;;3511:1;3508;3501:12;3463:2;3529:22;3544:6;3529:22;;;3520:31;-1:-1;3607:1;3639:65;3700:3;3680:9;3639:65;;;3614:91;;-1:-1;3771:2;3804:49;3849:3;3825:22;;;3804:49;;;3797:4;3790:5;3786:16;3779:75;3726:139;3917:2;3950:75;4021:3;4012:6;4001:9;3997:22;3950:75;;;3943:4;3936:5;3932:16;3925:101;3875:162;4098:3;4132:49;4177:3;4168:6;4157:9;4153:22;4132:49;;;4125:4;4118:5;4114:16;4107:75;4047:146;4256:3;4290:49;4335:3;4326:6;4315:9;4311:22;4290:49;;;4283:4;4276:5;4272:16;4265:75;4203:148;4409:3;4443:49;4488:3;4479:6;4468:9;4464:22;4443:49;;;4436:4;4429:5;4425:16;4418:75;4361:143;4564:3;4598:49;4643:3;4634:6;4623:9;4619:22;4598:49;;;4591:4;4584:5;4580:16;4573:75;4514:145;4737:3;4726:9;4722:19;4709:33;4762:18;4754:6;4751:30;4748:2;;;4794:1;4791;4784:12;4748:2;4829:54;4879:3;4870:6;4859:9;4855:22;4829:54;;;4822:4;4815:5;4811:16;4804:80;4669:226;3457:1448;;;;;4943:804;;5058:4;5046:9;5041:3;5037:19;5033:30;5030:2;;;5076:1;5073;5066:12;5030:2;5094:20;5109:4;5094:20;;;5085:29;-1:-1;5164:1;5196:46;5238:3;5218:9;5196:46;;;5171:72;;-1:-1;5312:2;5345:72;5413:3;5389:22;;;5345:72;;;5338:4;5331:5;5327:16;5320:98;5264:165;5478:2;5511:69;5576:3;5567:6;5556:9;5552:22;5511:69;;;5504:4;5497:5;5493:16;5486:95;5439:153;5643:2;5676:49;5721:3;5712:6;5701:9;5697:22;5676:49;;;5669:4;5662:5;5658:16;5651:75;5602:135;5024:723;;;;;5785:863;;5915:4;5903:9;5898:3;5894:19;5890:30;5887:2;;;5933:1;5930;5923:12;5887:2;5951:20;5966:4;5951:20;;;5942:29;-1:-1;6021:1;6053:57;6106:3;6086:9;6053:57;;;6028:83;;-1:-1;6180:2;6213:83;6292:3;6268:22;;;6213:83;;;6206:4;6199:5;6195:16;6188:109;6132:176;6357:2;6390:80;6466:3;6457:6;6446:9;6442:22;6390:80;;;6383:4;6376:5;6372:16;6365:106;6318:164;6533:2;6566:60;6622:3;6613:6;6602:9;6598:22;6566:60;;6681:464;;6789:4;6777:9;6772:3;6768:19;6764:30;6761:2;;;6807:1;6804;6797:12;6761:2;6825:20;6840:4;6825:20;;;6816:29;-1:-1;6896:1;6928:49;6973:3;6953:9;6928:49;;;6903:75;;-1:-1;7041:2;7074:49;7119:3;7095:22;;;7074:49;;;7067:4;7060:5;7056:16;7049:75;6999:136;6755:390;;;;;7180:345;;7304:4;7292:9;7287:3;7283:19;7279:30;7276:2;;;7322:1;7319;7312:12;7276:2;7340:20;7355:4;7340:20;;;7331:29;-1:-1;7411:1;7443:60;7499:3;7479:9;7443:60;;;7418:86;;-1:-1;7429:5;7270:255;-1:-1;;7270:255;7910:180;8002:20;;8027:58;8002:20;8027:58;;8234:134;8312:13;;8330:33;8312:13;8330:33;;8375:257;;8487:2;8475:9;8466:7;8462:23;8458:32;8455:2;;;8503:1;8500;8493:12;8455:2;8538:1;8555:61;8608:7;8588:9;8555:61;;8639:324;;8784:3;8772:9;8763:7;8759:23;8755:33;8752:2;;;8801:1;8798;8791:12;8752:2;8836:1;8853:94;8939:7;8919:9;8853:94;;8970:311;;9109:2;9097:9;9088:7;9084:23;9080:32;9077:2;;;9125:1;9122;9115:12;9077:2;9160:1;9177:88;9257:7;9237:9;9177:88;;9604:901;;;;9861:2;9849:9;9840:7;9836:23;9832:32;9829:2;;;9877:1;9874;9867:12;9829:2;9912:1;9929:78;9999:7;9979:9;9929:78;;;9919:88;;9891:122;10072:2;10061:9;10057:18;10044:32;10096:18;10088:6;10085:30;10082:2;;;10128:1;10125;10118:12;10082:2;10148:97;10237:7;10228:6;10217:9;10213:22;10148:97;;;10138:107;;10023:228;10310:2;10299:9;10295:18;10282:32;10334:18;10326:6;10323:30;10320:2;;;10366:1;10363;10356:12;10320:2;10386:103;10481:7;10472:6;10461:9;10457:22;10386:103;;;10376:113;;10261:234;9823:682;;;;;;10512:263;;10627:2;10615:9;10606:7;10602:23;10598:32;10595:2;;;10643:1;10640;10633:12;10595:2;10678:1;10695:64;10751:7;10731:9;10695:64;;10783:293;;10928:108;11032:3;11024:6;10928:108;;;-1:-1;;11065:4;11056:14;;10921:155;11085:189;;11180:54;11230:3;11222:6;11180:54;;;-1:-1;;11263:4;11254:14;;11173:101;11282:142;11373:45;11412:5;11373:45;;;11368:3;11361:58;11355:69;;;11431:103;11504:24;11522:5;11504:24;;11842:878;;12031:75;12100:5;12031:75;;;12119:109;12221:6;12216:3;12119:109;;;12112:116;;12249:77;12320:5;12249:77;;;12346:7;12374:1;12359:339;12384:6;12381:1;12378:13;12359:339;;;12451:6;12445:13;12472:121;12589:3;12574:13;12472:121;;;12465:128;;12610:81;12684:6;12610:81;;;12600:91;-1:-1;;12406:1;12399:9;12359:339;;;-1:-1;12711:3;;12010:710;-1:-1;;;;;12010:710;12759:678;;12898:50;12942:5;12898:50;;;12961:84;13038:6;13033:3;12961:84;;;12954:91;;13066:52;13112:5;13066:52;;;13138:7;13166:1;13151:264;13176:6;13173:1;13170:13;13151:264;;;13243:6;13237:13;13264:71;13331:3;13316:13;13264:71;;;13257:78;;13352:56;13401:6;13352:56;;;13342:66;-1:-1;;13198:1;13191:9;13151:264;;13445:94;13512:21;13527:5;13512:21;;13655:148;13754:43;13773:23;13790:5;13773:23;;;13754:43;;13810:148;13909:43;13928:23;13945:5;13928:23;;13965:152;14066:45;14086:24;14104:5;14086:24;;14124:343;;14234:38;14266:5;14234:38;;;14284:70;14347:6;14342:3;14284:70;;;14277:77;;14359:52;14404:6;14399:3;14392:4;14385:5;14381:16;14359:52;;;14432:29;14454:6;14432:29;;;14423:39;;;;14214:253;-1:-1;;;14214:253;14474:356;;14602:38;14634:5;14602:38;;;14652:88;14733:6;14728:3;14652:88;;;14645:95;;14745:52;14790:6;14785:3;14778:4;14771:5;14767:16;14745:52;;;14809:16;;;;;14582:248;-1:-1;;14582:248;15179:166;15281:58;15333:5;15281:58;;15874:327;;16034:67;16098:2;16093:3;16034:67;;;16134:29;16114:50;;16192:2;16183:12;;16020:181;-1:-1;;16020:181;16210:370;;16370:67;16434:2;16429:3;16370:67;;;16470:34;16450:55;;16539:3;16534:2;16525:12;;16518:25;16571:2;16562:12;;16356:224;-1:-1;;16356:224;16647:861;16860:23;;16794:4;16785:14;;;16889:65;16789:3;16860:23;16889:65;;;16814:146;17041:4;17034:5;17030:16;17024:23;17053:92;17139:4;17134:3;17130:14;17116:12;17053:92;;;16970:181;17223:4;17216:5;17212:16;17206:23;17235:89;17318:4;17313:3;17309:14;17295:12;17235:89;;;17161:169;17404:4;17397:5;17393:16;17387:23;17416:71;17481:4;17476:3;17472:14;17458:12;17416:71;;17580:576;17807:23;;17737:4;17728:14;;;17836:103;17732:3;17807:23;17836:103;;;17757:188;18020:4;18013:5;18009:16;18003:23;18032:103;18129:4;18124:3;18120:14;18106:12;18032:103;;18860:632;19069:23;;19001:4;18992:14;;;19098:61;18996:3;19069:23;19098:61;;;19021:144;19240:4;19233:5;19229:16;19223:23;19252:61;19307:4;19302:3;19298:14;19284:12;19252:61;;;19175:144;19398:4;19391:5;19387:16;19381:23;19410:61;19465:4;19460:3;19456:14;19442:12;19410:61;;19548:471;19750:23;;19683:4;19674:14;;;19779:63;19678:3;19750:23;19779:63;;;19703:145;19923:4;19916:5;19912:16;19906:23;19935:63;19992:4;19987:3;19983:14;19969:12;19935:63;;20634:1177;20869:23;;20799:6;20790:16;;;20898:127;20794:3;20869:23;20898:127;;;20821:210;21112:4;21105:5;21101:16;21095:23;21124:113;21231:4;21226:3;21222:14;21208:12;21124:113;;;21041:202;21325:4;21318:5;21314:16;21308:23;21337:113;21444:4;21439:3;21435:14;21421:12;21337:113;;;21253:203;21535:4;21528:5;21524:16;21518:23;21547:73;21612:6;21607:3;21603:16;21589:12;21547:73;;;21466:160;21705:4;21698:5;21694:16;21688:23;21717:73;21782:6;21777:3;21773:16;21759:12;21717:73;;21877:966;22115:23;;22046:4;22151:38;;;21877:966;;22037:14;;;;22204:157;22037:14;22115:23;22204:157;;;22196:165;;22066:307;22455:4;22448:5;22444:16;22438:23;22507:3;22501:4;22497:14;22490:4;22485:3;22481:14;22474:38;22527:107;22629:4;22615:12;22527:107;;;22519:115;;22383:263;22728:4;22721:5;22717:16;22711:23;22740:71;22805:4;22800:3;22796:14;22782:12;22740:71;;22907:1034;23122:23;;23052:4;23043:14;;;23151:71;23047:3;23122:23;23151:71;;;23072:156;23302:4;23295:5;23291:16;23285:23;23314:71;23379:4;23374:3;23370:14;23356:12;23314:71;;;23238:153;23469:4;23462:5;23458:16;23452:23;23481:65;23540:4;23535:3;23531:14;23517:12;23481:65;;;23401:151;23630:4;23623:5;23619:16;23613:23;23642:71;23707:4;23702:3;23698:14;23684:12;23642:71;;;23562:157;23793:4;23786:5;23782:16;23776:23;23805:115;23914:4;23909:3;23905:14;23891:12;23805:115;;23991:465;24194:23;;24128:4;24119:14;;;24223:57;24123:3;24194:23;24223:57;;;24148:138;24360:4;24353:5;24349:16;24343:23;24372:63;24429:4;24424:3;24420:14;24406:12;24372:63;;25017:323;25219:23;;25152:4;25143:14;;;25248:71;25147:3;25219:23;25248:71;;25347:127;25451:18;;25445:29;26770:465;26973:23;;26907:4;26898:14;;;27002:57;26902:3;26973:23;27002:57;;27743:103;27816:24;27834:5;27816:24;;27971:103;28044:24;28062:5;28044:24;;28319:100;28390:23;28407:5;28390:23;;28426:100;28497:23;28514:5;28497:23;;28533:244;;28652:75;28723:3;28714:6;28652:75;;;-1:-1;28749:2;28740:12;;28640:137;-1:-1;28640:137;28784:262;;28928:93;29017:3;29008:6;28928:93;;29053:553;;29269:93;29358:3;29349:6;29269:93;;;29262:100;;29373:73;29442:3;29433:6;29373:73;;;29468:1;29463:3;29459:11;29452:18;;29488:93;29577:3;29568:6;29488:93;;29613:978;;29927:93;30016:3;30007:6;29927:93;;;29920:100;;30031:73;30100:3;30091:6;30031:73;;;30126:1;30121:3;30117:11;30110:18;;30146:93;30235:3;30226:6;30146:93;;;30139:100;;30250:73;30319:3;30310:6;30250:73;;;30345:1;30340:3;30336:11;30329:18;;30365:93;30454:3;30445:6;30365:93;;;30358:100;;30469:73;30538:3;30529:6;30469:73;;;-1:-1;30564:1;30555:11;;29908:683;-1:-1;;;;;;29908:683;30598:1269;;30984:93;31073:3;31064:6;30984:93;;;30977:100;;31088:73;31157:3;31148:6;31088:73;;;31183:1;31178:3;31174:11;31167:18;;31203:93;31292:3;31283:6;31203:93;;;31196:100;;31307:73;31376:3;31367:6;31307:73;;;31402:1;31397:3;31393:11;31386:18;;31422:93;31511:3;31502:6;31422:93;;;31415:100;;31526:73;31595:3;31586:6;31526:73;;;31621:1;31616:3;31612:11;31605:18;;31641:93;31730:3;31721:6;31641:93;;;31634:100;;31745:73;31814:3;31805:6;31745:73;;;-1:-1;31840:1;31831:11;;30965:902;-1:-1;;;;;;;;30965:902;31874:1560;;32332:93;32421:3;32412:6;32332:93;;;32325:100;;32436:73;32505:3;32496:6;32436:73;;;32531:1;32526:3;32522:11;32515:18;;32551:93;32640:3;32631:6;32551:93;;;32544:100;;32655:73;32724:3;32715:6;32655:73;;;32750:1;32745:3;32741:11;32734:18;;32770:93;32859:3;32850:6;32770:93;;;32763:100;;32874:73;32943:3;32934:6;32874:73;;;32969:1;32964:3;32960:11;32953:18;;32989:93;33078:3;33069:6;32989:93;;;32982:100;;33093:73;33162:3;33153:6;33093:73;;;33188:1;33183:3;33179:11;33172:18;;33208:93;33297:3;33288:6;33208:93;;;33201:100;;33312:73;33381:3;33372:6;33312:73;;;-1:-1;33407:1;33398:11;;32313:1121;-1:-1;;;;;;;;;;32313:1121;33441:213;33559:2;33544:18;;33573:71;33548:9;33617:6;33573:71;;33661:229;33787:2;33772:18;;33801:79;33776:9;33853:6;33801:79;;33897:612;34135:3;34120:19;;34150:79;34124:9;34202:6;34150:79;;;34240:114;34350:2;34339:9;34335:18;34326:6;34240:114;;;34402:9;34396:4;34392:20;34387:2;34376:9;34372:18;34365:48;34427:72;34494:4;34485:6;34427:72;;34516:855;34792:3;34777:19;;34807:71;34781:9;34851:6;34807:71;;;34889:72;34957:2;34946:9;34942:18;34933:6;34889:72;;;34972;35040:2;35029:9;35025:18;35016:6;34972:72;;;35055;35123:2;35112:9;35108:18;35099:6;35055:72;;;35138:73;35206:3;35195:9;35191:19;35182:6;35138:73;;;35260:9;35254:4;35250:20;35244:3;35233:9;35229:19;35222:49;35285:76;35356:4;35347:6;35285:76;;35378:435;35552:2;35537:18;;35566:71;35541:9;35610:6;35566:71;;;35648:72;35716:2;35705:9;35701:18;35692:6;35648:72;;;35731;35799:2;35788:9;35784:18;35775:6;35731:72;;35820:631;36040:3;36025:19;;36055:71;36029:9;36099:6;36055:71;;;36137:72;36205:2;36194:9;36190:18;36181:6;36137:72;;;36220;36288:2;36277:9;36273:18;36264:6;36220:72;;;36340:9;36334:4;36330:20;36325:2;36314:9;36310:18;36303:48;36365:76;36436:4;36427:6;36365:76;;36458:324;36604:2;36589:18;;36618:71;36593:9;36662:6;36618:71;;;36700:72;36768:2;36757:9;36753:18;36744:6;36700:72;;36789:435;36963:2;36948:18;;36977:71;36952:9;37021:6;36977:71;;;37059:72;37127:2;37116:9;37112:18;37103:6;37059:72;;37231:301;37369:2;37383:47;;;37354:18;;37444:78;37354:18;37508:6;37444:78;;37539:407;37730:2;37744:47;;;37715:18;;37805:131;37715:18;37805:131;;37953:407;38144:2;38158:47;;;38129:18;;38219:131;38129:18;38219:131;;38367:309;38533:2;38518:18;;38547:119;38522:9;38639:6;38547:119;;38683:815;39014:3;38999:19;;39029:104;39003:9;39106:6;39029:104;;;39144:144;39284:2;39273:9;39269:18;39260:6;39144:144;;;39337:9;39331:4;39327:20;39321:3;39310:9;39306:19;39299:49;39362:126;39483:4;39474:6;39362:126;;40323:324;40469:2;40454:18;;40483:71;40458:9;40527:6;40483:71;;;40565:72;40633:2;40622:9;40618:18;40609:6;40565:72;;40654:676;40920:3;40905:19;;40935:71;40909:9;40979:6;40935:71;;;41017:72;41085:2;41074:9;41070:18;41061:6;41017:72;;;41100:136;41232:2;41221:9;41217:18;41208:6;41100:136;;;41247:73;41315:3;41304:9;41300:19;41291:6;41247:73;;41337:1504;41881:3;41866:19;;41896:71;41870:9;41940:6;41896:71;;;41978:72;42046:2;42035:9;42031:18;42022:6;41978:72;;;42061:114;42171:2;42160:9;42156:18;42147:6;42061:114;;;42186:115;42296:3;42285:9;42281:19;42272:6;42186:115;;;42312:117;42424:3;42413:9;42409:19;42400:6;42312:117;;;42440;42552:3;42541:9;42537:19;42528:6;42440:117;;;42568;42680:3;42669:9;42665:19;42656:6;42568:117;;;42734:9;42728:4;42724:20;42718:3;42707:9;42703:19;42696:49;42759:72;42826:4;42817:6;42759:72;;;42751:80;41852:989;-1:-1;;;;;;;;;;41852:989;42848:915;43206:3;43191:19;;43221:71;43195:9;43265:6;43221:71;;;43303:72;43371:2;43360:9;43356:18;43347:6;43303:72;;;43386;43454:2;43443:9;43439:18;43430:6;43386:72;;;43469:136;43601:2;43590:9;43586:18;43577:6;43469:136;;;43616:137;43748:3;43737:9;43733:19;43724:6;43616:137;;43770:1027;44156:3;44141:19;;44171:71;44145:9;44215:6;44171:71;;;44253:72;44321:2;44310:9;44306:18;44297:6;44253:72;;;44336;44404:2;44393:9;44389:18;44380:6;44336:72;;;44419:136;44551:2;44540:9;44536:18;44527:6;44419:136;;;44566:137;44698:3;44687:9;44683:19;44674:6;44566:137;;;44714:73;44782:3;44771:9;44767:19;44758:6;44714:73;;;44127:670;;;;;;;;;;44804:1587;45386:3;45371:19;;45401:71;45375:9;45445:6;45401:71;;;45483:72;45551:2;45540:9;45536:18;45527:6;45483:72;;;45566;45634:2;45623:9;45619:18;45610:6;45566:72;;;45649;45717:2;45706:9;45702:18;45693:6;45649:72;;;45732:133;45860:3;45849:9;45845:19;45836:6;45732:133;;;45876;46004:3;45993:9;45989:19;45980:6;45876:133;;;46020;46148:3;46137:9;46133:19;46124:6;46020:133;;;46164;46292:3;46281:9;46277:19;46268:6;46164:133;;;46308:73;46376:3;46365:9;46361:19;46352:6;46308:73;;46398:256;46460:2;46454:9;46486:17;;;46561:18;46546:34;;46582:22;;;46543:62;46540:2;;;46618:1;46615;46608:12;46540:2;46634;46627:22;46438:216;;-1:-1;46438:216;46661:329;;46845:18;46837:6;46834:30;46831:2;;;46877:1;46874;46867:12;46831:2;-1:-1;46912:4;46900:17;;;46965:15;;46768:222;47327:317;;47466:18;47458:6;47455:30;47452:2;;;47498:1;47495;47488:12;47452:2;-1:-1;47629:4;47565;47542:17;;;;47561:9;47538:33;47619:15;;47389:255;47651:172;47796:4;47787:14;;47744:79;47984:158;48108:12;;48079:63;48918:201;49059:19;;;49108:4;49099:14;;49052:67;49808:91;;49870:24;49888:5;49870:24;;49906:85;49972:13;49965:21;;49948:43;49998:144;50070:66;50059:78;;50042:100;50149:144;50221:66;50210:78;;50193:100;50300:72;50362:5;50345:27;50379:152;50464:5;50470:56;50464:5;50470:56;;50795:113;50868:34;50857:46;;50840:68;50915:121;-1:-1;;;;;50977:54;;50960:76;51122:88;51194:10;51183:22;;51166:44;51217:104;51289:26;51278:38;;51261:60;51328:129;;51415:37;51446:5;51415:37;;51464:152;;51564:47;51605:5;51564:47;;51776:121;;51855:37;51886:5;51855:37;;52020:145;52101:6;52096:3;52091;52078:30;-1:-1;52157:1;52139:16;;52132:27;52071:94;52174:268;52239:1;52246:101;52260:6;52257:1;52254:13;52246:101;;;52327:11;;;52321:18;52308:11;;;52301:39;52282:2;52275:10;52246:101;;;52362:6;52359:1;52356:13;52353:2;;;-1:-1;;52427:1;52409:16;;52402:27;52223:219;52691:97;52779:2;52759:14;52775:7;52755:28;;52739:49;52796:114;52888:1;52881:5;52878:12;52868:2;;52894:9;52868:2;52862:48;;53035:117;53104:24;53122:5;53104:24;;;53097:5;53094:35;53084:2;;53143:1;53140;53133:12;53159:111;53225:21;53240:5;53225:21;;53277:110;53362:1;53355:5;53352:12;53342:2;;53378:1;53375;53368:12;53394:117;53486:1;53479:5;53476:12;53466:2;;53502:1;53499;53492:12;53639:167;53733:49;53776:5;53733:49;",
9
9
  "source": "/*\n\n Copyright 2019 dYdX Trading Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { IAutoTrader } from \"../interfaces/IAutoTrader.sol\";\nimport { ICallee } from \"../interfaces/ICallee.sol\";\nimport { Account } from \"../lib/Account.sol\";\nimport { Actions } from \"../lib/Actions.sol\";\nimport { Cache } from \"../lib/Cache.sol\";\nimport { Decimal } from \"../lib/Decimal.sol\";\nimport { EnumerableSet } from \"../lib/EnumerableSet.sol\";\nimport { Events } from \"../lib/Events.sol\";\nimport { Exchange } from \"../lib/Exchange.sol\";\nimport { Math } from \"../lib/Math.sol\";\nimport { Monetary } from \"../lib/Monetary.sol\";\nimport { Require } from \"../lib/Require.sol\";\nimport { Storage } from \"../lib/Storage.sol\";\nimport { Types } from \"../lib/Types.sol\";\nimport { LiquidateOrVaporizeImpl } from \"./LiquidateOrVaporizeImpl.sol\";\n\n\n/**\n * @title OperationImpl\n * @author dYdX\n *\n * Logic for processing actions\n */\nlibrary OperationImpl {\n using Cache for Cache.MarketCache;\n using EnumerableSet for EnumerableSet.Set;\n using SafeMath for uint256;\n using Storage for Storage.State;\n using Types for Types.Par;\n using Types for Types.Wei;\n\n // ============ Constants ============\n\n bytes32 constant FILE = \"OperationImpl\";\n\n // ============ Public Functions ============\n\n function operate(\n Storage.State storage state,\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions\n )\n public\n {\n Events.logOperation();\n\n _verifyInputs(accounts, actions);\n\n (\n bool[] memory primaryAccounts,\n Cache.MarketCache memory cache\n ) = _runPreprocessing(\n state,\n accounts,\n actions\n );\n\n _runActions(\n state,\n accounts,\n actions,\n cache\n );\n\n _verifyFinalState(\n state,\n accounts,\n primaryAccounts,\n cache\n );\n }\n\n // ============ Helper Functions ============\n\n function _verifyInputs(\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions\n )\n private\n pure\n {\n Require.that(\n accounts.length != 0,\n FILE,\n \"Cannot have zero accounts\"\n );\n Require.that(\n actions.length != 0,\n FILE,\n \"Cannot have zero actions\"\n );\n\n for (uint256 a = 0; a < accounts.length; a++) {\n for (uint256 b = a + 1; b < accounts.length; b++) {\n Require.that(\n !Account.equals(accounts[a], accounts[b]),\n FILE,\n \"Cannot duplicate accounts\",\n accounts[a].owner,\n accounts[a].number\n );\n }\n }\n }\n\n function _runPreprocessing(\n Storage.State storage state,\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions\n )\n private\n returns (\n bool[] memory,\n Cache.MarketCache memory\n )\n {\n uint256 numMarkets = state.numMarkets;\n bool[] memory primaryAccounts = new bool[](accounts.length);\n Cache.MarketCache memory cache = Cache.create(numMarkets);\n\n // keep track of primary accounts and indexes that need updating\n for (uint256 i = 0; i < actions.length; i++) {\n Actions.ActionArgs memory arg = actions[i];\n Actions.ActionType actionType = arg.actionType;\n Actions.MarketLayout marketLayout = Actions.getMarketLayout(actionType);\n Actions.AccountLayout accountLayout = Actions.getAccountLayout(actionType);\n\n // parse out primary accounts\n if (accountLayout != Actions.AccountLayout.OnePrimary) {\n Require.that(\n arg.accountId != arg.otherAccountId,\n FILE,\n \"Duplicate accounts in action\",\n i\n );\n if (accountLayout == Actions.AccountLayout.TwoPrimary) {\n primaryAccounts[arg.otherAccountId] = true;\n } else {\n // accountLayout == Actions.AccountLayout.PrimaryAndSecondary\n Require.that(\n !primaryAccounts[arg.otherAccountId],\n FILE,\n \"Requires non-primary account\",\n arg.otherAccountId\n );\n }\n }\n primaryAccounts[arg.accountId] = true;\n\n // keep track of indexes to update\n if (marketLayout == Actions.MarketLayout.OneMarket) {\n _updateMarket(state, cache, arg.primaryMarketId);\n } else if (marketLayout == Actions.MarketLayout.TwoMarkets) {\n Require.that(\n arg.primaryMarketId != arg.secondaryMarketId,\n FILE,\n \"Duplicate markets in action\",\n i\n );\n _updateMarket(state, cache, arg.primaryMarketId);\n _updateMarket(state, cache, arg.secondaryMarketId);\n }\n }\n\n // get any other markets for which an account has a balance\n for (uint256 a = 0; a < accounts.length; a++) {\n uint[] memory marketIdsWithBalance = state.getMarketsWithBalances(accounts[a]);\n for (uint256 i = 0; i < marketIdsWithBalance.length; i++) {\n _updateMarket(state, cache, marketIdsWithBalance[i]);\n }\n }\n\n state.initializeCache(cache);\n\n return (primaryAccounts, cache);\n }\n\n function _updateMarket(\n Storage.State storage state,\n Cache.MarketCache memory cache,\n uint256 marketId\n )\n private\n {\n if (!cache.hasMarket(marketId)) {\n cache.set(marketId);\n Events.logIndexUpdate(marketId, state.updateIndex(marketId));\n }\n }\n\n function _runActions(\n Storage.State storage state,\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions,\n Cache.MarketCache memory cache\n )\n private\n {\n for (uint256 i = 0; i < actions.length; i++) {\n Actions.ActionArgs memory action = actions[i];\n Actions.ActionType actionType = action.actionType;\n\n\n if (actionType == Actions.ActionType.Deposit) {\n _deposit(state, Actions.parseDepositArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Withdraw) {\n _withdraw(state, Actions.parseWithdrawArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Transfer) {\n _transfer(state, Actions.parseTransferArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Buy) {\n _buy(state, Actions.parseBuyArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Sell) {\n _sell(state, Actions.parseSellArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Trade) {\n _trade(state, Actions.parseTradeArgs(accounts, action));\n }\n else if (actionType == Actions.ActionType.Liquidate) {\n LiquidateOrVaporizeImpl.liquidate(state, Actions.parseLiquidateArgs(accounts, action), cache);\n }\n else if (actionType == Actions.ActionType.Vaporize) {\n // use the library to save space since this function is rarely ever called\n LiquidateOrVaporizeImpl.vaporize(state, Actions.parseVaporizeArgs(accounts, action), cache);\n }\n else if (actionType == Actions.ActionType.Call) {\n _call(state, Actions.parseCallArgs(accounts, action));\n }\n }\n }\n\n function _verifyFinalState(\n Storage.State storage state,\n Account.Info[] memory accounts,\n bool[] memory primaryAccounts,\n Cache.MarketCache memory cache\n )\n private\n {\n // verify no increase in borrowPar for closing markets\n uint256 numMarkets = cache.getNumMarkets();\n for (uint256 i = 0; i < numMarkets; i++) {\n uint256 marketId = cache.getAtIndex(i).marketId;\n if (cache.getAtIndex(i).isClosing) {\n Require.that(\n state.getTotalPar(marketId).borrow <= cache.getAtIndex(i).borrowPar,\n FILE,\n \"Market is closing\",\n marketId\n );\n }\n if (state.markets[marketId].isRecyclable) {\n // This market is recyclable. Check that only the `token` is the owner\n for (uint256 a = 0; a < accounts.length; a++) {\n if (accounts[a].owner != cache.getAtIndex(i).token) {\n // If the owner of the recyclable token isn't the TokenProxy,\n // THEN check that the account doesn't have a balance for this recyclable `marketId`\n Require.that(\n !state.getMarketsWithBalancesSet(accounts[a]).contains(marketId),\n FILE,\n \"invalid recyclable owner\",\n accounts[a].owner,\n accounts[a].number,\n marketId\n );\n }\n }\n }\n }\n\n // verify account collateralization\n for (uint256 a = 0; a < accounts.length; a++) {\n Account.Info memory account = accounts[a];\n\n // don't check collateralization for non-primary accounts\n if (!primaryAccounts[a]) {\n continue;\n }\n\n // validate minBorrowedValue\n bool collateralized = state.isCollateralized(account, cache, /* requireMinBorrow = */ true);\n\n // check collateralization for primary accounts\n Require.that(\n collateralized,\n FILE,\n \"Undercollateralized account\",\n account.owner,\n account.number\n );\n\n // ensure status is normal for primary accounts\n if (state.getStatus(account) != Account.Status.Normal) {\n state.setStatus(account, Account.Status.Normal);\n }\n }\n }\n\n // ============ Action Functions ============\n\n function _deposit(\n Storage.State storage state,\n Actions.DepositArgs memory args\n )\n private\n {\n state.requireIsOperator(args.account, msg.sender);\n\n Require.that(\n args.from == msg.sender || args.from == args.account.owner,\n FILE,\n \"Invalid deposit source\",\n args.from\n );\n\n (\n Types.Par memory newPar,\n Types.Wei memory deltaWei\n ) = state.getNewParAndDeltaWei(\n args.account,\n args.market,\n args.amount\n );\n\n state.setPar(\n args.account,\n args.market,\n newPar\n );\n\n // requires a positive deltaWei\n Exchange.transferIn(\n state.getToken(args.market),\n args.from,\n deltaWei\n );\n\n Events.logDeposit(\n state,\n args,\n deltaWei\n );\n }\n\n function _withdraw(\n Storage.State storage state,\n Actions.WithdrawArgs memory args\n )\n private\n {\n state.requireIsOperator(args.account, msg.sender);\n\n (\n Types.Par memory newPar,\n Types.Wei memory deltaWei\n ) = state.getNewParAndDeltaWei(\n args.account,\n args.market,\n args.amount\n );\n\n state.setPar(\n args.account,\n args.market,\n newPar\n );\n\n // requires a negative deltaWei\n Exchange.transferOut(\n state.getToken(args.market),\n args.to,\n deltaWei\n );\n\n Events.logWithdraw(\n state,\n args,\n deltaWei\n );\n }\n\n function _transfer(\n Storage.State storage state,\n Actions.TransferArgs memory args\n )\n private\n {\n state.requireIsOperator(args.accountOne, msg.sender);\n state.requireIsOperator(args.accountTwo, msg.sender);\n\n (\n Types.Par memory newPar,\n Types.Wei memory deltaWei\n ) = state.getNewParAndDeltaWei(\n args.accountOne,\n args.market,\n args.amount\n );\n\n state.setPar(\n args.accountOne,\n args.market,\n newPar\n );\n\n state.setParFromDeltaWei(\n args.accountTwo,\n args.market,\n deltaWei.negative()\n );\n\n Events.logTransfer(\n state,\n args,\n deltaWei\n );\n }\n\n function _buy(\n Storage.State storage state,\n Actions.BuyArgs memory args\n )\n private\n {\n state.requireIsOperator(args.account, msg.sender);\n\n address takerToken = state.getToken(args.takerMarket);\n address makerToken = state.getToken(args.makerMarket);\n\n (\n Types.Par memory makerPar,\n Types.Wei memory makerWei\n ) = state.getNewParAndDeltaWei(\n args.account,\n args.makerMarket,\n args.amount\n );\n\n Types.Wei memory takerWei = Exchange.getCost(\n args.exchangeWrapper,\n makerToken,\n takerToken,\n makerWei,\n args.orderData\n );\n\n Types.Wei memory tokensReceived = Exchange.exchange(\n args.exchangeWrapper,\n args.account.owner,\n makerToken,\n takerToken,\n takerWei,\n args.orderData\n );\n\n Require.that(\n tokensReceived.value >= makerWei.value,\n FILE,\n \"Buy amount less than promised\",\n tokensReceived.value\n );\n\n state.setPar(\n args.account,\n args.makerMarket,\n makerPar\n );\n\n state.setParFromDeltaWei(\n args.account,\n args.takerMarket,\n takerWei\n );\n\n Events.logBuy(\n state,\n args,\n takerWei,\n makerWei\n );\n }\n\n function _sell(\n Storage.State storage state,\n Actions.SellArgs memory args\n )\n private\n {\n state.requireIsOperator(args.account, msg.sender);\n\n address takerToken = state.getToken(args.takerMarket);\n address makerToken = state.getToken(args.makerMarket);\n\n (\n Types.Par memory takerPar,\n Types.Wei memory takerWei\n ) = state.getNewParAndDeltaWei(\n args.account,\n args.takerMarket,\n args.amount\n );\n\n Types.Wei memory makerWei = Exchange.exchange(\n args.exchangeWrapper,\n args.account.owner,\n makerToken,\n takerToken,\n takerWei,\n args.orderData\n );\n\n state.setPar(\n args.account,\n args.takerMarket,\n takerPar\n );\n\n state.setParFromDeltaWei(\n args.account,\n args.makerMarket,\n makerWei\n );\n\n Events.logSell(\n state,\n args,\n takerWei,\n makerWei\n );\n }\n\n function _trade(\n Storage.State storage state,\n Actions.TradeArgs memory args\n )\n private\n {\n state.requireIsOperator(args.takerAccount, msg.sender);\n state.requireIsOperator(args.makerAccount, args.autoTrader);\n if (state.isAutoTraderSpecial(args.autoTrader)) {\n Require.that(\n state.isGlobalOperator(msg.sender),\n FILE,\n \"Unpermissioned trade operator\"\n );\n }\n\n Types.Par memory oldInputPar = state.getPar(\n args.makerAccount,\n args.inputMarket\n );\n (\n Types.Par memory newInputPar,\n Types.Wei memory inputWei\n ) = state.getNewParAndDeltaWei(\n args.makerAccount,\n args.inputMarket,\n args.amount\n );\n\n Types.AssetAmount memory outputAmount = IAutoTrader(args.autoTrader).getTradeCost(\n args.inputMarket,\n args.outputMarket,\n args.makerAccount,\n args.takerAccount,\n oldInputPar,\n newInputPar,\n inputWei,\n args.tradeData\n );\n\n (\n Types.Par memory newOutputPar,\n Types.Wei memory outputWei\n ) = state.getNewParAndDeltaWei(\n args.makerAccount,\n args.outputMarket,\n outputAmount\n );\n\n Require.that(\n outputWei.isZero() || inputWei.isZero() || outputWei.sign != inputWei.sign,\n FILE,\n \"Trades cannot be one-sided\",\n args.autoTrader\n );\n\n // set the balance for the maker\n state.setPar(\n args.makerAccount,\n args.inputMarket,\n newInputPar\n );\n state.setPar(\n args.makerAccount,\n args.outputMarket,\n newOutputPar\n );\n\n // set the balance for the taker\n state.setParFromDeltaWei(\n args.takerAccount,\n args.inputMarket,\n inputWei.negative()\n );\n state.setParFromDeltaWei(\n args.takerAccount,\n args.outputMarket,\n outputWei.negative()\n );\n\n Events.logTrade(\n state,\n args,\n inputWei,\n outputWei\n );\n }\n\n function _call(\n Storage.State storage state,\n Actions.CallArgs memory args\n )\n private\n {\n state.requireIsOperator(args.account, msg.sender);\n\n ICallee(args.callee).callFunction(\n msg.sender,\n args.account,\n args.data\n );\n\n Events.logCall(args);\n }\n\n}\n",
10
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol",
10
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol",
11
11
  "ast": {
12
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol",
12
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol",
13
13
  "exportedSymbols": {
14
14
  "OperationImpl": [
15
15
  27325
@@ -55,7 +55,7 @@
55
55
  "unitAlias": ""
56
56
  },
57
57
  {
58
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol",
58
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol",
59
59
  "file": "../interfaces/IAutoTrader.sol",
60
60
  "id": 25813,
61
61
  "nodeType": "ImportDirective",
@@ -71,7 +71,7 @@
71
71
  "unitAlias": ""
72
72
  },
73
73
  {
74
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol",
74
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol",
75
75
  "file": "../interfaces/ICallee.sol",
76
76
  "id": 25815,
77
77
  "nodeType": "ImportDirective",
@@ -87,7 +87,7 @@
87
87
  "unitAlias": ""
88
88
  },
89
89
  {
90
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
90
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
91
91
  "file": "../lib/Account.sol",
92
92
  "id": 25817,
93
93
  "nodeType": "ImportDirective",
@@ -103,7 +103,7 @@
103
103
  "unitAlias": ""
104
104
  },
105
105
  {
106
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
106
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol",
107
107
  "file": "../lib/Actions.sol",
108
108
  "id": 25819,
109
109
  "nodeType": "ImportDirective",
@@ -119,7 +119,7 @@
119
119
  "unitAlias": ""
120
120
  },
121
121
  {
122
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol",
122
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Cache.sol",
123
123
  "file": "../lib/Cache.sol",
124
124
  "id": 25821,
125
125
  "nodeType": "ImportDirective",
@@ -135,7 +135,7 @@
135
135
  "unitAlias": ""
136
136
  },
137
137
  {
138
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
138
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
139
139
  "file": "../lib/Decimal.sol",
140
140
  "id": 25823,
141
141
  "nodeType": "ImportDirective",
@@ -151,7 +151,7 @@
151
151
  "unitAlias": ""
152
152
  },
153
153
  {
154
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol",
154
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/EnumerableSet.sol",
155
155
  "file": "../lib/EnumerableSet.sol",
156
156
  "id": 25825,
157
157
  "nodeType": "ImportDirective",
@@ -167,7 +167,7 @@
167
167
  "unitAlias": ""
168
168
  },
169
169
  {
170
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
170
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Events.sol",
171
171
  "file": "../lib/Events.sol",
172
172
  "id": 25827,
173
173
  "nodeType": "ImportDirective",
@@ -183,7 +183,7 @@
183
183
  "unitAlias": ""
184
184
  },
185
185
  {
186
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol",
186
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Exchange.sol",
187
187
  "file": "../lib/Exchange.sol",
188
188
  "id": 25829,
189
189
  "nodeType": "ImportDirective",
@@ -199,7 +199,7 @@
199
199
  "unitAlias": ""
200
200
  },
201
201
  {
202
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol",
202
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
203
203
  "file": "../lib/Math.sol",
204
204
  "id": 25831,
205
205
  "nodeType": "ImportDirective",
@@ -215,7 +215,7 @@
215
215
  "unitAlias": ""
216
216
  },
217
217
  {
218
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
218
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
219
219
  "file": "../lib/Monetary.sol",
220
220
  "id": 25833,
221
221
  "nodeType": "ImportDirective",
@@ -231,7 +231,7 @@
231
231
  "unitAlias": ""
232
232
  },
233
233
  {
234
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
234
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
235
235
  "file": "../lib/Require.sol",
236
236
  "id": 25835,
237
237
  "nodeType": "ImportDirective",
@@ -247,7 +247,7 @@
247
247
  "unitAlias": ""
248
248
  },
249
249
  {
250
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
250
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol",
251
251
  "file": "../lib/Storage.sol",
252
252
  "id": 25837,
253
253
  "nodeType": "ImportDirective",
@@ -263,7 +263,7 @@
263
263
  "unitAlias": ""
264
264
  },
265
265
  {
266
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
266
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
267
267
  "file": "../lib/Types.sol",
268
268
  "id": 25839,
269
269
  "nodeType": "ImportDirective",
@@ -279,7 +279,7 @@
279
279
  "unitAlias": ""
280
280
  },
281
281
  {
282
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
282
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
283
283
  "file": "./LiquidateOrVaporizeImpl.sol",
284
284
  "id": 25841,
285
285
  "nodeType": "ImportDirective",
@@ -20136,7 +20136,7 @@
20136
20136
  "src": "603:18512:55"
20137
20137
  },
20138
20138
  "legacyAST": {
20139
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol",
20139
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol",
20140
20140
  "exportedSymbols": {
20141
20141
  "OperationImpl": [
20142
20142
  27325
@@ -20182,7 +20182,7 @@
20182
20182
  "unitAlias": ""
20183
20183
  },
20184
20184
  {
20185
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol",
20185
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol",
20186
20186
  "file": "../interfaces/IAutoTrader.sol",
20187
20187
  "id": 25813,
20188
20188
  "nodeType": "ImportDirective",
@@ -20198,7 +20198,7 @@
20198
20198
  "unitAlias": ""
20199
20199
  },
20200
20200
  {
20201
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol",
20201
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol",
20202
20202
  "file": "../interfaces/ICallee.sol",
20203
20203
  "id": 25815,
20204
20204
  "nodeType": "ImportDirective",
@@ -20214,7 +20214,7 @@
20214
20214
  "unitAlias": ""
20215
20215
  },
20216
20216
  {
20217
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
20217
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
20218
20218
  "file": "../lib/Account.sol",
20219
20219
  "id": 25817,
20220
20220
  "nodeType": "ImportDirective",
@@ -20230,7 +20230,7 @@
20230
20230
  "unitAlias": ""
20231
20231
  },
20232
20232
  {
20233
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
20233
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol",
20234
20234
  "file": "../lib/Actions.sol",
20235
20235
  "id": 25819,
20236
20236
  "nodeType": "ImportDirective",
@@ -20246,7 +20246,7 @@
20246
20246
  "unitAlias": ""
20247
20247
  },
20248
20248
  {
20249
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol",
20249
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Cache.sol",
20250
20250
  "file": "../lib/Cache.sol",
20251
20251
  "id": 25821,
20252
20252
  "nodeType": "ImportDirective",
@@ -20262,7 +20262,7 @@
20262
20262
  "unitAlias": ""
20263
20263
  },
20264
20264
  {
20265
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
20265
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
20266
20266
  "file": "../lib/Decimal.sol",
20267
20267
  "id": 25823,
20268
20268
  "nodeType": "ImportDirective",
@@ -20278,7 +20278,7 @@
20278
20278
  "unitAlias": ""
20279
20279
  },
20280
20280
  {
20281
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol",
20281
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/EnumerableSet.sol",
20282
20282
  "file": "../lib/EnumerableSet.sol",
20283
20283
  "id": 25825,
20284
20284
  "nodeType": "ImportDirective",
@@ -20294,7 +20294,7 @@
20294
20294
  "unitAlias": ""
20295
20295
  },
20296
20296
  {
20297
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
20297
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Events.sol",
20298
20298
  "file": "../lib/Events.sol",
20299
20299
  "id": 25827,
20300
20300
  "nodeType": "ImportDirective",
@@ -20310,7 +20310,7 @@
20310
20310
  "unitAlias": ""
20311
20311
  },
20312
20312
  {
20313
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol",
20313
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Exchange.sol",
20314
20314
  "file": "../lib/Exchange.sol",
20315
20315
  "id": 25829,
20316
20316
  "nodeType": "ImportDirective",
@@ -20326,7 +20326,7 @@
20326
20326
  "unitAlias": ""
20327
20327
  },
20328
20328
  {
20329
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol",
20329
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
20330
20330
  "file": "../lib/Math.sol",
20331
20331
  "id": 25831,
20332
20332
  "nodeType": "ImportDirective",
@@ -20342,7 +20342,7 @@
20342
20342
  "unitAlias": ""
20343
20343
  },
20344
20344
  {
20345
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
20345
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
20346
20346
  "file": "../lib/Monetary.sol",
20347
20347
  "id": 25833,
20348
20348
  "nodeType": "ImportDirective",
@@ -20358,7 +20358,7 @@
20358
20358
  "unitAlias": ""
20359
20359
  },
20360
20360
  {
20361
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
20361
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
20362
20362
  "file": "../lib/Require.sol",
20363
20363
  "id": 25835,
20364
20364
  "nodeType": "ImportDirective",
@@ -20374,7 +20374,7 @@
20374
20374
  "unitAlias": ""
20375
20375
  },
20376
20376
  {
20377
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
20377
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol",
20378
20378
  "file": "../lib/Storage.sol",
20379
20379
  "id": 25837,
20380
20380
  "nodeType": "ImportDirective",
@@ -20390,7 +20390,7 @@
20390
20390
  "unitAlias": ""
20391
20391
  },
20392
20392
  {
20393
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
20393
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
20394
20394
  "file": "../lib/Types.sol",
20395
20395
  "id": 25839,
20396
20396
  "nodeType": "ImportDirective",
@@ -20406,7 +20406,7 @@
20406
20406
  "unitAlias": ""
20407
20407
  },
20408
20408
  {
20409
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
20409
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
20410
20410
  "file": "./LiquidateOrVaporizeImpl.sol",
20411
20411
  "id": 25841,
20412
20412
  "nodeType": "ImportDirective",
@@ -40272,20 +40272,12 @@
40272
40272
  "links": {
40273
40273
  "LiquidateOrVaporizeImpl": "0xA94B7f0465E98609391C623d0560C5720a3f2D33"
40274
40274
  },
40275
- "address": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6",
40276
- "transactionHash": "0x75f667b30d25fd7e77ee5be6d0adebd8ace2b26cb94f0b0e0b8d6462977222aa"
40277
- },
40278
- "80001": {
40279
- "events": {},
40280
- "links": {
40281
- "LiquidateOrVaporizeImpl": "0x278Dc1c6B7C83F03F1f151e68F52B690a8798657"
40282
- },
40283
- "address": "0x300466234A3D5ff4c81f75EaA0f9A03645F823d3",
40284
- "transactionHash": "0x269b2667d241273ecfb332352149fa9feb59c51a13a50896d4699333dd8fddd3"
40275
+ "address": "0xFC628dd79137395F3C9744e33b1c5DE554D94882",
40276
+ "transactionHash": "0x613f3e4d90ca4bf01c9399cde74f0138f9037e116dec15added04bc273dea4cd"
40285
40277
  }
40286
40278
  },
40287
40279
  "schemaVersion": "3.0.23",
40288
- "updatedAt": "2022-02-04T01:55:01.125Z",
40280
+ "updatedAt": "2022-02-07T07:18:45.229Z",
40289
40281
  "devdoc": {
40290
40282
  "author": "dYdX * Logic for processing actions",
40291
40283
  "methods": {},