{
    "contractName": "BucketLender",
    "abi": [
        {
            "constant": true,
            "inputs": [],
            "name": "DYDX_MARGIN",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "BUCKET_TIME",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "HELD_TOKEN",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "cachedRepaidAmount",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "CALL_TIMELIMIT",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "weightForBucket",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "MIN_HELD_TOKEN_NUMERATOR",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "wasForceClosed",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "principalForBucket",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "INTEREST_PERIOD",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "INTEREST_RATE",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "principalTotal",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "criticalBucket",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "MIN_HELD_TOKEN_DENOMINATOR",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "TRUSTED_MARGIN_CALLERS",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "weightForBucketForAccount",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "MAX_DURATION",
            "outputs": [
                {
                    "name": "",
                    "type": "uint32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "availableTotal",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "TRUSTED_WITHDRAWERS",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "POSITION_ID",
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "OWED_TOKEN",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "availableForBucket",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "name": "margin",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "heldToken",
                    "type": "address"
                },
                {
                    "name": "owedToken",
                    "type": "address"
                },
                {
                    "name": "parameters",
                    "type": "uint32[7]"
                },
                {
                    "name": "trustedMarginCallers",
                    "type": "address[]"
                },
                {
                    "name": "trustedWithdrawers",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "beneficiary",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "bucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "weight",
                    "type": "uint256"
                }
            ],
            "name": "Deposit",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "withdrawer",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "bucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "weight",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "owedTokenWithdrawn",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "heldTokenWithdrawn",
                    "type": "uint256"
                }
            ],
            "name": "Withdraw",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "principalTotal",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "bucketNumber",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "principalForBucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PrincipalIncreased",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "principalTotal",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "bucketNumber",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "principalForBucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PrincipalDecreased",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "availableTotal",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "bucketNumber",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "availableForBucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "AvailableIncreased",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "availableTotal",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "bucketNumber",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "availableForBucket",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "AvailableDecreased",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "previousOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipRenounced",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "addresses",
                    "type": "address[9]"
                },
                {
                    "name": "values256",
                    "type": "uint256[7]"
                },
                {
                    "name": "values32",
                    "type": "uint32[4]"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "signature",
                    "type": "bytes"
                }
            ],
            "name": "verifyLoanOffering",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "from",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "receiveLoanOwnership",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "payer",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "principalAdded",
                    "type": "uint256"
                },
                {
                    "name": "lentAmount",
                    "type": "uint256"
                }
            ],
            "name": "increaseLoanOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "caller",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "depositAmount",
                    "type": "uint256"
                }
            ],
            "name": "marginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "canceler",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "cancelMarginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "forceRecoverCollateralOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [],
            "name": "rebalanceBuckets",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "beneficiary",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "deposit",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "buckets",
                    "type": "uint256[]"
                },
                {
                    "name": "maxWeights",
                    "type": "uint256[]"
                },
                {
                    "name": "onBehalfOf",
                    "type": "address"
                }
            ],
            "name": "withdraw",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "to",
                    "type": "address"
                }
            ],
            "name": "withdrawExcessToken",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getCurrentBucket",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "bucket",
                    "type": "uint256"
                }
            ],
            "name": "getBucketOwedAmount",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x6080604052600160025560006009819055600a55600b805460ff191690553480156200002a57600080fd5b5060405162005c7c38038062005c7c833981016040908152815160208301519183015160608401516101608501516101808601516000805433600160a060020a0319918216178255600180548216600160a060020a03808a1691909117909155600c899055600d80548316828916179055600e80549092169086161790559496939492936080810193928101929101908381602002015163ffffffff1615156200015b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4275636b65744c656e64657223636f6e7374727563746f723a204255434b455460448201527f5f54494d452063616e6e6f74206265207a65726f000000000000000000000000606482015290519081900360840190fd5b508251600e80546020860151604087015163ffffffff9081167c010000000000000000000000000000000000000000000000000000000002918116780100000000000000000000000000000000000000000000000002948116740100000000000000000000000000000000000000000260a060020a63ffffffff02199093169290921760c060020a63ffffffff02191693909317600160e060020a03169290921790556060840151600f8054608087015160a088015160c089015186166c010000000000000000000000000290861668010000000000000000029186166401000000000263ffffffff19909316949095169390931767ffffffff00000000191617604060020a63ffffffff02191691909117606060020a63ffffffff02191691909117905560005b8251811015620002dd576001601060008584815181101515620002a257fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010162000283565b5060005b81518110156200033b5760016011600084848151811015156200030057fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101620002e1565b620003fd88600160a060020a031663ef339fc46040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200039557600080fd5b505afa158015620003aa573d6000803e3d6000fd5b505050506040513d6020811015620003c157600080fd5b5051620003db64010000000062004e9c6200040b82021704565b600e54600160a060020a03169190640100000000620055546200041182021704565b505050505050505062000591565b60001990565b82600160a060020a031663095ea7b383836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156200048e57600080fd5b505af1158015620004a3573d6000803e3d6000fd5b50505050620004c062000559640100000000026401000000009004565b15156200055457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e496e74657261637423617070726f76653a20417070726f76616c2060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b505050565b6000803d80156200057357602081146200057d5762000589565b6001915062000589565b60206000803e60005191505b501515919050565b6156db80620005a16000396000f3006080604052600436106101cc5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630dda60cc81146101d1578063168ed05c1461020f5780631752c0651461023d5780632cff585d146102525780632ee29dc8146102795780633a4bb7781461028e5780633fda1a1d146102a65780634120bcec146102bb578063456a09c8146102f357806345a2556c1461035157806347e7ef24146103695780634c3efd991461039a5780634f3e98ab146103c35780634f8894a4146103db578063501b0b18146103f05780635451fb26146104215780635b72a33a146104585780636613d8711461046d5780636fa6de5914610482578063715018a6146104975780637995ba90146104ae5780637ce87569146104e257806383253cfa146104f75780638da5cb5b14610528578063a753b1a81461053d578063abb0522d1461056b578063abdd0c441461059c578063b1724b46146105d0578063bc9e0da3146105e5578063bd7456e3146105fa578063cd4c4c0c14610628578063d7ac71ff1461063d578063d92ed48d14610652578063ea51c34314610667578063eada7fad14610694578063f2fde38b146106a9578063f783e11e146106d7575b600080fd5b3480156101dd57600080fd5b506101e66106ef565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021b57600080fd5b5061022461070b565b6040805163ffffffff9092168252519081900360200190f35b34801561024957600080fd5b506101e661072f565b34801561025e57600080fd5b5061026761074b565b60408051918252519081900360200190f35b34801561028557600080fd5b50610224610751565b34801561029a57600080fd5b50610267600435610765565b3480156102b257600080fd5b50610224610777565b3480156102c757600080fd5b506101e673ffffffffffffffffffffffffffffffffffffffff600435811690602435906044351661078f565b3480156102ff57600080fd5b50610338602460048035828101929082013591813591820191013573ffffffffffffffffffffffffffffffffffffffff60443516610965565b6040805192835260208301919091528051918290030190f35b34801561035d57600080fd5b50610267600435610db2565b34801561037557600080fd5b5061026773ffffffffffffffffffffffffffffffffffffffff60043516602435610f5d565b3480156103a657600080fd5b506103af61160a565b604080519115158252519081900360200190f35b3480156103cf57600080fd5b50610267600435611613565b3480156103e757600080fd5b50610224611625565b3480156103fc57600080fd5b506101e673ffffffffffffffffffffffffffffffffffffffff60043516602435611651565b34801561042d57600080fd5b506101e673ffffffffffffffffffffffffffffffffffffffff60043516602435604435606435611fec565b34801561046457600080fd5b506102246124d2565b34801561047957600080fd5b506102676124fa565b34801561048e57600080fd5b50610267612500565b3480156104a357600080fd5b506104ac612506565b005b3480156104ba57600080fd5b5061026773ffffffffffffffffffffffffffffffffffffffff60043581169060243516612597565b3480156104ee57600080fd5b50610224612740565b34801561050357600080fd5b506101e673ffffffffffffffffffffffffffffffffffffffff6004351660243561275c565b34801561053457600080fd5b506101e6612a04565b34801561054957600080fd5b506103af73ffffffffffffffffffffffffffffffffffffffff60043516612a20565b34801561057757600080fd5b5061026760043573ffffffffffffffffffffffffffffffffffffffff60243516612a35565b3480156105a857600080fd5b506101e673ffffffffffffffffffffffffffffffffffffffff60043516602435604435612a52565b3480156105dc57600080fd5b50610224612d67565b3480156105f157600080fd5b50610267612d73565b34801561060657600080fd5b506103af73ffffffffffffffffffffffffffffffffffffffff60043516612d79565b34801561063457600080fd5b50610267612d8e565b34801561064957600080fd5b50610267612fe7565b34801561065e57600080fd5b506104ac612fed565b34801561067357600080fd5b506101e66004610124610204610284356102a4356024810190850135613073565b3480156106a057600080fd5b506101e661401b565b3480156106b557600080fd5b506104ac73ffffffffffffffffffffffffffffffffffffffff60043516614037565b3480156106e357600080fd5b50610267600435614064565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600e5474010000000000000000000000000000000000000000900463ffffffff1681565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600f54640100000000900463ffffffff1681565b60086020526000908152604090205481565b600f5468010000000000000000900463ffffffff1681565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331461083e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c54849081146108e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b6108ea84614076565b925050600254811461095d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b509392505050565b60008060006109726153b8565b600280546001019081905560009081908190819081908d8c14610a4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4275636b65744c656e6465722377697468647261773a20546865206c656e677460448201527f6873206f662074686520696e70757420617272617973206d757374206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b73ffffffffffffffffffffffffffffffffffffffff8b163314610b2b573360009081526011602052604090205460ff161515610b2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f4275636b65744c656e6465722377697468647261773a204f6e6c79207472757360448201527f7465642077697468647261776572732063616e207769746864726177206f6e2060648201527f626568616c66206f66206f746865727300000000000000000000000000000000608482015290519081900360a40190fd5b610b33614182565b600154600c54604080517f6d8ab12400000000000000000000000000000000000000000000000000000000815260048101929092525160009a5073ffffffffffffffffffffffffffffffffffffffff90921691636d8ab12491602480820192602092909190829003018186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d6020811015610bd657600080fd5b50518015610bec5750610be7612d8e565b600954145b15610bf75760095497505b600b546000965060ff1615610c3257600d54610c2f9073ffffffffffffffffffffffffffffffffffffffff163063ffffffff61425b16565b95505b600094505b8d851015610cc9578e8e86818110610c4b57fe5b90506020020135935083600014158015610c6457508784145b15610c6e57610cbe565b610c8c8b858f8f89818110610c7f57fe5b905060200201358961432b565b9093509150610caa838860005b60200201519063ffffffff6144c616565b8752610cb882886001610c99565b60208801525b600190940193610c37565b8651600e54610cf29173ffffffffffffffffffffffffffffffffffffffff9091169033906144d3565b610d24338860016020020151600d5473ffffffffffffffffffffffffffffffffffffffff16919063ffffffff6144d316565b86516020880151600254919b5099508114610da057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50505050505050509550959350505050565b600154600c54604080517f640075f30000000000000000000000000000000000000000000000000000000081526004810192909252516000928392839273ffffffffffffffffffffffffffffffffffffffff9092169163640075f391602480820192602092909190829003018186803b158015610e2e57600080fd5b505afa158015610e42573d6000803e3d6000fd5b505050506040513d6020811015610e5857600080fd5b505115610e685760009250610f56565b6000848152600560205260409020549150811515610e895760009250610f56565b600154600c54600654604080517fa633f61f0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263ffffffff421660448301525173ffffffffffffffffffffffffffffffffffffffff9092169163a633f61f91606480820192602092909190829003018186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b5051600654909150610f5390839083614672565b92505b5050919050565b6002805460019081019182905554600c5460009273ffffffffffffffffffffffffffffffffffffffff92831692849182918291908916151561102657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4275636b65744c656e646572236465706f7369743a2042656e6566696369617260448201527f792063616e6e6f7420626520746865207a65726f206164647265737300000000606482015290519081900360840190fd5b8715156110ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4275636b65744c656e646572236465706f7369743a2043616e6e6f742064657060448201527f6f736974207a65726f20746f6b656e7300000000000000000000000000000000606482015290519081900360840190fd5b604080517f640075f300000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff88169163640075f3916024808301926020929190829003018186803b15801561112757600080fd5b505afa15801561113b573d6000803e3d6000fd5b505050506040513d602081101561115157600080fd5b50511561120b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4275636b65744c656e646572236465706f7369743a2043616e6e6f742064657060448201527f6f7369742061667465722074686520706f736974696f6e20697320636c6f736560648201527f6400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b604080517f6e0cd41500000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff881691636e0cd415916024808301926020929190829003018186803b15801561127857600080fd5b505afa15801561128c573d6000803e3d6000fd5b505050506040513d60208110156112a257600080fd5b50511561135c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4275636b65744c656e646572236465706f7369743a2043616e6e6f742064657060448201527f6f736974207768696c652074686520706f736974696f6e206973206d6172676960648201527f6e2d63616c6c6564000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b611364614182565b600e5461138f9073ffffffffffffffffffffffffffffffffffffffff1633308b63ffffffff61469016565b611397612d8e565b93506113c06113a585610db2565b6000868152600360205260409020549063ffffffff6144c616565b9250600091508215156113d5578791506113f4565b6000848152600860205260409020546113f19089908590614672565b91505b81151561148857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4275636b65744c656e646572236465706f7369743a2043616e6e6f742064657060448201527f6f73697420666f72207a65726f20776569676874000000000000000000000000606482015290519081900360840190fd5b61149484896001614805565b600084815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020546114d4908363ffffffff6144c616565b600085815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e168452825280832093909355868252600890522054611520908363ffffffff6144c616565b6000858152600860209081526040918290209290925580518681529182018a90528181018490525173ffffffffffffffffffffffffffffffffffffffff8b16917f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e919081900360600190a283965060025481146115fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50505050505092915050565b600b5460ff1681565b60056020526000908152604090205481565b600e547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b600061165b6153d3565b600154600090819073ffffffffffffffffffffffffffffffffffffffff16331461170c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c54869081146117af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b600154600c546117d59173ffffffffffffffffffffffffffffffffffffffff169061493e565b6080810151600f5491965094506118119063ffffffff6801000000000000000082048116916c0100000000000000000000000090041686614672565b92506000841161181d57fe5b6006541561182757fe5b73ffffffffffffffffffffffffffffffffffffffff881630141561184757fe5b600e54855173ffffffffffffffffffffffffffffffffffffffff9081169116146118f857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e206f776564546f6b656e206d69736d617463680000606482015290519081900360840190fd5b600d54602086015173ffffffffffffffffffffffffffffffffffffffff9081169116146119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e2068656c64546f6b656e206d69736d617463680000606482015290519081900360840190fd5b600f5461012086015163ffffffff908116911614611a5157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602481018290527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e206d61784475726174696f6e206d69736d61746368606482015290519081900360840190fd5b600f5460c086015163ffffffff9081166401000000009092041614611b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e2063616c6c54696d654c696d6974206d69736d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600e5461014086015163ffffffff90811678010000000000000000000000000000000000000000000000009092041614611c0a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e20696e74657265737452617465206d69736d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600e5461016086015163ffffffff9081167c01000000000000000000000000000000000000000000000000000000009092041614611cf557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a20506f736974696f6e20696e746572657374506572696f64206d69736d6160648201527f7463680000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600154600c54604080517f54d79868000000000000000000000000000000000000000000000000000000008152600481019290925251859273ffffffffffffffffffffffffffffffffffffffff16916354d79868916024808301926020929190829003018186803b158015611d6957600080fd5b505afa158015611d7d573d6000803e3d6000fd5b505050506040513d6020811015611d9357600080fd5b50511015611e4e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4275636b65744c656e64657223726563656976654c6f616e4f776e657273686960448201527f703a204e6f7420656e6f7567682068656c64546f6b656e20617320636f6c6c6160648201527f746572616c000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600080527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc849055600684905560086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754611eb2908563ffffffff6144c616565b7f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75573ffffffffffffffffffffffffffffffffffffffff881660009081527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df6020526040902054611f29908563ffffffff6144c616565b73ffffffffffffffffffffffffffffffffffffffff891660009081527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df6020526040902055309550506002548114611fe257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b5050505092915050565b60015460009081908190819073ffffffffffffffffffffffffffffffffffffffff1633146120a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c548890811461214457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b60015473ffffffffffffffffffffffffffffffffffffffff90811695508a16301461221c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f4275636b65744c656e64657223696e6372656173654c6f616e4f6e426568616c60448201527f664f663a204f74686572206c656e646572732063616e6e6f74206c656e64206660648201527f6f72207468697320706f736974696f6e00000000000000000000000000000000608482015290519081900360a40190fd5b600c54604080517f6e0cd41500000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff871691636e0cd415916024808301926020929190829003018186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d60208110156122b657600080fd5b50511561237057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f4275636b65744c656e64657223696e6372656173654c6f616e4f6e426568616c60448201527f664f663a204e6f206c656e64696e67207768696c652074686520706f7369746960648201527f6f6e206973206d617267696e2d63616c6c656400000000000000000000000000608482015290519081900360a40190fd5b600c54604080517f0e8a4ac700000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff871691630e8a4ac7916024808301926020929190829003018186803b1580156123e057600080fd5b505afa1580156123f4573d6000803e3d6000fd5b505050506040513d602081101561240a57600080fd5b5051935061241e848963ffffffff614acc16565b925061243d61243884600654614acc90919063ffffffff16565b614ade565b6124478888614cb1565b600654841461245257fe5b3095505060025481146124c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50505050949350505050565b600e547801000000000000000000000000000000000000000000000000900463ffffffff1681565b60065481565b60095481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461252a57600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60008054819073ffffffffffffffffffffffffffffffffffffffff1633146125be57600080fd5b6125c6614182565b6125ec73ffffffffffffffffffffffffffffffffffffffff85163063ffffffff61425b16565b600e5490915073ffffffffffffffffffffffffffffffffffffffff8581169116141561262d5760045461262690829063ffffffff614acc16565b905061270e565b600d5473ffffffffffffffffffffffffffffffffffffffff8581169116141561270e57600b5460ff161561270e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604f60248201527f4275636b65744c656e646572237769746864726177457863657373546f6b656e60448201527f3a2068656c64546f6b656e2063616e6e6f742062652077697468647261776e2060648201527f696620666f7263652d636c6f7365640000000000000000000000000000000000608482015290519081900360a40190fd5b61273573ffffffffffffffffffffffffffffffffffffffff8516848363ffffffff6144d316565b8091505b5092915050565b600f546c01000000000000000000000000900463ffffffff1681565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331461280b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c54839081146128ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff851660009081526010602052604090205460ff16151561299057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f4275636b65744c656e6465722363616e63656c4d617267696e43616c6c4f6e4260448201527f6568616c664f663a204d617267696e2d63616c6c2d63616e63656c6572206d7560648201527f7374206265207472757374656400000000000000000000000000000000000000608482015290519081900360a40190fd5b30925050600254811461273957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60106020526000908152604090205460ff1681565b600760209081526000928352604080842090915290825290205481565b60015460009073ffffffffffffffffffffffffffffffffffffffff163314612b0157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c5484908114612ba457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b73ffffffffffffffffffffffffffffffffffffffff861660009081526010602052604090205460ff161515612c6057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602481018290527f4275636b65744c656e646572236d617267696e43616c6c4f6e426568616c664f60448201527f663a204d617267696e2d63616c6c6572206d7573742062652074727573746564606482015290519081900360840190fd5b8315612cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4275636b65744c656e646572236d617267696e43616c6c4f6e426568616c664f60448201527f663a204465706f73697420616d6f756e74206d757374206265207a65726f0000606482015290519081900360840190fd5b30925050600254811461095d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b600f5463ffffffff1681565b60045481565b60116020526000908152604090205460ff1681565b600154600c54600e54604080517f640075f300000000000000000000000000000000000000000000000000000000815260048101849052905160009473ffffffffffffffffffffffffffffffffffffffff16939274010000000000000000000000000000000000000000900463ffffffff16918591859163640075f3916024808301926020929190829003018186803b158015612e2a57600080fd5b505afa158015612e3e573d6000803e3d6000fd5b505050506040513d6020811015612e5457600080fd5b505115612e5d57fe5b604080517f6d8ab12400000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff861691636d8ab124916024808301926020929190829003018186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d6020811015612ef457600080fd5b50511515612f055760009450612fe0565b604080517f26ad8d1b00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff8616916326ad8d1b916024808301926020929190829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d6020811015612f9c57600080fd5b505163ffffffff9081169150612fdd90600190612fd19085811690612fc59042908790614acc16565b9063ffffffff614e4816565b9063ffffffff6144c616565b94505b5050505090565b600c5481565b6002805460010190819055613000614182565b600254811461307057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50565b600061307d615437565b60015473ffffffffffffffffffffffffffffffffffffffff16331461312957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002805460010190819055600c54869081146131cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4275636b65744c656e646572236f6e6c79506f736974696f6e3a20496e636f7260448201527f7265637420706f736974696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b600154600c54604080517f6d8ab12400000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff90921691636d8ab12491602480820192602092909190829003018186803b15801561324157600080fd5b505afa158015613255573d6000803e3d6000fd5b505050506040513d602081101561326b57600080fd5b5051151561332657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f205468697320636f6e74726163742073686f756c64206e6f74206f70656e206160648201527f206e657720706f736974696f6e00000000000000000000000000000000000000608482015290519081900360a40190fd5b604080516101208181019092526133bb918c90600990839083908082843750506040805160e081810190925293508e9250600791508390839080828437505060408051608081810190925293508e92506004915083908390808284375050604080516020601f8f018190048102820181019092528d815293508d92508c91508190840183828082843750614e5d945050505050565b600e54815191945073ffffffffffffffffffffffffffffffffffffffff9182169116146133e457fe5b600d54602084015173ffffffffffffffffffffffffffffffffffffffff90811691161461340d57fe5b604083015173ffffffffffffffffffffffffffffffffffffffff16301461343057fe5b606083015173ffffffffffffffffffffffffffffffffffffffff16301461345357fe5b608083015173ffffffffffffffffffffffffffffffffffffffff161561350057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e74616b6572206973206e6f6e2d7a65726f00606482015290519081900360840190fd5b60c083015173ffffffffffffffffffffffffffffffffffffffff16156135d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e666565526563697069656e74206973206e6f60648201527f6e2d7a65726f0000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b60a083015173ffffffffffffffffffffffffffffffffffffffff16156136a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e706f736974696f6e4f776e6572206973206e60648201527f6f6e2d7a65726f00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b60e083015173ffffffffffffffffffffffffffffffffffffffff161561377957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e6c656e646572466565546f6b656e2069732060648201527f6e6f6e2d7a65726f000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b61010083015173ffffffffffffffffffffffffffffffffffffffff161561384d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e74616b6572466565546f6b656e206973206e60648201527f6f6e2d7a65726f00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b613855614e9c565b610120840151511461391557604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a908201527f206c6f616e4f66666572696e672e6d6178416d6f756e7420697320696e636f7260648201527f7265637400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b61012083015160200151156139d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e6d696e416d6f756e74206973206e6f6e2d7a60648201527f65726f0000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6101208301516040015115613a9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e6d696e48656c64546f6b656e206973206e6f60648201527f6e2d7a65726f0000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6101208301516060015115613b5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e6c656e646572466565206973206e6f6e2d7a60648201527f65726f0000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6101208301516080015115613c1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e74616b6572466565206973206e6f6e2d7a6560648201527f726f000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b613c25614e9c565b61014084015114613ce357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f2065787069726174696f6e54696d657374616d7020697320696e636f7272656360648201527f7400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6101a083015115613d7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e73616c74206973206e6f6e2d7a65726f0000606482015290519081900360840190fd5b613d83614ec0565b63ffffffff1683610160015163ffffffff16141515613e4f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e63616c6c54696d656c696d6974206973206960648201527f6e636f7272656374000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b613e57614ec0565b63ffffffff1683610180015163ffffffff16141515613f2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4275636b65744c656e646572237665726966794c6f616e4f66666572696e673a60448201527f206c6f616e4f66666572696e672e6d61784475726174696f6e20697320696e6360648201527f6f72726563740000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600e5461012084015160a0015163ffffffff90811678010000000000000000000000000000000000000000000000009092041614613f5d57fe5b600e5461012084015160c0015163ffffffff9081167c01000000000000000000000000000000000000000000000000000000009092041614613f9b57fe5b30935050600254811461400f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50509695505050505050565b600e5473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461405b57600080fd5b61307081614ec8565b60036020526000908152604090205481565b600073ffffffffffffffffffffffffffffffffffffffff8216301461414857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4275636b65744c656e64657223666f7263655265636f766572436f6c6c61746560448201527f72616c4f6e426568616c664f663a20526563697069656e74206d75737420626560648201527f207468697320636f6e7472616374000000000000000000000000000000000000608482015290519081900360a40190fd5b614150614182565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905530919050565b600b5460009060ff161561419557613070565b600154600c54604080517f0e8a4ac700000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff90921691630e8a4ac791602480820192602092909190829003018186803b15801561420a57600080fd5b505afa15801561421e573d6000803e3d6000fd5b505050506040513d602081101561423457600080fd5b505160065490915061425090612438908363ffffffff614acc16565b600654811461307057fe5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156142f657600080fd5b505afa15801561430a573d6000803e3d6000fd5b505050506040513d602081101561432057600080fd5b505190505b92915050565b60008381526008602052604081205481908180808084151561435357600096508695506144b8565b60008a815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f168452909152902054935061438f8985614f77565b92508215156143a457600096508695506144b8565b60008a8152600860205260409020546143c3908463ffffffff614acc16565b60008b8152600860205260409020556143e2848463ffffffff614acc16565b600760008c815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144418a8487614f8f565b915061444f8a84878b61509b565b604080518c81526020810186905280820185905260608101839052905191925073ffffffffffffffffffffffffffffffffffffffff8d16917fe08737ac48a1dab4b1a46c7dc9398bd5bfc6d7ad6fabb7cd8caa254de14def359181900360800190a28181965096505b505050505094509492505050565b8181018281101561432557fe5b3081158061450c57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156145165761466c565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156145b957600080fd5b505af11580156145cd573d6000803e3d6000fd5b505050506145d96150f6565b151561466c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e496e746572616374237472616e736665723a205472616e7366657260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50505050565b600061468883612fc5868563ffffffff61512a16565b949350505050565b8015806146c857508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156146d25761466c565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152604482018490529151918616916323b872dd9160648082019260009290919082900301818387803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b505050506147726150f6565b151561466c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f546f6b656e496e746572616374237472616e7366657246726f6d3a205472616e60448201527f7366657246726f6d206661696c65640000000000000000000000000000000000606482015290519081900360840190fd5b60008083151561481457614937565b821561489f5760045461482d908563ffffffff6144c616565b60008681526003602052604090205490925061484f908563ffffffff6144c616565b60408051848152602081018890528082018390526060810187905290519192507fca6e648ae199ddefe590826a3fa1725537263712dc91de54fbe9265e8481bcb2919081900360800190a1614920565b6004546148b2908563ffffffff614acc16565b6000868152600360205260409020549092506148d4908563ffffffff614acc16565b60408051848152602081018890528082018390526060810187905290519192507f4f57952c4b465f787533606ee05864b1a98fc1d66e200cea50d06ffe2b911bc4919081900360800190a15b600482905560008581526003602052604090208190555b5050505050565b6149466153d3565b61494e6154cc565b6149566153b8565b61495e6154eb565b604080517f1928b3cb00000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff881691631928b3cb91602480830192610180929190829003018186803b1580156149cc57600080fd5b505afa1580156149e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610180811015614a0657600080fd5b506040805161018081018252825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015283830151811692820192909252606080840151909216918101919091526080808301519082015260a0808301519082015260c08083015163ffffffff9081169183019190915260e0808401518216908301526101008084015182169083015261012080840151821690830152610140808401518216908301526101609283015116918101919091529695505050505050565b600082821115614ad857fe5b50900390565b6000808080808080871515614af257614ca7565b600154600c54604080517fbb39c85f00000000000000000000000000000000000000000000000000000000815260048101929092525173ffffffffffffffffffffffffffffffffffffffff9092169163bb39c85f91602480820192602092909190829003018186803b158015614b6757600080fd5b505afa158015614b7b573d6000803e3d6000fd5b505050506040513d6020811015614b9157600080fd5b5051600a549097508890614bac90899063ffffffff614acc16565b1015614bb457fe5b600a54889650614bcb90889063ffffffff614acc16565b945060095493508392505b6000861115614c885783831115614be957fe5b600083815260056020526040902054614c03908790614f77565b9150811515614c1157614c5e565b614c1c828787614672565b9050614c2a83826001614805565b614c3683836000615153565b614c46868363ffffffff614acc16565b9550614c58858263ffffffff614acc16565b94508293505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191614bd6565b8515614c9057fe5b8415614c9857fe5b614ca18461528b565b600a8790555b5050505050505050565b60008060008060008060006004548811151515614d7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4275636b65744c656e646572236163636f756e74466f72496e6372656173653a60448201527f204e6f206c656e64696e67206e6f742d6163636f756e7465642d666f7220667560648201527f6e64730000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b889650879550614d89612d8e565b935060095492505b6000871115614e245783831115614da457fe5b600083815260036020526040902054614dbe908790614f77565b9150811515614dcc57614e19565b614dd7828789614672565b9050614de583836000614805565b614df183826001615153565b614e01878263ffffffff614acc16565b9650614e13868363ffffffff614acc16565b95508294505b600190920191614d91565b8615614e2c57fe5b8515614e3457fe5b614e3d8561528b565b505050505050505050565b60008183811515614e5557fe5b049392505050565b614e65615437565b614e6d615437565b614e77818761529f565b614e81818661531c565b614e8b818561536f565b6101e0810192909252509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b63ffffffff90565b73ffffffffffffffffffffffffffffffffffffffff81161515614eea57600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000818310614f865781614f88565b825b9392505050565b600080614fc38484614fbe614fa389610db2565b60008a8152600360205260409020549063ffffffff6144c616565b614672565b60008681526003602052604090205490915081111561508f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4275636b65744c656e6465722377697468647261774f776564546f6b656e3a2060448201527f5468657265206d75737420626520656e6f75676820617661696c61626c65206f60648201527f776564546f6b656e000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b61468885826000614805565b600080808315156150af57600092506150ec565b6000878152600560205260409020546150cb9087908790614672565b91506150da8260065486614672565b90506150e887836000615153565b8092505b5050949350505050565b6000803d801561510d576020811461511657615122565b60019150615122565b60206000803e60005191505b501515919050565b600082151561513b57506000614325565b5081810281838281151561514b57fe5b041461432557fe5b60008083151561516257614937565b82156151ed5760065461517b908563ffffffff6144c616565b60008681526005602052604090205490925061519d908563ffffffff6144c616565b60408051848152602081018890528082018390526060810187905290519192507f58eef9f4832bc1f3b7dd73c274fd9d7c5fcbc32c73adc5b3020be3e03e7a139a919081900360800190a161526e565b600654615200908563ffffffff614acc16565b600086815260056020526040902054909250615222908563ffffffff614acc16565b60408051848152602081018890528082018390526060810187905290519192507f79a3ce3942e009744cca7547c0a7692ec2065556cc98bfd8f5cf9c367e23596b919081900360800190a15b600682905560008581526005602052604090208190555050505050565b80600954141561529a57613070565b600955565b805173ffffffffffffffffffffffffffffffffffffffff908116835260208083015182169084015260408083015182169084015260608083015182169084015260808083015182169084015260a08083015182169084015260c08083015182169084015260e0808301518216908401526101009182015116910152565b805161012083018051919091526020808301518251909101526040808301518251909101526060808301518251909101526080808301519151015260a081015161014083015260c001516101a090910152565b805163ffffffff908116610160840152602082015181166101808401526040820151610120909301805193821660a0909401939093526060909101519151911660c09190910152565b60408051808201825290600290829080388339509192915050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b604080516102c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610120810161548d61550a565b815260200160008152602001600063ffffffff168152602001600063ffffffff1681526020016000815260200160008019168152602001606081525090565b6080604051908101604052806004906020820280388339509192915050565b60c0604051908101604052806006906020820280388339509192915050565b60e0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff1681525090565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156155f757600080fd5b505af115801561560b573d6000803e3d6000fd5b505050506156176150f6565b15156156aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546f6b656e496e74657261637423617070726f76653a20417070726f76616c2060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5050505600a165627a7a723058203158fb7542e7aa2fd6684918943ccf5afb297052a07e9f45a2acabd9b3036c9f0029",
    "networks": {},
    "schemaVersion": "2.0.1"
}