{
  "_format": "hh-sol-artifact-1",
  "contractName": "VaultManagerLiquidationsFacet",
  "sourceName": "contracts/VaultManagerDiamond/facets/VaultManagerLiquidationsFacet.sol",
  "abi": [
    {
      "inputs": [],
      "name": "InsufficientVaultsInSystem",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAbsorptionParams",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInputLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxFeePercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decimalPrecision",
          "type": "uint256"
        }
      ],
      "name": "MaxFeeTooHigh",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxFeePercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redemptionFeeFloor",
          "type": "uint256"
        }
      ],
      "name": "MaxFeeTooLow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TCRBelowMCR",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "VaultNotActive",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAmount",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collToSendToSP",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collToRedistribute",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collSurplus",
          "type": "uint256"
        }
      ],
      "name": "CollateralDistribution",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        }
      ],
      "name": "CollateralSurplusCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "vaultDebt",
          "type": "uint256"
        }
      ],
      "name": "DistributionValidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "VEUSDAmount",
          "type": "uint256"
        }
      ],
      "name": "GasCompensationSent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interest",
          "type": "uint256"
        }
      ],
      "name": "InterestApplied",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_Coll_Address",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_L_Coll",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_L_VEUSDDebt",
          "type": "uint256"
        }
      ],
      "name": "LTermsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "L_VEUSDInterest",
          "type": "uint256"
        }
      ],
      "name": "L_VEUSDInterestUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_lastFeeOpTime",
          "type": "uint256"
        }
      ],
      "name": "LastFeeOpTimeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidatedAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalVEUSDGasCompensation",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "totalCollTokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "totalCollAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "totalCollGasCompTokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "totalCollGasCompAmounts",
          "type": "uint256[]"
        }
      ],
      "name": "Liquidation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "inRecoveryMode",
          "type": "bool"
        }
      ],
      "name": "LiquidationInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "LiquidationSkipped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        }
      ],
      "name": "PendingRewards",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "RecoveryModeExited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "strategy",
          "type": "string"
        }
      ],
      "name": "RecoveryModeLiquidationStrategy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "debtOffset",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collateralVC",
          "type": "uint256"
        }
      ],
      "name": "StabilityPoolUsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_unix",
          "type": "uint256"
        }
      ],
      "name": "SystemSnapshotsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "inRecoveryMode",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "TCR",
          "type": "uint256"
        }
      ],
      "name": "SystemStateSnapshot",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_newTotalStakes",
          "type": "uint256"
        }
      ],
      "name": "TotalStakesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_newIndex",
          "type": "uint256"
        }
      ],
      "name": "VaultIndexUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_debt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum VaultManagerOperation",
          "name": "_operation",
          "type": "uint8"
        }
      ],
      "name": "VaultLiquidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_unix",
          "type": "uint256"
        }
      ],
      "name": "VaultSnapshotsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_debt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "_amounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "enum VaultManagerOperation",
          "name": "operation",
          "type": "uint8"
        }
      ],
      "name": "VaultUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_vaultArray",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "_liquidator",
          "type": "address"
        }
      ],
      "name": "batchLiquidateVaults",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_borrower",
          "type": "address"
        }
      ],
      "name": "liquidate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615e4880620000216000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632f8655681461003b5780639f8dac2014610050575b600080fd5b61004e6100493660046154fe565b610063565b005b61004e61005e366004615586565b6100e2565b61006b610102565b61007481610160565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106100aa576100aa615637565b60200260200101906001600160a01b031690816001600160a01b0316815250506100d4813361019f565b506100df6001600555565b50565b6100ea610102565b6100f4828261019f565b6100fe6001600555565b5050565b6002600554036101595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600555565b61016981610425565b6100df576040517f1103b9d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036101f05760405162461bcd60e51b815260206004820152601060248201527f564d4c3a20417272617920656d707479000000000000000000000000000000006044820152606401610150565b7f3e95614a6b53f6210c4f6e8cb87d40d58886cd31920f0811ad8d348030481400600080516020615dd3833981519152600061022c858561048f565b9050610236615210565b8354604080517fec6987de00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163ec6987de916004808201926020929091908290030181865afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061564d565b82526102c6610526565b60808601819052606086018390529215156020860152506000916102ea919061064c565b90507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb672183602001518260405161032c9291909115158252602082015260400190565b60405180910390a182602001511561034e5761034783610683565b915061035a565b61035783610ac8565b91505b81602001516000036103ae5760405162461bcd60e51b815260206004820152601960248201527f564d4c3a206e6f7468696e6720746f206c6971756964617465000000000000006044820152606401610150565b6103ba82848787610dc0565b60008060006103c7610526565b9350509250925060006103da838361064c565b604080518615158152602081018390529192507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb6721910160405180910390a15050505050505050505050565b6001600160a01b03811660009081527f7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda3096020526040812060040154600080516020615db38339815191529060019060ff16600581111561048757610487615666565b149392505050565b6104da6040518060e00160405280600081526020016000151581526020016000815260200160008152602001600081526020016060815260200160006001600160a01b031681525090565b6040518060e0016040528060008152602001600015158152602001600081526020016000815260200160008152602001848152602001836001600160a01b031681525090505b92915050565b600080808080600080516020615dd383398151915280546040805163896a008960e01b815290519293506001600160a01b039091169163896a0089916004808201926000929091908290030181865afa158015610587573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105af91908101906156e2565b5090945092506105bd6110fc565b91508060020160009054906101000a90046001600160a01b03166001600160a01b0316635733d58f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610638919061564d565b610642848461064c565b1094505090919293565b60008160000361065f5750600019610520565b8161067284670de0b6b3a7640000615748565b61067c919061575f565b9392505050565b61068b615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905285518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e919061564d565b90505b8460a001515182602001511015610aa5578460a0015182602001518151811061076c5761076c615637565b60209081029190910101516001600160a01b03166060830181905261079090610425565b6108015781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc46040516107f49060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2610a8f565b61080e8260600151611219565b60408301819052811180159061082357508151155b156108955781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc46040516107f4906020808252601b908201527f4943522061626f7665204d4352207769746820656d7074792053500000000000604082015260600190565b84602001516108d357600160808301526040517f10834f689e801ab2dec6d31a1b5b41a107fae4517af90c01925705b33b2ee02090600090a1610aa5565b60006108e78660600151876080015161064c565b90507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb67218660200151826040516109299291909115158252602082015260400190565b60405180910390a182606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066001604051610973911515815260200190565b60405180910390a2600061099584606001518560400151848760000151611239565b90506109a186826119da565b608082015185519197506109b491615781565b845260a08101516000906109c790611cda565b905060006109d88360400151611cda565b905060006109ea846101000151611cda565b608085015190915015610a3657608084015160408051918252602082018590527f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a15b8082848c60600151610a489190615781565b610a529190615781565b610a5c9190615781565b60608b0152608080850151908b0151610a759190615781565b60808b0152610a82611d72565b151560208b015250505050505b816020018051610a9e90615794565b9052610741565b816080015115610ac057610abd858360200151611e28565b93505b505050919050565b610ad0615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905285518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b83919061564d565b90505b8460a001515182602001511015610ac0578460a00151826020015181518110610bb157610bb1615637565b60209081029190910101516001600160a01b031660608301819052610bd590610425565b610c465781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051610c399060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2610daa565b610c538260600151611219565b604083018190528111610ccd5781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051610c39906020808252600d908201527f4943522061626f7665204d435200000000000000000000000000000000000000604082015260600190565b81606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066000604051610d0f911515815260200190565b60405180910390a26000610d2b83606001518460000151612130565b9050610d3785826119da565b60808201518451919650610d4a91615781565b8352608081015115610da8576000610d658260a00151611cda565b608083015160408051918252602082018390529192507f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a1505b505b816020018051610db990615794565b9052610b86565b8154608085015160a086015180516020909101516040517f768cc575000000000000000000000000000000000000000000000000000000008152600080516020615db3833981519152946001600160a01b03169363768cc57593610e2b939192909190600401615821565b600060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b50508354600185015460c089015160e08a01518051602090910151610e9296506001600160a01b0394851695509290931692909161251f565b610ea08561010001516125ea565b15610f1d5781546002820154610100870151805160209091015160405163d0d8c20d60e01b81526001600160a01b039485169463d0d8c20d94610eea949116929091600401615856565b600060405180830381600087803b158015610f0457600080fd5b505af1158015610f18573d6000803e3d6000fd5b505050505b815460408601518051602090910151610f40926001600160a01b0316919061263f565b600282015460a086015160e0870151604051635799186760e01b815260009373__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793610f93936001600160a01b03909316926004016158fb565b600060405180830381865af4158015610fb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd89190810190615993565b6002840154610100880151604051635799186760e01b815292935073__$dd008e7fdb676c23adfd59cbc2bd3a4768$__9263579918679261102a926001600160a01b03909116918691906004016158fb565b600060405180830381865af4158015611047573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261106f9190810190615993565b60208088015160608901518351838501516040808d0151805196015190519697507ff9c8e708c82ad9ab70e0c58ca02ae4dceef6c9546eacbeb0b7ac025be81c460a966110bd969190615a3a565b60405180910390a1825460c08601516060880151604089015180516020909101516110f4946001600160a01b0316939291906127dc565b505050505050565b7fa36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e0154604080516381b7f1bf60e01b81529051600092600080516020615dd3833981519152926001600160a01b03909116916381b7f1bf916004808201926020929091908290030181865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c919061564d565b8154604080516381b7f1bf60e01b815290516001600160a01b03909216916381b7f1bf916004808201926020929091908290030181865afa1580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061564d565b6112139190615aa0565b91505090565b60008060008061122885612953565b925092509250610abd838383612b54565b6112416152c7565b600080516020615dd38339815191526112586153a1565b600080516020615db383398151915261127088612b76565b6020808c015160408b015160608c01939093528282019390935292905287820192835290810192909252919052908552511515806112b2575060008260600151115b156112ec576040516001600160a01b038916907f76533ee8ed027769dd3544ad995c3bfa64ad126575f2fcb8058a29fceaab2c1e90600090a25b6112f98460200151612dae565b60408086019190915260028401548151637d92c3bb60e01b815291516001600160a01b0390911691637d92c3bb9160048083019260209291908290030181865afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136f919061564d565b6060850152602084015151825152815151518067ffffffffffffffff81111561139a5761139a61551b565b6040519080825280602002602001820160405280156113c3578160200160208202803683370190505b5083516020015260005b818110156114565785604001516020015181815181106113ef576113ef615637565b6020026020010151866020015160200151828151811061141157611411615637565b60200260200101516114239190615781565b84516020015180518390811061143b5761143b615637565b602090810291909101015261144f81615794565b90506113cd565b506000611467878760000151612ea6565b9050670de0b6b3a764000080821015908a116115b6576000608088015284515160a0880151528267ffffffffffffffff8111156114a6576114a661551b565b6040519080825280602002602001820160405280156114cf578160200160208202803683370190505b5060a088015160200152865160c0880152845160e0880152845151610100880151528267ffffffffffffffff81111561150a5761150a61551b565b604051908082528060200260200182016040528015611533578160200160208202803683370190505b50610100880151602001526040516001600160a01b038c16907f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e906115a99060208082526013908201527f46756c6c205265646973747269627574696f6e00000000000000000000000000604082015260600190565b60405180910390a2611824565b8560020160009054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f919061564d565b8a10156116f25786518551600091611647918b612ecb565b905061165381896132ee565b97508b6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e6040516116e49060208082526021908201527f5061727469616c204f666673657420616e64205265646973747269627574696f60408201527f6e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a250611824565b886116fc8c61332d565b1080156117065750805b1561179d57865185518051602091820151828b015183015160408c01519093015161173294939061334d565b96508a6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e6040516115a99060208082526013908201527f46756c6c204f6666736574207769746820535000000000000000000000000000604082015260600190565b8a6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e604051611806906020808252601d908201527f536b6970706564202d204943522061626f7665207468726573686f6c64000000604082015260600190565b60405180910390a26118166152c7565b96506119d295505050505050565b60208086015160608701516040880151805193015161184493908f613698565b61184f8b6003613802565b61185d8761010001516125ea565b15611922578360020160009054906101000a90046001600160a01b03166001600160a01b0316639efc9e208c896101000151600001518a6101000151602001516040518463ffffffff1660e01b81526004016118bb93929190615856565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b50506040516001600160a01b038e1692507ff3fd50e62877ddca5a4259760717800c963dd8e4919da9fcb7cc7af6011d87409150600090a25b8a6001600160a01b03167f5a15518ffcc030411a834e039914b3027a1310f22bf6c0c421edb07f05f7a2c388600001516002604051611962929190615ad5565b60405180910390a2604080518082018252606080825260208201819052915190916001600160a01b038e16917fe271bc17472b20d803bff415104ad56a96ce7671d274aacd82ecb65616868a83916119c291600091908190600290615ae9565b60405180910390a2505050505050505b949350505050565b6119e2615210565b600080516020615df383398151915254604084810151848201519151635799186760e01b8152600080516020615dd38339815191529373__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611a4f936001600160a01b03909316929091906004016158fb565b600060405180830381865af4158015611a6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a949190810190615993565b604083015260608084015190850151611aad9190615aa0565b606083015282516020850151611ac39190615aa0565b602083015260808084015190850151611adc9190615aa0565b6080830152600281015460a08086015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611b34936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611b51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b799190810190615993565b60a083015260c08084015190850151611b929190615aa0565b60c0830152600281015460e08086015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611bea936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c2f9190810190615993565b60e083015260028101546101008581015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611c88936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ccd9190810190615993565b6101008301525092915050565b600080516020615df383398151915254815160208301516040516397a4b9f760e01b8152600093600080516020615dd3833981519152936001600160a01b03909116926397a4b9f792611d31929190600401615b24565b602060405180830381865afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067c919061564d565b600080516020615df383398151915254604080517f5733d58f0000000000000000000000000000000000000000000000000000000081529051600092600080516020615dd3833981519152926001600160a01b0390911691635733d58f916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061564d565b611e21613c5e565b1091505090565b611e30615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905286518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa158015611ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee3919061564d565b6020830186905290505b8560a001515182602001511015612127578560a00151826020015181518110611f1857611f18615637565b60209081029190910101516001600160a01b031660608301819052611f3c90610425565b611fad5781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051611fa09060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2612111565b611fba8260600151611219565b6040830181905281116120345781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051611fa0906020808252601c908201527f4943522061626f7665204d4352206166746572207265636f7665727900000000604082015260600190565b81606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066000604051612076911515815260200190565b60405180910390a2600061209283606001518460000151612130565b905061209e85826119da565b608082015184519196506120b191615781565b835260808101511561210f5760006120cc8260a00151611cda565b608083015160408051918252602082018390529192507f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a1505b505b81602001805161212090615794565b9052611eed565b50505092915050565b6121386152c7565b600080516020615dd383398151915261214f6153a1565b600080516020615db383398151915261216786612b76565b6020808c015160408b015160608c01939093528282019390935292905287820192835290810192909252919052908552511515806121a9575060008260600151115b156121e3576040516001600160a01b038716907f76533ee8ed027769dd3544ad995c3bfa64ad126575f2fcb8058a29fceaab2c1e90600090a25b60208083015160608401516040850151805193015161220393908a613698565b6122108460200151612dae565b60408086019190915260028401548151637d92c3bb60e01b815291516001600160a01b0390911691637d92c3bb9160048083019260209291908290030181865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612286919061564d565b6060850152602084015151825152815151518067ffffffffffffffff8111156122b1576122b161551b565b6040519080825280602002602001820160405280156122da578160200160208202803683370190505b5083516020015260005b8181101561236d57856040015160200151818151811061230657612306615637565b6020026020010151866020015160200151828151811061232857612328615637565b602002602001015161233a9190615781565b84516020015180518390811061235257612352615637565b602090810291909101015261236681615794565b90506122e4565b508451835160009161237f9189612ecb565b905061238b81876132ee565b9550612398886003613802565b6123a68661010001516125ea565b1561246b57600283015461010087015180516020909101516040517f9efc9e200000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692639efc9e2092612404928d92600401615856565b600060405180830381600087803b15801561241e57600080fd5b505af1158015612432573d6000803e3d6000fd5b50506040516001600160a01b038b1692507ff3fd50e62877ddca5a4259760717800c963dd8e4919da9fcb7cc7af6011d87409150600090a25b876001600160a01b03167f5a15518ffcc030411a834e039914b3027a1310f22bf6c0c421edb07f05f7a2c3876000015160016040516124ab929190615ad5565b60405180910390a2604080518082018252606080825260208201819052915190916001600160a01b038b16917fe271bc17472b20d803bff415104ad56a96ce7671d274aacd82ecb65616868a839161250b91600091908190600190615ae9565b60405180910390a250505050505092915050565b6000604051806101000160405280876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381526020018451815260200160008152602001600067ffffffffffffffff8111156125855761258561551b565b6040519080825280602002602001820160405280156125ae578160200160208202803683370190505b50815250905080604001516000036125c657506125e3565b6125cf81613cff565b90506125da81613d8f565b6110f481613f17565b5050505050565b6000805b825151811015612636578260200151818151811061260e5761260e615637565b60200260200101516000146126265750600192915050565b61262f81615794565b90506125ee565b50600092915050565b6040517f3824174c000000000000000000000000000000000000000000000000000000008152600080516020615db3833981519152906000906001600160a01b03861690633824174c90612697908790600401615b49565b600060405180830381865afa1580156126b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126dc9190810190615b5c565b905060005b84518110156127a15760008582815181106126fe576126fe615637565b6020908102919091018101516001600160a01b0381166000908152600b87018352604080822054600c8901909452902091909155855190915085908390811061274957612749615637565b602002602001015183838151811061276357612763615637565b60200260200101516127759190615781565b6001600160a01b039091166000908152600d8501602052604090205561279a81615794565b90506126e1565b506040514281527f523f4c1c183d46bec16040588c9c0aee1cbce44d14a4499539c18ef5761b6c3d9060200160405180910390a15050505050565b604051838152600080516020615db3833981519152906001600160a01b038616907f4ec7caa4d503f452bb5be16cbf24eb836adb1709971c2792ebee8bd349e9eefa9060200160405180910390a283156128bb57805460038201546040517f20c582be0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201528782166024820152604481018790529116906320c582be90606401600060405180830381600087803b1580156128a257600080fd5b505af11580156128b6573d6000803e3d6000fd5b505050505b8251158015906128cb5750815115155b156110f4576040517f564a5c2e0000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063564a5c2e9061291990889087908790600401615856565b600060405180830381600087803b15801561293357600080fd5b505af1158015612947573d6000803e3d6000fd5b50505050505050505050565b6060806000600080516020615db38339815191528161297186614051565b90506000806000612981896142c4565b6001600160a01b038c16600090815260098901602090815260409182902082518084018452606080825281840152815484518185028101850190955280855296995094975092955091939091849190830182828015612a0957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129eb575b505050918352505060018201805460408051602080840282018101909252828152929190830182828015612a5c57602002820191906000526020600020905b815481526020019060010190808311612a48575b50505050506020820152600080516020615df383398151915254604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__91635799186791612ab9916001600160a01b03169085908b906004016158fb565b600060405180830381865af4158015612ad6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612afe9190810190615993565b905083858360020154612b119190615aa0565b612b1b9190615aa0565b9750828811612b2b576000612b35565b612b358389615781565b97508060000151816020015199509950505050505050505b9193909250565b600080612b6185856146e3565b9050612b6d818461064c565b95945050505050565b60006060808281808280600080516020615db38339815191526001600160a01b038a1660008181526009830160208181526040808420600281015482518084018452606080825281860152969095529282528254815181840281018401909252808252959650929490830182828015612c1857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612bfa575b50505091835250506001600160a01b038b16600090815260098401602090815260409182902060010180548351818402810184019094528084529091830182828015612c8357602002820191906000526020600020905b815481526020019060010190808311612c6f575b505050505081602001819052506000806000612c9e8e6142c4565b9250925092506000612caf8f614051565b905082612cbc8588615aa0565b612cc69190615aa0565b955081861115612ce157612cda8287615781565b9550612ce6565b600095505b600080516020615df383398151915254604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__91635799186791612d39916001600160a01b031690899086906004016158fb565b600060405180830381865af4158015612d56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d7e9190810190615993565b805160209182015183519390920151979f509d509b50929950919750929550919350505050919395979092949650565b6040805180820190915260608082526020820152815180519082528067ffffffffffffffff811115612de257612de261551b565b604051908082528060200260200182016040528015612e0b578160200160208202803683370190505b50602083015260005b81811015612e9f5783602001518181518110612e3257612e32615637565b602002602001015160000315612e8f5760c884602001518281518110612e5a57612e5a615637565b6020026020010151612e6c919061575f565b83602001518281518110612e8257612e82615637565b6020026020010181815250505b612e9881615794565b9050612e14565b5050919050565b600081600003612eb857506000610520565b81610672670de0b6b3a764000085615748565b612ed36153e8565b82518051602083015191909152600080516020615dd3833981519152908067ffffffffffffffff811115612f0957612f0961551b565b604051908082528060200260200182016040528015612f32578160200160208202803683370190505b50602080850151015284516060840151528067ffffffffffffffff811115612f5c57612f5c61551b565b604051908082528060200260200182016040528015612f85578160200160208202803683370190505b5060608401516020015284516080840151528067ffffffffffffffff811115612fb057612fb061551b565b604051908082528060200260200182016040528015612fd9578160200160208202803683370190505b50608084015160200152600084900361300557505060008152606081018390526040810184905261067c565b61300f8685614776565b80845261301c9087615781565b6040840152600061302c86611cda565b905060008785600001516b033b2e3c9fd0803ce800000061304d9190615748565b613057919061575f565b90506000828560020160009054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d5919061564d565b87516130e590633b9aca00615748565b6130ef9190615748565b6130f9919061575f565b90506131058282614776565b905060006131138284615781565b905060005b858110156132d55760008a60200151828151811061313857613138615637565b602002602001015190508060000361315057506132c5565b60006b033b2e3c9fd0803ce80000006131698684615748565b613173919061575f565b905060006b033b2e3c9fd0803ce800000061318e8685615748565b613198919061575f565b90506000816131a78486615781565b6131b19190615781565b9050828c602001516020015186815181106131ce576131ce615637565b602002602001018181525050808c606001516020015186815181106131f5576131f5615637565b602002602001018181525050818c6080015160200151868151811061321c5761321c615637565b60200260200101818152505060008311806132375750600081115b806132425750600082115b156132c0578d5180518690811061325b5761325b615637565b60200260200101516001600160a01b03167f3e83a24e0824c153e2e0fd8e66d0b76a37b49fc6e87ce6290a62287ac96521e5858584866040516132b7949392919093845260208401929092526040830152606082015260800190565b60405180910390a25b505050505b6132ce81615794565b9050613118565b506132e1878b8b61478c565b5050505050509392505050565b6132f66152c7565b508151608082810191909152602083015160a0830152604083015160c0830152606083015160e08301529091015161010082015290565b60008060008061333c85612953565b925092509250610abd838383614926565b6133556152c7565b600080516020615df38339815191525460408051631e5395c960e21b81529051600080516020615dd3833981519152926000928a926001600160a01b039092169163794e5724916004808201926020929091908290030181865afa1580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e5919061564d565b6133ef9190615748565b9050600061341060405180604001604052808a815260200189815250611cda565b90506000613426670de0b6b3a764000083615748565b61343c6b033b2e3c9fd0803ce800000085615748565b613446919061575f565b905061345e816b033b2e3c9fd0803ce8000000614776565b8a8652602080870180518c9052518101899052600286015460408051637d92c3bb60e01b815290519394506001600160a01b0390911692637d92c3bb926004808401939192918290030181865afa1580156134bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e1919061564d565b6060860152608085018a9052600060c086015260a085015189905288518067ffffffffffffffff8111156135175761351761551b565b604051908082528060200260200182016040528015613540578160200160208202803683370190505b5060a0870151602001526101008601518a90528067ffffffffffffffff81111561356c5761356c61551b565b604051908082528060200260200182016040528015613595578160200160208202803683370190505b506101008701516020908101919091526040870180518c9052510187905260005b818110156136895760006b033b2e3c9fd0803ce80000008b83815181106135df576135df615637565b6020026020010151856135f29190615748565b6135fc919061575f565b90506000818c848151811061361357613613615637565b60200260200101516136259190615781565b9050818960a0015160200151848151811061364257613642615637565b6020026020010181815250508089610100015160200151848151811061366a5761366a615637565b60200260200101818152505050508061368290615794565b90506135b6565b50505050505095945050505050565b604080516001600160a01b0383168152602081018690528151600080516020615dd3833981519152927f11883dbbc997d02c733f213f8862794f7634669925e006376cee371143442ca1928290030190a16001810154604051632a7ba1f760e01b8152600481018890526001600160a01b0390911690632a7ba1f790602401600060405180830381600087803b15801561373157600080fd5b505af1158015613745573d6000803e3d6000fd5b505082546001600160a01b03169150632b7c7b1190506137658789615aa0565b6040518263ffffffff1660e01b815260040161378391815260200190565b600060405180830381600087803b15801561379d57600080fd5b505af11580156137b1573d6000803e3d6000fd5b50505060018201546040517f116426ae0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116915063116426ae906129199087908790600401615b24565b600080516020615db383398151915261381c836000614933565b6001600160a01b0383166000908152600982016020908152604080832080546012860184528285206013870190945291842090939192915b8381101561394957600085828154811061387057613870615637565b60009182526020808320909101546001600160a01b039081168084528783526040808520859055600189018452808520859055600289018452808520859055918d16845260098b018352818420818552600301835281842054600b8c01909352922054919250906138e2908290615781565b6001600160a01b039283166000818152600b8b016020908152604080832094909455948d16815260098b01855282812091815260039091018452818120819055858452818120819055600186019093528220919091555061394281615794565b9050613854565b506000600282015560408051808201909152606080825260208201526001600160a01b03881660009081526009870160205260409020600401805488919060ff1916600183600581111561399f5761399f615666565b021790555080516001600160a01b0389166000908152600988016020908152604090912082516139d493919290910190615417565b506020808201516001600160a01b038a166000908152600989018352604090208151613a099360019092019290910190615489565b506001600160a01b0388166000908152600987016020526040812060020155600a860154613a36816149cf565b6001600160a01b038916600090815260098801602052604081206004015461010090046fffffffffffffffffffffffffffffffff1690600a8901613a7b600185615781565b81548110613a8b57613a8b615637565b600091825260209091200154600a8a0180546001600160a01b03909216925082916fffffffffffffffffffffffffffffffff8516908110613ace57613ace615637565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905591831680825260098c01835260409182902060040180547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8816908102919091179091558251918252928101929092527f5108b30b1c08360822e1bfe7a4169b885b0a62765e9d04592cac9933f3879e46910160405180910390a188600a01805480613ba657613ba6615b91565b6000828152602090206000199082018101805473ffffffffffffffffffffffffffffffffffffffff191690550190556004898101546040517f29092d0e0000000000000000000000000000000000000000000000000000000081526001600160a01b038e8116938201939093529116906329092d0e90602401600060405180830381600087803b158015613c3957600080fd5b505af1158015613c4d573d6000803e3d6000fd5b505050505050505050505050505050565b600080516020615dd383398151915280546040805163896a008960e01b815290516000939284926001600160a01b039091169163896a00899160048082019286929091908290030181865afa158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ce391908101906156e2565b50915050613cf881613cf36110fc565b61064c565b9250505090565b613d5960405180610100016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016000815260200160008152602001606081525090565b613d6d8260800151518360a0015114614a09565b613d7f82606001518360800151614a40565b5060e08501525060c08301525090565b600080516020615db3833981519152600080516020615dd383398151915260005b8360a00151811015613f1157600084606001518281518110613dd457613dd4615637565b6020026020010151905060008560c0015186604001518760e001518581518110613e0057613e00615637565b6020026020010151613e129190615748565b613e1c919061575f565b6001600160a01b038316600090815260158701602052604081205491925090613e4d670de0b6b3a764000084615748565b613e579190615aa0565b6001600160a01b0384166000908152600b8801602052604090205490915015613ea957613ea48388608001518681518110613e9457613e94615637565b6020026020010151836001614b06565b613efd565b60408051600060c0820181815260e083018452825282518181526020808201855283015291810191909152606081018390526001600160a01b038416608082015260a08101859052613efd90888888614d24565b50505080613f0a90615794565b9050613db0565b50505050565b80516040808301519051632a7ba1f760e01b81526001600160a01b0390921691632a7ba1f791613f4d9160040190815260200190565b600060405180830381600087803b158015613f6757600080fd5b505af1158015613f7b573d6000803e3d6000fd5b5050505080602001516001600160a01b0316632b7c7b1182604001516040518263ffffffff1660e01b8152600401613fb591815260200190565b600060405180830381600087803b158015613fcf57600080fd5b505af1158015613fe3573d6000803e3d6000fd5b5050825160208401516060850151608086015160405163d0d8c20d60e01b81526001600160a01b03909416955063d0d8c20d945061402393600401615856565b600060405180830381600087803b15801561403d57600080fd5b505af11580156125e3573d6000803e3d6000fd5b60408051808201909152606080825260208201526000600080516020615db3833981519152905060016001600160a01b038416600090815260098301602052604090206004015460ff1660058111156140ac576140ac615666565b146140cc5760408051808201909152606080825260208201529392505050565b6001600160a01b038316600090815260098201602090815260408083208054825181850281018501909352808352919290919083018282801561413857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161411a575b50508351939450839250505067ffffffffffffffff81111561415c5761415c61551b565b604051908082528060200260200182016040528015614185578160200160208202803683370190505b50602085015281845260005b818110156142bb5760008382815181106141ad576141ad615637565b6020908102919091018101516001600160a01b03808a1660009081526012890184526040808220928416825291845281812054600e8a0190945290812054919350906141fa908390615781565b9050806000036142305760008860200151858151811061421c5761421c615637565b6020026020010181815250505050506142ab565b61423983615138565b61424490600a615c8b565b6001600160a01b03808b16600090815260098a0160209081526040808320938816835260039093019052205461427b908390615748565b614285919061575f565b8860200151858151811061429b5761429b615637565b6020026020010181815250505050505b6142b481615794565b9050614191565b50505050919050565b6001600160a01b03811660009081527f7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda309602052604081206004015481908190600080516020615dd383398151915290600080516020615db38339815191529060019060ff16600581111561433a5761433a615666565b146143515760008060009450945094505050612b4d565b6001600160a01b038087166000908152600983016020908152604080832060028701548251637d92c3bb60e01b8152925191951692637d92c3bb92600480820193918290030181865afa1580156143ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d0919061564d565b6001600160a01b03891660009081526009850160205260409020600201546143f89190615781565b6001600160a01b0389166000908152601385016020526040812091925090815b84548110156146b3576144706040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600086838154811061448457614484615637565b60009182526020808320909101546001600160a01b031680835286825260408084205480875282855260118d01909352909220549192506144c491615781565b60208301819052158015906144d95750815115155b156145285781516020808401516001600160a01b038416600090815260018801909252604082205491929161450e9190615748565b614518919061575f565b90506145248187615aa0565b9550505b6001600160a01b03808e16600090815260128a01602090815260408083209385168084526001909401825280832054868201819052938352600f8c019091529020546145749190615781565b606083019081526001600160a01b03808f16600090815260098b01602090815260408083209386168352600390930190522054608084015251156145f8576145bb81615138565b6145c690600a615c8b565b826060015183608001516145da9190615748565b6145e4919061575f565b60a083018190526145f5908d615aa0565b9b505b6001600160a01b03808e16600090815260128a0160209081526040808320938516808452600290940182528083205460c0870181905293835260108c019091529020546146459190615781565b60e0830181905260000361465a5750506146a3565b61466381615138565b61466e90600a615c8b565b8260e0015183608001516146829190615748565b61468c919061575f565b610100830181905261469e908b615aa0565b995050505b6146ac81615794565b9050614418565b5081156146d65760028101546146c98484615748565b6146d3919061575f565b97505b5050505050509193909250565b600080516020615df3833981519152546040516397a4b9f760e01b8152600091600080516020615dd3833981519152916001600160a01b03909116906397a4b9f7906147359087908790600401615b24565b602060405180830381865afa158015614752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061564d565b6000818310614785578161067c565b5090919050565b60408301518351839161479e91615aa0565b146147eb5760405162461bcd60e51b815260206004820152601760248201527f564d4c3a20496e76616c696420646562742073706c69740000000000000000006044820152606401610150565b60005b8151518110156148ed578160200151818151811061480e5761480e615637565b6020026020010151846080015160200151828151811061483057614830615637565b6020026020010151856060015160200151838151811061485257614852615637565b6020026020010151866020015160200151848151811061487457614874615637565b60200260200101516148869190615aa0565b6148909190615aa0565b146148dd5760405162461bcd60e51b815260206004820152601d60248201527f564d4c3a20496e76616c696420636f6c6c61746572616c2073706c69740000006044820152606401610150565b6148e681615794565b90506147ee565b506040518281527f8e163d47f7104decb206b35d85f0aca96889146b1c1e9c9343ad769b30c306bd9060200160405180910390a1505050565b600080612b6185856151a5565b6000600080516020615db38339815191526004818101546040517f38b1696b0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811693820193909352851515602482015292935016906338b1696b90604401600060405180830381600087803b1580156149b257600080fd5b505af11580156149c6573d6000803e3d6000fd5b50505050505050565b600181116100df576040517fe4d78f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806100df576040517f7db491eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080516020615df3833981519152546040517fab0084cf00000000000000000000000000000000000000000000000000000000815260009182916060918291600080516020615dd3833981519152916001600160a01b03169063ab0084cf90614ab0908a908a90600401615b24565b600060405180830381865afa158015614acd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614af59190810190615c97565b929a91995097509095509350505050565b600080516020615db38339815191526000614b2086615138565b6001600160a01b0387166000908152600b840160205260408120549192506012831115614b6e57614b52601284615781565b614b5d90600a615c8b565b614b67908361575f565b9050614b91565b614b79836012615781565b614b8490600a615c8b565b614b8e9083615748565b90505b6000614b9d828861575f565b9050614ba98282615748565b614bb39088615781565b6001600160a01b038a166000908152601587016020908152604080832093909355600f880190522054614be7908290615aa0565b6001600160a01b038a166000908152600f870160205260409020558515614cb5576001600160a01b0389166000908152601486016020526040812054614c35670de0b6b3a76400008b615748565b614c3f9190615aa0565b90506000614c4d848361575f565b9050614c598482615748565b614c639083615781565b6001600160a01b038c166000908152601489016020908152604080832093909355600e8a0190522054614c97908290615aa0565b6001600160a01b038c166000908152600e8901602052604090205550505b6001600160a01b0389166000818152600e87016020908152604080832054600f8a018352928190205481519485529184019290925282820152517f6f63d00bdf85957664165c9e20900aabd5a17378cb5c0955ce760e48a6ae48c79181900360600190a1505050505050505050565b8060020160009054906101000a90046001600160a01b03166001600160a01b0316631d4c200e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015614d79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da19190810190615d0e565b6020860152845260005b845151811015614e6b5782600b01600086600001518381518110614dd157614dd1615637565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054600003614e5b5784602001518181518110614e1757614e17615637565b602002602001015185604001818151614e309190615aa0565b905250602085015180516000919083908110614e4e57614e4e615637565b6020026020010181815250505b614e6481615794565b9050614dab565b508351511580614e8657508360400151670de0b6b3a7640000145b15614ebc576040517e37dd3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b845151811015614fce5784602001518181518110614edf57614edf615637565b602002602001015160000315614fbe57600085600001518281518110614f0757614f07615637565b602002602001015190508560400151600014614f5757856040015186602001518381518110614f3857614f38615637565b60200260200101818151614f4c9190615aa0565b905250600060408701525b6001600160a01b0381166000908152601585016020908152604082205490880151805185908110614f8a57614f8a615637565b60200260200101518860600151614fa19190615748565b614fab9190615aa0565b9050614fbb826000836000614b06565b50505b614fc781615794565b9050614ebf565b5080546002820154604080517f8f871a6c00000000000000000000000000000000000000000000000000000000815290516001600160a01b03938416936362f6105b931691638f871a6c9160048083019260209291908290030181865afa15801561503d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150619190615d72565b866080015186608001518860a001518151811061508057615080615637565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156150f257600080fd5b505af1158015615106573d6000803e3d6000fd5b50505050600083608001518560a001518151811061512657615126615637565b60200260200101818152505050505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015615178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061519c9190615d8f565b60ff1692915050565b600080516020615df3833981519152546040517f617ddfff000000000000000000000000000000000000000000000000000000008152600091600080516020615dd3833981519152916001600160a01b039091169063617ddfff906147359087908790600401615b24565b6040518061012001604052806000815260200160008152602001615247604051806040016040528060608152602001606081525090565b81526020016000815260200160008152602001615277604051806040016040528060608152602001606081525090565b8152602001600081526020016152a0604051806040016040528060608152602001606081525090565b81526020016152c2604051806040016040528060608152602001606081525090565b905290565b604051806101400160405280600081526020016152f7604051806040016040528060608152602001606081525090565b8152602001615319604051806040016040528060608152602001606081525090565b81526020016000815260200160008152602001615349604051806040016040528060608152602001606081525090565b815260200160008152602001615372604051806040016040528060608152602001606081525090565b8152602001615394604051806040016040528060608152602001606081525090565b8152602001600081525090565b6040805160c0810190915260606080820181815260a08301919091528190815260200160008152602001615394604051806040016040528060608152602001606081525090565b6040518060a0016040528060008152602001615277604051806040016040528060608152602001606081525090565b828054828255906000526020600020908101928215615479579160200282015b82811115615479578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116178255602090920191600190910190615437565b506154859291506154c4565b5090565b828054828255906000526020600020908101928215615479579160200282015b828111156154795782518255916020019190600101906154a9565b5b8082111561548557600081556001016154c5565b6001600160a01b03811681146100df57600080fd5b80356154f9816154d9565b919050565b60006020828403121561551057600080fd5b813561067c816154d9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561555a5761555a61551b565b604052919050565b600067ffffffffffffffff82111561557c5761557c61551b565b5060051b60200190565b6000806040838503121561559957600080fd5b823567ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b803560206155d66155d183615562565b615531565b82815260059290921b830181019181810190888411156155f557600080fd5b938201935b8385101561561c57843561560d816154d9565b825293820193908201906155fa565b955061562b90508682016154ee565b93505050509250929050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561565f57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082601f83011261568d57600080fd5b8151602061569d6155d183615562565b82815260059290921b840181019181810190868411156156bc57600080fd5b8286015b848110156156d757805183529183019183016156c0565b509695505050505050565b6000806000606084860312156156f757600080fd5b8351925060208401519150604084015167ffffffffffffffff81111561571c57600080fd5b6157288682870161567c565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761052057610520615732565b60008261577c57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052057610520615732565b6000600182016157a6576157a6615732565b5060010190565b600081518084526020808501945080840160005b838110156157e65781516001600160a01b0316875295820195908201906001016157c1565b509495945050505050565b600081518084526020808501945080840160005b838110156157e657815187529582019590820190600101615805565b83815260606020820152600061583a60608301856157ad565b828103604084015261584c81856157f1565b9695505050505050565b6001600160a01b038416815260606020820152600061583a60608301856157ad565b805160408084528151908401819052600091602091908201906060860190845b818110156158bd5783516001600160a01b031683529284019291840191600101615898565b50508483015186820387850152805180835290840192506000918401905b808310156156d757835182529284019260019290920191908401906158db565b6001600160a01b038416815260606020820152600061591d6060830185615878565b828103604084015261584c8185615878565b600082601f83011261594057600080fd5b815160206159506155d183615562565b82815260059290921b8401810191818101908684111561596f57600080fd5b8286015b848110156156d7578051615986816154d9565b8352918301918301615973565b6000602082840312156159a557600080fd5b815167ffffffffffffffff808211156159bd57600080fd5b90830190604082860312156159d157600080fd5b6040516040810181811083821117156159ec576159ec61551b565b6040528251828111156159fe57600080fd5b615a0a8782860161592f565b825250602083015182811115615a1f57600080fd5b615a2b8782860161567c565b60208301525095945050505050565b86815285602082015260c060408201526000615a5960c08301876157ad565b8281036060840152615a6b81876157f1565b90508281036080840152615a7f81866157ad565b905082810360a0840152615a9381856157f1565b9998505050505050505050565b8082018082111561052057610520615732565b60048110615ad157634e487b7160e01b600052602160045260246000fd5b9052565b8281526040810161067c6020830184615ab3565b848152608060208201526000615b0260808301866157ad565b8281036040840152615b1481866157f1565b915050612b6d6060830184615ab3565b604081526000615b3760408301856157ad565b8281036020840152612b6d81856157f1565b60208152600061067c60208301846157ad565b600060208284031215615b6e57600080fd5b815167ffffffffffffffff811115615b8557600080fd5b6119d28482850161567c565b634e487b7160e01b600052603160045260246000fd5b600181815b80851115615be2578160001904821115615bc857615bc8615732565b80851615615bd557918102915b93841c9390800290615bac565b509250929050565b600082615bf957506001610520565b81615c0657506000610520565b8160018114615c1c5760028114615c2657615c42565b6001915050610520565b60ff841115615c3757615c37615732565b50506001821b610520565b5060208310610133831016604e8410600b8410161715615c65575081810a610520565b615c6f8383615ba7565b8060001904821115615c8357615c83615732565b029392505050565b600061067c8383615bea565b60008060008060808587031215615cad57600080fd5b8451935060208501519250604085015167ffffffffffffffff80821115615cd357600080fd5b615cdf8883890161567c565b93506060870151915080821115615cf557600080fd5b50615d028782880161567c565b91505092959194509250565b60008060408385031215615d2157600080fd5b825167ffffffffffffffff80821115615d3957600080fd5b615d458683870161592f565b93506020850151915080821115615d5b57600080fd5b50615d688582860161567c565b9150509250929050565b600060208284031215615d8457600080fd5b815161067c816154d9565b600060208284031215615da157600080fd5b815160ff8116811461067c57600080fdfe7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda300a36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e00a36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e02a2646970667358221220556ebd1c75ad7c34d41aaea32d6ab309cbb429fd5d757fd93c1b515a238b326f64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632f8655681461003b5780639f8dac2014610050575b600080fd5b61004e6100493660046154fe565b610063565b005b61004e61005e366004615586565b6100e2565b61006b610102565b61007481610160565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106100aa576100aa615637565b60200260200101906001600160a01b031690816001600160a01b0316815250506100d4813361019f565b506100df6001600555565b50565b6100ea610102565b6100f4828261019f565b6100fe6001600555565b5050565b6002600554036101595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600555565b61016981610425565b6100df576040517f1103b9d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036101f05760405162461bcd60e51b815260206004820152601060248201527f564d4c3a20417272617920656d707479000000000000000000000000000000006044820152606401610150565b7f3e95614a6b53f6210c4f6e8cb87d40d58886cd31920f0811ad8d348030481400600080516020615dd3833981519152600061022c858561048f565b9050610236615210565b8354604080517fec6987de00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163ec6987de916004808201926020929091908290030181865afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061564d565b82526102c6610526565b60808601819052606086018390529215156020860152506000916102ea919061064c565b90507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb672183602001518260405161032c9291909115158252602082015260400190565b60405180910390a182602001511561034e5761034783610683565b915061035a565b61035783610ac8565b91505b81602001516000036103ae5760405162461bcd60e51b815260206004820152601960248201527f564d4c3a206e6f7468696e6720746f206c6971756964617465000000000000006044820152606401610150565b6103ba82848787610dc0565b60008060006103c7610526565b9350509250925060006103da838361064c565b604080518615158152602081018390529192507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb6721910160405180910390a15050505050505050505050565b6001600160a01b03811660009081527f7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda3096020526040812060040154600080516020615db38339815191529060019060ff16600581111561048757610487615666565b149392505050565b6104da6040518060e00160405280600081526020016000151581526020016000815260200160008152602001600081526020016060815260200160006001600160a01b031681525090565b6040518060e0016040528060008152602001600015158152602001600081526020016000815260200160008152602001848152602001836001600160a01b031681525090505b92915050565b600080808080600080516020615dd383398151915280546040805163896a008960e01b815290519293506001600160a01b039091169163896a0089916004808201926000929091908290030181865afa158015610587573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105af91908101906156e2565b5090945092506105bd6110fc565b91508060020160009054906101000a90046001600160a01b03166001600160a01b0316635733d58f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610638919061564d565b610642848461064c565b1094505090919293565b60008160000361065f5750600019610520565b8161067284670de0b6b3a7640000615748565b61067c919061575f565b9392505050565b61068b615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905285518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e919061564d565b90505b8460a001515182602001511015610aa5578460a0015182602001518151811061076c5761076c615637565b60209081029190910101516001600160a01b03166060830181905261079090610425565b6108015781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc46040516107f49060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2610a8f565b61080e8260600151611219565b60408301819052811180159061082357508151155b156108955781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc46040516107f4906020808252601b908201527f4943522061626f7665204d4352207769746820656d7074792053500000000000604082015260600190565b84602001516108d357600160808301526040517f10834f689e801ab2dec6d31a1b5b41a107fae4517af90c01925705b33b2ee02090600090a1610aa5565b60006108e78660600151876080015161064c565b90507fd7e021f916ad3d129691f59c81e6be6ab0df4c02cb6811e6487f3f9e4adb67218660200151826040516109299291909115158252602082015260400190565b60405180910390a182606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066001604051610973911515815260200190565b60405180910390a2600061099584606001518560400151848760000151611239565b90506109a186826119da565b608082015185519197506109b491615781565b845260a08101516000906109c790611cda565b905060006109d88360400151611cda565b905060006109ea846101000151611cda565b608085015190915015610a3657608084015160408051918252602082018590527f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a15b8082848c60600151610a489190615781565b610a529190615781565b610a5c9190615781565b60608b0152608080850151908b0151610a759190615781565b60808b0152610a82611d72565b151560208b015250505050505b816020018051610a9e90615794565b9052610741565b816080015115610ac057610abd858360200151611e28565b93505b505050919050565b610ad0615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905285518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b83919061564d565b90505b8460a001515182602001511015610ac0578460a00151826020015181518110610bb157610bb1615637565b60209081029190910101516001600160a01b031660608301819052610bd590610425565b610c465781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051610c399060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2610daa565b610c538260600151611219565b604083018190528111610ccd5781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051610c39906020808252600d908201527f4943522061626f7665204d435200000000000000000000000000000000000000604082015260600190565b81606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066000604051610d0f911515815260200190565b60405180910390a26000610d2b83606001518460000151612130565b9050610d3785826119da565b60808201518451919650610d4a91615781565b8352608081015115610da8576000610d658260a00151611cda565b608083015160408051918252602082018390529192507f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a1505b505b816020018051610db990615794565b9052610b86565b8154608085015160a086015180516020909101516040517f768cc575000000000000000000000000000000000000000000000000000000008152600080516020615db3833981519152946001600160a01b03169363768cc57593610e2b939192909190600401615821565b600060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b50508354600185015460c089015160e08a01518051602090910151610e9296506001600160a01b0394851695509290931692909161251f565b610ea08561010001516125ea565b15610f1d5781546002820154610100870151805160209091015160405163d0d8c20d60e01b81526001600160a01b039485169463d0d8c20d94610eea949116929091600401615856565b600060405180830381600087803b158015610f0457600080fd5b505af1158015610f18573d6000803e3d6000fd5b505050505b815460408601518051602090910151610f40926001600160a01b0316919061263f565b600282015460a086015160e0870151604051635799186760e01b815260009373__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793610f93936001600160a01b03909316926004016158fb565b600060405180830381865af4158015610fb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd89190810190615993565b6002840154610100880151604051635799186760e01b815292935073__$dd008e7fdb676c23adfd59cbc2bd3a4768$__9263579918679261102a926001600160a01b03909116918691906004016158fb565b600060405180830381865af4158015611047573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261106f9190810190615993565b60208088015160608901518351838501516040808d0151805196015190519697507ff9c8e708c82ad9ab70e0c58ca02ae4dceef6c9546eacbeb0b7ac025be81c460a966110bd969190615a3a565b60405180910390a1825460c08601516060880151604089015180516020909101516110f4946001600160a01b0316939291906127dc565b505050505050565b7fa36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e0154604080516381b7f1bf60e01b81529051600092600080516020615dd3833981519152926001600160a01b03909116916381b7f1bf916004808201926020929091908290030181865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c919061564d565b8154604080516381b7f1bf60e01b815290516001600160a01b03909216916381b7f1bf916004808201926020929091908290030181865afa1580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061564d565b6112139190615aa0565b91505090565b60008060008061122885612953565b925092509250610abd838383612b54565b6112416152c7565b600080516020615dd38339815191526112586153a1565b600080516020615db383398151915261127088612b76565b6020808c015160408b015160608c01939093528282019390935292905287820192835290810192909252919052908552511515806112b2575060008260600151115b156112ec576040516001600160a01b038916907f76533ee8ed027769dd3544ad995c3bfa64ad126575f2fcb8058a29fceaab2c1e90600090a25b6112f98460200151612dae565b60408086019190915260028401548151637d92c3bb60e01b815291516001600160a01b0390911691637d92c3bb9160048083019260209291908290030181865afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136f919061564d565b6060850152602084015151825152815151518067ffffffffffffffff81111561139a5761139a61551b565b6040519080825280602002602001820160405280156113c3578160200160208202803683370190505b5083516020015260005b818110156114565785604001516020015181815181106113ef576113ef615637565b6020026020010151866020015160200151828151811061141157611411615637565b60200260200101516114239190615781565b84516020015180518390811061143b5761143b615637565b602090810291909101015261144f81615794565b90506113cd565b506000611467878760000151612ea6565b9050670de0b6b3a764000080821015908a116115b6576000608088015284515160a0880151528267ffffffffffffffff8111156114a6576114a661551b565b6040519080825280602002602001820160405280156114cf578160200160208202803683370190505b5060a088015160200152865160c0880152845160e0880152845151610100880151528267ffffffffffffffff81111561150a5761150a61551b565b604051908082528060200260200182016040528015611533578160200160208202803683370190505b50610100880151602001526040516001600160a01b038c16907f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e906115a99060208082526013908201527f46756c6c205265646973747269627574696f6e00000000000000000000000000604082015260600190565b60405180910390a2611824565b8560020160009054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f919061564d565b8a10156116f25786518551600091611647918b612ecb565b905061165381896132ee565b97508b6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e6040516116e49060208082526021908201527f5061727469616c204f666673657420616e64205265646973747269627574696f60408201527f6e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a250611824565b886116fc8c61332d565b1080156117065750805b1561179d57865185518051602091820151828b015183015160408c01519093015161173294939061334d565b96508a6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e6040516115a99060208082526013908201527f46756c6c204f6666736574207769746820535000000000000000000000000000604082015260600190565b8a6001600160a01b03167f3e34312917632f47156da71e610937ba1cbd31b0ce59c23109aeecd532ff1f7e604051611806906020808252601d908201527f536b6970706564202d204943522061626f7665207468726573686f6c64000000604082015260600190565b60405180910390a26118166152c7565b96506119d295505050505050565b60208086015160608701516040880151805193015161184493908f613698565b61184f8b6003613802565b61185d8761010001516125ea565b15611922578360020160009054906101000a90046001600160a01b03166001600160a01b0316639efc9e208c896101000151600001518a6101000151602001516040518463ffffffff1660e01b81526004016118bb93929190615856565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b50506040516001600160a01b038e1692507ff3fd50e62877ddca5a4259760717800c963dd8e4919da9fcb7cc7af6011d87409150600090a25b8a6001600160a01b03167f5a15518ffcc030411a834e039914b3027a1310f22bf6c0c421edb07f05f7a2c388600001516002604051611962929190615ad5565b60405180910390a2604080518082018252606080825260208201819052915190916001600160a01b038e16917fe271bc17472b20d803bff415104ad56a96ce7671d274aacd82ecb65616868a83916119c291600091908190600290615ae9565b60405180910390a2505050505050505b949350505050565b6119e2615210565b600080516020615df383398151915254604084810151848201519151635799186760e01b8152600080516020615dd38339815191529373__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611a4f936001600160a01b03909316929091906004016158fb565b600060405180830381865af4158015611a6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a949190810190615993565b604083015260608084015190850151611aad9190615aa0565b606083015282516020850151611ac39190615aa0565b602083015260808084015190850151611adc9190615aa0565b6080830152600281015460a08086015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611b34936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611b51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b799190810190615993565b60a083015260c08084015190850151611b929190615aa0565b60c0830152600281015460e08086015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611bea936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c2f9190810190615993565b60e083015260028101546101008581015190850151604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__93635799186793611c88936001600160a01b03909216929091906004016158fb565b600060405180830381865af4158015611ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ccd9190810190615993565b6101008301525092915050565b600080516020615df383398151915254815160208301516040516397a4b9f760e01b8152600093600080516020615dd3833981519152936001600160a01b03909116926397a4b9f792611d31929190600401615b24565b602060405180830381865afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067c919061564d565b600080516020615df383398151915254604080517f5733d58f0000000000000000000000000000000000000000000000000000000081529051600092600080516020615dd3833981519152926001600160a01b0390911691635733d58f916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061564d565b611e21613c5e565b1091505090565b611e30615210565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905286518352600080516020615df3833981519152548451631e5395c960e21b81529451600080516020615dd3833981519152956001600160a01b039092169263794e572492600480820193918290030181865afa158015611ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee3919061564d565b6020830186905290505b8560a001515182602001511015612127578560a00151826020015181518110611f1857611f18615637565b60209081029190910101516001600160a01b031660608301819052611f3c90610425565b611fad5781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051611fa09060208082526010908201526f5661756c74206e6f742061637469766560801b604082015260600190565b60405180910390a2612111565b611fba8260600151611219565b6040830181905281116120345781606001516001600160a01b03167fe47cb20f508f04783ce22e4bd1c708ccb70bd5fc6e04559bbde743486611ebc4604051611fa0906020808252601c908201527f4943522061626f7665204d4352206166746572207265636f7665727900000000604082015260600190565b81606001516001600160a01b03167fa8f311c8a8a41748589098a2967dccc861a3b8989408681efe56065fb2c79b066000604051612076911515815260200190565b60405180910390a2600061209283606001518460000151612130565b905061209e85826119da565b608082015184519196506120b191615781565b835260808101511561210f5760006120cc8260a00151611cda565b608083015160408051918252602082018390529192507f710b4216fa505e4a77d683ea384d2cc7c64e89c24a3a86f693f6e595a3713f2b910160405180910390a1505b505b81602001805161212090615794565b9052611eed565b50505092915050565b6121386152c7565b600080516020615dd383398151915261214f6153a1565b600080516020615db383398151915261216786612b76565b6020808c015160408b015160608c01939093528282019390935292905287820192835290810192909252919052908552511515806121a9575060008260600151115b156121e3576040516001600160a01b038716907f76533ee8ed027769dd3544ad995c3bfa64ad126575f2fcb8058a29fceaab2c1e90600090a25b60208083015160608401516040850151805193015161220393908a613698565b6122108460200151612dae565b60408086019190915260028401548151637d92c3bb60e01b815291516001600160a01b0390911691637d92c3bb9160048083019260209291908290030181865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612286919061564d565b6060850152602084015151825152815151518067ffffffffffffffff8111156122b1576122b161551b565b6040519080825280602002602001820160405280156122da578160200160208202803683370190505b5083516020015260005b8181101561236d57856040015160200151818151811061230657612306615637565b6020026020010151866020015160200151828151811061232857612328615637565b602002602001015161233a9190615781565b84516020015180518390811061235257612352615637565b602090810291909101015261236681615794565b90506122e4565b508451835160009161237f9189612ecb565b905061238b81876132ee565b9550612398886003613802565b6123a68661010001516125ea565b1561246b57600283015461010087015180516020909101516040517f9efc9e200000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692639efc9e2092612404928d92600401615856565b600060405180830381600087803b15801561241e57600080fd5b505af1158015612432573d6000803e3d6000fd5b50506040516001600160a01b038b1692507ff3fd50e62877ddca5a4259760717800c963dd8e4919da9fcb7cc7af6011d87409150600090a25b876001600160a01b03167f5a15518ffcc030411a834e039914b3027a1310f22bf6c0c421edb07f05f7a2c3876000015160016040516124ab929190615ad5565b60405180910390a2604080518082018252606080825260208201819052915190916001600160a01b038b16917fe271bc17472b20d803bff415104ad56a96ce7671d274aacd82ecb65616868a839161250b91600091908190600190615ae9565b60405180910390a250505050505092915050565b6000604051806101000160405280876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381526020018451815260200160008152602001600067ffffffffffffffff8111156125855761258561551b565b6040519080825280602002602001820160405280156125ae578160200160208202803683370190505b50815250905080604001516000036125c657506125e3565b6125cf81613cff565b90506125da81613d8f565b6110f481613f17565b5050505050565b6000805b825151811015612636578260200151818151811061260e5761260e615637565b60200260200101516000146126265750600192915050565b61262f81615794565b90506125ee565b50600092915050565b6040517f3824174c000000000000000000000000000000000000000000000000000000008152600080516020615db3833981519152906000906001600160a01b03861690633824174c90612697908790600401615b49565b600060405180830381865afa1580156126b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126dc9190810190615b5c565b905060005b84518110156127a15760008582815181106126fe576126fe615637565b6020908102919091018101516001600160a01b0381166000908152600b87018352604080822054600c8901909452902091909155855190915085908390811061274957612749615637565b602002602001015183838151811061276357612763615637565b60200260200101516127759190615781565b6001600160a01b039091166000908152600d8501602052604090205561279a81615794565b90506126e1565b506040514281527f523f4c1c183d46bec16040588c9c0aee1cbce44d14a4499539c18ef5761b6c3d9060200160405180910390a15050505050565b604051838152600080516020615db3833981519152906001600160a01b038616907f4ec7caa4d503f452bb5be16cbf24eb836adb1709971c2792ebee8bd349e9eefa9060200160405180910390a283156128bb57805460038201546040517f20c582be0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201528782166024820152604481018790529116906320c582be90606401600060405180830381600087803b1580156128a257600080fd5b505af11580156128b6573d6000803e3d6000fd5b505050505b8251158015906128cb5750815115155b156110f4576040517f564a5c2e0000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063564a5c2e9061291990889087908790600401615856565b600060405180830381600087803b15801561293357600080fd5b505af1158015612947573d6000803e3d6000fd5b50505050505050505050565b6060806000600080516020615db38339815191528161297186614051565b90506000806000612981896142c4565b6001600160a01b038c16600090815260098901602090815260409182902082518084018452606080825281840152815484518185028101850190955280855296995094975092955091939091849190830182828015612a0957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129eb575b505050918352505060018201805460408051602080840282018101909252828152929190830182828015612a5c57602002820191906000526020600020905b815481526020019060010190808311612a48575b50505050506020820152600080516020615df383398151915254604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__91635799186791612ab9916001600160a01b03169085908b906004016158fb565b600060405180830381865af4158015612ad6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612afe9190810190615993565b905083858360020154612b119190615aa0565b612b1b9190615aa0565b9750828811612b2b576000612b35565b612b358389615781565b97508060000151816020015199509950505050505050505b9193909250565b600080612b6185856146e3565b9050612b6d818461064c565b95945050505050565b60006060808281808280600080516020615db38339815191526001600160a01b038a1660008181526009830160208181526040808420600281015482518084018452606080825281860152969095529282528254815181840281018401909252808252959650929490830182828015612c1857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612bfa575b50505091835250506001600160a01b038b16600090815260098401602090815260409182902060010180548351818402810184019094528084529091830182828015612c8357602002820191906000526020600020905b815481526020019060010190808311612c6f575b505050505081602001819052506000806000612c9e8e6142c4565b9250925092506000612caf8f614051565b905082612cbc8588615aa0565b612cc69190615aa0565b955081861115612ce157612cda8287615781565b9550612ce6565b600095505b600080516020615df383398151915254604051635799186760e01b815273__$dd008e7fdb676c23adfd59cbc2bd3a4768$__91635799186791612d39916001600160a01b031690899086906004016158fb565b600060405180830381865af4158015612d56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d7e9190810190615993565b805160209182015183519390920151979f509d509b50929950919750929550919350505050919395979092949650565b6040805180820190915260608082526020820152815180519082528067ffffffffffffffff811115612de257612de261551b565b604051908082528060200260200182016040528015612e0b578160200160208202803683370190505b50602083015260005b81811015612e9f5783602001518181518110612e3257612e32615637565b602002602001015160000315612e8f5760c884602001518281518110612e5a57612e5a615637565b6020026020010151612e6c919061575f565b83602001518281518110612e8257612e82615637565b6020026020010181815250505b612e9881615794565b9050612e14565b5050919050565b600081600003612eb857506000610520565b81610672670de0b6b3a764000085615748565b612ed36153e8565b82518051602083015191909152600080516020615dd3833981519152908067ffffffffffffffff811115612f0957612f0961551b565b604051908082528060200260200182016040528015612f32578160200160208202803683370190505b50602080850151015284516060840151528067ffffffffffffffff811115612f5c57612f5c61551b565b604051908082528060200260200182016040528015612f85578160200160208202803683370190505b5060608401516020015284516080840151528067ffffffffffffffff811115612fb057612fb061551b565b604051908082528060200260200182016040528015612fd9578160200160208202803683370190505b50608084015160200152600084900361300557505060008152606081018390526040810184905261067c565b61300f8685614776565b80845261301c9087615781565b6040840152600061302c86611cda565b905060008785600001516b033b2e3c9fd0803ce800000061304d9190615748565b613057919061575f565b90506000828560020160009054906101000a90046001600160a01b03166001600160a01b031663794e57246040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d5919061564d565b87516130e590633b9aca00615748565b6130ef9190615748565b6130f9919061575f565b90506131058282614776565b905060006131138284615781565b905060005b858110156132d55760008a60200151828151811061313857613138615637565b602002602001015190508060000361315057506132c5565b60006b033b2e3c9fd0803ce80000006131698684615748565b613173919061575f565b905060006b033b2e3c9fd0803ce800000061318e8685615748565b613198919061575f565b90506000816131a78486615781565b6131b19190615781565b9050828c602001516020015186815181106131ce576131ce615637565b602002602001018181525050808c606001516020015186815181106131f5576131f5615637565b602002602001018181525050818c6080015160200151868151811061321c5761321c615637565b60200260200101818152505060008311806132375750600081115b806132425750600082115b156132c0578d5180518690811061325b5761325b615637565b60200260200101516001600160a01b03167f3e83a24e0824c153e2e0fd8e66d0b76a37b49fc6e87ce6290a62287ac96521e5858584866040516132b7949392919093845260208401929092526040830152606082015260800190565b60405180910390a25b505050505b6132ce81615794565b9050613118565b506132e1878b8b61478c565b5050505050509392505050565b6132f66152c7565b508151608082810191909152602083015160a0830152604083015160c0830152606083015160e08301529091015161010082015290565b60008060008061333c85612953565b925092509250610abd838383614926565b6133556152c7565b600080516020615df38339815191525460408051631e5395c960e21b81529051600080516020615dd3833981519152926000928a926001600160a01b039092169163794e5724916004808201926020929091908290030181865afa1580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e5919061564d565b6133ef9190615748565b9050600061341060405180604001604052808a815260200189815250611cda565b90506000613426670de0b6b3a764000083615748565b61343c6b033b2e3c9fd0803ce800000085615748565b613446919061575f565b905061345e816b033b2e3c9fd0803ce8000000614776565b8a8652602080870180518c9052518101899052600286015460408051637d92c3bb60e01b815290519394506001600160a01b0390911692637d92c3bb926004808401939192918290030181865afa1580156134bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e1919061564d565b6060860152608085018a9052600060c086015260a085015189905288518067ffffffffffffffff8111156135175761351761551b565b604051908082528060200260200182016040528015613540578160200160208202803683370190505b5060a0870151602001526101008601518a90528067ffffffffffffffff81111561356c5761356c61551b565b604051908082528060200260200182016040528015613595578160200160208202803683370190505b506101008701516020908101919091526040870180518c9052510187905260005b818110156136895760006b033b2e3c9fd0803ce80000008b83815181106135df576135df615637565b6020026020010151856135f29190615748565b6135fc919061575f565b90506000818c848151811061361357613613615637565b60200260200101516136259190615781565b9050818960a0015160200151848151811061364257613642615637565b6020026020010181815250508089610100015160200151848151811061366a5761366a615637565b60200260200101818152505050508061368290615794565b90506135b6565b50505050505095945050505050565b604080516001600160a01b0383168152602081018690528151600080516020615dd3833981519152927f11883dbbc997d02c733f213f8862794f7634669925e006376cee371143442ca1928290030190a16001810154604051632a7ba1f760e01b8152600481018890526001600160a01b0390911690632a7ba1f790602401600060405180830381600087803b15801561373157600080fd5b505af1158015613745573d6000803e3d6000fd5b505082546001600160a01b03169150632b7c7b1190506137658789615aa0565b6040518263ffffffff1660e01b815260040161378391815260200190565b600060405180830381600087803b15801561379d57600080fd5b505af11580156137b1573d6000803e3d6000fd5b50505060018201546040517f116426ae0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116915063116426ae906129199087908790600401615b24565b600080516020615db383398151915261381c836000614933565b6001600160a01b0383166000908152600982016020908152604080832080546012860184528285206013870190945291842090939192915b8381101561394957600085828154811061387057613870615637565b60009182526020808320909101546001600160a01b039081168084528783526040808520859055600189018452808520859055600289018452808520859055918d16845260098b018352818420818552600301835281842054600b8c01909352922054919250906138e2908290615781565b6001600160a01b039283166000818152600b8b016020908152604080832094909455948d16815260098b01855282812091815260039091018452818120819055858452818120819055600186019093528220919091555061394281615794565b9050613854565b506000600282015560408051808201909152606080825260208201526001600160a01b03881660009081526009870160205260409020600401805488919060ff1916600183600581111561399f5761399f615666565b021790555080516001600160a01b0389166000908152600988016020908152604090912082516139d493919290910190615417565b506020808201516001600160a01b038a166000908152600989018352604090208151613a099360019092019290910190615489565b506001600160a01b0388166000908152600987016020526040812060020155600a860154613a36816149cf565b6001600160a01b038916600090815260098801602052604081206004015461010090046fffffffffffffffffffffffffffffffff1690600a8901613a7b600185615781565b81548110613a8b57613a8b615637565b600091825260209091200154600a8a0180546001600160a01b03909216925082916fffffffffffffffffffffffffffffffff8516908110613ace57613ace615637565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905591831680825260098c01835260409182902060040180547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8816908102919091179091558251918252928101929092527f5108b30b1c08360822e1bfe7a4169b885b0a62765e9d04592cac9933f3879e46910160405180910390a188600a01805480613ba657613ba6615b91565b6000828152602090206000199082018101805473ffffffffffffffffffffffffffffffffffffffff191690550190556004898101546040517f29092d0e0000000000000000000000000000000000000000000000000000000081526001600160a01b038e8116938201939093529116906329092d0e90602401600060405180830381600087803b158015613c3957600080fd5b505af1158015613c4d573d6000803e3d6000fd5b505050505050505050505050505050565b600080516020615dd383398151915280546040805163896a008960e01b815290516000939284926001600160a01b039091169163896a00899160048082019286929091908290030181865afa158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ce391908101906156e2565b50915050613cf881613cf36110fc565b61064c565b9250505090565b613d5960405180610100016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016000815260200160008152602001606081525090565b613d6d8260800151518360a0015114614a09565b613d7f82606001518360800151614a40565b5060e08501525060c08301525090565b600080516020615db3833981519152600080516020615dd383398151915260005b8360a00151811015613f1157600084606001518281518110613dd457613dd4615637565b6020026020010151905060008560c0015186604001518760e001518581518110613e0057613e00615637565b6020026020010151613e129190615748565b613e1c919061575f565b6001600160a01b038316600090815260158701602052604081205491925090613e4d670de0b6b3a764000084615748565b613e579190615aa0565b6001600160a01b0384166000908152600b8801602052604090205490915015613ea957613ea48388608001518681518110613e9457613e94615637565b6020026020010151836001614b06565b613efd565b60408051600060c0820181815260e083018452825282518181526020808201855283015291810191909152606081018390526001600160a01b038416608082015260a08101859052613efd90888888614d24565b50505080613f0a90615794565b9050613db0565b50505050565b80516040808301519051632a7ba1f760e01b81526001600160a01b0390921691632a7ba1f791613f4d9160040190815260200190565b600060405180830381600087803b158015613f6757600080fd5b505af1158015613f7b573d6000803e3d6000fd5b5050505080602001516001600160a01b0316632b7c7b1182604001516040518263ffffffff1660e01b8152600401613fb591815260200190565b600060405180830381600087803b158015613fcf57600080fd5b505af1158015613fe3573d6000803e3d6000fd5b5050825160208401516060850151608086015160405163d0d8c20d60e01b81526001600160a01b03909416955063d0d8c20d945061402393600401615856565b600060405180830381600087803b15801561403d57600080fd5b505af11580156125e3573d6000803e3d6000fd5b60408051808201909152606080825260208201526000600080516020615db3833981519152905060016001600160a01b038416600090815260098301602052604090206004015460ff1660058111156140ac576140ac615666565b146140cc5760408051808201909152606080825260208201529392505050565b6001600160a01b038316600090815260098201602090815260408083208054825181850281018501909352808352919290919083018282801561413857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161411a575b50508351939450839250505067ffffffffffffffff81111561415c5761415c61551b565b604051908082528060200260200182016040528015614185578160200160208202803683370190505b50602085015281845260005b818110156142bb5760008382815181106141ad576141ad615637565b6020908102919091018101516001600160a01b03808a1660009081526012890184526040808220928416825291845281812054600e8a0190945290812054919350906141fa908390615781565b9050806000036142305760008860200151858151811061421c5761421c615637565b6020026020010181815250505050506142ab565b61423983615138565b61424490600a615c8b565b6001600160a01b03808b16600090815260098a0160209081526040808320938816835260039093019052205461427b908390615748565b614285919061575f565b8860200151858151811061429b5761429b615637565b6020026020010181815250505050505b6142b481615794565b9050614191565b50505050919050565b6001600160a01b03811660009081527f7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda309602052604081206004015481908190600080516020615dd383398151915290600080516020615db38339815191529060019060ff16600581111561433a5761433a615666565b146143515760008060009450945094505050612b4d565b6001600160a01b038087166000908152600983016020908152604080832060028701548251637d92c3bb60e01b8152925191951692637d92c3bb92600480820193918290030181865afa1580156143ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d0919061564d565b6001600160a01b03891660009081526009850160205260409020600201546143f89190615781565b6001600160a01b0389166000908152601385016020526040812091925090815b84548110156146b3576144706040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600086838154811061448457614484615637565b60009182526020808320909101546001600160a01b031680835286825260408084205480875282855260118d01909352909220549192506144c491615781565b60208301819052158015906144d95750815115155b156145285781516020808401516001600160a01b038416600090815260018801909252604082205491929161450e9190615748565b614518919061575f565b90506145248187615aa0565b9550505b6001600160a01b03808e16600090815260128a01602090815260408083209385168084526001909401825280832054868201819052938352600f8c019091529020546145749190615781565b606083019081526001600160a01b03808f16600090815260098b01602090815260408083209386168352600390930190522054608084015251156145f8576145bb81615138565b6145c690600a615c8b565b826060015183608001516145da9190615748565b6145e4919061575f565b60a083018190526145f5908d615aa0565b9b505b6001600160a01b03808e16600090815260128a0160209081526040808320938516808452600290940182528083205460c0870181905293835260108c019091529020546146459190615781565b60e0830181905260000361465a5750506146a3565b61466381615138565b61466e90600a615c8b565b8260e0015183608001516146829190615748565b61468c919061575f565b610100830181905261469e908b615aa0565b995050505b6146ac81615794565b9050614418565b5081156146d65760028101546146c98484615748565b6146d3919061575f565b97505b5050505050509193909250565b600080516020615df3833981519152546040516397a4b9f760e01b8152600091600080516020615dd3833981519152916001600160a01b03909116906397a4b9f7906147359087908790600401615b24565b602060405180830381865afa158015614752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061564d565b6000818310614785578161067c565b5090919050565b60408301518351839161479e91615aa0565b146147eb5760405162461bcd60e51b815260206004820152601760248201527f564d4c3a20496e76616c696420646562742073706c69740000000000000000006044820152606401610150565b60005b8151518110156148ed578160200151818151811061480e5761480e615637565b6020026020010151846080015160200151828151811061483057614830615637565b6020026020010151856060015160200151838151811061485257614852615637565b6020026020010151866020015160200151848151811061487457614874615637565b60200260200101516148869190615aa0565b6148909190615aa0565b146148dd5760405162461bcd60e51b815260206004820152601d60248201527f564d4c3a20496e76616c696420636f6c6c61746572616c2073706c69740000006044820152606401610150565b6148e681615794565b90506147ee565b506040518281527f8e163d47f7104decb206b35d85f0aca96889146b1c1e9c9343ad769b30c306bd9060200160405180910390a1505050565b600080612b6185856151a5565b6000600080516020615db38339815191526004818101546040517f38b1696b0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811693820193909352851515602482015292935016906338b1696b90604401600060405180830381600087803b1580156149b257600080fd5b505af11580156149c6573d6000803e3d6000fd5b50505050505050565b600181116100df576040517fe4d78f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806100df576040517f7db491eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080516020615df3833981519152546040517fab0084cf00000000000000000000000000000000000000000000000000000000815260009182916060918291600080516020615dd3833981519152916001600160a01b03169063ab0084cf90614ab0908a908a90600401615b24565b600060405180830381865afa158015614acd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614af59190810190615c97565b929a91995097509095509350505050565b600080516020615db38339815191526000614b2086615138565b6001600160a01b0387166000908152600b840160205260408120549192506012831115614b6e57614b52601284615781565b614b5d90600a615c8b565b614b67908361575f565b9050614b91565b614b79836012615781565b614b8490600a615c8b565b614b8e9083615748565b90505b6000614b9d828861575f565b9050614ba98282615748565b614bb39088615781565b6001600160a01b038a166000908152601587016020908152604080832093909355600f880190522054614be7908290615aa0565b6001600160a01b038a166000908152600f870160205260409020558515614cb5576001600160a01b0389166000908152601486016020526040812054614c35670de0b6b3a76400008b615748565b614c3f9190615aa0565b90506000614c4d848361575f565b9050614c598482615748565b614c639083615781565b6001600160a01b038c166000908152601489016020908152604080832093909355600e8a0190522054614c97908290615aa0565b6001600160a01b038c166000908152600e8901602052604090205550505b6001600160a01b0389166000818152600e87016020908152604080832054600f8a018352928190205481519485529184019290925282820152517f6f63d00bdf85957664165c9e20900aabd5a17378cb5c0955ce760e48a6ae48c79181900360600190a1505050505050505050565b8060020160009054906101000a90046001600160a01b03166001600160a01b0316631d4c200e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015614d79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da19190810190615d0e565b6020860152845260005b845151811015614e6b5782600b01600086600001518381518110614dd157614dd1615637565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054600003614e5b5784602001518181518110614e1757614e17615637565b602002602001015185604001818151614e309190615aa0565b905250602085015180516000919083908110614e4e57614e4e615637565b6020026020010181815250505b614e6481615794565b9050614dab565b508351511580614e8657508360400151670de0b6b3a7640000145b15614ebc576040517e37dd3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b845151811015614fce5784602001518181518110614edf57614edf615637565b602002602001015160000315614fbe57600085600001518281518110614f0757614f07615637565b602002602001015190508560400151600014614f5757856040015186602001518381518110614f3857614f38615637565b60200260200101818151614f4c9190615aa0565b905250600060408701525b6001600160a01b0381166000908152601585016020908152604082205490880151805185908110614f8a57614f8a615637565b60200260200101518860600151614fa19190615748565b614fab9190615aa0565b9050614fbb826000836000614b06565b50505b614fc781615794565b9050614ebf565b5080546002820154604080517f8f871a6c00000000000000000000000000000000000000000000000000000000815290516001600160a01b03938416936362f6105b931691638f871a6c9160048083019260209291908290030181865afa15801561503d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150619190615d72565b866080015186608001518860a001518151811061508057615080615637565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156150f257600080fd5b505af1158015615106573d6000803e3d6000fd5b50505050600083608001518560a001518151811061512657615126615637565b60200260200101818152505050505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015615178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061519c9190615d8f565b60ff1692915050565b600080516020615df3833981519152546040517f617ddfff000000000000000000000000000000000000000000000000000000008152600091600080516020615dd3833981519152916001600160a01b039091169063617ddfff906147359087908790600401615b24565b6040518061012001604052806000815260200160008152602001615247604051806040016040528060608152602001606081525090565b81526020016000815260200160008152602001615277604051806040016040528060608152602001606081525090565b8152602001600081526020016152a0604051806040016040528060608152602001606081525090565b81526020016152c2604051806040016040528060608152602001606081525090565b905290565b604051806101400160405280600081526020016152f7604051806040016040528060608152602001606081525090565b8152602001615319604051806040016040528060608152602001606081525090565b81526020016000815260200160008152602001615349604051806040016040528060608152602001606081525090565b815260200160008152602001615372604051806040016040528060608152602001606081525090565b8152602001615394604051806040016040528060608152602001606081525090565b8152602001600081525090565b6040805160c0810190915260606080820181815260a08301919091528190815260200160008152602001615394604051806040016040528060608152602001606081525090565b6040518060a0016040528060008152602001615277604051806040016040528060608152602001606081525090565b828054828255906000526020600020908101928215615479579160200282015b82811115615479578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116178255602090920191600190910190615437565b506154859291506154c4565b5090565b828054828255906000526020600020908101928215615479579160200282015b828111156154795782518255916020019190600101906154a9565b5b8082111561548557600081556001016154c5565b6001600160a01b03811681146100df57600080fd5b80356154f9816154d9565b919050565b60006020828403121561551057600080fd5b813561067c816154d9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561555a5761555a61551b565b604052919050565b600067ffffffffffffffff82111561557c5761557c61551b565b5060051b60200190565b6000806040838503121561559957600080fd5b823567ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b803560206155d66155d183615562565b615531565b82815260059290921b830181019181810190888411156155f557600080fd5b938201935b8385101561561c57843561560d816154d9565b825293820193908201906155fa565b955061562b90508682016154ee565b93505050509250929050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561565f57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082601f83011261568d57600080fd5b8151602061569d6155d183615562565b82815260059290921b840181019181810190868411156156bc57600080fd5b8286015b848110156156d757805183529183019183016156c0565b509695505050505050565b6000806000606084860312156156f757600080fd5b8351925060208401519150604084015167ffffffffffffffff81111561571c57600080fd5b6157288682870161567c565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761052057610520615732565b60008261577c57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561052057610520615732565b6000600182016157a6576157a6615732565b5060010190565b600081518084526020808501945080840160005b838110156157e65781516001600160a01b0316875295820195908201906001016157c1565b509495945050505050565b600081518084526020808501945080840160005b838110156157e657815187529582019590820190600101615805565b83815260606020820152600061583a60608301856157ad565b828103604084015261584c81856157f1565b9695505050505050565b6001600160a01b038416815260606020820152600061583a60608301856157ad565b805160408084528151908401819052600091602091908201906060860190845b818110156158bd5783516001600160a01b031683529284019291840191600101615898565b50508483015186820387850152805180835290840192506000918401905b808310156156d757835182529284019260019290920191908401906158db565b6001600160a01b038416815260606020820152600061591d6060830185615878565b828103604084015261584c8185615878565b600082601f83011261594057600080fd5b815160206159506155d183615562565b82815260059290921b8401810191818101908684111561596f57600080fd5b8286015b848110156156d7578051615986816154d9565b8352918301918301615973565b6000602082840312156159a557600080fd5b815167ffffffffffffffff808211156159bd57600080fd5b90830190604082860312156159d157600080fd5b6040516040810181811083821117156159ec576159ec61551b565b6040528251828111156159fe57600080fd5b615a0a8782860161592f565b825250602083015182811115615a1f57600080fd5b615a2b8782860161567c565b60208301525095945050505050565b86815285602082015260c060408201526000615a5960c08301876157ad565b8281036060840152615a6b81876157f1565b90508281036080840152615a7f81866157ad565b905082810360a0840152615a9381856157f1565b9998505050505050505050565b8082018082111561052057610520615732565b60048110615ad157634e487b7160e01b600052602160045260246000fd5b9052565b8281526040810161067c6020830184615ab3565b848152608060208201526000615b0260808301866157ad565b8281036040840152615b1481866157f1565b915050612b6d6060830184615ab3565b604081526000615b3760408301856157ad565b8281036020840152612b6d81856157f1565b60208152600061067c60208301846157ad565b600060208284031215615b6e57600080fd5b815167ffffffffffffffff811115615b8557600080fd5b6119d28482850161567c565b634e487b7160e01b600052603160045260246000fd5b600181815b80851115615be2578160001904821115615bc857615bc8615732565b80851615615bd557918102915b93841c9390800290615bac565b509250929050565b600082615bf957506001610520565b81615c0657506000610520565b8160018114615c1c5760028114615c2657615c42565b6001915050610520565b60ff841115615c3757615c37615732565b50506001821b610520565b5060208310610133831016604e8410600b8410161715615c65575081810a610520565b615c6f8383615ba7565b8060001904821115615c8357615c83615732565b029392505050565b600061067c8383615bea565b60008060008060808587031215615cad57600080fd5b8451935060208501519250604085015167ffffffffffffffff80821115615cd357600080fd5b615cdf8883890161567c565b93506060870151915080821115615cf557600080fd5b50615d028782880161567c565b91505092959194509250565b60008060408385031215615d2157600080fd5b825167ffffffffffffffff80821115615d3957600080fd5b615d458683870161592f565b93506020850151915080821115615d5b57600080fd5b50615d688582860161567c565b9150509250929050565b600060208284031215615d8457600080fd5b815161067c816154d9565b600060208284031215615da157600080fd5b815160ff8116811461067c57600080fdfe7239b4459c1d3d68b96734eb0e6596f63b4a77b9c14e0d863e63dc6fa6bda300a36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e00a36e81d885900cc3916b87a733476f04e310966a6d75bff720cbf6a9b4729e02a2646970667358221220556ebd1c75ad7c34d41aaea32d6ab309cbb429fd5d757fd93c1b515a238b326f64736f6c63430008130033",
  "linkReferences": {
    "contracts/Dependencies_v0_8/SumCollateralsLib.sol": {
      "SumCollateralsLib": [
        {
          "length": 20,
          "start": 3970
        },
        {
          "length": 20,
          "start": 4118
        },
        {
          "length": 20,
          "start": 6715
        },
        {
          "length": 20,
          "start": 6944
        },
        {
          "length": 20,
          "start": 7126
        },
        {
          "length": 20,
          "start": 7284
        },
        {
          "length": 20,
          "start": 10918
        },
        {
          "length": 20,
          "start": 11558
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/Dependencies_v0_8/SumCollateralsLib.sol": {
      "SumCollateralsLib": [
        {
          "length": 20,
          "start": 3937
        },
        {
          "length": 20,
          "start": 4085
        },
        {
          "length": 20,
          "start": 6682
        },
        {
          "length": 20,
          "start": 6911
        },
        {
          "length": 20,
          "start": 7093
        },
        {
          "length": 20,
          "start": 7251
        },
        {
          "length": 20,
          "start": 10885
        },
        {
          "length": 20,
          "start": 11525
        }
      ]
    }
  }
}
