Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 164 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 20453275 | 94 days ago | IN | 0.000001 ETH | 0.000021 | ||||
Open Lock ETH An... | 20408332 | 100 days ago | IN | 0.001 ETH | 0.00097839 | ||||
Open Lock ETH An... | 12643154 | 1239 days ago | IN | 10 ETH | 0.00398074 | ||||
Open Lock ETH An... | 12633648 | 1240 days ago | IN | 0.05 ETH | 0.03130217 | ||||
Open Lock ETH An... | 12628698 | 1241 days ago | IN | 6.2 ETH | 0.00569245 | ||||
Open Lock ETH An... | 12577044 | 1249 days ago | IN | 0.001 ETH | 0.00533117 | ||||
Open Lock ETH An... | 12576825 | 1249 days ago | IN | 0.001 ETH | 0.01173831 | ||||
Open Lock ETH An... | 12576578 | 1249 days ago | IN | 0.001 ETH | 0.01173831 | ||||
Open Lock ETH An... | 12559214 | 1252 days ago | IN | 60 ETH | 0.00875762 | ||||
Open Lock ETH An... | 12556302 | 1252 days ago | IN | 0.05 ETH | 0.0123027 | ||||
Open Lock ETH An... | 12556163 | 1252 days ago | IN | 1 ETH | 0.01398406 | ||||
Open Lock ETH An... | 12554739 | 1253 days ago | IN | 0.2 ETH | 0.01613998 | ||||
Open Lock ETH An... | 12546997 | 1254 days ago | IN | 0.2 ETH | 0.00875762 | ||||
Open Lock ETH An... | 12540179 | 1255 days ago | IN | 0.01 ETH | 0.00656144 | ||||
Open Lock ETH An... | 12535154 | 1256 days ago | IN | 0.001 ETH | 0.00779253 | ||||
Open Lock ETH An... | 12533292 | 1256 days ago | IN | 0.005 ETH | 0.02543301 | ||||
Open Lock ETH An... | 12533035 | 1256 days ago | IN | 0.005 ETH | 0.02249843 | ||||
Open Lock ETH An... | 12532942 | 1256 days ago | IN | 0.005 ETH | 0.02152024 | ||||
Open Lock ETH An... | 12532866 | 1256 days ago | IN | 0.01 ETH | 0.02152024 | ||||
Open Lock ETH An... | 12521580 | 1258 days ago | IN | 100 ETH | 0.0091557 | ||||
Open Lock ETH An... | 12516199 | 1259 days ago | IN | 5 ETH | 0.00995185 | ||||
Open Lock ETH An... | 12516099 | 1259 days ago | IN | 5 ETH | 0.00984216 | ||||
Open Lock ETH An... | 12436877 | 1271 days ago | IN | 3.4 ETH | 0.03608792 | ||||
Open Lock ETH An... | 12425527 | 1273 days ago | IN | 6 ETH | 0.15651088 | ||||
Open Lock ETH An... | 12393794 | 1278 days ago | IN | 17 ETH | 0.09586291 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20408332 | 100 days ago | 0.001 ETH | ||||
12643154 | 1239 days ago | 10 ETH | ||||
12633648 | 1240 days ago | 0.05 ETH | ||||
12628698 | 1241 days ago | 6.2 ETH | ||||
12628649 | 1241 days ago | 6.2 ETH | ||||
12628649 | 1241 days ago | 6.2 ETH | ||||
12577044 | 1249 days ago | 0.001 ETH | ||||
12576825 | 1249 days ago | 0.001 ETH | ||||
12576578 | 1249 days ago | 0.001 ETH | ||||
12559214 | 1252 days ago | 60 ETH | ||||
12556302 | 1252 days ago | 0.05 ETH | ||||
12556163 | 1252 days ago | 1 ETH | ||||
12554739 | 1253 days ago | 0.2 ETH | ||||
12546997 | 1254 days ago | 0.2 ETH | ||||
12540179 | 1255 days ago | 0.01 ETH | ||||
12535154 | 1256 days ago | 0.001 ETH | ||||
12533292 | 1256 days ago | 0.005 ETH | ||||
12533035 | 1256 days ago | 0.005 ETH | ||||
12532942 | 1256 days ago | 0.005 ETH | ||||
12532866 | 1256 days ago | 0.01 ETH | ||||
12521580 | 1258 days ago | 100 ETH | ||||
12516199 | 1259 days ago | 5 ETH | ||||
12516099 | 1259 days ago | 5 ETH | ||||
12436877 | 1271 days ago | 3.4 ETH | ||||
12425527 | 1273 days ago | 6 ETH |
Loading...
Loading
Contract Name:
BProxyActions
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-01 */ /** *Submitted for verification at Etherscan.io on 2020-11-01 */ /* B.PROTOCOL TERMS OF USE ======================= THE TERMS OF USE CONTAINED HEREIN (THESE “TERMS”) GOVERN YOUR USE OF B.PROTOCOL, WHICH IS A DECENTRALIZED PROTOCOL ON THE ETHEREUM BLOCKCHAIN (the “PROTOCOL”) THAT enables a backstop liquidity mechanism FOR DECENTRALIZED LENDING PLATFORMS (“DLPs”). PLEASE READ THESE TERMS CAREFULLY AT https://github.com/backstop-protocol/Terms-and-Conditions, INCLUDING ALL DISCLAIMERS AND RISK FACTORS, BEFORE USING THE PROTOCOL. BY USING THE PROTOCOL, YOU ARE IRREVOCABLY CONSENTING TO BE BOUND BY THESE TERMS. IF YOU DO NOT AGREE TO ALL OF THESE TERMS, DO NOT USE THE PROTOCOL. YOUR RIGHT TO USE THE PROTOCOL IS SUBJECT AND DEPENDENT BY YOUR AGREEMENT TO ALL TERMS AND CONDITIONS SET FORTH HEREIN, WHICH AGREEMENT SHALL BE EVIDENCED BY YOUR USE OF THE PROTOCOL. Minors Prohibited: The Protocol is not directed to individuals under the age of eighteen (18) or the age of majority in your jurisdiction if the age of majority is greater. If you are under the age of eighteen or the age of majority (if greater), you are not authorized to access or use the Protocol. By using the Protocol, you represent and warrant that you are above such age. License; No Warranties; Limitation of Liability; (a) The software underlying the Protocol is licensed for use in accordance with the 3-clause BSD License, which can be accessed here: https://opensource.org/licenses/BSD-3-Clause. (b) THE PROTOCOL IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", “WITH ALL FAULTS” and “AS AVAILABLE” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. (c) IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* B.PROTOCOL TERMS OF USE ======================= THE TERMS OF USE CONTAINED HEREIN (THESE “TERMS”) GOVERN YOUR USE OF B.PROTOCOL, WHICH IS A DECENTRALIZED PROTOCOL ON THE ETHEREUM BLOCKCHAIN (the “PROTOCOL”) THAT enables a backstop liquidity mechanism FOR DECENTRALIZED LENDING PLATFORMS (“DLPs”). PLEASE READ THESE TERMS CAREFULLY AT https://github.com/backstop-protocol/Terms-and-Conditions, INCLUDING ALL DISCLAIMERS AND RISK FACTORS, BEFORE USING THE PROTOCOL. BY USING THE PROTOCOL, YOU ARE IRREVOCABLY CONSENTING TO BE BOUND BY THESE TERMS. IF YOU DO NOT AGREE TO ALL OF THESE TERMS, DO NOT USE THE PROTOCOL. YOUR RIGHT TO USE THE PROTOCOL IS SUBJECT AND DEPENDENT BY YOUR AGREEMENT TO ALL TERMS AND CONDITIONS SET FORTH HEREIN, WHICH AGREEMENT SHALL BE EVIDENCED BY YOUR USE OF THE PROTOCOL. Minors Prohibited: The Protocol is not directed to individuals under the age of eighteen (18) or the age of majority in your jurisdiction if the age of majority is greater. If you are under the age of eighteen or the age of majority (if greater), you are not authorized to access or use the Protocol. By using the Protocol, you represent and warrant that you are above such age. License; No Warranties; Limitation of Liability; (a) The software underlying the Protocol is licensed for use in accordance with the 3-clause BSD License, which can be accessed here: https://opensource.org/licenses/BSD-3-Clause. (b) THE PROTOCOL IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", “WITH ALL FAULTS” and “AS AVAILABLE” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. (c) IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ pragma solidity ^0.5.12; contract GemLike { function approve(address, uint) public; function transfer(address, uint) public; function transferFrom(address, address, uint) public; function deposit() public payable; function withdraw(uint) public; } contract ManagerLike { function cdpCan(address, uint, address) public view returns (uint); function ilks(uint) public view returns (bytes32); function owns(uint) public view returns (address); function urns(uint) public view returns (address); function vat() public view returns (address); function open(bytes32, address) public returns (uint); function give(uint, address) public; function cdpAllow(uint, address, uint) public; function urnAllow(address, uint) public; function frob(uint, int, int) public; function flux(uint, address, uint) public; function move(uint, address, uint) public; function exit(address, uint, address, uint) public; function quit(uint, address) public; function enter(address, uint) public; function shift(uint, uint) public; } contract VatLike { function can(address, address) public view returns (uint); function ilks(bytes32) public view returns (uint, uint, uint, uint, uint); function dai(address) public view returns (uint); function urns(bytes32, address) public view returns (uint, uint); function frob(bytes32, address, address, address, int, int) public; function hope(address) public; function move(address, address, uint) public; } contract GemJoinLike { function dec() public returns (uint); function gem() public returns (GemLike); function join(address, uint) public payable; function exit(address, uint) public; } contract GNTJoinLike { function bags(address) public view returns (address); function make(address) public returns (address); } contract DaiJoinLike { function vat() public returns (VatLike); function dai() public returns (GemLike); function join(address, uint) public payable; function exit(address, uint) public; } contract HopeLike { function hope(address) public; function nope(address) public; } contract EndLike { function fix(bytes32) public view returns (uint); function cash(bytes32, uint) public; function free(bytes32) public; function pack(uint) public; function skim(bytes32, address) public; } contract JugLike { function drip(bytes32) public returns (uint); } contract PotLike { function pie(address) public view returns (uint); function drip() public returns (uint); function join(uint) public; function exit(uint) public; } contract ProxyRegistryLike { function proxies(address) public view returns (address); function build(address) public returns (address); } contract ProxyLike { function owner() public view returns (address); } // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // WARNING: These functions meant to be used as a a library for a DSProxy. Some are unsafe if you call them directly. // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! contract Common { uint256 constant RAY = 10 ** 27; // Internal functions function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "mul-overflow"); } // Public functions function daiJoin_join(address apt, address urn, uint wad) public { // Gets DAI from the user's wallet DaiJoinLike(apt).dai().transferFrom(msg.sender, address(this), wad); // Approves adapter to take the DAI amount DaiJoinLike(apt).dai().approve(apt, wad); // Joins DAI into the vat DaiJoinLike(apt).join(urn, wad); } } contract DssProxyActions is Common { // Internal functions function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "sub-overflow"); } function toInt(uint x) internal pure returns (int y) { y = int(x); require(y >= 0, "int-overflow"); } function toRad(uint wad) internal pure returns (uint rad) { rad = mul(wad, 10 ** 27); } function convertTo18(address gemJoin, uint256 amt) internal returns (uint256 wad) { // For those collaterals that have less than 18 decimals precision we need to do the conversion before passing to frob function // Adapters will automatically handle the difference of precision wad = mul( amt, 10 ** (18 - GemJoinLike(gemJoin).dec()) ); } function _getDrawDart( address vat, address jug, address urn, bytes32 ilk, uint wad ) internal returns (int dart) { // Updates stability fee rate uint rate = JugLike(jug).drip(ilk); // Gets DAI balance of the urn in the vat uint dai = VatLike(vat).dai(urn); // If there was already enough DAI in the vat balance, just exits it without adding more debt if (dai < mul(wad, RAY)) { // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens dart = toInt(sub(mul(wad, RAY), dai) / rate); // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount) dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart; } } function _getWipeDart( address vat, uint dai, address urn, bytes32 ilk ) internal view returns (int dart) { // Gets actual rate from the vat (, uint rate,,,) = VatLike(vat).ilks(ilk); // Gets actual art value of the urn (, uint art) = VatLike(vat).urns(ilk, urn); // Uses the whole dai balance in the vat to reduce the debt dart = toInt(dai / rate); // Checks the calculated dart is not higher than urn.art (total debt), otherwise uses its value dart = uint(dart) <= art ? - dart : - toInt(art); } function _getWipeAllWad( address vat, address usr, address urn, bytes32 ilk ) internal view returns (uint wad) { // Gets actual rate from the vat (, uint rate,,,) = VatLike(vat).ilks(ilk); // Gets actual art value of the urn (, uint art) = VatLike(vat).urns(ilk, urn); // Gets actual dai amount in the urn uint dai = VatLike(vat).dai(usr); uint rad = sub(mul(art, rate), dai); wad = rad / RAY; // If the rad precision has some dust, it will need to request for 1 extra wad wei wad = mul(wad, RAY) < rad ? wad + 1 : wad; } // Public functions function transfer(address gem, address dst, uint amt) public { GemLike(gem).transfer(dst, amt); } function ethJoin_join(address apt, address urn) public payable { // Wraps ETH in WETH GemJoinLike(apt).gem().deposit.value(msg.value)(); // Approves adapter to take the WETH amount GemJoinLike(apt).gem().approve(address(apt), msg.value); // Joins WETH collateral into the vat GemJoinLike(apt).join(urn, msg.value); } function gemJoin_join(address apt, address urn, uint amt, bool transferFrom) public { // Only executes for tokens that have approval/transferFrom implementation if (transferFrom) { // Gets token from the user's wallet GemJoinLike(apt).gem().transferFrom(msg.sender, address(this), amt); // Approves adapter to take the token amount GemJoinLike(apt).gem().approve(apt, amt); } // Joins token collateral into the vat GemJoinLike(apt).join(urn, amt); } function hope( address obj, address usr ) public { HopeLike(obj).hope(usr); } function nope( address obj, address usr ) public { HopeLike(obj).nope(usr); } function open( address manager, bytes32 ilk, address usr ) public returns (uint cdp) { cdp = ManagerLike(manager).open(ilk, usr); } function give( address manager, uint cdp, address usr ) public { ManagerLike(manager).give(cdp, usr); } function giveToProxy( address proxyRegistry, address manager, uint cdp, address dst ) public { // Gets actual proxy address address proxy = ProxyRegistryLike(proxyRegistry).proxies(dst); // Checks if the proxy address already existed and dst address is still the owner if (proxy == address(0) || ProxyLike(proxy).owner() != dst) { uint csize; assembly { csize := extcodesize(dst) } // We want to avoid creating a proxy for a contract address that might not be able to handle proxies, then losing the CDP require(csize == 0, "Dst-is-a-contract"); // Creates the proxy for the dst address proxy = ProxyRegistryLike(proxyRegistry).build(dst); } // Transfers CDP to the dst proxy give(manager, cdp, proxy); } function cdpAllow( address manager, uint cdp, address usr, uint ok ) public { ManagerLike(manager).cdpAllow(cdp, usr, ok); } function urnAllow( address manager, address usr, uint ok ) public { ManagerLike(manager).urnAllow(usr, ok); } function flux( address manager, uint cdp, address dst, uint wad ) public { ManagerLike(manager).flux(cdp, dst, wad); } function move( address manager, uint cdp, address dst, uint rad ) public { ManagerLike(manager).move(cdp, dst, rad); } function frob( address manager, uint cdp, int dink, int dart ) public { ManagerLike(manager).frob(cdp, dink, dart); } function quit( address manager, uint cdp, address dst ) public { ManagerLike(manager).quit(cdp, dst); } function enter( address manager, address src, uint cdp ) public { ManagerLike(manager).enter(src, cdp); } function shift( address manager, uint cdpSrc, uint cdpOrg ) public { ManagerLike(manager).shift(cdpSrc, cdpOrg); } function makeGemBag( address gemJoin ) public returns (address bag) { bag = GNTJoinLike(gemJoin).make(address(this)); } function lockETH( address manager, address ethJoin, uint cdp ) public payable { // Receives ETH amount, converts it to WETH and joins it into the vat ethJoin_join(ethJoin, address(this)); // Locks WETH amount into the CDP VatLike(ManagerLike(manager).vat()).frob( ManagerLike(manager).ilks(cdp), ManagerLike(manager).urns(cdp), address(this), address(this), toInt(msg.value), 0 ); } function safeLockETH( address manager, address ethJoin, uint cdp, address owner ) public payable { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); lockETH(manager, ethJoin, cdp); } function lockGem( address manager, address gemJoin, uint cdp, uint amt, bool transferFrom ) public { // Takes token amount from user's wallet and joins into the vat gemJoin_join(gemJoin, address(this), amt, transferFrom); // Locks token amount into the CDP VatLike(ManagerLike(manager).vat()).frob( ManagerLike(manager).ilks(cdp), ManagerLike(manager).urns(cdp), address(this), address(this), toInt(convertTo18(gemJoin, amt)), 0 ); } function safeLockGem( address manager, address gemJoin, uint cdp, uint amt, bool transferFrom, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); lockGem(manager, gemJoin, cdp, amt, transferFrom); } function freeETH( address manager, address ethJoin, uint cdp, uint wad ) public { // Unlocks WETH amount from the CDP frob(manager, cdp, -toInt(wad), 0); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function freeGem( address manager, address gemJoin, uint cdp, uint amt ) public { uint wad = convertTo18(gemJoin, amt); // Unlocks token amount from the CDP frob(manager, cdp, -toInt(wad), 0); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, amt); } function exitETH( address manager, address ethJoin, uint cdp, uint wad ) public { // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function exitGem( address manager, address gemJoin, uint cdp, uint amt ) public { // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), convertTo18(gemJoin, amt)); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, amt); } function draw( address manager, address jug, address daiJoin, uint cdp, uint wad ) public { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Generates debt in the CDP frob(manager, cdp, 0, _getDrawDart(vat, jug, urn, ilk, wad)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wad)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wad); } function wipe( address manager, address daiJoin, uint cdp, uint wad ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); address own = ManagerLike(manager).owns(cdp); if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) { // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wad); // Paybacks debt to the CDP frob(manager, cdp, 0, _getWipeDart(vat, VatLike(vat).dai(urn), urn, ilk)); } else { // Joins DAI amount into the vat daiJoin_join(daiJoin, address(this), wad); // Paybacks debt to the CDP VatLike(vat).frob( ilk, urn, address(this), address(this), 0, _getWipeDart(vat, wad * RAY, urn, ilk) ); } } function safeWipe( address manager, address daiJoin, uint cdp, uint wad, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); wipe(manager, daiJoin, cdp, wad); } function wipeAll( address manager, address daiJoin, uint cdp ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); address own = ManagerLike(manager).owns(cdp); if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) { // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); // Paybacks debt to the CDP frob(manager, cdp, 0, -int(art)); } else { // Joins DAI amount into the vat daiJoin_join(daiJoin, address(this), _getWipeAllWad(vat, address(this), urn, ilk)); // Paybacks debt to the CDP VatLike(vat).frob( ilk, urn, address(this), address(this), 0, -int(art) ); } } function safeWipeAll( address manager, address daiJoin, uint cdp, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); wipeAll(manager, daiJoin, cdp); } function lockETHAndDraw( address manager, address jug, address ethJoin, address daiJoin, uint cdp, uint wadD ) public payable { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Receives ETH amount, converts it to WETH and joins it into the vat ethJoin_join(ethJoin, urn); // Locks WETH amount into the CDP and generates debt frob(manager, cdp, toInt(msg.value), _getDrawDart(vat, jug, urn, ilk, wadD)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wadD)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wadD); } function openLockETHAndDraw( address manager, address jug, address ethJoin, address daiJoin, bytes32 ilk, uint wadD ) public payable returns (uint cdp) { cdp = open(manager, ilk, address(this)); lockETHAndDraw(manager, jug, ethJoin, daiJoin, cdp, wadD); } function lockGemAndDraw( address manager, address jug, address gemJoin, address daiJoin, uint cdp, uint amtC, uint wadD, bool transferFrom ) public { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Takes token amount from user's wallet and joins into the vat gemJoin_join(gemJoin, urn, amtC, transferFrom); // Locks token amount into the CDP and generates debt frob(manager, cdp, toInt(convertTo18(gemJoin, amtC)), _getDrawDart(vat, jug, urn, ilk, wadD)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wadD)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wadD); } function openLockGemAndDraw( address manager, address jug, address gemJoin, address daiJoin, bytes32 ilk, uint amtC, uint wadD, bool transferFrom ) public returns (uint cdp) { cdp = open(manager, ilk, address(this)); lockGemAndDraw(manager, jug, gemJoin, daiJoin, cdp, amtC, wadD, transferFrom); } function openLockGNTAndDraw( address manager, address jug, address gntJoin, address daiJoin, bytes32 ilk, uint amtC, uint wadD ) public returns (address bag, uint cdp) { // Creates bag (if doesn't exist) to hold GNT bag = GNTJoinLike(gntJoin).bags(address(this)); if (bag == address(0)) { bag = makeGemBag(gntJoin); } // Transfer funds to the funds which previously were sent to the proxy GemLike(GemJoinLike(gntJoin).gem()).transfer(bag, amtC); cdp = openLockGemAndDraw(manager, jug, gntJoin, daiJoin, ilk, amtC, wadD, false); } function wipeAndFreeETH( address manager, address ethJoin, address daiJoin, uint cdp, uint wadC, uint wadD ) public { address urn = ManagerLike(manager).urns(cdp); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wadD); // Paybacks debt to the CDP and unlocks WETH amount from it frob( manager, cdp, -toInt(wadC), _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp)) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function wipeAllAndFreeETH( address manager, address ethJoin, address daiJoin, uint cdp, uint wadC ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); // Paybacks debt to the CDP and unlocks WETH amount from it frob( manager, cdp, -toInt(wadC), -int(art) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function wipeAndFreeGem( address manager, address gemJoin, address daiJoin, uint cdp, uint amtC, uint wadD ) public { address urn = ManagerLike(manager).urns(cdp); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wadD); uint wadC = convertTo18(gemJoin, amtC); // Paybacks debt to the CDP and unlocks token amount from it frob( manager, cdp, -toInt(wadC), _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp)) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, amtC); } function wipeAllAndFreeGem( address manager, address gemJoin, address daiJoin, uint cdp, uint amtC ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); uint wadC = convertTo18(gemJoin, amtC); // Paybacks debt to the CDP and unlocks token amount from it frob( manager, cdp, -toInt(wadC), -int(art) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, amtC); } } contract DssProxyActionsEnd is Common { // Internal functions function _free( address manager, address end, uint cdp ) internal returns (uint ink) { bytes32 ilk = ManagerLike(manager).ilks(cdp); address urn = ManagerLike(manager).urns(cdp); VatLike vat = VatLike(ManagerLike(manager).vat()); uint art; (ink, art) = vat.urns(ilk, urn); // If CDP still has debt, it needs to be paid if (art > 0) { EndLike(end).skim(ilk, urn); (ink,) = vat.urns(ilk, urn); } // Approves the manager to transfer the position to proxy's address in the vat if (vat.can(address(this), address(manager)) == 0) { vat.hope(manager); } // Transfers position from CDP to the proxy address ManagerLike(manager).quit(cdp, address(this)); // Frees the position and recovers the collateral in the vat registry EndLike(end).free(ilk); } // Public functions function freeETH( address manager, address ethJoin, address end, uint cdp ) public { uint wad = _free(manager, end, cdp); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function freeGem( address manager, address gemJoin, address end, uint cdp ) public { uint amt = _free(manager, end, cdp) / 10 ** (18 - GemJoinLike(gemJoin).dec()); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, amt); } function pack( address daiJoin, address end, uint wad ) public { daiJoin_join(daiJoin, address(this), wad); VatLike vat = DaiJoinLike(daiJoin).vat(); // Approves the end to take out DAI from the proxy's balance in the vat if (vat.can(address(this), address(end)) == 0) { vat.hope(end); } EndLike(end).pack(wad); } function cashETH( address ethJoin, address end, bytes32 ilk, uint wad ) public { EndLike(end).cash(ilk, wad); uint wadC = mul(wad, EndLike(end).fix(ilk)) / RAY; // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function cashGem( address gemJoin, address end, bytes32 ilk, uint wad ) public { EndLike(end).cash(ilk, wad); // Exits token amount to the user's wallet as a token uint amt = mul(wad, EndLike(end).fix(ilk)) / RAY / 10 ** (18 - GemJoinLike(gemJoin).dec()); GemJoinLike(gemJoin).exit(msg.sender, amt); } } contract DssProxyActionsDsr is Common { function join( address daiJoin, address pot, uint wad ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to get the chi rate updated to rho == now, otherwise join will fail uint chi = PotLike(pot).drip(); // Joins wad amount to the vat balance daiJoin_join(daiJoin, address(this), wad); // Approves the pot to take out DAI from the proxy's balance in the vat if (vat.can(address(this), address(pot)) == 0) { vat.hope(pot); } // Joins the pie value (equivalent to the DAI wad amount) in the pot PotLike(pot).join(mul(wad, RAY) / chi); } function exit( address daiJoin, address pot, uint wad ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to count the savings accumulated until this moment uint chi = PotLike(pot).drip(); // Calculates the pie value in the pot equivalent to the DAI wad amount uint pie = mul(wad, RAY) / chi; // Exits DAI from the pot PotLike(pot).exit(pie); // Checks the actual balance of DAI in the vat after the pot exit uint bal = DaiJoinLike(daiJoin).vat().dai(address(this)); // Allows adapter to access to proxy's DAI balance in the vat if (vat.can(address(this), address(daiJoin)) == 0) { vat.hope(daiJoin); } // It is necessary to check if due rounding the exact wad amount can be exited by the adapter. // Otherwise it will do the maximum DAI balance in the vat DaiJoinLike(daiJoin).exit( msg.sender, bal >= mul(wad, RAY) ? wad : bal / RAY ); } function exitAll( address daiJoin, address pot ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to count the savings accumulated until this moment uint chi = PotLike(pot).drip(); // Gets the total pie belonging to the proxy address uint pie = PotLike(pot).pie(address(this)); // Exits DAI from the pot PotLike(pot).exit(pie); // Allows adapter to access to proxy's DAI balance in the vat if (vat.can(address(this), address(daiJoin)) == 0) { vat.hope(daiJoin); } // Exits the DAI amount corresponding to the value of pie DaiJoinLike(daiJoin).exit(msg.sender, mul(chi, pie) / RAY); } } contract BManagerLike is ManagerLike { function cushion(uint cdp) public returns(uint); } contract BProxyActions is DssProxyActions { function shiftManager( address managerSrc, address managerDst, uint cdpSrc, uint cdpDst ) public { address vat = ManagerLike(managerSrc).vat(); require(vat == ManagerLike(managerDst).vat(), "vat-mismatch"); bool canSrc = (VatLike(vat).can(address(this), managerSrc) != 0); bool canDst = (VatLike(vat).can(address(this), managerDst) != 0); if(! canSrc) hope(vat, managerSrc); if(! canDst) hope(vat, managerDst); quit(managerSrc, cdpSrc, address(this)); enter(managerDst, address(this), cdpDst); if(! canSrc) nope(vat, managerSrc); if(! canDst) nope(vat, managerDst); } function lockETHViaCdp( address manager, address ethJoin, uint cdp ) public payable { address urn = ManagerLike(manager).urns(cdp); // Receives ETH amount, converts it to WETH and joins it into the vat ethJoin_join(ethJoin, urn); // Locks WETH amount into the CDP and generates debt frob(manager, cdp, toInt(msg.value), 0); } function openLockETHAndGiveToProxy( address proxyRegistry, address manager, address ethJoin, bytes32 ilk, address dst ) public payable returns (uint cdp) { cdp = open(manager, ilk, address(this)); lockETHViaCdp(manager,ethJoin,cdp); giveToProxy(proxyRegistry,manager,cdp,dst); } function openAndImportFromManager( address managerSrc, address managerDst, uint cdpSrc, bytes32 ilk ) public payable returns (uint cdp) { cdp = open(managerDst, ilk, address(this)); shiftManager(managerSrc,managerDst,cdpSrc,cdp); } function beforeWipeAll(address manager, uint cdp) internal { if(BManagerLike(manager).cushion(cdp) > 0) ManagerLike(manager).frob(cdp,0,0); } function wipeAll( address manager, address daiJoin, uint cdp ) public { beforeWipeAll(manager, cdp); super.wipeAll(manager, daiJoin, cdp); } function safeWipeAll( address manager, address daiJoin, uint cdp, address owner ) public { beforeWipeAll(manager, cdp); super.safeWipeAll(manager, daiJoin, cdp, owner); } function wipeAllAndFreeETH( address manager, address ethJoin, address daiJoin, uint cdp, uint wadC ) public { beforeWipeAll(manager, cdp); super.wipeAllAndFreeETH(manager, ethJoin, daiJoin, cdp, wadC); } function wipeAllAndFreeGem( address manager, address gemJoin, address daiJoin, uint cdp, uint amtC ) public { beforeWipeAll(manager, cdp); super.wipeAllAndFreeGem(manager, gemJoin, daiJoin, cdp, amtC); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"cdpAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"daiJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"draw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"}],"name":"ethJoin_join","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exitETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"exitGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"freeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"freeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"gemJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"proxyRegistry","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"giveToProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"lockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"lockETHAndDraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"lockETHViaCdp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGemAndDraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gemJoin","type":"address"}],"name":"makeGemBag","outputs":[{"internalType":"address","name":"bag","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"}],"name":"open","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerSrc","type":"address"},{"internalType":"address","name":"managerDst","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"openAndImportFromManager","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockETHAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"proxyRegistry","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"dst","type":"address"}],"name":"openLockETHAndGiveToProxy","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gntJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockGNTAndDraw","outputs":[{"internalType":"address","name":"bag","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"openLockGemAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"quit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpOrg","type":"uint256"}],"name":"shift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerSrc","type":"address"},{"internalType":"address","name":"managerDst","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpDst","type":"uint256"}],"name":"shiftManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"urnAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"wipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"wipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"}],"name":"wipeAllAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"}],"name":"wipeAllAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50614f8a806100206000396000f3fe6080604052600436106102675760003560e01c806396e8d72c11610144578063c0791710116100b6578063e205c1081161007a578063e205c10814610d74578063e685cc0414610daa578063ead6472914610df6578063eb0b9a8514610e4d578063ee28457614610e90578063fba7591d14610ecc57610267565b8063c079171014610b99578063c56167c614610c1b578063cbd4be3f14610c5e578063d8467e3114610cc6578063db802a3214610d0c57610267565b8063a6add01111610108578063a6add011146109db578063b50a586914610a30578063ba727a9514610a6b578063bcd6deec14610ab2578063be5e6c0314610b01578063beabacc814610b5657610267565b806396e8d72c146108955780639f6f3d5b146108da5780639f887fde14610929578063a028a55e14610964578063a033df12146109ad57610267565b80634592aca7116101dd5780636ab6a491116101a15780636ab6a491146106ee5780636d68b70b1461073757806374b49dc4146107865780637b5a3b43146107c25780637bc3bd531461080b5780637df2eb251461084a57610267565b80634592aca714610581578063493c2049146105c45780634b6661991461060d5780635f6ef447146106565780636aa3ee111461069957610267565b80631d10f2311161022f5780631d10f231146103d65780632555bac31461041957806325cf37d01461044f5780632958f8a5146104965780633e29e565146104e757806342dd11bb1461053857610267565b8063036a23951461026c57806308f00e34146102b15780630aee8dec146102fa5780631558b048146103435780631c02d8461461038a575b600080fd5b34801561027857600080fd5b506102af6004803603606081101561028f57600080fd5b506001600160a01b03813581169160208101359091169060400135610f1b565b005b3480156102bd57600080fd5b506102af600480360360808110156102d457600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f35565b34801561030657600080fd5b506102af6004803603608081101561031d57600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166110a4565b34801561034f57600080fd5b506102af6004803603608081101561036657600080fd5b506001600160a01b03813581169160208101359160408201351690606001356110c0565b6102af600480360360c08110156103a057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611137565b3480156103e257600080fd5b506102af600480360360608110156103f957600080fd5b506001600160a01b03813581169160208101359160409091013516611436565b6102af6004803603606081101561042f57600080fd5b506001600160a01b038135811691602081013590911690604001356114b3565b34801561045b57600080fd5b506102af6004803603608081101561047257600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611546565b3480156104a257600080fd5b506102af600480360360a08110156104b957600080fd5b506001600160a01b03813581169160208101358216916040820135916060810135916080909101351661159f565b3480156104f357600080fd5b506102af600480360360a081101561050a57600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611672565b34801561054457600080fd5b506102af6004803603608081101561055b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611872565b34801561058d57600080fd5b506102af600480360360608110156105a457600080fd5b506001600160a01b038135811691602081013591604090910135166118d5565b3480156105d057600080fd5b506102af600480360360808110156105e757600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611935565b34801561061957600080fd5b506102af6004803603608081101561063057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611b28565b34801561066257600080fd5b506102af6004803603606081101561067957600080fd5b506001600160a01b03813581169160208101359091169060400135611f28565b3480156106a557600080fd5b506106dc600480360360608110156106bc57600080fd5b506001600160a01b03813581169160208101359160409091013516611f88565b60408051918252519081900360200190f35b3480156106fa57600080fd5b506102af6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561200f565b34801561074357600080fd5b506102af600480360360a081101561075a57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561208f565b6106dc6004803603608081101561079c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120a6565b3480156107ce57600080fd5b506102af600480360360808110156107e557600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120c9565b34801561081757600080fd5b506102af6004803603606081101561082e57600080fd5b506001600160a01b0381351690602081013590604001356120d7565b34801561085657600080fd5b506102af6004803603608081101561086d57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612125565b3480156108a157600080fd5b506102af600480360360808110156108b857600080fd5b506001600160a01b038135169060208101359060408101359060600135612332565b3480156108e657600080fd5b506102af600480360360a08110156108fd57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612388565b34801561093557600080fd5b506102af6004803603604081101561094c57600080fd5b506001600160a01b0381358116916020013516612649565b34801561097057600080fd5b506102af6004803603608081101561098757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356126bd565b6102af600480360360408110156109c357600080fd5b506001600160a01b0381358116916020013516612939565b3480156109e757600080fd5b506102af600480360360c08110156109fe57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612b1e565b348015610a3c57600080fd5b506102af60048036036040811015610a5357600080fd5b506001600160a01b0381358116916020013516612ded565b348015610a7757600080fd5b506102af60048036036080811015610a8e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135612e45565b348015610abe57600080fd5b506102af600480360360a0811015610ad557600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612e9e565b348015610b0d57600080fd5b506102af600480360360c0811015610b2457600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612eb5565b348015610b6257600080fd5b506102af60048036036060811015610b7957600080fd5b506001600160a01b0381358116916020810135909116906040013561324b565b348015610ba557600080fd5b50610bf8600480360360e0811015610bbc57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c001356132ab565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610c2757600080fd5b506102af60048036036060811015610c3e57600080fd5b506001600160a01b0381358116916020810135909116906040013561342e565b348015610c6a57600080fd5b506102af6004803603610100811015610c8257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613634565b6106dc600480360360a0811015610cdc57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160809091013516613931565b348015610d1857600080fd5b506106dc6004803603610100811015610d3057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613960565b6102af60048036036060811015610d8a57600080fd5b506001600160a01b0381358116916020810135909116906040013561398b565b6106dc600480360360c0811015610dc057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135613b61565b348015610e0257600080fd5b506102af600480360360c0811015610e1957600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516613b88565b348015610e5957600080fd5b506102af60048036036060811015610e7057600080fd5b506001600160a01b03813581169160208101359091169060400135613c5c565b6102af60048036036080811015610ea657600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613cbc565b348015610ed857600080fd5b50610eff60048036036020811015610eef57600080fd5b50356001600160a01b0316613d8e565b604080516001600160a01b039092168252519081900360200190f35b610f258382613e0b565b610f30838383613edd565b505050565b610f41848330846110c0565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b505050506040513d602081101561100c57600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561105857600080fd5b505af115801561106c573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801561109d573d6000803e3d6000fd5b5050505050565b6110ae8483613e0b565b6110ba84848484614271565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b15801561111957600080fd5b505af115801561112d573d6000803e3d6000fd5b5050505050505050565b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561117d57600080fd5b505afa158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b1580156111ef57600080fd5b505afa158015611203573d6000803e3d6000fd5b505050506040513d602081101561121957600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561126857600080fd5b505afa15801561127c573d6000803e3d6000fd5b505050506040513d602081101561129257600080fd5b505190506112a08784612939565b6112c089866112ae34614343565b6112bb868d89888c61438e565b612332565b6112d48986306112cf8861450b565b611546565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b50516113c557816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050505050565b6000836001600160a01b0316632726b073836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b505190506115318382612939565b6110ba848361153f34614343565b6000612332565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b15801561111957600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d602081101561161757600080fd5b50516001600160a01b031614611666576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61109d85858585611b28565b61167e84308484612125565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b757600080fd5b505afa1580156116cb573d6000803e3d6000fd5b505050506040513d60208110156116e157600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b15801561173657600080fd5b505afa15801561174a573d6000803e3d6000fd5b505050506040513d602081101561176057600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b1580156117a957600080fd5b505afa1580156117bd573d6000803e3d6000fd5b505050506040513d60208110156117d357600080fd5b505130806117e96117e48b8a614528565b614343565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561185357600080fd5b505af1158015611867573d6000803e3d6000fd5b505050505050505050565b6118878483306118828786614528565b6110c0565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561111957600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561149657600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d60208110156119b757600080fd5b505190506001600160a01b0381161580611a475750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0f57600080fd5b505afa158015611a23573d6000803e3d6000fd5b505050506040513d6020811015611a3957600080fd5b50516001600160a01b031614155b15611b1d57813b8015611a95576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050506040513d6020811015611b1757600080fd5b50519150505b61109d848483611436565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6357600080fd5b505afa158015611b77573d6000803e3d6000fd5b505050506040513d6020811015611b8d57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611bdc57600080fd5b505afa158015611bf0573d6000803e3d6000fd5b505050506040513d6020811015611c0657600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611c5557600080fd5b505afa158015611c69573d6000803e3d6000fd5b505050506040513d6020811015611c7f57600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611cce57600080fd5b505afa158015611ce2573d6000803e3d6000fd5b505050506040513d6020811015611cf857600080fd5b505190506001600160a01b038116301480611d955750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611d6557600080fd5b505afa158015611d79573d6000803e3d6000fd5b505050506040513d6020811015611d8f57600080fd5b50516001145b15611e3e57611da587848761342e565b611e39888760006112bb88896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d6020811015611e3057600080fd5b505189896145a7565b61112d565b611e4987308761342e565b836001600160a01b03166376088703838530306000611e778b676765c793fa10079d601b1b8e028c8c6145a7565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050505050505050505050565b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b5051949350505050565b600061201b8483614528565b9050612035858461202b84614343565b6000036000612332565b612041858430846110c0565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b15801561185357600080fd5b6120998583613e0b565b61109d85858585856146d7565b60006120b3848330611f88565b90506120c1858585846126bd565b949350505050565b610f35848361202b84614343565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b80156122d257836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561216657600080fd5b505af115801561217a573d6000803e3d6000fd5b505050506040513d602081101561219057600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561223b57600080fd5b505af115801561224f573d6000803e3d6000fd5b505050506040513d602081101561226557600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561111957600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561111957600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156123ce57600080fd5b505afa1580156123e2573d6000803e3d6000fd5b505050506040513d60208110156123f857600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b15801561244057600080fd5b505afa158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b1580156124b957600080fd5b505afa1580156124cd573d6000803e3d6000fd5b505050506040513d60208110156124e357600080fd5b505190506124fb888660006112bb868c89888c61438e565b61250a8886306112cf8861450b565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561255a57600080fd5b505afa15801561256e573d6000803e3d6000fd5b505050506040513d602081101561258457600080fd5b50516125fb57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156125e257600080fd5b505af11580156125f6573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b158015611f0657600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126a157600080fd5b505af11580156126b5573d6000803e3d6000fd5b505050505050565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f857600080fd5b505afa15801561270c573d6000803e3d6000fd5b505050506040513d602081101561272257600080fd5b5051604080516336569e7760e01b815290519192506001600160a01b038616916336569e7791600480820192602092909190829003018186803b15801561276857600080fd5b505afa15801561277c573d6000803e3d6000fd5b505050506040513d602081101561279257600080fd5b50516001600160a01b038281169116146127e2576040805162461bcd60e51b815260206004820152600c60248201526b0ecc2e85adad2e6dac2e8c6d60a31b604482015290519081900360640190fd5b60408051634538c4eb60e01b81523060048201526001600160a01b0387811660248301529151600092841691634538c4eb916044808301926020929190829003018186803b15801561283357600080fd5b505afa158015612847573d6000803e3d6000fd5b505050506040513d602081101561285d57600080fd5b505160408051634538c4eb60e01b81523060048201526001600160a01b0388811660248301529151921515935060009291851691634538c4eb91604480820192602092909190829003018186803b1580156128b757600080fd5b505afa1580156128cb573d6000803e3d6000fd5b505050506040513d60208110156128e157600080fd5b505115159050816128f6576128f68388612ded565b80612905576129058387612ded565b6129108786306118d5565b61291b863086613c5c565b8161292a5761292a8388612649565b806114aa576114aa8387612649565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505050506040513d602081101561299e57600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b505050506040513d6020811015612a6257600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612ab557600080fd5b505af1158015612ac9573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b1580156126a157600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b6457600080fd5b505afa158015612b78573d6000803e3d6000fd5b505050506040513d6020811015612b8e57600080fd5b50519050612b9d85828461342e565b6000612ba98785614528565b9050612d938886612bb984614343565b6000036112bb8c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612bf857600080fd5b505afa158015612c0c573d6000803e3d6000fd5b505050506040513d6020811015612c2257600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6c57600080fd5b505afa158015612c80573d6000803e3d6000fd5b505050506040513d6020811015612c9657600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b158015612ce257600080fd5b505afa158015612cf6573d6000803e3d6000fd5b505050506040513d6020811015612d0c57600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d6257600080fd5b505afa158015612d76573d6000803e3d6000fd5b505050506040513d6020811015612d8c57600080fd5b50516145a7565b612d9f888630846110c0565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b158015611f0657600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126a157600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b15801561111957600080fd5b612ea88583613e0b565b61109d8585858585614a52565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612efb57600080fd5b505afa158015612f0f573d6000803e3d6000fd5b505050506040513d6020811015612f2557600080fd5b50519050612f3485828461342e565b6130e38785612f4286614343565b6000036112bb8b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f8157600080fd5b505afa158015612f95573d6000803e3d6000fd5b505050506040513d6020811015612fab57600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b158015612fed57600080fd5b505afa158015613001573d6000803e3d6000fd5b505050506040513d602081101561301757600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561306357600080fd5b505afa158015613077573d6000803e3d6000fd5b505050506040513d602081101561308d57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d6257600080fd5b6130ef878530866110c0565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561313d57600080fd5b505af1158015613151573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050506040513d60208110156131ba57600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561320657600080fd5b505af115801561321a573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561112d573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156132f657600080fd5b505afa15801561330a573d6000803e3d6000fd5b505050506040513d602081101561332057600080fd5b505191506001600160a01b03821661333e5761333b87613d8e565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561337957600080fd5b505af115801561338d573d6000803e3d6000fd5b505050506040513d60208110156133a357600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b50505050613420898989898989896000613960565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561346957600080fd5b505af115801561347d573d6000803e3d6000fd5b505050506040513d602081101561349357600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156134eb57600080fd5b505af11580156134ff573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561353e57600080fd5b505af1158015613552573d6000803e3d6000fd5b505050506040513d602081101561356857600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b1580156135bc57600080fd5b505af11580156135d0573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561367a57600080fd5b505afa15801561368e573d6000803e3d6000fd5b505050506040513d60208110156136a457600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b1580156136ec57600080fd5b505afa158015613700573d6000803e3d6000fd5b505050506040513d602081101561371657600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b15801561376557600080fd5b505afa158015613779573d6000803e3d6000fd5b505050506040513d602081101561378f57600080fd5b5051905061379f89848887612125565b6137be8b886137b16117e48d8b614528565b6112bb868f89888d61438e565b6137cd8b88306112cf8961450b565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561381d57600080fd5b505afa158015613831573d6000803e3d6000fd5b505050506040513d602081101561384757600080fd5b50516138be57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561390c57600080fd5b505af1158015613920573d6000803e3d6000fd5b505050505050505050505050505050565b600061393e858430611f88565b905061394b8585836114b3565b61395786868385611935565b95945050505050565b600061396d898630611f88565b905061397f8989898985898989613634565b98975050505050505050565b6139958230612939565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156139ce57600080fd5b505afa1580156139e2573d6000803e3d6000fd5b505050506040513d60208110156139f857600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613a4d57600080fd5b505afa158015613a61573d6000803e3d6000fd5b505050506040513d6020811015613a7757600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b158015613ac057600080fd5b505afa158015613ad4573d6000803e3d6000fd5b505050506040513d6020811015613aea57600080fd5b50513080613af734614343565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561149657600080fd5b6000613b6e878430611f88565b9050613b7e878787878587611137565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613bd657600080fd5b505afa158015613bea573d6000803e3d6000fd5b505050506040513d6020811015613c0057600080fd5b50516001600160a01b031614613c4f576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6126b58686868686611672565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d0a57600080fd5b505afa158015613d1e573d6000803e3d6000fd5b505050506040513d6020811015613d3457600080fd5b50516001600160a01b031614613d83576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6110ba84848461398b565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b158015613dd957600080fd5b505af1158015613ded573d6000803e3d6000fd5b505050506040513d6020811015613e0357600080fd5b505192915050565b6000826001600160a01b03166310b89f30836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015613e5357600080fd5b505af1158015613e67573d6000803e3d6000fd5b505050506040513d6020811015613e7d57600080fd5b50511115613ed957604080516345e6bdcd60e01b8152600481018390526000602482018190526044820181905291516001600160a01b038516926345e6bdcd926064808201939182900301818387803b1580156126a157600080fd5b5050565b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613f1857600080fd5b505afa158015613f2c573d6000803e3d6000fd5b505050506040513d6020811015613f4257600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b158015613f9157600080fd5b505afa158015613fa5573d6000803e3d6000fd5b505050506040513d6020811015613fbb57600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b15801561400a57600080fd5b505afa15801561401e573d6000803e3d6000fd5b505050506040513d602081101561403457600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561408857600080fd5b505afa15801561409c573d6000803e3d6000fd5b505050506040513d60408110156140b257600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561410357600080fd5b505afa158015614117573d6000803e3d6000fd5b505050506040513d602081101561412d57600080fd5b505190506001600160a01b0381163014806141ca5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b15801561419a57600080fd5b505afa1580156141ae573d6000803e3d6000fd5b505050506040513d60208110156141c457600080fd5b50516001145b156141f5576141e587856141e088888989614ce5565b61342e565b611e398887600085600003612332565b61420687306141e088308989614ce5565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b158015611f0657600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156142bf57600080fd5b505afa1580156142d3573d6000803e3d6000fd5b505050506040513d60208110156142e957600080fd5b50516001600160a01b031614614338576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6110ba848484610f1b565b806000811215614389576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156143d757600080fd5b505af11580156143eb573d6000803e3d6000fd5b505050506040513d602081101561440157600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b15801561445357600080fd5b505afa158015614467573d6000803e3d6000fd5b505050506040513d602081101561447d57600080fd5b5051905061449684676765c793fa10079d601b1b614eb3565b811015614500576144cc826144bf6144b987676765c793fa10079d601b1b614eb3565b84614f0e565b816144c657fe5b04614343565b92506144e384676765c793fa10079d601b1b614eb3565b6144ed8484614eb3565b106144f857826144fd565b826001015b92505b505095945050505050565b600061452282676765c793fa10079d601b1b614eb3565b92915050565b60006145a082846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561456957600080fd5b505af115801561457d573d6000803e3d6000fd5b505050506040513d602081101561459357600080fd5b5051601203600a0a614eb3565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b1580156145ee57600080fd5b505afa158015614602573d6000803e3d6000fd5b505050506040513d60a081101561461857600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561466f57600080fd5b505afa158015614683573d6000803e3d6000fd5b505050506040513d604081101561469957600080fd5b506020015190506146ac8287816144c657fe5b9250808311156146c7576146bf81614343565b6000036146cc565b826000035b979650505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561471257600080fd5b505afa158015614726573d6000803e3d6000fd5b505050506040513d602081101561473c57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b15801561478b57600080fd5b505afa15801561479f573d6000803e3d6000fd5b505050506040513d60208110156147b557600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561480457600080fd5b505afa158015614818573d6000803e3d6000fd5b505050506040513d602081101561482e57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561488257600080fd5b505afa158015614896573d6000803e3d6000fd5b505050506040513d60408110156148ac57600080fd5b506020015190506148c487846141e087828088614ce5565b6148de89876148d288614343565b60000384600003612332565b6148ea898730886110c0565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561493857600080fd5b505af115801561494c573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561498b57600080fd5b505af115801561499f573d6000803e3d6000fd5b505050506040513d60208110156149b557600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015614a0157600080fd5b505af1158015614a15573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f19350505050158015614a46573d6000803e3d6000fd5b50505050505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8d57600080fd5b505afa158015614aa1573d6000803e3d6000fd5b505050506040513d6020811015614ab757600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b158015614b0657600080fd5b505afa158015614b1a573d6000803e3d6000fd5b505050506040513d6020811015614b3057600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015614b7f57600080fd5b505afa158015614b93573d6000803e3d6000fd5b505050506040513d6020811015614ba957600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015614bfd57600080fd5b505afa158015614c11573d6000803e3d6000fd5b505050506040513d6040811015614c2757600080fd5b50602001519050614c3f87846141e087828088614ce5565b6000614c4b8987614528565b9050614c678a88614c5b84614343565b60000385600003612332565b614c738a8830846110c0565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015614cc157600080fd5b505af1158015614cd5573d6000803e3d6000fd5b5050505050505050505050505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015614d2c57600080fd5b505afa158015614d40573d6000803e3d6000fd5b505050506040513d60a0811015614d5657600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015614dad57600080fd5b505afa158015614dc1573d6000803e3d6000fd5b505050506040513d6040811015614dd757600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015614e2b57600080fd5b505afa158015614e3f573d6000803e3d6000fd5b505050506040513d6020811015614e5557600080fd5b505190506000614e6e614e688486614eb3565b83614f0e565b9050676765c793fa10079d601b1b8104945080614e9686676765c793fa10079d601b1b614eb3565b10614ea15784614ea6565b846001015b9998505050505050505050565b6000811580614ece57505080820282828281614ecb57fe5b04145b614522576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614522576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a72315820738911aaf2530e2f0acb4230a145bc411a5630efb31d027350949eed238fa69464736f6c63430005100032
Deployed Bytecode
0x6080604052600436106102675760003560e01c806396e8d72c11610144578063c0791710116100b6578063e205c1081161007a578063e205c10814610d74578063e685cc0414610daa578063ead6472914610df6578063eb0b9a8514610e4d578063ee28457614610e90578063fba7591d14610ecc57610267565b8063c079171014610b99578063c56167c614610c1b578063cbd4be3f14610c5e578063d8467e3114610cc6578063db802a3214610d0c57610267565b8063a6add01111610108578063a6add011146109db578063b50a586914610a30578063ba727a9514610a6b578063bcd6deec14610ab2578063be5e6c0314610b01578063beabacc814610b5657610267565b806396e8d72c146108955780639f6f3d5b146108da5780639f887fde14610929578063a028a55e14610964578063a033df12146109ad57610267565b80634592aca7116101dd5780636ab6a491116101a15780636ab6a491146106ee5780636d68b70b1461073757806374b49dc4146107865780637b5a3b43146107c25780637bc3bd531461080b5780637df2eb251461084a57610267565b80634592aca714610581578063493c2049146105c45780634b6661991461060d5780635f6ef447146106565780636aa3ee111461069957610267565b80631d10f2311161022f5780631d10f231146103d65780632555bac31461041957806325cf37d01461044f5780632958f8a5146104965780633e29e565146104e757806342dd11bb1461053857610267565b8063036a23951461026c57806308f00e34146102b15780630aee8dec146102fa5780631558b048146103435780631c02d8461461038a575b600080fd5b34801561027857600080fd5b506102af6004803603606081101561028f57600080fd5b506001600160a01b03813581169160208101359091169060400135610f1b565b005b3480156102bd57600080fd5b506102af600480360360808110156102d457600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f35565b34801561030657600080fd5b506102af6004803603608081101561031d57600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166110a4565b34801561034f57600080fd5b506102af6004803603608081101561036657600080fd5b506001600160a01b03813581169160208101359160408201351690606001356110c0565b6102af600480360360c08110156103a057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611137565b3480156103e257600080fd5b506102af600480360360608110156103f957600080fd5b506001600160a01b03813581169160208101359160409091013516611436565b6102af6004803603606081101561042f57600080fd5b506001600160a01b038135811691602081013590911690604001356114b3565b34801561045b57600080fd5b506102af6004803603608081101561047257600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611546565b3480156104a257600080fd5b506102af600480360360a08110156104b957600080fd5b506001600160a01b03813581169160208101358216916040820135916060810135916080909101351661159f565b3480156104f357600080fd5b506102af600480360360a081101561050a57600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611672565b34801561054457600080fd5b506102af6004803603608081101561055b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611872565b34801561058d57600080fd5b506102af600480360360608110156105a457600080fd5b506001600160a01b038135811691602081013591604090910135166118d5565b3480156105d057600080fd5b506102af600480360360808110156105e757600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611935565b34801561061957600080fd5b506102af6004803603608081101561063057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611b28565b34801561066257600080fd5b506102af6004803603606081101561067957600080fd5b506001600160a01b03813581169160208101359091169060400135611f28565b3480156106a557600080fd5b506106dc600480360360608110156106bc57600080fd5b506001600160a01b03813581169160208101359160409091013516611f88565b60408051918252519081900360200190f35b3480156106fa57600080fd5b506102af6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561200f565b34801561074357600080fd5b506102af600480360360a081101561075a57600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561208f565b6106dc6004803603608081101561079c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120a6565b3480156107ce57600080fd5b506102af600480360360808110156107e557600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120c9565b34801561081757600080fd5b506102af6004803603606081101561082e57600080fd5b506001600160a01b0381351690602081013590604001356120d7565b34801561085657600080fd5b506102af6004803603608081101561086d57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612125565b3480156108a157600080fd5b506102af600480360360808110156108b857600080fd5b506001600160a01b038135169060208101359060408101359060600135612332565b3480156108e657600080fd5b506102af600480360360a08110156108fd57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612388565b34801561093557600080fd5b506102af6004803603604081101561094c57600080fd5b506001600160a01b0381358116916020013516612649565b34801561097057600080fd5b506102af6004803603608081101561098757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356126bd565b6102af600480360360408110156109c357600080fd5b506001600160a01b0381358116916020013516612939565b3480156109e757600080fd5b506102af600480360360c08110156109fe57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612b1e565b348015610a3c57600080fd5b506102af60048036036040811015610a5357600080fd5b506001600160a01b0381358116916020013516612ded565b348015610a7757600080fd5b506102af60048036036080811015610a8e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135612e45565b348015610abe57600080fd5b506102af600480360360a0811015610ad557600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612e9e565b348015610b0d57600080fd5b506102af600480360360c0811015610b2457600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612eb5565b348015610b6257600080fd5b506102af60048036036060811015610b7957600080fd5b506001600160a01b0381358116916020810135909116906040013561324b565b348015610ba557600080fd5b50610bf8600480360360e0811015610bbc57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c001356132ab565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610c2757600080fd5b506102af60048036036060811015610c3e57600080fd5b506001600160a01b0381358116916020810135909116906040013561342e565b348015610c6a57600080fd5b506102af6004803603610100811015610c8257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613634565b6106dc600480360360a0811015610cdc57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160809091013516613931565b348015610d1857600080fd5b506106dc6004803603610100811015610d3057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613960565b6102af60048036036060811015610d8a57600080fd5b506001600160a01b0381358116916020810135909116906040013561398b565b6106dc600480360360c0811015610dc057600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135613b61565b348015610e0257600080fd5b506102af600480360360c0811015610e1957600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516613b88565b348015610e5957600080fd5b506102af60048036036060811015610e7057600080fd5b506001600160a01b03813581169160208101359091169060400135613c5c565b6102af60048036036080811015610ea657600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613cbc565b348015610ed857600080fd5b50610eff60048036036020811015610eef57600080fd5b50356001600160a01b0316613d8e565b604080516001600160a01b039092168252519081900360200190f35b610f258382613e0b565b610f30838383613edd565b505050565b610f41848330846110c0565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b505050506040513d602081101561100c57600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561105857600080fd5b505af115801561106c573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801561109d573d6000803e3d6000fd5b5050505050565b6110ae8483613e0b565b6110ba84848484614271565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b15801561111957600080fd5b505af115801561112d573d6000803e3d6000fd5b5050505050505050565b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561117d57600080fd5b505afa158015611191573d6000803e3d6000fd5b505050506040513d60208110156111a757600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b1580156111ef57600080fd5b505afa158015611203573d6000803e3d6000fd5b505050506040513d602081101561121957600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561126857600080fd5b505afa15801561127c573d6000803e3d6000fd5b505050506040513d602081101561129257600080fd5b505190506112a08784612939565b6112c089866112ae34614343565b6112bb868d89888c61438e565b612332565b6112d48986306112cf8861450b565b611546565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b50516113c557816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050505050565b6000836001600160a01b0316632726b073836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b505190506115318382612939565b6110ba848361153f34614343565b6000612332565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b15801561111957600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d602081101561161757600080fd5b50516001600160a01b031614611666576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61109d85858585611b28565b61167e84308484612125565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b757600080fd5b505afa1580156116cb573d6000803e3d6000fd5b505050506040513d60208110156116e157600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b15801561173657600080fd5b505afa15801561174a573d6000803e3d6000fd5b505050506040513d602081101561176057600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b1580156117a957600080fd5b505afa1580156117bd573d6000803e3d6000fd5b505050506040513d60208110156117d357600080fd5b505130806117e96117e48b8a614528565b614343565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561185357600080fd5b505af1158015611867573d6000803e3d6000fd5b505050505050505050565b6118878483306118828786614528565b6110c0565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561111957600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561149657600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d60208110156119b757600080fd5b505190506001600160a01b0381161580611a475750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0f57600080fd5b505afa158015611a23573d6000803e3d6000fd5b505050506040513d6020811015611a3957600080fd5b50516001600160a01b031614155b15611b1d57813b8015611a95576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050506040513d6020811015611b1757600080fd5b50519150505b61109d848483611436565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6357600080fd5b505afa158015611b77573d6000803e3d6000fd5b505050506040513d6020811015611b8d57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611bdc57600080fd5b505afa158015611bf0573d6000803e3d6000fd5b505050506040513d6020811015611c0657600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611c5557600080fd5b505afa158015611c69573d6000803e3d6000fd5b505050506040513d6020811015611c7f57600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611cce57600080fd5b505afa158015611ce2573d6000803e3d6000fd5b505050506040513d6020811015611cf857600080fd5b505190506001600160a01b038116301480611d955750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611d6557600080fd5b505afa158015611d79573d6000803e3d6000fd5b505050506040513d6020811015611d8f57600080fd5b50516001145b15611e3e57611da587848761342e565b611e39888760006112bb88896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d6020811015611e3057600080fd5b505189896145a7565b61112d565b611e4987308761342e565b836001600160a01b03166376088703838530306000611e778b676765c793fa10079d601b1b8e028c8c6145a7565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b505050505050505050505050565b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b5051949350505050565b600061201b8483614528565b9050612035858461202b84614343565b6000036000612332565b612041858430846110c0565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b15801561185357600080fd5b6120998583613e0b565b61109d85858585856146d7565b60006120b3848330611f88565b90506120c1858585846126bd565b949350505050565b610f35848361202b84614343565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b80156122d257836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561216657600080fd5b505af115801561217a573d6000803e3d6000fd5b505050506040513d602081101561219057600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561223b57600080fd5b505af115801561224f573d6000803e3d6000fd5b505050506040513d602081101561226557600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561111957600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561111957600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156123ce57600080fd5b505afa1580156123e2573d6000803e3d6000fd5b505050506040513d60208110156123f857600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b15801561244057600080fd5b505afa158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b1580156124b957600080fd5b505afa1580156124cd573d6000803e3d6000fd5b505050506040513d60208110156124e357600080fd5b505190506124fb888660006112bb868c89888c61438e565b61250a8886306112cf8861450b565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561255a57600080fd5b505afa15801561256e573d6000803e3d6000fd5b505050506040513d602081101561258457600080fd5b50516125fb57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156125e257600080fd5b505af11580156125f6573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b158015611f0657600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126a157600080fd5b505af11580156126b5573d6000803e3d6000fd5b505050505050565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f857600080fd5b505afa15801561270c573d6000803e3d6000fd5b505050506040513d602081101561272257600080fd5b5051604080516336569e7760e01b815290519192506001600160a01b038616916336569e7791600480820192602092909190829003018186803b15801561276857600080fd5b505afa15801561277c573d6000803e3d6000fd5b505050506040513d602081101561279257600080fd5b50516001600160a01b038281169116146127e2576040805162461bcd60e51b815260206004820152600c60248201526b0ecc2e85adad2e6dac2e8c6d60a31b604482015290519081900360640190fd5b60408051634538c4eb60e01b81523060048201526001600160a01b0387811660248301529151600092841691634538c4eb916044808301926020929190829003018186803b15801561283357600080fd5b505afa158015612847573d6000803e3d6000fd5b505050506040513d602081101561285d57600080fd5b505160408051634538c4eb60e01b81523060048201526001600160a01b0388811660248301529151921515935060009291851691634538c4eb91604480820192602092909190829003018186803b1580156128b757600080fd5b505afa1580156128cb573d6000803e3d6000fd5b505050506040513d60208110156128e157600080fd5b505115159050816128f6576128f68388612ded565b80612905576129058387612ded565b6129108786306118d5565b61291b863086613c5c565b8161292a5761292a8388612649565b806114aa576114aa8387612649565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505050506040513d602081101561299e57600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b505050506040513d6020811015612a6257600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612ab557600080fd5b505af1158015612ac9573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b1580156126a157600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b6457600080fd5b505afa158015612b78573d6000803e3d6000fd5b505050506040513d6020811015612b8e57600080fd5b50519050612b9d85828461342e565b6000612ba98785614528565b9050612d938886612bb984614343565b6000036112bb8c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612bf857600080fd5b505afa158015612c0c573d6000803e3d6000fd5b505050506040513d6020811015612c2257600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6c57600080fd5b505afa158015612c80573d6000803e3d6000fd5b505050506040513d6020811015612c9657600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b158015612ce257600080fd5b505afa158015612cf6573d6000803e3d6000fd5b505050506040513d6020811015612d0c57600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d6257600080fd5b505afa158015612d76573d6000803e3d6000fd5b505050506040513d6020811015612d8c57600080fd5b50516145a7565b612d9f888630846110c0565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b158015611f0657600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126a157600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b15801561111957600080fd5b612ea88583613e0b565b61109d8585858585614a52565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612efb57600080fd5b505afa158015612f0f573d6000803e3d6000fd5b505050506040513d6020811015612f2557600080fd5b50519050612f3485828461342e565b6130e38785612f4286614343565b6000036112bb8b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f8157600080fd5b505afa158015612f95573d6000803e3d6000fd5b505050506040513d6020811015612fab57600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b158015612fed57600080fd5b505afa158015613001573d6000803e3d6000fd5b505050506040513d602081101561301757600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561306357600080fd5b505afa158015613077573d6000803e3d6000fd5b505050506040513d602081101561308d57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d6257600080fd5b6130ef878530866110c0565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561313d57600080fd5b505af1158015613151573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050506040513d60208110156131ba57600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561320657600080fd5b505af115801561321a573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561112d573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156132f657600080fd5b505afa15801561330a573d6000803e3d6000fd5b505050506040513d602081101561332057600080fd5b505191506001600160a01b03821661333e5761333b87613d8e565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561337957600080fd5b505af115801561338d573d6000803e3d6000fd5b505050506040513d60208110156133a357600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b50505050613420898989898989896000613960565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561346957600080fd5b505af115801561347d573d6000803e3d6000fd5b505050506040513d602081101561349357600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156134eb57600080fd5b505af11580156134ff573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561353e57600080fd5b505af1158015613552573d6000803e3d6000fd5b505050506040513d602081101561356857600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b1580156135bc57600080fd5b505af11580156135d0573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561367a57600080fd5b505afa15801561368e573d6000803e3d6000fd5b505050506040513d60208110156136a457600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b1580156136ec57600080fd5b505afa158015613700573d6000803e3d6000fd5b505050506040513d602081101561371657600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b15801561376557600080fd5b505afa158015613779573d6000803e3d6000fd5b505050506040513d602081101561378f57600080fd5b5051905061379f89848887612125565b6137be8b886137b16117e48d8b614528565b6112bb868f89888d61438e565b6137cd8b88306112cf8961450b565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561381d57600080fd5b505afa158015613831573d6000803e3d6000fd5b505050506040513d602081101561384757600080fd5b50516138be57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561390c57600080fd5b505af1158015613920573d6000803e3d6000fd5b505050505050505050505050505050565b600061393e858430611f88565b905061394b8585836114b3565b61395786868385611935565b95945050505050565b600061396d898630611f88565b905061397f8989898985898989613634565b98975050505050505050565b6139958230612939565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156139ce57600080fd5b505afa1580156139e2573d6000803e3d6000fd5b505050506040513d60208110156139f857600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613a4d57600080fd5b505afa158015613a61573d6000803e3d6000fd5b505050506040513d6020811015613a7757600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b158015613ac057600080fd5b505afa158015613ad4573d6000803e3d6000fd5b505050506040513d6020811015613aea57600080fd5b50513080613af734614343565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561149657600080fd5b6000613b6e878430611f88565b9050613b7e878787878587611137565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613bd657600080fd5b505afa158015613bea573d6000803e3d6000fd5b505050506040513d6020811015613c0057600080fd5b50516001600160a01b031614613c4f576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6126b58686868686611672565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561149657600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d0a57600080fd5b505afa158015613d1e573d6000803e3d6000fd5b505050506040513d6020811015613d3457600080fd5b50516001600160a01b031614613d83576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6110ba84848461398b565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b158015613dd957600080fd5b505af1158015613ded573d6000803e3d6000fd5b505050506040513d6020811015613e0357600080fd5b505192915050565b6000826001600160a01b03166310b89f30836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015613e5357600080fd5b505af1158015613e67573d6000803e3d6000fd5b505050506040513d6020811015613e7d57600080fd5b50511115613ed957604080516345e6bdcd60e01b8152600481018390526000602482018190526044820181905291516001600160a01b038516926345e6bdcd926064808201939182900301818387803b1580156126a157600080fd5b5050565b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613f1857600080fd5b505afa158015613f2c573d6000803e3d6000fd5b505050506040513d6020811015613f4257600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b158015613f9157600080fd5b505afa158015613fa5573d6000803e3d6000fd5b505050506040513d6020811015613fbb57600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b15801561400a57600080fd5b505afa15801561401e573d6000803e3d6000fd5b505050506040513d602081101561403457600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561408857600080fd5b505afa15801561409c573d6000803e3d6000fd5b505050506040513d60408110156140b257600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561410357600080fd5b505afa158015614117573d6000803e3d6000fd5b505050506040513d602081101561412d57600080fd5b505190506001600160a01b0381163014806141ca5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b15801561419a57600080fd5b505afa1580156141ae573d6000803e3d6000fd5b505050506040513d60208110156141c457600080fd5b50516001145b156141f5576141e587856141e088888989614ce5565b61342e565b611e398887600085600003612332565b61420687306141e088308989614ce5565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b158015611f0657600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156142bf57600080fd5b505afa1580156142d3573d6000803e3d6000fd5b505050506040513d60208110156142e957600080fd5b50516001600160a01b031614614338576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6110ba848484610f1b565b806000811215614389576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156143d757600080fd5b505af11580156143eb573d6000803e3d6000fd5b505050506040513d602081101561440157600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b15801561445357600080fd5b505afa158015614467573d6000803e3d6000fd5b505050506040513d602081101561447d57600080fd5b5051905061449684676765c793fa10079d601b1b614eb3565b811015614500576144cc826144bf6144b987676765c793fa10079d601b1b614eb3565b84614f0e565b816144c657fe5b04614343565b92506144e384676765c793fa10079d601b1b614eb3565b6144ed8484614eb3565b106144f857826144fd565b826001015b92505b505095945050505050565b600061452282676765c793fa10079d601b1b614eb3565b92915050565b60006145a082846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561456957600080fd5b505af115801561457d573d6000803e3d6000fd5b505050506040513d602081101561459357600080fd5b5051601203600a0a614eb3565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b1580156145ee57600080fd5b505afa158015614602573d6000803e3d6000fd5b505050506040513d60a081101561461857600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561466f57600080fd5b505afa158015614683573d6000803e3d6000fd5b505050506040513d604081101561469957600080fd5b506020015190506146ac8287816144c657fe5b9250808311156146c7576146bf81614343565b6000036146cc565b826000035b979650505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561471257600080fd5b505afa158015614726573d6000803e3d6000fd5b505050506040513d602081101561473c57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b15801561478b57600080fd5b505afa15801561479f573d6000803e3d6000fd5b505050506040513d60208110156147b557600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561480457600080fd5b505afa158015614818573d6000803e3d6000fd5b505050506040513d602081101561482e57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561488257600080fd5b505afa158015614896573d6000803e3d6000fd5b505050506040513d60408110156148ac57600080fd5b506020015190506148c487846141e087828088614ce5565b6148de89876148d288614343565b60000384600003612332565b6148ea898730886110c0565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561493857600080fd5b505af115801561494c573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561498b57600080fd5b505af115801561499f573d6000803e3d6000fd5b505050506040513d60208110156149b557600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015614a0157600080fd5b505af1158015614a15573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f19350505050158015614a46573d6000803e3d6000fd5b50505050505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8d57600080fd5b505afa158015614aa1573d6000803e3d6000fd5b505050506040513d6020811015614ab757600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b158015614b0657600080fd5b505afa158015614b1a573d6000803e3d6000fd5b505050506040513d6020811015614b3057600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015614b7f57600080fd5b505afa158015614b93573d6000803e3d6000fd5b505050506040513d6020811015614ba957600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015614bfd57600080fd5b505afa158015614c11573d6000803e3d6000fd5b505050506040513d6040811015614c2757600080fd5b50602001519050614c3f87846141e087828088614ce5565b6000614c4b8987614528565b9050614c678a88614c5b84614343565b60000385600003612332565b614c738a8830846110c0565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015614cc157600080fd5b505af1158015614cd5573d6000803e3d6000fd5b5050505050505050505050505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015614d2c57600080fd5b505afa158015614d40573d6000803e3d6000fd5b505050506040513d60a0811015614d5657600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015614dad57600080fd5b505afa158015614dc1573d6000803e3d6000fd5b505050506040513d6040811015614dd757600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015614e2b57600080fd5b505afa158015614e3f573d6000803e3d6000fd5b505050506040513d6020811015614e5557600080fd5b505190506000614e6e614e688486614eb3565b83614f0e565b9050676765c793fa10079d601b1b8104945080614e9686676765c793fa10079d601b1b614eb3565b10614ea15784614ea6565b846001015b9998505050505050505050565b6000811580614ece57505080820282828281614ecb57fe5b04145b614522576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614522576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a72315820738911aaf2530e2f0acb4230a145bc411a5630efb31d027350949eed238fa69464736f6c63430005100032
Deployed Bytecode Sourcemap
36705:3027:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38724:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38724:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38724:195:0;;;;;;;;;;;;;;;;;:::i;:::-;;18640:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18640:526:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18640:526:0;;;;;;;;;;;;;;;;;;;;;;:::i;38927:234::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38927:234:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;38927:234:0;;;;;;;;;;;;;;;;;;;;;;:::i;14559:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14559:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14559:173:0;;;;;;;;;;;;;;;;;;;;:::i;23166:1058::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;23166:1058:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13123:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13123:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13123:149:0;;;;;;;;;;;;;;;;;:::i;37473:409::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;37473:409:0;;;;;;;;;;;;;;;;;:::i;14740:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14740:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14740:173:0;;;;;;;;;;;;;;;;;;;;:::i;21504:275::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21504:275:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21504:275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16563:611::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16563:611:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16563:611:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19174:383::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19174:383:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19174:383:0;;;;;;;;;;;;;;;;;;;;;;:::i;15101:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15101:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15101:149:0;;;;;;;;;;;;;;;;;:::i;13280:921::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13280:921:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13280:921:0;;;;;;;;;;;;;;;;;;;;;;:::i;20428:1068::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20428:1068:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20428:1068:0;;;;;;;;;;;;;;;;;;;;;;:::i;14396:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14396:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14396:155:0;;;;;;;;;;;;;;;;;:::i;12938:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12938:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12938:177:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18135:497;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18135:497:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18135:497:0;;;;;;;;;;;;;;;;;;;;;;:::i;39169:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39169:276:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;39169:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;38258:295::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;38258:295:0;;;;;;;;;;;;;;;;;;;;;;:::i;17513:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17513:614:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17513:614:0;;;;;;;;;;;;;;;;;;;;;;:::i;15417:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15417:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15417:160:0;;;;;;;;;;;;;:::i;12135:551::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12135:551:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12135:551:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;14921:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14921:172:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14921:172:0;;;;;;;;;;;;;;;;;;:::i;19565:855::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19565:855:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19565:855:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12816:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12816:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12816:114:0;;;;;;;;;;:::i;36754:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36754:711:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;36754:711:0;;;;;;;;;;;;;;;;;;;;;;:::i;11752:375::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11752:375:0;;;;;;;;;;:::i;28926:905::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28926:905:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;28926:905:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12694:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12694:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12694:114:0;;;;;;;;;;:::i;14209:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14209:179:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14209:179:0;;;;;;;;;;;;;;;;;;;;:::i;39453:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39453:276:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;39453:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26806:1022::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26806:1022:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;26806:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11633:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11633:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11633:111:0;;;;;;;;;;;;;;;;;:::i;26120:678::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26120:678:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;26120:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;26120:678:0;;;;;;;;;;;;;;;;;;;;;8173:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8173:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8173:375:0;;;;;;;;;;;;;;;;;:::i;24577:1130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24577:1130:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24577:1130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;37890:360::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;37890:360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25715:397::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25715:397:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;25715:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15740:542::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15740:542:0;;;;;;;;;;;;;;;;;:::i;24232:337::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24232:337:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17182:323::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17182:323:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17182:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15258:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15258:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15258:151:0;;;;;;;;;;;;;;;;;:::i;16290:265::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16290:265:0;;;;;;;;;;;;;;;;;;;;;;:::i;15585:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15585:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15585:147:0;-1:-1:-1;;;;;15585:147:0;;:::i;:::-;;;;-1:-1:-1;;;;;15585:147:0;;;;;;;;;;;;;;38724:195;38837:27;38851:7;38860:3;38837:13;:27::i;:::-;38875:36;38889:7;38898;38907:3;38875:13;:36::i;:::-;38724:195;;;:::o;18640:526::-;18837:38;18842:7;18851:3;18864:4;18871:3;18837:4;:38::i;:::-;18946:45;;;-1:-1:-1;;;18946:45:0;;18980:4;18946:45;;;;;;;;;;;;-1:-1:-1;;;;;18946:25:0;;;;;:45;;;;;-1:-1:-1;;18946:45:0;;;;;;;-1:-1:-1;18946:25:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;18946:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18946:45:0;;;;19047:7;-1:-1:-1;;;;;19035:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19035:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19035:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19035:26:0;:40;;;-1:-1:-1;;;19035:40:0;;;;;;;;;;-1:-1:-1;;;;;19035:35:0;;;;;;:40;;;;;-1:-1:-1;;19035:40:0;;;;;;;;-1:-1:-1;19035:35:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19035:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19134:24:0;;:10;;-1:-1:-1;19134:24:0;;;;;-1:-1:-1;19154:3:0;;19134:24;;;;19154:3;19134:10;:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19134:24:0;18640:526;;;;:::o;38927:234::-;39068:27;39082:7;39091:3;39068:13;:27::i;:::-;39106:47;39124:7;39133;39142:3;39147:5;39106:17;:47::i;:::-;38927:234;;;;:::o;14559:173::-;14684:40;;;-1:-1:-1;;;14684:40:0;;;;;;;;-1:-1:-1;;;;;14684:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;14684:40:0;;;;;;;;-1:-1:-1;14684:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;14684:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14684:40:0;;;;14559:173;;;;:::o;23166:1058::-;23362:11;23388:7;-1:-1:-1;;;;;23376:25:0;;23402:3;23376:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23376:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23376:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23376:30:0;23431:26;;;-1:-1:-1;;;23431:26:0;;;;23376:30;;-1:-1:-1;23417:11:0;;-1:-1:-1;;;;;23431:24:0;;;;;:26;;;;;23376:30;;23431:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;23431:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23431:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23431:26:0;23482:30;;;-1:-1:-1;;;23482:30:0;;;;;;;;;;23431:26;;-1:-1:-1;23468:11:0;;-1:-1:-1;;;;;23482:25:0;;;;;:30;;;;;23431:26;;23482:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;23482:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23482:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23482:30:0;;-1:-1:-1;23602:26:0;23615:7;23624:3;23602:12;:26::i;:::-;23701:76;23706:7;23715:3;23720:16;23726:9;23720:5;:16::i;:::-;23738:38;23751:3;23756;23761;23766;23771:4;23738:12;:38::i;:::-;23701:4;:76::i;:::-;23868:46;23873:7;23882:3;23895:4;23902:11;23908:4;23902:5;:11::i;:::-;23868:4;:46::i;:::-;24000:49;;;-1:-1:-1;;;24000:49:0;;24025:4;24000:49;;;;-1:-1:-1;;;;;24000:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;24000:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24000:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24000:49:0;23996:113;;24079:3;-1:-1:-1;;;;;24071:17:0;;24089:7;24071:26;;;;;;;;;;;;;-1:-1:-1;;;;;24071:26:0;-1:-1:-1;;;;;24071:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24071:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24071:26:0;;;;23996:113;24173:43;;;-1:-1:-1;;;24173:43:0;;24199:10;24173:43;;;;;;;;;;;;-1:-1:-1;;;;;24173:25:0;;;;;:43;;;;;-1:-1:-1;;24173:43:0;;;;;;;-1:-1:-1;24173:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;24173:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24173:43:0;;;;23166:1058;;;;;;;;;:::o;13123:149::-;13241:7;-1:-1:-1;;;;;13229:25:0;;13255:3;13260;13229:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13229:35:0;-1:-1:-1;;;;;13229:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13229:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13229:35:0;;;;13123:149;;;:::o;37473:409::-;37600:11;37626:7;-1:-1:-1;;;;;37614:25:0;;37640:3;37614:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37614:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37614:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37614:30:0;;-1:-1:-1;37736:26:0;37749:7;37614:30;37736:12;:26::i;:::-;37835:39;37840:7;37849:3;37854:16;37860:9;37854:5;:16::i;:::-;37872:1;37835:4;:39::i;14740:173::-;14865:40;;;-1:-1:-1;;;14865:40:0;;;;;;;;-1:-1:-1;;;;;14865:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;14865:40:0;;;;;;;;-1:-1:-1;14865:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;21504:275:0;21703:5;-1:-1:-1;;;;;21669:39:0;21681:7;-1:-1:-1;;;;;21669:25:0;;21695:3;21669:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21669:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21669:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21669:30:0;-1:-1:-1;;;;;21669:39:0;;21661:67;;;;;-1:-1:-1;;;21661:67:0;;;;;;;;;;;;-1:-1:-1;;;21661:67:0;;;;;;;;;;;;;;;21739:32;21744:7;21753;21762:3;21767;21739:4;:32::i;16563:611::-;16796:55;16809:7;16826:4;16833:3;16838:12;16796;:55::i;:::-;16926:7;-1:-1:-1;;;;;16914:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16914:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16914:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16914:26:0;16961:30;;;-1:-1:-1;;;16961:30:0;;;;;;;;;;-1:-1:-1;;;;;16906:40:0;;;;;;16961:25;;;;;;:30;;;;;16914:26;;16961:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16961:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16961:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16961:30:0;17006;;;-1:-1:-1;;;17006:30:0;;;;;;;;;;-1:-1:-1;;;;;17006:25:0;;;;;:30;;;;;16961;;17006;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17006:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17006:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17006:30:0;17059:4;;17107:32;17113:25;17125:7;17134:3;17113:11;:25::i;:::-;17107:5;:32::i;:::-;16906:260;;;-1:-1:-1;;;;;;16906:260:0;;;;;;;;;;;;;;-1:-1:-1;;;;;16906:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;17154:1;16906:260;;;;;;;;;;;;;;;;;;17154:1;16906:260;;;;5:2:-1;;;;30:1;27;20:12;5:2;16906:260:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16906:260:0;;;;16563:611;;;;;:::o;19174:383::-;19371:60;19376:7;19385:3;19398:4;19405:25;19417:7;19426:3;19405:11;:25::i;:::-;19371:4;:60::i;:::-;19507:42;;;-1:-1:-1;;;19507:42:0;;19533:10;19507:42;;;;;;;;;;;;-1:-1:-1;;;;;19507:25:0;;;;;:42;;;;;-1:-1:-1;;19507:42:0;;;;;;;-1:-1:-1;19507:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;15101:149:0;15219:7;-1:-1:-1;;;;;15207:25:0;;15233:3;15238;15207:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15207:35:0;-1:-1:-1;;;;;15207:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;13280:921:0;13463:13;13497;-1:-1:-1;;;;;13479:40:0;;13520:3;13479:45;;;;;;;;;;;;;-1:-1:-1;;;;;13479:45:0;-1:-1:-1;;;;;13479:45:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13479:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13479:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13479:45:0;;-1:-1:-1;;;;;;13630:19:0;;;;:54;;;13681:3;-1:-1:-1;;;;;13653:31:0;13663:5;-1:-1:-1;;;;;13653:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13653:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13653:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13653:24:0;-1:-1:-1;;;;;13653:31:0;;;13630:54;13626:489;;;13763:16;;13951:10;;13943:40;;;;;-1:-1:-1;;;13943:40:0;;;;;;;;;;;;-1:-1:-1;;;13943:40:0;;;;;;;;;;;;;;;14078:13;-1:-1:-1;;;;;14060:38:0;;14099:3;14060:43;;;;;;;;;;;;;-1:-1:-1;;;;;14060:43:0;-1:-1:-1;;;;;14060:43:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14060:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14060:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14060:43:0;;-1:-1:-1;;13626:489:0;14168:25;14173:7;14182:3;14187:5;14168:4;:25::i;20428:1068::-;20557:11;20583:7;-1:-1:-1;;;;;20571:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20571:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20571:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20571:26:0;20622:30;;;-1:-1:-1;;;20622:30:0;;;;;;;;;;20571:26;;-1:-1:-1;20608:11:0;;-1:-1:-1;;;;;20622:25:0;;;;;:30;;;;;20571:26;;20622:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;20622:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20622:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20622:30:0;20677;;;-1:-1:-1;;;20677:30:0;;;;;;;;;;20622;;-1:-1:-1;20663:11:0;;-1:-1:-1;;;;;20677:25:0;;;;;:30;;;;;20622;;20677;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;20677:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20677:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20677:30:0;20734;;;-1:-1:-1;;;20734:30:0;;;;;;;;;;20677;;-1:-1:-1;20720:11:0;;-1:-1:-1;;;;;20734:25:0;;;;;:30;;;;;20677;;20734;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;20734:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20734:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20734:30:0;;-1:-1:-1;;;;;;20779:20:0;;20794:4;20779:20;;:81;;-1:-1:-1;20803:52:0;;;-1:-1:-1;;;20803:52:0;;-1:-1:-1;;;;;20803:52:0;;;;;;;;;;;;;20849:4;20803:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;20803:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20803:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20803:52:0;20859:1;20803:57;20779:81;20775:714;;;20923:31;20936:7;20945:3;20950;20923:12;:31::i;:::-;21010:73;21015:7;21024:3;21029:1;21032:50;21045:3;21058;-1:-1:-1;;;;;21050:16:0;;21067:3;21050:21;;;;;;;;;;;;;-1:-1:-1;;;;;21050:21:0;-1:-1:-1;;;;;21050:21:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21050:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21050:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21050:21:0;21073:3;21078;21032:12;:50::i;21010:73::-;20775:714;;;21163:41;21176:7;21193:4;21200:3;21163:12;:41::i;:::-;21268:3;-1:-1:-1;;;;;21260:17:0;;21296:3;21318;21348:4;21380;21404:1;21424:38;21437:3;-1:-1:-1;;;21442:3:0;:9;21453:3;21458;21424:12;:38::i;:::-;21260:217;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21260:217:0;-1:-1:-1;;;;;21260:217:0;;;;;;-1:-1:-1;;;;;21260:217:0;-1:-1:-1;;;;;21260:217:0;;;;;;-1:-1:-1;;;;;21260:217:0;-1:-1:-1;;;;;21260:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21260:217:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21260:217:0;;;;20428:1068;;;;;;;;:::o;14396:155::-;14517:7;-1:-1:-1;;;;;14505:29:0;;14535:3;14540:2;14505:38;;;;;;;;;;;;;-1:-1:-1;;;;;14505:38:0;-1:-1:-1;;;;;14505:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;12938:177:0;13072:35;;;-1:-1:-1;;;13072:35:0;;;;;;;;-1:-1:-1;;;;;13072:35:0;;;;;;;;;13045:8;;13072:25;;;;;:35;;;;;;;;;;;;;;13045:8;13072:25;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;13072:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13072:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13072:35:0;;12938:177;-1:-1:-1;;;;12938:177:0:o;18135:497::-;18267:8;18278:25;18290:7;18299:3;18278:11;:25::i;:::-;18267:36;;18360:34;18365:7;18374:3;18380:10;18386:3;18380:5;:10::i;:::-;18379:11;;18392:1;18360:4;:34::i;:::-;18470:38;18475:7;18484:3;18497:4;18504:3;18470:4;:38::i;:::-;18582:42;;;-1:-1:-1;;;18582:42:0;;18608:10;18582:42;;;;;;;;;;;;-1:-1:-1;;;;;18582:25:0;;;;;:42;;;;;-1:-1:-1;;18582:42:0;;;;;;;-1:-1:-1;18582:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;39169:276:0;39338:27;39352:7;39361:3;39338:13;:27::i;:::-;39376:61;39400:7;39409;39418;39427:3;39432:4;39376:23;:61::i;38258:295::-;38425:8;38452:36;38457:10;38469:3;38482:4;38452;:36::i;:::-;38446:42;;38499:46;38512:10;38523;38534:6;38541:3;38499:12;:46::i;:::-;38258:295;;;;;;:::o;17513:614::-;17690:34;17695:7;17704:3;17710:10;17716:3;17710:5;:10::i;15417:160::-;15539:7;-1:-1:-1;;;;;15527:26:0;;15554:6;15562;15527:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;12135:551:0;12318:12;12314:275;;;12409:3;-1:-1:-1;;;;;12397:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12397:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12397:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12397:22:0;:67;;;-1:-1:-1;;;12397:67:0;;12433:10;12397:67;;;;12453:4;12397:67;;;;;;;;;;;;-1:-1:-1;;;;;12397:35:0;;;;;;:67;;;;;-1:-1:-1;;12397:67:0;;;;;;;;-1:-1:-1;12397:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;12397:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12397:67:0;;;;12549:3;-1:-1:-1;;;;;12537:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12537:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12537:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12537:22:0;:40;;;-1:-1:-1;;;12537:40:0;;-1:-1:-1;;;;;12537:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;12537:40:0;;;;;;;-1:-1:-1;12537:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;12537:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12537:40:0;;;;12314:275;12659:3;-1:-1:-1;;;;;12647:21:0;;12669:3;12674;12647:31;;;;;;;;;;;;;-1:-1:-1;;;;;12647:31:0;-1:-1:-1;;;;;12647:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;14921:172:0;15055:7;-1:-1:-1;;;;;15043:25:0;;15069:3;15074:4;15080;15043:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;19565:855:0;19716:11;19742:7;-1:-1:-1;;;;;19730:25:0;;19756:3;19730:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19730:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19730:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19730:30:0;19785:26;;;-1:-1:-1;;;19785:26:0;;;;19730:30;;-1:-1:-1;19771:11:0;;-1:-1:-1;;;;;19785:24:0;;;;;:26;;;;;19730:30;;19785:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;19785:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19785:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19785:26:0;19836:30;;;-1:-1:-1;;;19836:30:0;;;;;;;;;;19785:26;;-1:-1:-1;19822:11:0;;-1:-1:-1;;;;;19836:25:0;;;;;:30;;;;;19785:26;;19836:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;19836:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19836:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19836:30:0;;-1:-1:-1;19915:60:0;19920:7;19929:3;19934:1;19937:37;19950:3;19955;19960;19836:30;19970:3;19937:12;:37::i;19915:60::-;20066:45;20071:7;20080:3;20093:4;20100:10;20106:3;20100:5;:10::i;20066:45::-;20197:49;;;-1:-1:-1;;;20197:49:0;;20222:4;20197:49;;;;-1:-1:-1;;;;;20197:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;20197:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20197:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20197:49:0;20193:113;;20276:3;-1:-1:-1;;;;;20268:17:0;;20286:7;20268:26;;;;;;;;;;;;;-1:-1:-1;;;;;20268:26:0;-1:-1:-1;;;;;20268:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20268:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20268:26:0;;;;20193:113;20370:42;;;-1:-1:-1;;;20370:42:0;;20396:10;20370:42;;;;;;;;;;;;-1:-1:-1;;;;;20370:25:0;;;;;:42;;;;;-1:-1:-1;;20370:42:0;;;;;;;-1:-1:-1;20370:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;12816:114:0;12908:3;-1:-1:-1;;;;;12899:18:0;;12918:3;12899:23;;;;;;;;;;;;;-1:-1:-1;;;;;12899:23:0;-1:-1:-1;;;;;12899:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12899:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12899:23:0;;;;12816:114;;:::o;36754:711::-;36903:11;36929:10;-1:-1:-1;;;;;36917:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36917:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36917:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36917:29:0;36972;;;-1:-1:-1;;;36972:29:0;;;;36917;;-1:-1:-1;;;;;;36972:27:0;;;;;:29;;;;;36917;;36972;;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;36972:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36972:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36972:29:0;-1:-1:-1;;;;;36965:36:0;;;;;;36957:61;;;;;-1:-1:-1;;;36957:61:0;;;;;;;;;;;;-1:-1:-1;;;36957:61:0;;;;;;;;;;;;;;;37046:43;;;-1:-1:-1;;;37046:43:0;;37071:4;37046:43;;;;-1:-1:-1;;;;;37046:43:0;;;;;;;;;37031:11;;37046:16;;;;;:43;;;;;;;;;;;;;;:16;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;37046:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37046:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37046:43:0;37121;;;-1:-1:-1;;;37121:43:0;;37146:4;37121:43;;;;-1:-1:-1;;;;;37121:43:0;;;;;;;;;37046:48;;;;-1:-1:-1;37093:1:0;;37121:16;;;;;;:43;;;;;37046;;37121;;;;;;;;:16;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;37121:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37121:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37121:43:0;:48;;;-1:-1:-1;37188:6:0;37183:34;;37196:21;37201:3;37206:10;37196:4;:21::i;:::-;37233:6;37228:34;;37241:21;37246:3;37251:10;37241:4;:21::i;:::-;37275:39;37280:10;37292:6;37308:4;37275;:39::i;:::-;37325:40;37331:10;37351:4;37358:6;37325:5;:40::i;:::-;37383:6;37378:34;;37391:21;37396:3;37401:10;37391:4;:21::i;:::-;37428:6;37423:34;;37436:21;37441:3;37446:10;37436:4;:21::i;11752:375::-;11868:3;-1:-1:-1;;;;;11856:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11856:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11856:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11856:22:0;:49;;;-1:-1:-1;;;11856:49:0;;;;-1:-1:-1;;;;;11856:30:0;;;;;;11893:9;;11856:49;;;;;;;;;;;;;;11893:9;11856:30;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;11856:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11856:49:0;;;;;11981:3;-1:-1:-1;;;;;11969:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11969:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11969:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11969:22:0;:55;;;-1:-1:-1;;;11969:55:0;;-1:-1:-1;;;;;11969:55:0;;;;;;;12014:9;11969:55;;;;;;:30;;;;;;;:55;;;;;-1:-1:-1;;11969:55:0;;;;;;;-1:-1:-1;11969:30:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;11969:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12082:37:0;;;-1:-1:-1;;;12082:37:0;;-1:-1:-1;;;;;12082:37:0;;;;;;;12109:9;12082:37;;;;;;:21;;;;-1:-1:-1;12082:21:0;;-1:-1:-1;12082:37:0;;;;;-1:-1:-1;;12082:37:0;;;;;;;;-1:-1:-1;12082:21:0;:37;;;5:2:-1;;;;30:1;27;20:12;28926:905:0;29112:11;29138:7;-1:-1:-1;;;;;29126:25:0;;29152:3;29126:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29126:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29126:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29126:30:0;;-1:-1:-1;29209:32:0;29222:7;29126:30;29236:4;29209:12;:32::i;:::-;29252:9;29264:26;29276:7;29285:4;29264:11;:26::i;:::-;29252:38;;29371:220;29390:7;29412:3;29431:11;29437:4;29431:5;:11::i;:::-;29430:12;;29457:123;29482:7;-1:-1:-1;;;;;29470:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29470:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29470:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29470:26:0;;;;;;;;;;;;;;;;29518:7;-1:-1:-1;;;;;29506:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29506:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29506:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29506:26:0;29498:44;;;-1:-1:-1;;;29498:44:0;;-1:-1:-1;;;;;29498:44:0;;;;;;;;;:39;;;;;;;:44;;;;;29506:26;;29498:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;29498:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29498:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29498:44:0;;;;;;;;;;;;;;;;29544:3;29561:7;-1:-1:-1;;;;;29549:25:0;;29575:3;29549:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29549:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29549:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29549:30:0;29457:12;:123::i;29371:220::-;29667:39;29672:7;29681:3;29694:4;29701;29667;:39::i;:::-;29780:43;;;-1:-1:-1;;;29780:43:0;;29806:10;29780:43;;;;;;;;;;;;-1:-1:-1;;;;;29780:25:0;;;;;:43;;;;;-1:-1:-1;;29780:43:0;;;;;;;-1:-1:-1;29780:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;12694:114:0;12786:3;-1:-1:-1;;;;;12777:18:0;;12796:3;12777:23;;;;;;;;;;;;;-1:-1:-1;;;;;12777:23:0;-1:-1:-1;;;;;12777:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;14209:179:0;14337:43;;;-1:-1:-1;;;14337:43:0;;;;;;;;-1:-1:-1;;;;;14337:43:0;;;;;;;;;;;;;;;:29;;;;;;:43;;;;;-1:-1:-1;;14337:43:0;;;;;;;;-1:-1:-1;14337:29:0;:43;;;5:2:-1;;;;30:1;27;20:12;39453:276:0;39622:27;39636:7;39645:3;39622:13;:27::i;:::-;39660:61;39684:7;39693;39702;39711:3;39716:4;39660:23;:61::i;26806:1022::-;26992:11;27018:7;-1:-1:-1;;;;;27006:25:0;;27032:3;27006:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27006:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27006:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27006:30:0;;-1:-1:-1;27089:32:0;27102:7;27006:30;27116:4;27089:12;:32::i;:::-;27201:220;27220:7;27242:3;27261:11;27267:4;27261:5;:11::i;:::-;27260:12;;27287:123;27312:7;-1:-1:-1;;;;;27300:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27300:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27300:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27300:26:0;27336;;;-1:-1:-1;;;27336:26:0;;;;-1:-1:-1;;;;;27336:24:0;;;;;:26;;;;;27300;;27336;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;27336:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27336:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27336:26:0;27328:44;;;-1:-1:-1;;;27328:44:0;;-1:-1:-1;;;;;27328:44:0;;;;;;;;;:39;;;;;;;:44;;;;;27336:26;;27328:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;27328:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27328:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27328:44:0;;;;;;;;;;;;;;;;27374:3;27391:7;-1:-1:-1;;;;;27379:25:0;;27405:3;27379:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;27201:220:0;27497:39;27502:7;27511:3;27524:4;27531;27497;:39::i;:::-;27605:46;;;-1:-1:-1;;;27605:46:0;;27639:4;27605:46;;;;;;;;;;;;-1:-1:-1;;;;;27605:25:0;;;;;:46;;;;;-1:-1:-1;;27605:46:0;;;;;;;-1:-1:-1;27605:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;27605:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27605:46:0;;;;27707:7;-1:-1:-1;;;;;27695:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27695:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27695:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27695:26:0;:41;;;-1:-1:-1;;;27695:41:0;;;;;;;;;;-1:-1:-1;;;;;27695:35:0;;;;;;:41;;;;;-1:-1:-1;;27695:41:0;;;;;;;;-1:-1:-1;27695:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;27695:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;27795:25:0;;:10;;-1:-1:-1;27795:25:0;;;;;-1:-1:-1;27815:4:0;;27795:25;;;;27815:4;27795:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;11633:111:0;11713:3;-1:-1:-1;;;;;11705:21:0;;11727:3;11732;11705:31;;;;;;;;;;;;;-1:-1:-1;;;;;11705:31:0;-1:-1:-1;;;;;11705:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;26120:678:0;26428:40;;;-1:-1:-1;;;26428:40:0;;26462:4;26428:40;;;;;;26333:11;;;;-1:-1:-1;;;;;26428:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;26428:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26428:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26428:40:0;;-1:-1:-1;;;;;;26483:17:0;;26479:75;;26523:19;26534:7;26523:10;:19::i;:::-;26517:25;;26479:75;26664:7;-1:-1:-1;;;;;26652:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26652:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26652:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26652:26:0;26644:55;;;-1:-1:-1;;;26644:55:0;;-1:-1:-1;;;;;26644:55:0;;;;;;;;;;;;;;;:44;;;;;;;:55;;;;;-1:-1:-1;;26644:55:0;;;;;;;-1:-1:-1;26644:44:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;26644:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26644:55:0;;;;26716:74;26735:7;26744:3;26749:7;26758;26767:3;26772:4;26778;26784:5;26716:18;:74::i;:::-;26710:80;;26120:678;;;;;;;;;;:::o;8173:375::-;8305:3;-1:-1:-1;;;;;8293:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8293:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8293:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8293:22:0;:67;;;-1:-1:-1;;;8293:67:0;;8329:10;8293:67;;;;8349:4;8293:67;;;;;;;;;;;;-1:-1:-1;;;;;8293:35:0;;;;;;:67;;;;;-1:-1:-1;;8293:67:0;;;;;;;;-1:-1:-1;8293:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;8293:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8293:67:0;;;;8435:3;-1:-1:-1;;;;;8423:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8423:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8423:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8423:22:0;:40;;;-1:-1:-1;;;8423:40:0;;-1:-1:-1;;;;;8423:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;8423:40:0;;;;;;;-1:-1:-1;8423:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8423:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8423:40:0;;;;8521:3;-1:-1:-1;;;;;8509:21:0;;8531:3;8536;8509:31;;;;;;;;;;;;;-1:-1:-1;;;;;8509:31:0;-1:-1:-1;;;;;8509:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;24577:1130:0;24813:11;24839:7;-1:-1:-1;;;;;24827:25:0;;24853:3;24827:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24827:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24827:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24827:30:0;24882:26;;;-1:-1:-1;;;24882:26:0;;;;24827:30;;-1:-1:-1;24868:11:0;;-1:-1:-1;;;;;24882:24:0;;;;;:26;;;;;24827:30;;24882:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;24882:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24882:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24882:26:0;24933:30;;;-1:-1:-1;;;24933:30:0;;;;;;;;;;24882:26;;-1:-1:-1;24919:11:0;;-1:-1:-1;;;;;24933:25:0;;;;;:30;;;;;24882:26;;24933:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;24933:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24933:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24933:30:0;;-1:-1:-1;25047:46:0;25060:7;25069:3;25074:4;25080:12;25047;:46::i;:::-;25167:93;25172:7;25181:3;25186:33;25192:26;25204:7;25213:4;25192:11;:26::i;25186:33::-;25221:38;25234:3;25239;25244;25249;25254:4;25221:12;:38::i;25167:93::-;25351:46;25356:7;25365:3;25378:4;25385:11;25391:4;25385:5;:11::i;25351:46::-;25483:49;;;-1:-1:-1;;;25483:49:0;;25508:4;25483:49;;;;-1:-1:-1;;;;;25483:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;25483:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25483:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25483:49:0;25479:113;;25562:3;-1:-1:-1;;;;;25554:17:0;;25572:7;25554:26;;;;;;;;;;;;;-1:-1:-1;;;;;25554:26:0;-1:-1:-1;;;;;25554:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25554:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25554:26:0;;;;25479:113;25656:43;;;-1:-1:-1;;;25656:43:0;;25682:10;25656:43;;;;;;;;;;;;-1:-1:-1;;;;;25656:25:0;;;;;:43;;;;;-1:-1:-1;;25656:43:0;;;;;;;-1:-1:-1;25656:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;25656:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25656:43:0;;;;24577:1130;;;;;;;;;;;:::o;37890:360::-;38084:8;38111:33;38116:7;38125:3;38138:4;38111;:33::i;:::-;38105:39;;38155:34;38169:7;38177;38185:3;38155:13;:34::i;:::-;38200:42;38212:13;38226:7;38234:3;38238;38200:11;:42::i;:::-;37890:360;;;;;;;:::o;25715:397::-;25956:8;25983:33;25988:7;25997:3;26010:4;25983;:33::i;:::-;25977:39;;26027:77;26042:7;26051:3;26056:7;26065;26074:3;26079:4;26085;26091:12;26027:14;:77::i;:::-;25715:397;;;;;;;;;;:::o;15740:542::-;15940:36;15953:7;15970:4;15940:12;:36::i;:::-;16050:7;-1:-1:-1;;;;;16038:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16038:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16038:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16038:26:0;16085:30;;;-1:-1:-1;;;16085:30:0;;;;;;;;;;-1:-1:-1;;;;;16030:40:0;;;;;;16085:25;;;;;;:30;;;;;16038:26;;16085:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16085:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16085:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16085:30:0;16130;;;-1:-1:-1;;;16130:30:0;;;;;;;;;;-1:-1:-1;;;;;16130:25:0;;;;;:30;;;;;16085;;16130;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16130:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16130:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16130:30:0;16183:4;;16231:16;16237:9;16231:5;:16::i;:::-;16030:244;;;-1:-1:-1;;;;;;16030:244:0;;;;;;;;;;;;;;-1:-1:-1;;;;;16030:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16262:1;16030:244;;;;;;;;;;;;;;;;;;16262:1;16030:244;;;;5:2:-1;;;;30:1;27;20:12;24232:337:0;24433:8;24460:33;24465:7;24474:3;24487:4;24460;:33::i;:::-;24454:39;;24504:57;24519:7;24528:3;24533:7;24542;24551:3;24556:4;24504:14;:57::i;:::-;24232:337;;;;;;;;:::o;17182:323::-;17412:5;-1:-1:-1;;;;;17378:39:0;17390:7;-1:-1:-1;;;;;17378:25:0;;17404:3;17378:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17378:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17378:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17378:30:0;-1:-1:-1;;;;;17378:39:0;;17370:67;;;;;-1:-1:-1;;;17370:67:0;;;;;;;;;;;;-1:-1:-1;;;17370:67:0;;;;;;;;;;;;;;;17448:49;17456:7;17465;17474:3;17479;17484:12;17448:7;:49::i;15258:151::-;15377:7;-1:-1:-1;;;;;15365:26:0;;15392:3;15397;15365:36;;;;;;;;;;;;;-1:-1:-1;;;;;15365:36:0;-1:-1:-1;;;;;15365:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;16290:265:0;16481:5;-1:-1:-1;;;;;16447:39:0;16459:7;-1:-1:-1;;;;;16447:25:0;;16473:3;16447:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16447:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16447:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16447:30:0;-1:-1:-1;;;;;16447:39:0;;16439:67;;;;;-1:-1:-1;;;16439:67:0;;;;;;;;;;;;-1:-1:-1;;;16439:67:0;;;;;;;;;;;;;;;16517:30;16525:7;16534;16543:3;16517:7;:30::i;15585:147::-;15684:40;;;-1:-1:-1;;;15684:40:0;;15718:4;15684:40;;;;;;15654:11;;-1:-1:-1;;;;;15684:25:0;;;;;:40;;;;;;;;;;;;;;;15654:11;15684:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15684:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15684:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15684:40:0;;15585:147;-1:-1:-1;;15585:147:0:o;38561:155::-;38671:1;38647:7;-1:-1:-1;;;;;38634:29:0;;38664:3;38634:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38634:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38634:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38634:34:0;:38;38631:77;;;38674:34;;;-1:-1:-1;;;38674:34:0;;;;;;;;38704:1;38674:34;;;;;;;;;;;;;;-1:-1:-1;;;;;38674:25:0;;;;;:34;;;;;;;;;;;38704:1;38674:25;:34;;;5:2:-1;;;;30:1;27;20:12;38631:77:0;38561:155;;:::o;21787:1106::-;21900:11;21926:7;-1:-1:-1;;;;;21914:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21914:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21914:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21914:26:0;21965:30;;;-1:-1:-1;;;21965:30:0;;;;;;;;;;21914:26;;-1:-1:-1;21951:11:0;;-1:-1:-1;;;;;21965:25:0;;;;;:30;;;;;21914:26;;21965:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;21965:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21965:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21965:30:0;22020;;;-1:-1:-1;;;22020:30:0;;;;;;;;;;21965;;-1:-1:-1;22006:11:0;;-1:-1:-1;;;;;22020:25:0;;;;;:30;;;;;21965;;22020;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;22020:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22020:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22020:30:0;22076:27;;;-1:-1:-1;;;22076:27:0;;;;;;;;-1:-1:-1;;;;;22076:27:0;;;;;;;;;22020:30;;-1:-1:-1;22064:8:0;;22076:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;22076:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22076:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22076:27:0;;;;;;22130:30;;-1:-1:-1;;;22130:30:0;;;;;;;;;;22076:27;;-1:-1:-1;22116:11:0;;-1:-1:-1;;;;;22130:25:0;;;;;:30;;;;;22076:27;22130:30;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;22130:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22130:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22130:30:0;;-1:-1:-1;;;;;;22175:20:0;;22190:4;22175:20;;:81;;-1:-1:-1;22199:52:0;;;-1:-1:-1;;;22199:52:0;;-1:-1:-1;;;;;22199:52:0;;;;;;;;;;;;;22245:4;22199:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;22199:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22199:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22199:52:0;22255:1;22199:57;22175:81;22171:715;;;22319:62;22332:7;22341:3;22346:34;22361:3;22366;22371;22376;22346:14;:34::i;:::-;22319:12;:62::i;:::-;22437:32;22442:7;22451:3;22456:1;22464:3;22459:9;;22437:4;:32::i;22171:715::-;22548:82;22561:7;22578:4;22585:44;22600:3;22613:4;22620:3;22625;22585:14;:44::i;22548:82::-;22686:188;;;-1:-1:-1;;;22686:188:0;;;;;;;;-1:-1:-1;;;;;22686:188:0;;;;;;;22774:4;22686:188;;;;;;;;;;22830:1;22686:188;;;;;;22850:9;;;22686:188;;;;;;:17;;;;;;:188;;;;;;;;;;;22830:1;22686:17;:188;;;5:2:-1;;;;30:1;27;20:12;22901:257:0;23084:5;-1:-1:-1;;;;;23050:39:0;23062:7;-1:-1:-1;;;;;23050:25:0;;23076:3;23050:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23050:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23050:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23050:30:0;-1:-1:-1;;;;;23050:39:0;;23042:67;;;;;-1:-1:-1;;;23042:67:0;;;;;;;;;;;;-1:-1:-1;;;23042:67:0;;;;;;;;;;;;;;;23120:30;23128:7;23137;23146:3;23120:7;:30::i;8754:124::-;8826:1;8800:5;8847:6;;;8839:31;;;;;-1:-1:-1;;;8839:31:0;;;;;;;;;;;;-1:-1:-1;;;8839:31:0;;;;;;;;;;;;;;;8754:124;;;:::o;9408:896::-;9562:8;9622:9;9642:3;-1:-1:-1;;;;;9634:17:0;;9652:3;9634:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9634:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9634:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9634:22:0;9731:21;;;-1:-1:-1;;;9731:21:0;;-1:-1:-1;;;;;9731:21:0;;;;;;;;;9634:22;;-1:-1:-1;9720:8:0;;9731:16;;;;;;:21;;;;;9634:22;;9731:21;;;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;9731:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9731:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9731:21:0;;-1:-1:-1;9878:13:0;9882:3;-1:-1:-1;;;9878:3:0;:13::i;:::-;9872:3;:19;9868:429;;;10046:37;10078:4;10052:23;10056:13;10060:3;-1:-1:-1;;;10056:3:0;:13::i;:::-;10071:3;10052;:23::i;:::-;:30;;;;;;10046:5;:37::i;:::-;10039:44;;10254:13;10258:3;-1:-1:-1;;;10254:3:0;:13::i;:::-;10230:21;10239:4;10246;10230:3;:21::i;:::-;:37;:55;;10281:4;10230:55;;;10270:4;10277:1;10270:8;10230:55;10223:62;;9868:429;9408:896;;;;;;;;;:::o;8886:101::-;8934:8;8961:18;8965:3;-1:-1:-1;;;8961:3:0;:18::i;:::-;8955:24;8886:101;-1:-1:-1;;8886:101:0:o;8995:405::-;9064:11;9306:86;9324:3;9366:7;-1:-1:-1;;;;;9354:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9354:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9354:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9354:26:0;9349:2;:31;9342:2;:39;9306:3;:86::i;:::-;9300:92;8995:405;-1:-1:-1;;;8995:405:0:o;10312:617::-;10449:8;10515:9;10539:3;-1:-1:-1;;;;;10531:17:0;;10549:3;10531:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10531:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10531:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;10531:22:0;;;;10624:27;;-1:-1:-1;;;10624:27:0;;;;;;;;-1:-1:-1;;;;;10624:27:0;;;;;;;;;10531:22;;-1:-1:-1;10612:8:0;;10624:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;10624:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10624:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10624:27:0;;;;-1:-1:-1;10740:17:0;10752:4;10746:3;10752:4;10746:10;;;10740:17;10733:24;;10894:3;10885:4;10880:17;;:41;;10911:10;10917:3;10911:5;:10::i;:::-;10909:12;;10880:41;;;10902:4;10900:6;;10880:41;10873:48;10312:617;-1:-1:-1;;;;;;;10312:617:0:o;27836:1082::-;28005:11;28031:7;-1:-1:-1;;;;;28019:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28019:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28019:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28019:26:0;28070:30;;;-1:-1:-1;;;28070:30:0;;;;;;;;;;28019:26;;-1:-1:-1;28056:11:0;;-1:-1:-1;;;;;28070:25:0;;;;;:30;;;;;28019:26;;28070:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;28070:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28070:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28070:30:0;28125;;;-1:-1:-1;;;28125:30:0;;;;;;;;;;28070;;-1:-1:-1;28111:11:0;;-1:-1:-1;;;;;28125:25:0;;;;;:30;;;;;28070;;28125;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;28125:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28125:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28125:30:0;28181:27;;;-1:-1:-1;;;28181:27:0;;;;;;;;-1:-1:-1;;;;;28181:27:0;;;;;;;;;28125:30;;-1:-1:-1;28169:8:0;;28181:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;28181:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28181:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28181:27:0;;;;-1:-1:-1;28263:62:0;28276:7;28285:3;28290:34;28305:3;28285;;28320;28290:14;:34::i;28263:62::-;28405:106;28424:7;28446:3;28465:11;28471:4;28465:5;:11::i;:::-;28464:12;;28496:3;28491:9;;28405:4;:106::i;:::-;28587:39;28592:7;28601:3;28614:4;28621;28587;:39::i;:::-;28695:46;;;-1:-1:-1;;;28695:46:0;;28729:4;28695:46;;;;;;;;;;;;-1:-1:-1;;;;;28695:25:0;;;;;:46;;;;;-1:-1:-1;;28695:46:0;;;;;;;-1:-1:-1;28695:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;28695:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28695:46:0;;;;28797:7;-1:-1:-1;;;;;28785:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28785:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28785:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28785:26:0;:41;;;-1:-1:-1;;;28785:41:0;;;;;;;;;;-1:-1:-1;;;;;28785:35:0;;;;;;:41;;;;;-1:-1:-1;;28785:41:0;;;;;;;;-1:-1:-1;28785:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;28785:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;28885:25:0;;:10;;-1:-1:-1;28885:25:0;;;;;-1:-1:-1;28905:4:0;;28885:25;;;;28905:4;28885:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28885:25:0;27836:1082;;;;;;;;;:::o;29839:965::-;30008:11;30034:7;-1:-1:-1;;;;;30022:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30022:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30022:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30022:26:0;30073:30;;;-1:-1:-1;;;30073:30:0;;;;;;;;;;30022:26;;-1:-1:-1;30059:11:0;;-1:-1:-1;;;;;30073:25:0;;;;;:30;;;;;30022:26;;30073:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;30073:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30073:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30073:30:0;30128;;;-1:-1:-1;;;30128:30:0;;;;;;;;;;30073;;-1:-1:-1;30114:11:0;;-1:-1:-1;;;;;30128:25:0;;;;;:30;;;;;30073;;30128;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;30128:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30128:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30128:30:0;30184:27;;;-1:-1:-1;;;30184:27:0;;;;;;;;-1:-1:-1;;;;;30184:27:0;;;;;;;;;30128:30;;-1:-1:-1;30172:8:0;;30184:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;30184:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30184:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30184:27:0;;;;-1:-1:-1;30266:62:0;30279:7;30288:3;30293:34;30308:3;30288;;30323;30293:14;:34::i;30266:62::-;30339:9;30351:26;30363:7;30372:4;30351:11;:26::i;:::-;30339:38;;30458:106;30477:7;30499:3;30518:11;30524:4;30518:5;:11::i;:::-;30517:12;;30549:3;30544:9;;30458:4;:106::i;:::-;30640:39;30645:7;30654:3;30667:4;30674;30640;:39::i;:::-;30753:43;;;-1:-1:-1;;;30753:43:0;;30779:10;30753:43;;;;;;;;;;;;-1:-1:-1;;;;;30753:25:0;;;;;:43;;;;;-1:-1:-1;;30753:43:0;;;;;;;-1:-1:-1;30753:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;30753:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30753:43:0;;;;29839:965;;;;;;;;;;:::o;10937:661::-;11079:8;11145:9;11169:3;-1:-1:-1;;;;;11161:17:0;;11179:3;11161:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11161:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11161:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;11161:22:0;;;;11254:27;;-1:-1:-1;;;11254:27:0;;;;;;;;-1:-1:-1;;;;;11254:27:0;;;;;;;;;11161:22;;-1:-1:-1;11242:8:0;;11254:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;11254:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11254:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11254:27:0;;;;;;11349:21;;-1:-1:-1;;;11349:21:0;;-1:-1:-1;;;;;11349:21:0;;;;;;;;;11254:27;;-1:-1:-1;11338:8:0;;11349:16;;;;;;:21;;;;;11254:27;;11349:21;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;11349:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11349:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11349:21:0;;-1:-1:-1;11383:8:0;11394:24;11398:14;11402:3;11407:4;11398:3;:14::i;:::-;11414:3;11394;:24::i;:::-;11383:35;-1:-1:-1;;;;11383:35:0;11435:9;11429:15;;11571:3;11555:13;11559:3;-1:-1:-1;;;11555:3:0;:13::i;:::-;:19;:35;;11587:3;11555:35;;;11577:3;11583:1;11577:7;11555:35;11549:41;10937:661;-1:-1:-1;;;;;;;;;10937:661:0:o;8004:134::-;8056:6;8083;;;:30;;-1:-1:-1;;8098:5:0;;;8112:1;8107;8098:5;8107:1;8093:15;;;;;:20;8083:30;8075:55;;;;;-1:-1:-1;;;8075:55:0;;;;;;;;;;;;-1:-1:-1;;;8075:55:0;;;;;;;;;;;;;;8626:120;8710:5;;;8705:16;;;;8697:41;;;;;-1:-1:-1;;;8697:41:0;;;;;;;;;;;;-1:-1:-1;;;8697:41:0;;;;;;;;;;;;;
Swarm Source
bzzr://738911aaf2530e2f0acb4230a145bc411a5630efb31d027350949eed238fa694
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.