false
false

Contract Address Details

0x7d60D37653c98B38e5fD2a3C0c762dCb276Bc54E

Contract Name
Bridge
Creator
0x61ee6a–51328a at 0x03f995–f5df4f
Balance
1,503,791.001677 KCS
Tokens
Fetching tokens...
Transactions
12,355 Transactions
Transfers
392 Transfers
Gas Used
1,201,849,270
Last Balance Update
43517912
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Bridge




Optimization enabled
true
Compiler version
v0.7.4+commit.3f05b770




Optimization runs
200
EVM Version
default




Verified at
2022-11-13T09:09:12.447011Z

Constructor Arguments

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000061ee6a782308c27fa437312d27d955c09c51328a000000000000000000000000646938c3de05e6327efd4746278d2b76eeb16e24
              

Contract source code

// File: @openzeppelin/contracts/utils/Context.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/utils/Pausable.sol
pragma solidity ^0.7.0;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address[]","name":"_owners","internalType":"address[]"},{"type":"uint256","name":"_ownerRequired","internalType":"uint256"}]},{"type":"event","name":"AdminChanged","inputs":[{"type":"string","name":"TaskType","internalType":"string","indexed":false},{"type":"string","name":"class","internalType":"string","indexed":false},{"type":"address","name":"oldAddress","internalType":"address","indexed":false},{"type":"address","name":"newAddress","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"AdminRequiredNumChanged","inputs":[{"type":"string","name":"TaskType","internalType":"string","indexed":false},{"type":"string","name":"class","internalType":"string","indexed":false},{"type":"uint256","name":"previousNum","internalType":"uint256","indexed":false},{"type":"uint256","name":"requiredNum","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AdminTaskDropped","inputs":[{"type":"bytes32","name":"taskHash","internalType":"bytes32","indexed":false}],"anonymous":false},{"type":"event","name":"DepositNative","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"targetAddress","internalType":"string","indexed":false},{"type":"string","name":"chain","internalType":"string","indexed":false},{"type":"uint256","name":"feeValue","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"DepositToken","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"address","name":"token","internalType":"address","indexed":true},{"type":"string","name":"targetAddress","internalType":"string","indexed":false},{"type":"string","name":"chain","internalType":"string","indexed":false},{"type":"uint256","name":"feeValue","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"FeeToTransferred","inputs":[{"type":"address","name":"previousFeeTo","internalType":"address","indexed":true},{"type":"address","name":"newFeeTo","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"SwapFeeChanged","inputs":[{"type":"string","name":"chain","internalType":"string","indexed":false},{"type":"uint256","name":"previousSwapFee","internalType":"uint256","indexed":true},{"type":"uint256","name":"newSwapFee","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"WithdrawDoneNative","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"proof","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"WithdrawDoneToken","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"address","name":"token","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"proof","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"WithdrawingNative","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"proof","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"WithdrawingToken","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"address","name":"token","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"proof","internalType":"string","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"addAddress","inputs":[{"type":"string","name":"class","internalType":"string"},{"type":"address","name":"oneAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"chainSwapFee","inputs":[{"type":"bytes32","name":"","internalType":"bytes32"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"depositNative","inputs":[{"type":"string","name":"_targetAddress","internalType":"string"},{"type":"string","name":"chain","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"selector","internalType":"string"},{"type":"bool","name":"isValueFirst","internalType":"bool"}],"name":"depositSelector","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"depositToken","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"_targetAddress","internalType":"string"},{"type":"string","name":"chain","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"dropAddress","inputs":[{"type":"string","name":"class","internalType":"string"},{"type":"address","name":"oneAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"dropTask","inputs":[{"type":"bytes32","name":"taskHash","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"feeTo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"filledTx","inputs":[{"type":"bytes32","name":"","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address[]","name":"","internalType":"address[]"}],"name":"getAdminAddresses","inputs":[{"type":"string","name":"class","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getLogicAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getOperatorRequireNum","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getOwnerRequireNum","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getStoreAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getSwapFee","inputs":[{"type":"string","name":"_chain","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"modifyAdminAddress","inputs":[{"type":"string","name":"class","internalType":"string"},{"type":"address","name":"oldAddress","internalType":"address"},{"type":"address","name":"newAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pause","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"paused","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"resetRequiredNum","inputs":[{"type":"string","name":"class","internalType":"string"},{"type":"uint256","name":"requiredNum","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDepositSelector","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"string","name":"method","internalType":"string"},{"type":"bool","name":"_isValueFirst","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeTo","inputs":[{"type":"address","name":"_feeTo","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapFee","inputs":[{"type":"string","name":"_chain","internalType":"string"},{"type":"uint256","name":"_swapFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWithdrawSelector","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"string","name":"method","internalType":"string"},{"type":"bool","name":"_isValueFirst","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unpause","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"withdrawNative","inputs":[{"type":"address","name":"to","internalType":"address payable"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"proof","internalType":"string"},{"type":"bytes32","name":"taskHash","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"selector","internalType":"string"},{"type":"bool","name":"isValueFirst","internalType":"bool"}],"name":"withdrawSelector","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"withdrawToken","inputs":[{"type":"address","name":"_token","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"proof","internalType":"string"},{"type":"bytes32","name":"taskHash","internalType":"bytes32"}]}]
              

Contract Creation Code

0x608060405260ff6000553480156200001657600080fd5b5060405162004ef138038062004ef1833981810160405260408110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82518660208202830111640100000000821117156200009157600080fd5b82525081516020918201928201910280838360005b83811015620000c0578181015183820152602001620000a6565b505050509190910160405250602001516005805460ff191690559150620000ea90508282620000f2565b505062000433565b8151816000548211158015620001085750818111155b8015620001155750600081115b8015620001225750600082115b6200012c57600080fd5b60005b84518110156200017a576200017160008051602062004eb183398151915260001b8683815181106200015d57fe5b6020026020010151620002a760201b60201c565b6001016200012f565b50620001a060008051602062004e7183398151915260001b856000815181106200015d57fe5b620001bc60008051602062004e918339815191526000620002a7565b620001d860008051602062004ed18339815191526001620002a7565b50506002805460018181018355600083905260008051602062004eb18339815191527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace92830155825480820184557f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622908301558254808201845560008051602062004e71833981519152908301558254808201845560008051602062004ed1833981519152908301558254908101835560008051602062004e9183398151915291015560039190915560045550565b620002b38282620003af565b1562000306576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7461696e65723a64757020616464726573732061646465640000000000604482015290519081900360640190fd5b600080548382526001602052604090912060020154106200036e576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7461696e65723a746f6f206d616e792061646472657373657300000000604482015290519081900360640190fd5b6000918252600160208181526040842060020180549283018155845290922090910180546001600160a01b0319166001600160a01b03909216919091179055565b6000805b6000848152600160205260409020600201548110156200042757600084815260016020526040902060020180546001600160a01b038516919083908110620003f757fe5b6000918252602090912001546001600160a01b031614156200041e5760019150506200042d565b600101620003b3565b50600090505b92915050565b614a2e80620004436000396000f3fe6080604052600436106101b65760003560e01c8063a4f5fa57116100ec578063d5b99d3c1161008a578063e6a81ec411610064578063e6a81ec414610e7a578063e9e211bd14610e8f578063f46901ed14610f42578063f60c757f14610f75576101b6565b8063d5b99d3c14610bc1578063dd9b86c114610c89578063e28bd03e14610dc7576101b6565b8063c8e369bf116100c6578063c8e369bf1461088d578063c8fd90f91461098e578063cb08e3ca14610a51578063ceb35b0f14610b05576101b6565b8063a4f5fa5714610839578063abd108ba14610863578063b07ed3a914610878576101b6565b8063521cb59011610159578063649086491161013357806364908649146106155780638456cb591461063f5780638609d28c1461065457806391c40bf71461077d576101b6565b8063521cb590146105255780635c975abb1461054f5780635ccfae1714610564576101b6565b806306fdde031161019557806306fdde03146103985780631d75807c146104225780632c2df742146104495780633f4ba83a14610510576101b6565b8062674f63146101bb578063017e7e581461028057806302c1927c146102b1575b600080fd5b3480156101c757600080fd5b5061027e600480360360608110156101de57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111600160201b8311171561023b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050610fa8565b005b34801561028c57600080fd5b5061029561106e565b604080516001600160a01b039092168252519081900360200190f35b3480156102bd57600080fd5b50610384600480360360a08110156102d457600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460018302840111600160201b8311171561034157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061107d915050565b604080519115158252519081900360200190f35b3480156103a457600080fd5b506103ad61177c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e75781810151838201526020016103cf565b50505050905090810190601f1680156104145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042e57600080fd5b5061043761179e565b60408051918252519081900360200190f35b34801561045557600080fd5b5061027e6004803603606081101561046c57600080fd5b810190602081018135600160201b81111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111600160201b831117156104b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506117a49050565b34801561051c57600080fd5b5061027e6119ca565b34801561053157600080fd5b506103846004803603602081101561054857600080fd5b5035611a45565b34801561055b57600080fd5b50610384611adf565b34801561057057600080fd5b506104376004803603602081101561058757600080fd5b810190602081018135600160201b8111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460018302840111600160201b831117156105d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ae8945050505050565b34801561062157600080fd5b506103846004803603602081101561063857600080fd5b5035611b6d565b34801561064b57600080fd5b5061027e611b82565b61027e6004803603604081101561066a57600080fd5b810190602081018135600160201b81111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460018302840111600160201b831117156106b757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070957600080fd5b82018360208201111561071b57600080fd5b803590602001918460018302840111600160201b8311171561073c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611bfb945050505050565b34801561078957600080fd5b50610384600480360360408110156107a057600080fd5b810190602081018135600160201b8111156107ba57600080fd5b8201836020820111156107cc57600080fd5b803590602001918460018302840111600160201b831117156107ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150611e389050565b34801561084557600080fd5b506104376004803603602081101561085c57600080fd5b503561219c565b34801561086f57600080fd5b506102956121ae565b34801561088457600080fd5b506102956121c2565b34801561089957600080fd5b5061093e600480360360208110156108b057600080fd5b810190602081018135600160201b8111156108ca57600080fd5b8201836020820111156108dc57600080fd5b803590602001918460018302840111600160201b831117156108fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612243945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561097a578181015183820152602001610962565b505050509050019250505060405180910390f35b34801561099a57600080fd5b5061027e600480360360608110156109b157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156109db57600080fd5b8201836020820111156109ed57600080fd5b803590602001918460018302840111600160201b83111715610a0e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050612262565b348015610a5d57600080fd5b50610a8460048036036020811015610a7457600080fd5b50356001600160a01b0316612307565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b83811015610ac9578181015183820152602001610ab1565b50505050905090810190601f168015610af65780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610b1157600080fd5b5061038460048036036040811015610b2857600080fd5b810190602081018135600160201b811115610b4257600080fd5b820183602082011115610b5457600080fd5b803590602001918460018302840111600160201b83111715610b7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506123b19050565b348015610bcd57600080fd5b5061038460048036036080811015610be457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c1357600080fd5b820183602082011115610c2557600080fd5b803590602001918460018302840111600160201b83111715610c4657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612611915050565b61038460048036036080811015610c9f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610cce57600080fd5b820183602082011115610ce057600080fd5b803590602001918460018302840111600160201b83111715610d0157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5357600080fd5b820183602082011115610d6557600080fd5b803590602001918460018302840111600160201b83111715610d8657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d63945050505050565b348015610dd357600080fd5b5061027e60048036036040811015610dea57600080fd5b810190602081018135600160201b811115610e0457600080fd5b820183602082011115610e1657600080fd5b803590602001918460018302840111600160201b83111715610e3757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612fbc915050565b348015610e8657600080fd5b50610437613141565b348015610e9b57600080fd5b5061038460048036036040811015610eb257600080fd5b810190602081018135600160201b811115610ecc57600080fd5b820183602082011115610ede57600080fd5b803590602001918460018302840111600160201b83111715610eff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250613147915050565b348015610f4e57600080fd5b5061027e60048036036020811015610f6557600080fd5b50356001600160a01b0316613488565b348015610f8157600080fd5b50610a8460048036036020811015610f9857600080fd5b50356001600160a01b0316613537565b610fc0600080516020614975833981519152336135a3565b611009576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b03861660009081526007825292909220815180519293919261104d9284920190614877565b50602091909101516001909101805460ff1916911515919091179055505050565b6006546001600160a01b031681565b6000611097600080516020614975833981519152336135a3565b6110e0576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6110e8611adf565b1561112d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b836000811161117b576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b602083106111c85780518252601f1990920191602091820191016111a9565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314611253576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b60008381526009602052604090205460ff16156112b2576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b15801561130457600080fd5b505afa158015611318573d6000803e3d6000fd5b505050506040513d602081101561132e57600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561138557600080fd5b505af1158015611399573d6000803e3d6000fd5b505050506040513d60208110156113af57600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b1580156113fd57600080fd5b505afa158015611411573d6000803e3d6000fd5b505050506040513d602081101561142757600080fd5b50518114156114ea57876001600160a01b0316876001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2088886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114aa578181015183820152602001611492565b50505050905090810190601f1680156114d75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a361176c565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b15801561153857600080fd5b505afa15801561154c573d6000803e3d6000fd5b505050506040513d602081101561156257600080fd5b505181141561176c576000611578898989613620565b9050886001600160a01b0316886001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2089896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115f45781810151838201526020016115dc565b50505050905090810190601f1680156116215780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3886001600160a01b0316886001600160a01b03167f044513e921a12ac6560730ac3063f7946fdcb715deb39bc6f84c38be8083648a89896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116a9578181015183820152602001611691565b50505050905090810190601f1680156116d65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a36000858152600960205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810189905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b15801561174a57600080fd5b505af115801561175e573d6000803e3d6000fd5b505050508093505050611772565b60019250505b5095945050505050565b6040518060400160405280600681526020016542726964676560d01b81525081565b60045490565b6117ac611adf565b6117f4576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001600160a01b038116611846576040805162461bcd60e51b81526020600482015260146024820152734272696467653a77726f6e67206164647265737360601b604482015290519081900360640190fd5b6000611853848484613b42565b905080156119c4576000846040516020018082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b81141561191d5760058054610100600160a81b0319166101006001600160a01b038616021790556119c2565b7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16808114156119c257600560019054906101000a90046001600160a01b03166001600160a01b031663b0d80346846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156119a957600080fd5b505af11580156119bd573d6000803e3d6000fd5b505050505b505b50505050565b6119f47f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336135a3565b611a3b576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b611a43613d80565b565b6000611a5f600080516020614995833981519152336135a3565b611a9a5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b611aa382613e20565b6040805183815290517f468b360fa155a4c5fdf0cb38ce238407e41508a56023e7536088c21b2cd641399181900360200190a15060015b919050565b60055460ff1690565b600080826040516020018082805190602001908083835b60208310611b1e5780518252601f199092019160209182019101611aff565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835284528151918101919091206000908152600a90915291909120549695505050505050565b60096020526000908152604090205460ff1681565b611bac7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336135a3565b611bf3576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b611a43613e4c565b6000600a6000836040516020018082805190602001908083835b60208310611c345780518252601f199092019160209182019101611c15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054905080341015611cd5576040805162461bcd60e51b815260206004820152601c60248201527f4272696467653a696e73756666696369656e7420737761702066656500000000604482015290519081900360640190fd5b8015611d17576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d15573d6000803e3d6000fd5b505b336001600160a01b03167f0f0febc7655213f7f4ed640f722413acbfa5bab0fac4cd58ae8792c618e2ab37823403858585604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611d95578181015183820152602001611d7d565b50505050905090810190601f168015611dc25780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611df5578181015183820152602001611ddd565b50505050905090810190601f168015611e225780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2505050565b6000611e52600080516020614995833981519152336135a3565b611e8d5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000611e9884613ecf565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16808114801590611eea57507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b611f35576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b611f3f81846135a3565b611f7a5760405162461bcd60e51b81526004018080602001828103825260228152602001806149b56022913960400191505060405180910390fd5b600080516020614995833981519152811415611fd857600354611f9c82613f9c565b11611fd85760405162461bcd60e51b81526004018080602001828103825260238152602001806149526023913960400191505060405180910390fd5b6000848460405160200180806a64726f704164647265737360a81b815250600b0183805190602001908083835b602083106120245780518252601f199092019160209182019101612005565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905061207e8133613fb1565b60035461208a82613f9c565b1061218f5761209982856140b5565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600b8152602001806a64726f704164647265737360a81b815250602001838103825286818151815260200191508051906020019080838360005b8381101561213e578181015183820152602001612126565b50505050905090810190601f16801561216b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a161218481613e20565b600192505050612196565b6000925050505b92915050565b600a6020526000908152604090205481565b60055461010090046001600160a01b031690565b6000600560019054906101000a90046001600160a01b03166001600160a01b031663b07ed3a96040518163ffffffff1660e01b815260040160206040518083038186803b15801561221257600080fd5b505afa158015612226573d6000803e3d6000fd5b505050506040513d602081101561223c57600080fd5b5051905090565b6060600061225083613ecf565b905061225b816141e5565b9392505050565b61227a600080516020614975833981519152336135a3565b6122c3576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b03861660009081526008825292909220815180519293919261104d9284920190614877565b60086020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561239e5780601f106123735761010080835404028352916020019161239e565b820191906000526020600020905b81548152906001019060200180831161238157829003601f168201915b5050506001909301549192505060ff1682565b60006123cb600080516020614995833981519152336135a3565b6124065760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b600061241184613ecf565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd1680811480159061246357507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b6124ae576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b600084846040516020018080696164644164647265737360b01b815250600a0183805190602001908083835b602083106124f95780518252601f1990920191602091820191016124da565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506125538133613fb1565b60035461255f82613f9c565b1061218f5761256e8285613fb1565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600a815260200180696164644164647265737360b01b815250602001838103825286818151815260200191508051906020019080838360008381101561213e578181015183820152602001612126565b600061262b600080516020614975833981519152336135a3565b612674576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b61267c611adf565b156126c1576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b836000811161270f576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b84471015612764576040805162461bcd60e51b815260206004820152601e60248201527f4272696467653a6e6f7420656e6f756768206e617469766520746f6b656e0000604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b602083106127b15780518252601f199092019160209182019101612792565b6001836020036101000a038019825116818451168082178552505050505050905001935050505060405160208183030381529060405280519060200120831461283c576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b60008381526009602052604090205460ff161561289b576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b1580156128ed57600080fd5b505afa158015612901573d6000803e3d6000fd5b505050506040513d602081101561291757600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561296e57600080fd5b505af1158015612982573d6000803e3d6000fd5b505050506040513d602081101561299857600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b1580156129e657600080fd5b505afa1580156129fa573d6000803e3d6000fd5b505050506040513d6020811015612a1057600080fd5b5051811415612ac957866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a89578181015183820152602001612a71565b50505050905090810190601f168015612ab65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2612d56565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b158015612b1757600080fd5b505afa158015612b2b573d6000803e3d6000fd5b505050506040513d6020811015612b4157600080fd5b5051811415612d5657866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bba578181015183820152602001612ba2565b50505050905090810190601f168015612be75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2866001600160a01b03167fd8ff38332185c42ca14ded5671b8eb2842095abf024f6900cb42760ccb438f3387876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612c65578181015183820152602001612c4d565b50505050905090810190601f168015612c925780820380516001836020036101000a031916815260200191505b50935050505060405180910390a26040516001600160a01b0388169087156108fc029088906000818181858888f19350505050158015612cd6573d6000803e3d6000fd5b506000848152600960205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810188905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b158015612d3d57600080fd5b505af1158015612d51573d6000803e3d6000fd5b505050505b5060019695505050505050565b600080600a6000846040516020018082805190602001908083835b60208310612d9d5780518252601f199092019160209182019101612d7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020549050803414612e3d576040805162461bcd60e51b815260206004820152601960248201527f4272696467653a7377617020666565206e6f7420657175616c00000000000000604482015290519081900360640190fd5b8015612e7f576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e7d573d6000803e3d6000fd5b505b6000612e8c873388614254565b9050866001600160a01b0316336001600160a01b03167f63333d9ba80d323ed3a2c486809215e8f1fb8c645691606b862787fad572c1c788888887604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015612f14578181015183820152602001612efc565b50505050905090810190601f168015612f415780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015612f74578181015183820152602001612f5c565b50505050905090810190601f168015612fa15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b612fd4600080516020614995833981519152336135a3565b61300f5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b602083106130445780518252601f199092019160209182019101613025565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905081600a6000838152602001908152602001600020547f7614e336aa3d9d0a62c0bbde237f1637cc315b39cf33e4559691eddb9ba8a869856040518080602001828103825283818151815260200191508051906020019080838360005b838110156130f55781810151838201526020016130dd565b50505050905090810190601f1680156131225780820380516001836020036101000a031916815260200191505b509250505060405180910390a36000908152600a602052604090205550565b60035490565b6000613161600080516020614995833981519152336135a3565b61319c5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b60006131a784613ecf565b90506000805160206149758339815191528114806131d2575060008051602061499583398151915281145b61321d576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b6000848460405160200180806f726573657452657175697265644e756d60801b81525060100183805190602001908083835b6020831061326e5780518252601f19909201916020918201910161324f565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912092506132b4915082905033613fb1565b6003546132c082613f9c565b1061347d576132ce81613e20565b600060008051602061499583398151915283141561333b57846132f084613f9c565b101561332d5760405162461bcd60e51b81526004018080602001828103825260238152602001806149526023913960400191505060405180910390fd5b5060038054908590556133a6565b60008051602061497583398151915283141561335f575060048054908590556133a6565b6040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b7fce49fc04234925e87b95750e0e50cac6d4ffcf8a696e3316b3e13bedc84ee7a8868287604051808060200180602001858152602001848152602001838103835260108152602001806f726573657452657175697265644e756d60801b815250602001838103825286818151815260200191508051906020019080838360005b8381101561343e578181015183820152602001613426565b50505050905090810190601f16801561346b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505b506001949350505050565b6134a0600080516020614995833981519152336135a3565b6134db5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f941bed5eb8a4f7abb41f1a8547c6b5fded98a6fbe47dbd60aee080690de5f0d590600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b60076020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561239e5780601f106123735761010080835404028352916020019161239e565b6000805b60008481526001602052604090206002015481101561361657600084815260016020526040902060020180546001600160a01b0385169190839081106135e957fe5b6000918252602090912001546001600160a01b0316141561360e576001915050612196565b6001016135a7565b5060009392505050565b6001600160a01b03831660009081526008602052604081205481906060906002600019610100600184161502019091160461373e57604080516001600160a01b038781166024830152604480830188905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17815292518251918a169390918291908083835b602083106136cc5780518252601f1990920191602091820191016136ad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461372e576040519150601f19603f3d011682016040523d82523d6000602084013e613733565b606091505b509092509050613ac3565b613746614903565b6001600160a01b0387166000908152600860209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156137ec5780601f106137c1576101008083540402835291602001916137ec565b820191906000526020600020905b8154815290600101906020018083116137cf57829003601f168201915b50505091835250506001919091015460ff1615156020918201528101519091501561396b57866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106138815780518252601f199092019160209182019101613862565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106138f95780518252601f1990920191602091820191016138da565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461395b576040519150601f19603f3d011682016040523d82523d6000602084013e613960565b606091505b509093509150613ac1565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106139db5780518252601f1990920191602091820191016139bc565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b60208310613a535780518252601f199092019160209182019101613a34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ab5576040519150601f19603f3d011682016040523d82523d6000602084013e613aba565b606091505b5090935091505b505b818015613aec575080511580613aec5750808060200190516020811015613ae957600080fd5b50515b613b36576040805162461bcd60e51b8152602060048201526016602482015275109c9a5919d94e9dda5d1a191c985dc819985a5b195960521b604482015290519081900360640190fd5b50600195945050505050565b6000613b5c600080516020614995833981519152336135a3565b613b975760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000613ba285613ecf565b9050600085858560405160200180806c6d6f646966794164647265737360981b815250600d0184805190602001908083835b60208310613bf35780518252601f199092019160209182019101613bd4565b6001836020036101000a038019825116818451168082178552505050505050905001836001600160a01b031660601b8152601401826001600160a01b031660601b81526014019350505050604051602081830303815290604052805190602001209050613c608133613fb1565b600354613c6c82613f9c565b10613d7457613c7c82868661476f565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566868686604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600d8152602001806c6d6f646966794164647265737360981b815250602001838103825286818151815260200191508051906020019080838360005b83811015613d23578181015183820152602001613d0b565b50505050905090810190601f168015613d505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1613d6981613e20565b60019250505061225b565b50600095945050505050565b613d88611adf565b613dd0576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613e0361482b565b604080516001600160a01b039092168252519081900360200190a1565b6000818152600160208190526040822082815590810182905590613e47600283018261491b565b505050565b613e54611adf565b15613e99576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613e0361482b565b600080826040516020018082805190602001908083835b60208310613f055780518252601f199092019160209182019101613ee6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050613f4b8161482f565b612196576040805162461bcd60e51b815260206004820152601960248201527f42726964676541646d696e3a696e76616c696420636c61737300000000000000604482015290519081900360640190fd5b60009081526001602052604090206002015490565b613fbb82826135a3565b1561400d576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7461696e65723a64757020616464726573732061646465640000000000604482015290519081900360640190fd5b60008054838252600160205260409091206002015410614074576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7461696e65723a746f6f206d616e792061646472657373657300000000604482015290519081900360640190fd5b6000918252600160208181526040842060020180549283018155845290922090910180546001600160a01b0319166001600160a01b03909216919091179055565b60005b600083815260016020526040902060020154811015613e4757600083815260016020526040902060020180546001600160a01b0384169190839081106140fa57fe5b6000918252602090912001546001600160a01b031614156141d95760008381526001602052604090206002018054600019810190811061413657fe5b60009182526020808320909101548583526001909152604090912060020180546001600160a01b03909216918390811061416c57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394909416939093179092558481526001909152604090206002018054806141b157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055506141e1565b6001016140b8565b5050565b60008181526001602090815260409182902060020180548351818402810184019094528084526060939283018282801561424857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161422a575b50505050509050919050565b6001600160a01b03831660009081526007602052604081205481906060906002600019610100600184161502019091160461437857604080516001600160a01b038781166024830152306044830152606480830188905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251918a169390918291908083835b602083106143065780518252601f1990920191602091820191016142e7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614368576040519150601f19603f3d011682016040523d82523d6000602084013e61436d565b606091505b5090925090506146fd565b614380614903565b6001600160a01b0387166000908152600760209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156144265780601f106143fb57610100808354040283529160200191614426565b820191906000526020600020905b81548152906001019060200180831161440957829003601f168201915b50505091835250506001919091015460ff161515602091820152810151909150156145a557866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106144bb5780518252601f19909201916020918201910161449c565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106145335780518252601f199092019160209182019101614514565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614595576040519150601f19603f3d011682016040523d82523d6000602084013e61459a565b606091505b5090935091506146fb565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106146155780518252601f1990920191602091820191016145f6565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b6020831061468d5780518252601f19909201916020918201910161466e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146146ef576040519150601f19603f3d011682016040523d82523d6000602084013e6146f4565b606091505b5090935091505b505b818015614726575080511580614726575080806020019051602081101561472357600080fd5b50515b613b36576040805162461bcd60e51b8152602060048201526015602482015274109c9a5919d94e99195c1bdcda5d0819985a5b1959605a1b604482015290519081900360640190fd5b60005b6000848152600160205260409020600201548110156119c457600084815260016020526040902060020180546001600160a01b0385169190839081106147b457fe5b6000918252602090912001546001600160a01b031614156148235760008481526001602052604090206002018054839190839081106147ef57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050613e47565b600101614772565b3390565b6000805b60025481101561486e57826002828154811061484b57fe5b90600052602060002001541415614866576001915050611ada565b600101614833565b50600092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826148ad57600085556148f3565b82601f106148c657805160ff19168380011785556148f3565b828001600101855582156148f3579182015b828111156148f35782518255916020019190600101906148d8565b506148ff92915061493c565b5090565b60408051808201909152606081526000602082015290565b5080546000825590600052602060002090810190614939919061493c565b50565b5b808211156148ff576000815560010161493d56fe42726964676541646d696e3a696e73756666696369656e63792061646472657373657346a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62202016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c042726964676541646d696e3a6e6f207375636820616464726573732065786973747342726964676541646d696e3a6f6e6c7920757365206f776e657220746f2063616c6ca2646970667358221220409cbd41e787e6631d4ff8793881e14953eff71ebdd46ca7ed6568038608047164736f6c634300070400330cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18202016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0e41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000061ee6a782308c27fa437312d27d955c09c51328a000000000000000000000000646938c3de05e6327efd4746278d2b76eeb16e24

Deployed ByteCode

0x6080604052600436106101b65760003560e01c8063a4f5fa57116100ec578063d5b99d3c1161008a578063e6a81ec411610064578063e6a81ec414610e7a578063e9e211bd14610e8f578063f46901ed14610f42578063f60c757f14610f75576101b6565b8063d5b99d3c14610bc1578063dd9b86c114610c89578063e28bd03e14610dc7576101b6565b8063c8e369bf116100c6578063c8e369bf1461088d578063c8fd90f91461098e578063cb08e3ca14610a51578063ceb35b0f14610b05576101b6565b8063a4f5fa5714610839578063abd108ba14610863578063b07ed3a914610878576101b6565b8063521cb59011610159578063649086491161013357806364908649146106155780638456cb591461063f5780638609d28c1461065457806391c40bf71461077d576101b6565b8063521cb590146105255780635c975abb1461054f5780635ccfae1714610564576101b6565b806306fdde031161019557806306fdde03146103985780631d75807c146104225780632c2df742146104495780633f4ba83a14610510576101b6565b8062674f63146101bb578063017e7e581461028057806302c1927c146102b1575b600080fd5b3480156101c757600080fd5b5061027e600480360360608110156101de57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111600160201b8311171561023b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050610fa8565b005b34801561028c57600080fd5b5061029561106e565b604080516001600160a01b039092168252519081900360200190f35b3480156102bd57600080fd5b50610384600480360360a08110156102d457600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460018302840111600160201b8311171561034157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061107d915050565b604080519115158252519081900360200190f35b3480156103a457600080fd5b506103ad61177c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e75781810151838201526020016103cf565b50505050905090810190601f1680156104145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042e57600080fd5b5061043761179e565b60408051918252519081900360200190f35b34801561045557600080fd5b5061027e6004803603606081101561046c57600080fd5b810190602081018135600160201b81111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111600160201b831117156104b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506117a49050565b34801561051c57600080fd5b5061027e6119ca565b34801561053157600080fd5b506103846004803603602081101561054857600080fd5b5035611a45565b34801561055b57600080fd5b50610384611adf565b34801561057057600080fd5b506104376004803603602081101561058757600080fd5b810190602081018135600160201b8111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460018302840111600160201b831117156105d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ae8945050505050565b34801561062157600080fd5b506103846004803603602081101561063857600080fd5b5035611b6d565b34801561064b57600080fd5b5061027e611b82565b61027e6004803603604081101561066a57600080fd5b810190602081018135600160201b81111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460018302840111600160201b831117156106b757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070957600080fd5b82018360208201111561071b57600080fd5b803590602001918460018302840111600160201b8311171561073c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611bfb945050505050565b34801561078957600080fd5b50610384600480360360408110156107a057600080fd5b810190602081018135600160201b8111156107ba57600080fd5b8201836020820111156107cc57600080fd5b803590602001918460018302840111600160201b831117156107ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150611e389050565b34801561084557600080fd5b506104376004803603602081101561085c57600080fd5b503561219c565b34801561086f57600080fd5b506102956121ae565b34801561088457600080fd5b506102956121c2565b34801561089957600080fd5b5061093e600480360360208110156108b057600080fd5b810190602081018135600160201b8111156108ca57600080fd5b8201836020820111156108dc57600080fd5b803590602001918460018302840111600160201b831117156108fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612243945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561097a578181015183820152602001610962565b505050509050019250505060405180910390f35b34801561099a57600080fd5b5061027e600480360360608110156109b157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156109db57600080fd5b8201836020820111156109ed57600080fd5b803590602001918460018302840111600160201b83111715610a0e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050612262565b348015610a5d57600080fd5b50610a8460048036036020811015610a7457600080fd5b50356001600160a01b0316612307565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b83811015610ac9578181015183820152602001610ab1565b50505050905090810190601f168015610af65780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610b1157600080fd5b5061038460048036036040811015610b2857600080fd5b810190602081018135600160201b811115610b4257600080fd5b820183602082011115610b5457600080fd5b803590602001918460018302840111600160201b83111715610b7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506123b19050565b348015610bcd57600080fd5b5061038460048036036080811015610be457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c1357600080fd5b820183602082011115610c2557600080fd5b803590602001918460018302840111600160201b83111715610c4657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612611915050565b61038460048036036080811015610c9f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610cce57600080fd5b820183602082011115610ce057600080fd5b803590602001918460018302840111600160201b83111715610d0157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5357600080fd5b820183602082011115610d6557600080fd5b803590602001918460018302840111600160201b83111715610d8657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d63945050505050565b348015610dd357600080fd5b5061027e60048036036040811015610dea57600080fd5b810190602081018135600160201b811115610e0457600080fd5b820183602082011115610e1657600080fd5b803590602001918460018302840111600160201b83111715610e3757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612fbc915050565b348015610e8657600080fd5b50610437613141565b348015610e9b57600080fd5b5061038460048036036040811015610eb257600080fd5b810190602081018135600160201b811115610ecc57600080fd5b820183602082011115610ede57600080fd5b803590602001918460018302840111600160201b83111715610eff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250613147915050565b348015610f4e57600080fd5b5061027e60048036036020811015610f6557600080fd5b50356001600160a01b0316613488565b348015610f8157600080fd5b50610a8460048036036020811015610f9857600080fd5b50356001600160a01b0316613537565b610fc0600080516020614975833981519152336135a3565b611009576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b03861660009081526007825292909220815180519293919261104d9284920190614877565b50602091909101516001909101805460ff1916911515919091179055505050565b6006546001600160a01b031681565b6000611097600080516020614975833981519152336135a3565b6110e0576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6110e8611adf565b1561112d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b836000811161117b576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b602083106111c85780518252601f1990920191602091820191016111a9565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314611253576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b60008381526009602052604090205460ff16156112b2576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b15801561130457600080fd5b505afa158015611318573d6000803e3d6000fd5b505050506040513d602081101561132e57600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561138557600080fd5b505af1158015611399573d6000803e3d6000fd5b505050506040513d60208110156113af57600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b1580156113fd57600080fd5b505afa158015611411573d6000803e3d6000fd5b505050506040513d602081101561142757600080fd5b50518114156114ea57876001600160a01b0316876001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2088886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114aa578181015183820152602001611492565b50505050905090810190601f1680156114d75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a361176c565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b15801561153857600080fd5b505afa15801561154c573d6000803e3d6000fd5b505050506040513d602081101561156257600080fd5b505181141561176c576000611578898989613620565b9050886001600160a01b0316886001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2089896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115f45781810151838201526020016115dc565b50505050905090810190601f1680156116215780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3886001600160a01b0316886001600160a01b03167f044513e921a12ac6560730ac3063f7946fdcb715deb39bc6f84c38be8083648a89896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116a9578181015183820152602001611691565b50505050905090810190601f1680156116d65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a36000858152600960205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810189905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b15801561174a57600080fd5b505af115801561175e573d6000803e3d6000fd5b505050508093505050611772565b60019250505b5095945050505050565b6040518060400160405280600681526020016542726964676560d01b81525081565b60045490565b6117ac611adf565b6117f4576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001600160a01b038116611846576040805162461bcd60e51b81526020600482015260146024820152734272696467653a77726f6e67206164647265737360601b604482015290519081900360640190fd5b6000611853848484613b42565b905080156119c4576000846040516020018082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b81141561191d5760058054610100600160a81b0319166101006001600160a01b038616021790556119c2565b7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16808114156119c257600560019054906101000a90046001600160a01b03166001600160a01b031663b0d80346846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156119a957600080fd5b505af11580156119bd573d6000803e3d6000fd5b505050505b505b50505050565b6119f47f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336135a3565b611a3b576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b611a43613d80565b565b6000611a5f600080516020614995833981519152336135a3565b611a9a5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b611aa382613e20565b6040805183815290517f468b360fa155a4c5fdf0cb38ce238407e41508a56023e7536088c21b2cd641399181900360200190a15060015b919050565b60055460ff1690565b600080826040516020018082805190602001908083835b60208310611b1e5780518252601f199092019160209182019101611aff565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835284528151918101919091206000908152600a90915291909120549695505050505050565b60096020526000908152604090205460ff1681565b611bac7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336135a3565b611bf3576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b611a43613e4c565b6000600a6000836040516020018082805190602001908083835b60208310611c345780518252601f199092019160209182019101611c15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054905080341015611cd5576040805162461bcd60e51b815260206004820152601c60248201527f4272696467653a696e73756666696369656e7420737761702066656500000000604482015290519081900360640190fd5b8015611d17576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d15573d6000803e3d6000fd5b505b336001600160a01b03167f0f0febc7655213f7f4ed640f722413acbfa5bab0fac4cd58ae8792c618e2ab37823403858585604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611d95578181015183820152602001611d7d565b50505050905090810190601f168015611dc25780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611df5578181015183820152602001611ddd565b50505050905090810190601f168015611e225780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2505050565b6000611e52600080516020614995833981519152336135a3565b611e8d5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000611e9884613ecf565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16808114801590611eea57507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b611f35576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b611f3f81846135a3565b611f7a5760405162461bcd60e51b81526004018080602001828103825260228152602001806149b56022913960400191505060405180910390fd5b600080516020614995833981519152811415611fd857600354611f9c82613f9c565b11611fd85760405162461bcd60e51b81526004018080602001828103825260238152602001806149526023913960400191505060405180910390fd5b6000848460405160200180806a64726f704164647265737360a81b815250600b0183805190602001908083835b602083106120245780518252601f199092019160209182019101612005565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905061207e8133613fb1565b60035461208a82613f9c565b1061218f5761209982856140b5565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600b8152602001806a64726f704164647265737360a81b815250602001838103825286818151815260200191508051906020019080838360005b8381101561213e578181015183820152602001612126565b50505050905090810190601f16801561216b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a161218481613e20565b600192505050612196565b6000925050505b92915050565b600a6020526000908152604090205481565b60055461010090046001600160a01b031690565b6000600560019054906101000a90046001600160a01b03166001600160a01b031663b07ed3a96040518163ffffffff1660e01b815260040160206040518083038186803b15801561221257600080fd5b505afa158015612226573d6000803e3d6000fd5b505050506040513d602081101561223c57600080fd5b5051905090565b6060600061225083613ecf565b905061225b816141e5565b9392505050565b61227a600080516020614975833981519152336135a3565b6122c3576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b03861660009081526008825292909220815180519293919261104d9284920190614877565b60086020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561239e5780601f106123735761010080835404028352916020019161239e565b820191906000526020600020905b81548152906001019060200180831161238157829003601f168201915b5050506001909301549192505060ff1682565b60006123cb600080516020614995833981519152336135a3565b6124065760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b600061241184613ecf565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd1680811480159061246357507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b6124ae576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b600084846040516020018080696164644164647265737360b01b815250600a0183805190602001908083835b602083106124f95780518252601f1990920191602091820191016124da565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506125538133613fb1565b60035461255f82613f9c565b1061218f5761256e8285613fb1565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600a815260200180696164644164647265737360b01b815250602001838103825286818151815260200191508051906020019080838360008381101561213e578181015183820152602001612126565b600061262b600080516020614975833981519152336135a3565b612674576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b61267c611adf565b156126c1576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b836000811161270f576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b84471015612764576040805162461bcd60e51b815260206004820152601e60248201527f4272696467653a6e6f7420656e6f756768206e617469766520746f6b656e0000604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b602083106127b15780518252601f199092019160209182019101612792565b6001836020036101000a038019825116818451168082178552505050505050905001935050505060405160208183030381529060405280519060200120831461283c576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b60008381526009602052604090205460ff161561289b576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b1580156128ed57600080fd5b505afa158015612901573d6000803e3d6000fd5b505050506040513d602081101561291757600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561296e57600080fd5b505af1158015612982573d6000803e3d6000fd5b505050506040513d602081101561299857600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b1580156129e657600080fd5b505afa1580156129fa573d6000803e3d6000fd5b505050506040513d6020811015612a1057600080fd5b5051811415612ac957866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a89578181015183820152602001612a71565b50505050905090810190601f168015612ab65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2612d56565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b158015612b1757600080fd5b505afa158015612b2b573d6000803e3d6000fd5b505050506040513d6020811015612b4157600080fd5b5051811415612d5657866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bba578181015183820152602001612ba2565b50505050905090810190601f168015612be75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2866001600160a01b03167fd8ff38332185c42ca14ded5671b8eb2842095abf024f6900cb42760ccb438f3387876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612c65578181015183820152602001612c4d565b50505050905090810190601f168015612c925780820380516001836020036101000a031916815260200191505b50935050505060405180910390a26040516001600160a01b0388169087156108fc029088906000818181858888f19350505050158015612cd6573d6000803e3d6000fd5b506000848152600960205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810188905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b158015612d3d57600080fd5b505af1158015612d51573d6000803e3d6000fd5b505050505b5060019695505050505050565b600080600a6000846040516020018082805190602001908083835b60208310612d9d5780518252601f199092019160209182019101612d7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020549050803414612e3d576040805162461bcd60e51b815260206004820152601960248201527f4272696467653a7377617020666565206e6f7420657175616c00000000000000604482015290519081900360640190fd5b8015612e7f576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e7d573d6000803e3d6000fd5b505b6000612e8c873388614254565b9050866001600160a01b0316336001600160a01b03167f63333d9ba80d323ed3a2c486809215e8f1fb8c645691606b862787fad572c1c788888887604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015612f14578181015183820152602001612efc565b50505050905090810190601f168015612f415780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015612f74578181015183820152602001612f5c565b50505050905090810190601f168015612fa15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b612fd4600080516020614995833981519152336135a3565b61300f5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b602083106130445780518252601f199092019160209182019101613025565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905081600a6000838152602001908152602001600020547f7614e336aa3d9d0a62c0bbde237f1637cc315b39cf33e4559691eddb9ba8a869856040518080602001828103825283818151815260200191508051906020019080838360005b838110156130f55781810151838201526020016130dd565b50505050905090810190601f1680156131225780820380516001836020036101000a031916815260200191505b509250505060405180910390a36000908152600a602052604090205550565b60035490565b6000613161600080516020614995833981519152336135a3565b61319c5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b60006131a784613ecf565b90506000805160206149758339815191528114806131d2575060008051602061499583398151915281145b61321d576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b6000848460405160200180806f726573657452657175697265644e756d60801b81525060100183805190602001908083835b6020831061326e5780518252601f19909201916020918201910161324f565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912092506132b4915082905033613fb1565b6003546132c082613f9c565b1061347d576132ce81613e20565b600060008051602061499583398151915283141561333b57846132f084613f9c565b101561332d5760405162461bcd60e51b81526004018080602001828103825260238152602001806149526023913960400191505060405180910390fd5b5060038054908590556133a6565b60008051602061497583398151915283141561335f575060048054908590556133a6565b6040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b7fce49fc04234925e87b95750e0e50cac6d4ffcf8a696e3316b3e13bedc84ee7a8868287604051808060200180602001858152602001848152602001838103835260108152602001806f726573657452657175697265644e756d60801b815250602001838103825286818151815260200191508051906020019080838360005b8381101561343e578181015183820152602001613426565b50505050905090810190601f16801561346b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505b506001949350505050565b6134a0600080516020614995833981519152336135a3565b6134db5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f941bed5eb8a4f7abb41f1a8547c6b5fded98a6fbe47dbd60aee080690de5f0d590600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b60076020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561239e5780601f106123735761010080835404028352916020019161239e565b6000805b60008481526001602052604090206002015481101561361657600084815260016020526040902060020180546001600160a01b0385169190839081106135e957fe5b6000918252602090912001546001600160a01b0316141561360e576001915050612196565b6001016135a7565b5060009392505050565b6001600160a01b03831660009081526008602052604081205481906060906002600019610100600184161502019091160461373e57604080516001600160a01b038781166024830152604480830188905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17815292518251918a169390918291908083835b602083106136cc5780518252601f1990920191602091820191016136ad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461372e576040519150601f19603f3d011682016040523d82523d6000602084013e613733565b606091505b509092509050613ac3565b613746614903565b6001600160a01b0387166000908152600860209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156137ec5780601f106137c1576101008083540402835291602001916137ec565b820191906000526020600020905b8154815290600101906020018083116137cf57829003601f168201915b50505091835250506001919091015460ff1615156020918201528101519091501561396b57866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106138815780518252601f199092019160209182019101613862565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106138f95780518252601f1990920191602091820191016138da565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461395b576040519150601f19603f3d011682016040523d82523d6000602084013e613960565b606091505b509093509150613ac1565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106139db5780518252601f1990920191602091820191016139bc565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b60208310613a535780518252601f199092019160209182019101613a34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ab5576040519150601f19603f3d011682016040523d82523d6000602084013e613aba565b606091505b5090935091505b505b818015613aec575080511580613aec5750808060200190516020811015613ae957600080fd5b50515b613b36576040805162461bcd60e51b8152602060048201526016602482015275109c9a5919d94e9dda5d1a191c985dc819985a5b195960521b604482015290519081900360640190fd5b50600195945050505050565b6000613b5c600080516020614995833981519152336135a3565b613b975760405162461bcd60e51b81526004018080602001828103825260228152602001806149d76022913960400191505060405180910390fd5b6000613ba285613ecf565b9050600085858560405160200180806c6d6f646966794164647265737360981b815250600d0184805190602001908083835b60208310613bf35780518252601f199092019160209182019101613bd4565b6001836020036101000a038019825116818451168082178552505050505050905001836001600160a01b031660601b8152601401826001600160a01b031660601b81526014019350505050604051602081830303815290604052805190602001209050613c608133613fb1565b600354613c6c82613f9c565b10613d7457613c7c82868661476f565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566868686604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600d8152602001806c6d6f646966794164647265737360981b815250602001838103825286818151815260200191508051906020019080838360005b83811015613d23578181015183820152602001613d0b565b50505050905090810190601f168015613d505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1613d6981613e20565b60019250505061225b565b50600095945050505050565b613d88611adf565b613dd0576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613e0361482b565b604080516001600160a01b039092168252519081900360200190a1565b6000818152600160208190526040822082815590810182905590613e47600283018261491b565b505050565b613e54611adf565b15613e99576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613e0361482b565b600080826040516020018082805190602001908083835b60208310613f055780518252601f199092019160209182019101613ee6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050613f4b8161482f565b612196576040805162461bcd60e51b815260206004820152601960248201527f42726964676541646d696e3a696e76616c696420636c61737300000000000000604482015290519081900360640190fd5b60009081526001602052604090206002015490565b613fbb82826135a3565b1561400d576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7461696e65723a64757020616464726573732061646465640000000000604482015290519081900360640190fd5b60008054838252600160205260409091206002015410614074576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7461696e65723a746f6f206d616e792061646472657373657300000000604482015290519081900360640190fd5b6000918252600160208181526040842060020180549283018155845290922090910180546001600160a01b0319166001600160a01b03909216919091179055565b60005b600083815260016020526040902060020154811015613e4757600083815260016020526040902060020180546001600160a01b0384169190839081106140fa57fe5b6000918252602090912001546001600160a01b031614156141d95760008381526001602052604090206002018054600019810190811061413657fe5b60009182526020808320909101548583526001909152604090912060020180546001600160a01b03909216918390811061416c57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394909416939093179092558481526001909152604090206002018054806141b157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055506141e1565b6001016140b8565b5050565b60008181526001602090815260409182902060020180548351818402810184019094528084526060939283018282801561424857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161422a575b50505050509050919050565b6001600160a01b03831660009081526007602052604081205481906060906002600019610100600184161502019091160461437857604080516001600160a01b038781166024830152306044830152606480830188905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251918a169390918291908083835b602083106143065780518252601f1990920191602091820191016142e7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614368576040519150601f19603f3d011682016040523d82523d6000602084013e61436d565b606091505b5090925090506146fd565b614380614903565b6001600160a01b0387166000908152600760209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156144265780601f106143fb57610100808354040283529160200191614426565b820191906000526020600020905b81548152906001019060200180831161440957829003601f168201915b50505091835250506001919091015460ff161515602091820152810151909150156145a557866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106144bb5780518252601f19909201916020918201910161449c565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106145335780518252601f199092019160209182019101614514565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614595576040519150601f19603f3d011682016040523d82523d6000602084013e61459a565b606091505b5090935091506146fb565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106146155780518252601f1990920191602091820191016145f6565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b6020831061468d5780518252601f19909201916020918201910161466e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146146ef576040519150601f19603f3d011682016040523d82523d6000602084013e6146f4565b606091505b5090935091505b505b818015614726575080511580614726575080806020019051602081101561472357600080fd5b50515b613b36576040805162461bcd60e51b8152602060048201526015602482015274109c9a5919d94e99195c1bdcda5d0819985a5b1959605a1b604482015290519081900360640190fd5b60005b6000848152600160205260409020600201548110156119c457600084815260016020526040902060020180546001600160a01b0385169190839081106147b457fe5b6000918252602090912001546001600160a01b031614156148235760008481526001602052604090206002018054839190839081106147ef57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050613e47565b600101614772565b3390565b6000805b60025481101561486e57826002828154811061484b57fe5b90600052602060002001541415614866576001915050611ada565b600101614833565b50600092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826148ad57600085556148f3565b82601f106148c657805160ff19168380011785556148f3565b828001600101855582156148f3579182015b828111156148f35782518255916020019190600101906148d8565b506148ff92915061493c565b5090565b60408051808201909152606081526000602082015290565b5080546000825590600052602060002090810190614939919061493c565b50565b5b808211156148ff576000815560010161493d56fe42726964676541646d696e3a696e73756666696369656e63792061646472657373657346a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62202016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c042726964676541646d696e3a6e6f207375636820616464726573732065786973747342726964676541646d696e3a6f6e6c7920757365206f776e657220746f2063616c6ca2646970667358221220409cbd41e787e6631d4ff8793881e14953eff71ebdd46ca7ed6568038608047164736f6c63430007040033