Latest 25 from a total of 21,690 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Cancel Swap Inte... | 14885219 | 1292 days ago | IN | 0 ETH | 0.01022946 | ||||
| Create Swap Inte... | 14885216 | 1292 days ago | IN | 0.0051 ETH | 0.01075473 | ||||
| Create Swap Inte... | 14885150 | 1292 days ago | IN | 0.0051 ETH | 0.01374709 | ||||
| Cancel Swap Inte... | 14885139 | 1292 days ago | IN | 0 ETH | 0.01023361 | ||||
| Create Swap Inte... | 14885125 | 1292 days ago | IN | 0.0051 ETH | 0.01126248 | ||||
| Cancel Swap Inte... | 14885115 | 1292 days ago | IN | 0 ETH | 0.00795913 | ||||
| Create Swap Inte... | 14885107 | 1292 days ago | IN | 0.0051 ETH | 0.01178797 | ||||
| Cancel Swap Inte... | 14885091 | 1292 days ago | IN | 0 ETH | 0.00647678 | ||||
| Create Swap Inte... | 14885079 | 1292 days ago | IN | 0.0051 ETH | 0.01559259 | ||||
| Cancel Swap Inte... | 14885064 | 1292 days ago | IN | 0 ETH | 0.00865426 | ||||
| Create Swap Inte... | 14885059 | 1292 days ago | IN | 0.0051 ETH | 0.00971213 | ||||
| Cancel Swap Inte... | 14885035 | 1292 days ago | IN | 0 ETH | 0.00754531 | ||||
| Create Swap Inte... | 14885032 | 1292 days ago | IN | 0.0051 ETH | 0.01132707 | ||||
| Cancel Swap Inte... | 14885018 | 1292 days ago | IN | 0 ETH | 0.00795915 | ||||
| Create Swap Inte... | 14885007 | 1292 days ago | IN | 0.0051 ETH | 0.01044709 | ||||
| Cancel Swap Inte... | 14884952 | 1292 days ago | IN | 0 ETH | 0.00947017 | ||||
| Create Swap Inte... | 14884945 | 1292 days ago | IN | 0.0051 ETH | 0.00916004 | ||||
| Cancel Swap Inte... | 14884923 | 1292 days ago | IN | 0 ETH | 0.00646747 | ||||
| Create Swap Inte... | 14884919 | 1292 days ago | IN | 0.0051 ETH | 0.00974737 | ||||
| Cancel Swap Inte... | 14884894 | 1292 days ago | IN | 0 ETH | 0.0107452 | ||||
| Create Swap Inte... | 14884890 | 1292 days ago | IN | 0.0051 ETH | 0.00945281 | ||||
| Cancel Swap Inte... | 14884866 | 1292 days ago | IN | 0 ETH | 0.00816899 | ||||
| Create Swap Inte... | 14884859 | 1292 days ago | IN | 0.0051 ETH | 0.01156022 | ||||
| Cancel Swap Inte... | 14884835 | 1292 days ago | IN | 0 ETH | 0.0057872 | ||||
| Create Swap Inte... | 14884825 | 1292 days ago | IN | 0.0051 ETH | 0.01026947 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH | ||||
| Close Swap Inten... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Create Swap Inte... | 18802884 | 728 days ago | 0.005 ETH | ||||
| Transfer | 18802884 | 728 days ago | 0.01 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BatchSwap
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
pragma abicoder v2;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
//Interface
abstract contract ERC20Interface {
function transferFrom(address from, address to, uint256 tokenId) public virtual;
function transfer(address recipient, uint256 amount) public virtual;
}
abstract contract ERC721Interface {
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual;
function balanceOf(address owner) public virtual view returns (uint256 balance) ;
}
abstract contract ERC1155Interface {
function safeBatchTransferFrom(address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual;
}
abstract contract CPInterface {
function transferPunk(address to, uint index) public virtual;
function punkIndexToAddress(uint index) public virtual view returns (address owner);
}
abstract contract customInterface {
function bridgeSafeTransferFrom(address dapp, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual;
}
contract PunkProxy {
address private owner;
address private punkOwner;
constructor(address _owner, address _punkOwner) {
owner = _owner;
punkOwner = _punkOwner;
}
function proxyTransferPunk(address _punkContract, address _to, uint256 _punkIndex) public {
require(owner == msg.sender, "You're not the contract owner");
require(CPInterface(_punkContract).punkIndexToAddress(_punkIndex) == address(this), "Punk is missing from this Proxy");
CPInterface(_punkContract).transferPunk(_to, _punkIndex);
}
function changeCurrentProxyOwner(address _newOwner) public {
require(owner == msg.sender, "You're not the contract owner");
owner = _newOwner;
}
function recoverPunk(address _punkContract, address _recover, uint256 _punkIndex) public {
require(owner == msg.sender, "You're not the contract owner");
require(punkOwner == _recover, "You're not the punk owner");
require(CPInterface(_punkContract).punkIndexToAddress(_punkIndex) == address(this), "Punk is missing from this Proxy");
CPInterface(_punkContract).transferPunk(_recover, _punkIndex);
}
}
contract BatchSwap is Ownable, Pausable, IERC721Receiver, IERC1155Receiver {
address constant ERC20 = 0x90b7cf88476cc99D295429d4C1Bb1ff52448abeE;
address constant ERC721 = 0x58874d2951524F7f851bbBE240f0C3cF0b992d79;
address constant ERC1155 = 0xEDfdd7266667D48f3C9aB10194C3d325813d8c39;
address public CRYPTOPUNK = 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB;
mapping (address => PunkProxy) punkProxies;
mapping (uint256 => bool) punkInUse;
address public TRADESQUAD = 0xdbD4264248e2f814838702E0CB3015AC3a7157a1;
address payable public VAULT = 0xdbD4264248e2f814838702E0CB3015AC3a7157a1;
mapping (address => address) dappRelations;
mapping (address => bool) whiteList;
using Counters for Counters.Counter;
using SafeMath for uint256;
uint256 constant secs = 86400;
Counters.Counter private _swapIds;
// Flag for the createSwap
bool private swapFlag;
// Swap Struct
struct swapStruct {
address dapp;
address typeStd;
uint256[] tokenId;
uint256[] blc;
bytes data;
}
// Swap Status
enum swapStatus { Opened, Closed, Cancelled }
// SwapIntent Struct
struct swapIntent {
uint256 id;
address payable addressOne;
uint256 valueOne;
address payable addressTwo;
uint256 valueTwo;
uint256 swapStart;
uint256 swapEnd;
uint256 swapFee;
swapStatus status;
}
// NFT Mapping
mapping(uint256 => swapStruct[]) nftsOne;
mapping(uint256 => swapStruct[]) nftsTwo;
// Struct Payment
struct paymentStruct {
bool status;
uint256 value;
}
// Mapping key/value for get the swap infos
mapping (address => swapIntent[]) swapList;
mapping (uint256 => uint256) swapMatch;
// Struct for the payment rules
paymentStruct payment;
// Events
event swapEvent(address indexed _creator, uint256 indexed time, swapStatus indexed _status, uint256 _swapId, address _swapCounterPart);
event paymentReceived(address indexed _payer, uint256 _value);
receive() external payable {
emit paymentReceived(msg.sender, msg.value);
}
// Create Swap
function createSwapIntent(swapIntent memory _swapIntent, swapStruct[] memory _nftsOne, swapStruct[] memory _nftsTwo) payable public whenNotPaused {
if(payment.status) {
if(ERC721Interface(TRADESQUAD).balanceOf(msg.sender)==0) {
require(msg.value>=payment.value.add(_swapIntent.valueOne), "Not enought WEI for handle the transaction");
_swapIntent.swapFee = getWeiPayValueAmount() ;
}
else {
require(msg.value>=_swapIntent.valueOne, "Not enought WEI for handle the transaction");
_swapIntent.swapFee = 0 ;
}
}
else
require(msg.value>=_swapIntent.valueOne, "Not enought WEI for handle the transaction");
_swapIntent.addressOne = msg.sender;
_swapIntent.id = _swapIds.current();
_swapIntent.swapStart = block.timestamp;
_swapIntent.swapEnd = 0;
_swapIntent.status = swapStatus.Opened ;
swapMatch[_swapIds.current()] = swapList[msg.sender].length;
swapList[msg.sender].push(_swapIntent);
uint256 i;
for(i=0; i<_nftsOne.length; i++)
nftsOne[_swapIntent.id].push(_nftsOne[i]);
for(i=0; i<_nftsTwo.length; i++)
nftsTwo[_swapIntent.id].push(_nftsTwo[i]);
for(i=0; i<nftsOne[_swapIntent.id].length; i++) {
require(whiteList[nftsOne[_swapIntent.id][i].dapp], "A DAPP is not handled by the system");
if(nftsOne[_swapIntent.id][i].typeStd == ERC20) {
ERC20Interface(nftsOne[_swapIntent.id][i].dapp).transferFrom(_swapIntent.addressOne, address(this), nftsOne[_swapIntent.id][i].blc[0]);
}
else if(nftsOne[_swapIntent.id][i].typeStd == ERC721) {
ERC721Interface(nftsOne[_swapIntent.id][i].dapp).safeTransferFrom(_swapIntent.addressOne, address(this), nftsOne[_swapIntent.id][i].tokenId[0], nftsOne[_swapIntent.id][i].data);
}
else if(nftsOne[_swapIntent.id][i].typeStd == ERC1155) {
ERC1155Interface(nftsOne[_swapIntent.id][i].dapp).safeBatchTransferFrom(_swapIntent.addressOne, address(this), nftsOne[_swapIntent.id][i].tokenId, nftsOne[_swapIntent.id][i].blc, nftsOne[_swapIntent.id][i].data);
}
else if(nftsOne[_swapIntent.id][i].typeStd == CRYPTOPUNK) { // Controllo che il CP sia presente sul proxy e che non sia in uso in un altro trade
require(punkInUse[nftsOne[_swapIntent.id][i].tokenId[0]] == false, "Punk in use on another trade");
require(CPInterface(CRYPTOPUNK).punkIndexToAddress(nftsOne[_swapIntent.id][i].tokenId[0]) == address(punkProxies[msg.sender]), "CryptoPunk missing");
punkInUse[nftsOne[_swapIntent.id][i].tokenId[0]] = true;
}
else {
customInterface(dappRelations[nftsOne[_swapIntent.id][i].dapp]).bridgeSafeTransferFrom(nftsOne[_swapIntent.id][i].dapp, _swapIntent.addressOne, dappRelations[nftsOne[_swapIntent.id][i].dapp], nftsOne[_swapIntent.id][i].tokenId, nftsOne[_swapIntent.id][i].blc, nftsOne[_swapIntent.id][i].data);
}
}
emit swapEvent(msg.sender, (block.timestamp-(block.timestamp%secs)), _swapIntent.status, _swapIntent.id, _swapIntent.addressTwo);
_swapIds.increment();
}
// Close the swap
function closeSwapIntent(address _swapCreator, uint256 _swapId) payable public whenNotPaused {
require(swapList[_swapCreator][swapMatch[_swapId]].status == swapStatus.Opened, "Swap Status is not opened");
require(swapList[_swapCreator][swapMatch[_swapId]].addressTwo == msg.sender, "You're not the interested counterpart");
if(payment.status) {
if(ERC721Interface(TRADESQUAD).balanceOf(msg.sender)==0) {
require(msg.value>=payment.value.add(swapList[_swapCreator][swapMatch[_swapId]].valueTwo), "Not enought WEI for handle the transaction");
// Move the fees to the vault
if(payment.value.add(swapList[_swapCreator][swapMatch[_swapId]].swapFee) > 0)
VAULT.transfer(payment.value.add(swapList[_swapCreator][swapMatch[_swapId]].swapFee));
}
else {
require(msg.value>=swapList[_swapCreator][swapMatch[_swapId]].valueTwo, "Not enought WEI for handle the transaction");
if(swapList[_swapCreator][swapMatch[_swapId]].swapFee>0)
VAULT.transfer(swapList[_swapCreator][swapMatch[_swapId]].swapFee);
}
}
else
require(msg.value>=swapList[_swapCreator][swapMatch[_swapId]].valueTwo, "Not enought WEI for handle the transaction");
swapList[_swapCreator][swapMatch[_swapId]].addressTwo = msg.sender;
swapList[_swapCreator][swapMatch[_swapId]].swapEnd = block.timestamp;
swapList[_swapCreator][swapMatch[_swapId]].status = swapStatus.Closed;
//From Owner 1 to Owner 2
uint256 i;
for(i=0; i<nftsOne[_swapId].length; i++) {
require(whiteList[nftsOne[_swapId][i].dapp], "A DAPP is not handled by the system");
if(nftsOne[_swapId][i].typeStd == ERC20) {
ERC20Interface(nftsOne[_swapId][i].dapp).transfer(swapList[_swapCreator][swapMatch[_swapId]].addressTwo, nftsOne[_swapId][i].blc[0]);
}
else if(nftsOne[_swapId][i].typeStd == ERC721) {
ERC721Interface(nftsOne[_swapId][i].dapp).safeTransferFrom(address(this), swapList[_swapCreator][swapMatch[_swapId]].addressTwo, nftsOne[_swapId][i].tokenId[0], nftsOne[_swapId][i].data);
}
else if(nftsOne[_swapId][i].typeStd == ERC1155) {
ERC1155Interface(nftsOne[_swapId][i].dapp).safeBatchTransferFrom(address(this), swapList[_swapCreator][swapMatch[_swapId]].addressTwo, nftsOne[_swapId][i].tokenId, nftsOne[_swapId][i].blc, nftsOne[_swapId][i].data);
}
else if(nftsOne[_swapId][i].typeStd == CRYPTOPUNK) { // Controllo che il CP sia su questo smart contract
require(CPInterface(CRYPTOPUNK).punkIndexToAddress(nftsOne[_swapId][i].tokenId[0]) == address(punkProxies[swapList[_swapCreator][swapMatch[_swapId]].addressOne]), "CryptoPunk missing");
punkProxies[swapList[_swapCreator][swapMatch[_swapId]].addressOne].proxyTransferPunk(CRYPTOPUNK, swapList[_swapCreator][swapMatch[_swapId]].addressTwo, nftsOne[_swapId][i].tokenId[0]);
punkInUse[nftsOne[_swapId][i].tokenId[0]] = false;
}
else {
customInterface(dappRelations[nftsOne[_swapId][i].dapp]).bridgeSafeTransferFrom(nftsOne[_swapId][i].dapp, dappRelations[nftsOne[_swapId][i].dapp], swapList[_swapCreator][swapMatch[_swapId]].addressTwo, nftsOne[_swapId][i].tokenId, nftsOne[_swapId][i].blc, nftsOne[_swapId][i].data);
}
}
if(swapList[_swapCreator][swapMatch[_swapId]].valueOne > 0)
swapList[_swapCreator][swapMatch[_swapId]].addressTwo.transfer(swapList[_swapCreator][swapMatch[_swapId]].valueOne);
//From Owner 2 to Owner 1
for(i=0; i<nftsTwo[_swapId].length; i++) {
require(whiteList[nftsTwo[_swapId][i].dapp], "A DAPP is not handled by the system");
if(nftsTwo[_swapId][i].typeStd == ERC20) {
ERC20Interface(nftsTwo[_swapId][i].dapp).transferFrom(swapList[_swapCreator][swapMatch[_swapId]].addressTwo, swapList[_swapCreator][swapMatch[_swapId]].addressOne, nftsTwo[_swapId][i].blc[0]);
}
else if(nftsTwo[_swapId][i].typeStd == ERC721) {
ERC721Interface(nftsTwo[_swapId][i].dapp).safeTransferFrom(swapList[_swapCreator][swapMatch[_swapId]].addressTwo, swapList[_swapCreator][swapMatch[_swapId]].addressOne, nftsTwo[_swapId][i].tokenId[0], nftsTwo[_swapId][i].data);
}
else if(nftsTwo[_swapId][i].typeStd == ERC1155) {
ERC1155Interface(nftsTwo[_swapId][i].dapp).safeBatchTransferFrom(swapList[_swapCreator][swapMatch[_swapId]].addressTwo, swapList[_swapCreator][swapMatch[_swapId]].addressOne, nftsTwo[_swapId][i].tokenId, nftsTwo[_swapId][i].blc, nftsTwo[_swapId][i].data);
}
else if(nftsTwo[_swapId][i].typeStd == CRYPTOPUNK) {
require(CPInterface(CRYPTOPUNK).punkIndexToAddress(nftsTwo[_swapId][i].tokenId[0]) == address(punkProxies[swapList[_swapCreator][swapMatch[_swapId]].addressTwo]), "CryptoPunk missing");
punkProxies[swapList[_swapCreator][swapMatch[_swapId]].addressTwo].proxyTransferPunk(CRYPTOPUNK, swapList[_swapCreator][swapMatch[_swapId]].addressOne, nftsTwo[_swapId][i].tokenId[0]);
punkInUse[nftsTwo[_swapId][i].tokenId[0]] = false;
}
else {
customInterface(dappRelations[nftsTwo[_swapId][i].dapp]).bridgeSafeTransferFrom(nftsTwo[_swapId][i].dapp, swapList[_swapCreator][swapMatch[_swapId]].addressTwo, swapList[_swapCreator][swapMatch[_swapId]].addressOne, nftsTwo[_swapId][i].tokenId, nftsTwo[_swapId][i].blc, nftsTwo[_swapId][i].data);
}
}
if(swapList[_swapCreator][swapMatch[_swapId]].valueTwo>0)
swapList[_swapCreator][swapMatch[_swapId]].addressOne.transfer(swapList[_swapCreator][swapMatch[_swapId]].valueTwo);
emit swapEvent(msg.sender, (block.timestamp-(block.timestamp%secs)), swapStatus.Closed, _swapId, _swapCreator);
}
// Cancel Swap
function cancelSwapIntent(uint256 _swapId) public {
require(swapList[msg.sender][swapMatch[_swapId]].addressOne == msg.sender, "You're not the interested counterpart");
require(swapList[msg.sender][swapMatch[_swapId]].status == swapStatus.Opened, "Swap Status is not opened");
//Rollback
if(swapList[msg.sender][swapMatch[_swapId]].swapFee>0)
msg.sender.transfer(swapList[msg.sender][swapMatch[_swapId]].swapFee);
uint256 i;
for(i=0; i<nftsOne[_swapId].length; i++) {
if(nftsOne[_swapId][i].typeStd == ERC20) {
ERC20Interface(nftsOne[_swapId][i].dapp).transfer(swapList[msg.sender][swapMatch[_swapId]].addressOne, nftsOne[_swapId][i].blc[0]);
}
else if(nftsOne[_swapId][i].typeStd == ERC721) {
ERC721Interface(nftsOne[_swapId][i].dapp).safeTransferFrom(address(this), swapList[msg.sender][swapMatch[_swapId]].addressOne, nftsOne[_swapId][i].tokenId[0], nftsOne[_swapId][i].data);
}
else if(nftsOne[_swapId][i].typeStd == ERC1155) {
ERC1155Interface(nftsOne[_swapId][i].dapp).safeBatchTransferFrom(address(this), swapList[msg.sender][swapMatch[_swapId]].addressOne, nftsOne[_swapId][i].tokenId, nftsOne[_swapId][i].blc, nftsOne[_swapId][i].data);
}
else if(nftsOne[_swapId][i].typeStd == CRYPTOPUNK) { // Controllo che il CP sia presente sul proxy
require(CPInterface(CRYPTOPUNK).punkIndexToAddress(nftsOne[_swapId][i].tokenId[0]) == address(punkProxies[msg.sender]), "CryptoPunk missing");
punkProxies[msg.sender].proxyTransferPunk(CRYPTOPUNK, msg.sender, nftsOne[_swapId][i].tokenId[0]);
punkInUse[nftsOne[_swapId][i].tokenId[0]] = false;
}
else {
customInterface(dappRelations[nftsOne[_swapId][i].dapp]).bridgeSafeTransferFrom(nftsOne[_swapId][i].dapp, dappRelations[nftsOne[_swapId][i].dapp], swapList[msg.sender][swapMatch[_swapId]].addressOne, nftsOne[_swapId][i].tokenId, nftsOne[_swapId][i].blc, nftsOne[_swapId][i].data);
}
}
if(swapList[msg.sender][swapMatch[_swapId]].valueOne > 0)
swapList[msg.sender][swapMatch[_swapId]].addressOne.transfer(swapList[msg.sender][swapMatch[_swapId]].valueOne);
swapList[msg.sender][swapMatch[_swapId]].swapEnd = block.timestamp;
swapList[msg.sender][swapMatch[_swapId]].status = swapStatus.Cancelled;
emit swapEvent(msg.sender, (block.timestamp-(block.timestamp%secs)), swapStatus.Cancelled, _swapId, address(0));
}
// Set CP address
function setCryptoPunkAddress(address _cryptoPunk) public onlyOwner {
CRYPTOPUNK = _cryptoPunk ;
}
// Register the punk proxy
function registerPunkProxy() public {
require(address(punkProxies[msg.sender])==address(0), "Proxy already registered");
punkProxies[msg.sender] = new PunkProxy(address(this), msg.sender);
}
// If the punk is not in use in a swap, I could recover it
function claimPunkOnProxy(uint _punkId) public {
require(punkInUse[_punkId]==false, "Punk already in use in a swap");
punkProxies[msg.sender].recoverPunk(CRYPTOPUNK, msg.sender, _punkId);
}
// Set Trade Squad address
function setTradeSquadAddress(address _tradeSquad) public onlyOwner {
TRADESQUAD = _tradeSquad ;
}
// Set Vault address
function setVaultAddress(address payable _vault) public onlyOwner {
VAULT = _vault ;
}
// Handle dapp relations for the bridges
function setDappRelation(address _dapp, address _customInterface) public onlyOwner {
dappRelations[_dapp] = _customInterface;
}
// Handle the whitelist
function setWhitelist(address _dapp, bool _status) public onlyOwner {
whiteList[_dapp] = _status;
}
// Edit CounterPart Address
function editCounterPart(uint256 _swapId, address payable _counterPart) public {
require(msg.sender == swapList[msg.sender][swapMatch[_swapId]].addressOne, "Message sender must be the swap creator");
swapList[msg.sender][swapMatch[_swapId]].addressTwo = _counterPart;
}
// Set the payment
function setPayment(bool _status, uint256 _value) public onlyOwner whenNotPaused {
payment.status = _status;
payment.value = _value * (1 wei);
}
// Get punk proxy address
function getPunkProxy(address _address) public view returns(address) {
return address(punkProxies[_address]) ;
}
// Get whitelist status of an address
function getWhiteList(address _address) public view returns(bool) {
return whiteList[_address];
}
// Get Trade fees
function getWeiPayValueAmount() public view returns(uint256) {
return payment.value;
}
// Get swap infos
function getSwapIntentByAddress(address _creator, uint256 _swapId) public view returns(swapIntent memory) {
return swapList[_creator][swapMatch[_swapId]];
}
// Get swapStructLength
function getSwapStructSize(uint256 _swapId, bool _nfts) public view returns(uint256) {
if(_nfts)
return nftsOne[_swapId].length ;
else
return nftsTwo[_swapId].length ;
}
// Get swapStruct
function getSwapStruct(uint256 _swapId, bool _nfts, uint256 _index) public view returns(swapStruct memory) {
if(_nfts)
return nftsOne[_swapId][_index] ;
else
return nftsTwo[_swapId][_index] ;
}
//Interface IERC721/IERC1155
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external override returns (bytes4) {
return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
}
function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external override returns (bytes4) {
return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"));
}
function onERC1155BatchReceived(address operator, address from, uint256[] calldata id, uint256[] calldata value, bytes calldata data) external override returns (bytes4) {
return bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"));
}
function supportsInterface(bytes4 interfaceID) public view virtual override returns (bool) {
return interfaceID == 0x01ffc9a7 || interfaceID == 0x4e2312e0;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// 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;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "../math/SafeMath.sol";
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
* Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}
* overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never
* directly accessed.
*/
library Counters {
using SafeMath for uint256;
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
// The {SafeMath} overflow check can be skipped here, see the comment at the top
counter._value += 1;
}
function decrement(Counter storage counter) internal {
counter._value = counter._value.sub(1);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "./Context.sol";
/**
* @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
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor () internal {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
*/
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "../../introspection/IERC165.sol";
/**
* _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
@dev Handles the receipt of a single ERC1155 token type. This function is
called at the end of a `safeTransferFrom` after the balance has been updated.
To accept the transfer, this must return
`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
(i.e. 0xf23a6e61, or its own function selector).
@param operator The address which initiated the transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param id The ID of the token being transferred
@param value The amount of tokens being transferred
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
)
external
returns(bytes4);
/**
@dev Handles the receipt of a multiple ERC1155 token types. This function
is called at the end of a `safeBatchTransferFrom` after the balances have
been updated. To accept the transfer(s), this must return
`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
(i.e. 0xbc197c81, or its own function selector).
@param operator The address which initiated the batch transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param ids An array containing ids of each token being transferred (order and length must match values array)
@param values An array containing amounts of each token being transferred (order and length must match ids array)
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
)
external
returns(bytes4);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"metadata": {
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_payer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"paymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":true,"internalType":"enum BatchSwap.swapStatus","name":"_status","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_swapId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_swapCounterPart","type":"address"}],"name":"swapEvent","type":"event"},{"inputs":[],"name":"CRYPTOPUNK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADESQUAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapId","type":"uint256"}],"name":"cancelSwapIntent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_punkId","type":"uint256"}],"name":"claimPunkOnProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapCreator","type":"address"},{"internalType":"uint256","name":"_swapId","type":"uint256"}],"name":"closeSwapIntent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address payable","name":"addressOne","type":"address"},{"internalType":"uint256","name":"valueOne","type":"uint256"},{"internalType":"address payable","name":"addressTwo","type":"address"},{"internalType":"uint256","name":"valueTwo","type":"uint256"},{"internalType":"uint256","name":"swapStart","type":"uint256"},{"internalType":"uint256","name":"swapEnd","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"enum BatchSwap.swapStatus","name":"status","type":"uint8"}],"internalType":"struct BatchSwap.swapIntent","name":"_swapIntent","type":"tuple"},{"components":[{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"typeStd","type":"address"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"blc","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct BatchSwap.swapStruct[]","name":"_nftsOne","type":"tuple[]"},{"components":[{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"typeStd","type":"address"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"blc","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct BatchSwap.swapStruct[]","name":"_nftsTwo","type":"tuple[]"}],"name":"createSwapIntent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapId","type":"uint256"},{"internalType":"address payable","name":"_counterPart","type":"address"}],"name":"editCounterPart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getPunkProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_swapId","type":"uint256"}],"name":"getSwapIntentByAddress","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address payable","name":"addressOne","type":"address"},{"internalType":"uint256","name":"valueOne","type":"uint256"},{"internalType":"address payable","name":"addressTwo","type":"address"},{"internalType":"uint256","name":"valueTwo","type":"uint256"},{"internalType":"uint256","name":"swapStart","type":"uint256"},{"internalType":"uint256","name":"swapEnd","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"enum BatchSwap.swapStatus","name":"status","type":"uint8"}],"internalType":"struct BatchSwap.swapIntent","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapId","type":"uint256"},{"internalType":"bool","name":"_nfts","type":"bool"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getSwapStruct","outputs":[{"components":[{"internalType":"address","name":"dapp","type":"address"},{"internalType":"address","name":"typeStd","type":"address"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"blc","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct BatchSwap.swapStruct","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapId","type":"uint256"},{"internalType":"bool","name":"_nfts","type":"bool"}],"name":"getSwapStructSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeiPayValueAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"id","type":"uint256[]"},{"internalType":"uint256[]","name":"value","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registerPunkProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_cryptoPunk","type":"address"}],"name":"setCryptoPunkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dapp","type":"address"},{"internalType":"address","name":"_customInterface","type":"address"}],"name":"setDappRelation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setPayment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tradeSquad","type":"address"}],"name":"setTradeSquadAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_vault","type":"address"}],"name":"setVaultAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dapp","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600180546001600160a01b031990811673b47e3cd837ddf8e4c57f05d70ab865de6e193bbb1790915560048054821673dbd4264248e2f814838702e0cb3015ac3a7157a1908117909155600580549092161790553480156200006557600080fd5b50600062000072620000cf565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055620000d3565b3390565b615fe080620000e36000396000f3fe608060405260043610620001f35760003560e01c8063715018a6116200010f578063c1be3b4a11620000a3578063e9abffe1116200006d578063e9abffe114620005db578063eed188b514620005f3578063f23a6e61146200060b578063f2fde38b1462000630576200023e565b8063c1be3b4a1462000555578063cf14e557146200057a578063dc788a24146200059f578063e7b061e814620005c4576200023e565b80639dfe9d6811620000e55780639dfe9d6814620004cf578063b19eee1314620004f4578063bc197c811462000519578063c041abb1146200053e576200023e565b8063715018a6146200047a57806385535cc514620004925780638da5cb5b14620004b7576200023e565b806342a22917116200018757806353d6fd59116200015d57806353d6fd5914620004005780635c975abb146200042557806363bf87d4146200043d57806368eb640d1462000455576200023e565b806342a22917146200038f5780634a10bc5e14620003c35780634c6545f414620003db576200023e565b806323e0aa4c11620001c957806323e0aa4c14620002e857806325d4eeb0146200031c57806331f01e6d1462000343578063411557d11462000368576200023e565b806301ffc9a71462000243578063150b7a02146200028057806319ba5e7314620002b4576200023e565b366200023e57336001600160a01b03167f0de0271e0148b63e6b759917905b6ae5d995f6081392a30b9fa9e23bb4fb98713460405162000234919062005a2a565b60405180910390a2005b600080fd5b3480156200025057600080fd5b50620002686200026236600462005240565b62000655565b604051620002779190620056af565b60405180910390f35b3480156200028d57600080fd5b50620002a56200029f366004620050c0565b6200068f565b604051620002779190620056ba565b348015620002c157600080fd5b50620002d9620002d3366004620051f4565b620006b9565b604051620002779190620058f0565b348015620002f557600080fd5b506200030d62000307366004620053e6565b620007a6565b60405162000277919062005971565b3480156200032957600080fd5b50620003416200033b36600462005222565b6200097b565b005b3480156200035057600080fd5b50620003416200036236600462004f7c565b62000a4a565b3480156200037557600080fd5b506200038062000ad4565b60405162000277919062005534565b3480156200039c57600080fd5b50620003b4620003ae366004620053c1565b62000ae3565b60405162000277919062005a2a565b348015620003d057600080fd5b506200038062000b18565b348015620003e857600080fd5b5062000380620003fa36600462004f7c565b62000b27565b3480156200040d57600080fd5b50620003416200041f366004620051bb565b62000b45565b3480156200043257600080fd5b506200026862000bd8565b3480156200044a57600080fd5b506200038062000be8565b3480156200046257600080fd5b50620003416200047436600462004fba565b62000bf7565b3480156200048757600080fd5b506200034162000c8d565b3480156200049f57600080fd5b5062000341620004b136600462004f7c565b62000d3f565b348015620004c457600080fd5b506200038062000dc9565b348015620004dc57600080fd5b5062000268620004ee36600462004f7c565b62000dd8565b3480156200050157600080fd5b50620003416200051336600462004f7c565b62000df6565b3480156200052657600080fd5b50620002a56200053836600462004ff7565b62000e80565b620003416200054f3660046200526a565b62000ead565b3480156200056257600080fd5b50620003416200057436600462005368565b62001c3d565b3480156200058757600080fd5b5062000341620005993660046200539a565b62001ceb565b348015620005ac57600080fd5b5062000341620005be36600462005368565b62001db8565b62000341620005d5366004620051f4565b62002a77565b348015620005e857600080fd5b5062000341620048e0565b3480156200060057600080fd5b50620003b462004983565b3480156200061857600080fd5b50620002a56200062a36600462005139565b62004989565b3480156200063d57600080fd5b50620003416200064f36600462004f7c565b620049b4565b60006301ffc9a760e01b6001600160e01b031983161480620006875750630271189760e51b6001600160e01b03198316145b90505b919050565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b620006c362004b2a565b6001600160a01b0383166000908152600c60209081526040808320858452600d9092529091205481548110620006f557fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b0390811694840194909452600280820154928401929092526003810154909316606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e0830152600883015491929161010084019160ff909116908111156200078e57fe5b60028111156200079a57fe5b90525090505b92915050565b620007b062004b93565b821562000959576000848152600a60205260409020805483908110620007d257fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b0390811684526001820154168385015260028101805483518187028101870185528181529495929493860193928301828280156200085657602002820191906000526020600020905b81548152602001906001019080831162000841575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015620008b057602002820191906000526020600020905b8154815260200190600101908083116200089b575b505050918352505060048201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015620009485780601f106200091c5761010080835404028352916020019162000948565b820191906000526020600020905b8154815290600101906020018083116200092a57829003601f168201915b505050505081525050905062000974565b6000848152600b60205260409020805483908110620007d257fe5b9392505050565b6200098562004abe565b6001600160a01b03166200099862000dc9565b6001600160a01b031614620009e3576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b620009ed62000bd8565b1562000a33576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600e805460ff191692151592909217909155600f55565b62000a5462004abe565b6001600160a01b031662000a6762000dc9565b6001600160a01b03161462000ab2576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031681565b6000811562000b0257506000828152600a6020526040902054620007a0565b506000828152600b6020526040902054620007a0565b6001546001600160a01b031681565b6001600160a01b039081166000908152600260205260409020541690565b62000b4f62004abe565b6001600160a01b031662000b6262000dc9565b6001600160a01b03161462000bad576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1690565b6004546001600160a01b031681565b62000c0162004abe565b6001600160a01b031662000c1462000dc9565b6001600160a01b03161462000c5f576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03918216600090815260066020526040902080546001600160a01b03191691909216179055565b62000c9762004abe565b6001600160a01b031662000caa62000dc9565b6001600160a01b03161462000cf5576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b62000d4962004abe565b6001600160a01b031662000d5c62000dc9565b6001600160a01b03161462000da7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001600160a01b031660009081526007602052604090205460ff1690565b62000e0062004abe565b6001600160a01b031662000e1362000dc9565b6001600160a01b03161462000e5e576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b7fbc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f669414662198975050505050505050565b62000eb762000bd8565b1562000efd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600e5460ff16156200101b57600480546040516370a0823160e01b81526001600160a01b03909116916370a082319162000f3a9133910162005534565b60206040518083038186803b15801562000f5357600080fd5b505afa15801562000f68573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f8e919062005381565b62000fe6576040830151600f5462000fa69162004ac2565b34101562000fd15760405162461bcd60e51b815260040162000fc89062005801565b60405180910390fd5b62000fdb62004983565b60e084015262001015565b82604001513410156200100d5760405162461bcd60e51b815260040162000fc89062005801565b600060e08401525b62001042565b8260400151341015620010425760405162461bcd60e51b815260040162000fc89062005801565b33602084015262001054600862004b1d565b83524260a0840152600060c084018190526101008401819052338152600c602052604081205490600d906200108a600862004b1d565b81526020808201929092526040908101600090812093909355338352600c82528083208054600181810183559185529383902087516009909502019384559186015183830180546001600160a01b039283166001600160a01b0319918216179091559187015160028086019190915560608801516003860180549190931693169290921790556080860151600484015560a0860151600584015560c0860151600684015560e086015160078401556101008601516008840180548895949293919260ff199091169184908111156200115e57fe5b0217905550505060005b82518110156200124e5783516000908152600a6020526040902083518490839081106200119157fe5b602090810291909101810151825460018181018555600094855293839020825160059092020180546001600160a01b039283166001600160a01b031991821617825583850151958201805496909316951694909417905560408101518051919392620012069260028501929091019062004bd4565b50606082015180516200122491600384019160209091019062004bd4565b50608082015180516200124291600484019160209091019062004c24565b50505060010162001168565b5060005b8151811015620013385783516000908152600b6020526040902082518390839081106200127b57fe5b602090810291909101810151825460018181018555600094855293839020825160059092020180546001600160a01b039283166001600160a01b031991821617825583850151958201805496909316951694909417905560408101518051919392620012f09260028501929091019062004bd4565b50606082015180516200130e91600384019160209091019062004bd4565b50608082015180516200132c91600484019160209091019062004c24565b50505060010162001252565b5060005b83516000908152600a602052604090205481101562001bc45783516000908152600a6020526040812080546007929190849081106200137757fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff16620013c35760405162461bcd60e51b815260040162000fc89062005742565b83516000908152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee919083908110620013f757fe5b60009182526020909120600160059092020101546001600160a01b03161415620015025783516000908152600a602052604090208054829081106200143857fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b03909316926323b872dd92913091869081106200147f57fe5b90600052602060002090600502016003016000815481106200149d57fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620014c893929190620055c6565b600060405180830381600087803b158015620014e357600080fd5b505af1158015620014f8573d6000803e3d6000fd5b5050505062001bbb565b83516000908152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200153657fe5b60009182526020909120600160059092020101546001600160a01b031614156200163c5783516000908152600a602052604090208054829081106200157757fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b039093169263b88d4fde9291309186908110620015be57fe5b9060005260206000209060050201600201600081548110620015dc57fe5b9060005260206000200154600a60008a60000151815260200190815260200160002086815481106200160a57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b8152600401620014c89493929190620055ea565b83516000908152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200167057fe5b60009182526020909120600160059092020101546001600160a01b03161415620017935783516000908152600a60205260409020805482908110620016b157fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b0390931692632eb2c2d69291309186908110620016f857fe5b9060005260206000209060050201600201600a60008a60000151815260200190815260200160002086815481106200172c57fe5b9060005260206000209060050201600301600a60008b60000151815260200190815260200160002087815481106200176057fe5b90600052602060002090600502016004016040518663ffffffff1660e01b8152600401620014c895949392919062005562565b60015484516000908152600a6020526040902080546001600160a01b039092169183908110620017bf57fe5b60009182526020909120600160059092020101546001600160a01b03161415620019e45783516000908152600a6020526040812080546003929190849081106200180557fe5b90600052602060002090600502016002016000815481106200182357fe5b6000918252602080832090910154835282019290925260400190205460ff1615620018625760405162461bcd60e51b815260040162000fc89062005882565b3360009081526002602090815260408083205460015488518552600a909352922080546001600160a01b0393841693909216916358178168919085908110620018a757fe5b9060005260206000209060050201600201600081548110620018c557fe5b90600052602060002001546040518263ffffffff1660e01b8152600401620018ee919062005a2a565b60206040518083038186803b1580156200190757600080fd5b505afa1580156200191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001942919062004f9b565b6001600160a01b0316146200196b5760405162461bcd60e51b815260040162000fc89062005716565b83516000908152600a6020526040812080546001926003929091859081106200199057fe5b9060005260206000209060050201600201600081548110620019ae57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062001bbb565b83516000908152600a60205260408120805460069291908490811062001a0657fe5b600091825260208083206005909202909101546001600160a01b03908116845283820194909452604092830182205488518352600a9091529190208054919092169163810a6653918490811062001a5957fe5b600091825260208083206005909202909101548882015189518452600a9092526040832080546001600160a01b03909216936006929091908890811062001a9c57fe5b600091825260208083206005909202909101546001600160a01b0390811684528382019490945260409283018220548c518352600a90915291902080549190921691908790811062001aea57fe5b9060005260206000209060050201600201600a60008b600001518152602001908152602001600020878154811062001b1e57fe5b9060005260206000209060050201600301600a60008c600001518152602001908152602001600020888154811062001b5257fe5b90600052602060002090600502016004016040518763ffffffff1660e01b815260040162001b869695949392919062005642565b600060405180830381600087803b15801562001ba157600080fd5b505af115801562001bb6573d6000803e3d6000fd5b505050505b6001016200133c565b836101000151600281111562001bd657fe5b6201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d8760000151886060015160405162001c2392919062005a33565b60405180910390a462001c37600862004b21565b50505050565b60008181526003602052604090205460ff161562001c6f5760405162461bcd60e51b815260040162000fc890620058b9565b3360008181526002602052604090819020546001549151634f6779cd60e11b81526001600160a01b0391821693639ecef39a9362001cb49316918690600401620055c6565b600060405180830381600087803b15801562001ccf57600080fd5b505af115801562001ce4573d6000803e3d6000fd5b5050505050565b336000908152600c60209081526040808320858452600d909252909120548154811062001d1457fe5b60009182526020909120600990910201600101546001600160a01b0316331462001d525760405162461bcd60e51b815260040162000fc890620056cf565b336000908152600c60209081526040808320858452600d90925290912054815483929190811062001d7f57fe5b906000526020600020906009020160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b336000818152600c60209081526040808320858452600d909252909120548154811062001de157fe5b60009182526020909120600160099092020101546001600160a01b03161462001e1e5760405162461bcd60e51b815260040162000fc89062005785565b336000908152600c60209081526040808320848452600d9092528220548154811062001e4657fe5b600091825260209091206008600990920201015460ff16600281111562001e6957fe5b1462001e895760405162461bcd60e51b815260040162000fc890620057ca565b336000908152600c60209081526040808320848452600d9092528220548154811062001eb157fe5b906000526020600020906009020160070154111562001f3957336000818152600c60209081526040808320858452600d9092529091205481546108fc929190811062001ef957fe5b9060005260206000209060090201600701549081150290604051600060405180830381858888f1935050505015801562001f37573d6000803e3d6000fd5b505b60005b6000828152600a602052604090205481101562002892576000828152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee91908390811062001f8557fe5b60009182526020909120600160059092020101546001600160a01b03161415620020d4576000828152600a6020526040902080548290811062001fc457fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b039093169263a9059cbb92919081106200200e57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a600086815260200190815260200160002084815481106200205257fe5b90600052602060002090600502016003016000815481106200207057fe5b90600052602060002001546040518363ffffffff1660e01b81526004016200209a92919062005629565b600060405180830381600087803b158015620020b557600080fd5b505af1158015620020ca573d6000803e3d6000fd5b5050505062002889565b6000828152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200210657fe5b60009182526020909120600160059092020101546001600160a01b031614156200224f576000828152600a602052604090208054829081106200214557fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b039093169263b88d4fde923092909181106200219157fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620021d557fe5b9060005260206000209060050201600201600081548110620021f357fe5b9060005260206000200154600a600088815260200190815260200160002086815481106200221d57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b81526004016200209a9493929190620055ea565b6000828152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200228157fe5b60009182526020909120600160059092020101546001600160a01b03161415620023e3576000828152600a60205260409020805482908110620022c057fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b0390931692632eb2c2d6923092909181106200230c57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a600087815260200190815260200160002085815481106200235057fe5b9060005260206000209060050201600201600a600088815260200190815260200160002086815481106200238057fe5b9060005260206000209060050201600301600a60008981526020019081526020016000208781548110620023b057fe5b90600052602060002090600502016004016040518663ffffffff1660e01b81526004016200209a95949392919062005562565b6001546000838152600a6020526040902080546001600160a01b0390921691839081106200240d57fe5b60009182526020909120600160059092020101546001600160a01b03161415620026745733600090815260026020908152604080832054600154868552600a909352922080546001600160a01b03938416939092169163581781689190859081106200247557fe5b90600052602060002090600502016002016000815481106200249357fe5b90600052602060002001546040518263ffffffff1660e01b8152600401620024bc919062005a2a565b60206040518083038186803b158015620024d557600080fd5b505afa158015620024ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002510919062004f9b565b6001600160a01b031614620025395760405162461bcd60e51b815260040162000fc89062005716565b33600081815260026020908152604080832054600154878552600a909352922080546001600160a01b039384169463ca4fb85694909316929190869081106200257e57fe5b90600052602060002090600502016002016000815481106200259c57fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620025c793929190620055c6565b600060405180830381600087803b158015620025e257600080fd5b505af1158015620025f7573d6000803e3d6000fd5b50505050600060036000600a600086815260200190815260200160002084815481106200262057fe5b90600052602060002090600502016002016000815481106200263e57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062002889565b6000828152600a6020526040812080546006929190849081106200269457fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600a9091529190208054919092169163810a66539184908110620026e657fe5b60009182526020808320600590920290910154868352600a9091526040822080546001600160a01b0390921692600692909190879081106200272457fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054338352600c82528383208a8452600d909252929091205481549290931692909181106200277c57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a60008881526020019081526020016000208681548110620027c057fe5b9060005260206000209060050201600201600a60008981526020019081526020016000208781548110620027f057fe5b9060005260206000209060050201600301600a60008a815260200190815260200160002088815481106200282057fe5b90600052602060002090600502016004016040518763ffffffff1660e01b8152600401620028549695949392919062005642565b600060405180830381600087803b1580156200286f57600080fd5b505af115801562002884573d6000803e3d6000fd5b505050505b60010162001f3c565b336000908152600c60209081526040808320858452600d90925282205481548110620028ba57fe5b90600052602060002090600902016002015411156200298857336000908152600c60209081526040808320858452600d9092529091205481548110620028fc57fe5b6000918252602080832060016009909302019190910154338352600c82526040808420868552600d9093529092205481546001600160a01b03909316926108fc92919081106200294857fe5b9060005260206000209060090201600201549081150290604051600060405180830381858888f1935050505015801562002986573d6000803e3d6000fd5b505b336000908152600c60209081526040808320858452600d909252909120548154429291908110620029b557fe5b6000918252602080832060066009909302019190910192909255338152600c82526040808220858352600d909352902054815460029291908110620029f657fe5b60009182526020909120600860099092020101805460ff1916600183600281111562002a1e57fe5b021790555060026201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d85600060405162002a6b92919062005a33565b60405180910390a45050565b62002a8162000bd8565b1562002ac7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0382166000908152600c60209081526040808320848452600d9092528220548154811062002af857fe5b600091825260209091206008600990920201015460ff16600281111562002b1b57fe5b1462002b3b5760405162461bcd60e51b815260040162000fc890620057ca565b6001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815433929190811062002b7157fe5b60009182526020909120600360099092020101546001600160a01b03161462002bae5760405162461bcd60e51b815260040162000fc89062005785565b600e5460ff161562002ec657600480546040516370a0823160e01b81526001600160a01b03909116916370a082319162002beb9133910162005534565b60206040518083038186803b15801562002c0457600080fd5b505afa15801562002c19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c3f919062005381565b62002d91576001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815462002c9b929190811062002c7d57fe5b6000918252602090912060046009909202010154600f549062004ac2565b34101562002cbd5760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252822054815462002d13929190811062002cf557fe5b6000918252602090912060076009909202010154600f549062004ac2565b111562002d8b576005546001600160a01b038381166000908152600c60209081526040808320868452600d90925290912054815492909316926108fc9262002d60929190811062002cf557fe5b6040518115909202916000818181858888f1935050505015801562002d89573d6000803e3d6000fd5b505b62002ec0565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252909120548154811062002dc357fe5b90600052602060002090600902016004015434101562002df75760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d9092528220548154811062002e2857fe5b906000526020600020906009020160070154111562002ec0576005546001600160a01b038381166000908152600c60209081526040808320868452600d90925290912054815492909316926108fc92811062002e8057fe5b9060005260206000209060090201600701549081150290604051600060405180830381858888f1935050505015801562002ebe573d6000803e3d6000fd5b505b62002f2c565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252909120548154811062002ef857fe5b90600052602060002090600902016004015434101562002f2c5760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815433929190811062002f6257fe5b6000918252602080832060099290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152600c82526040808220848352600d909352902054815442929190811062002fba57fe5b60009182526020808320600660099093020191909101929092556001600160a01b0384168152600c82526040808220848352600d9093529020548154600192919081106200300457fe5b60009182526020909120600860099092020101805460ff191660018360028111156200302c57fe5b021790555060005b6000828152600a602052604090205481101562003ae9576000828152600a6020526040812080546007929190849081106200306b57fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff16620030b75760405162461bcd60e51b815260040162000fc89062005742565b6000828152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee919083908110620030e957fe5b60009182526020909120600160059092020101546001600160a01b031614156200323b576000828152600a602052604090208054829081106200312857fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263a9059cbb92919081106200317557fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008681526020019081526020016000208481548110620031b957fe5b9060005260206000209060050201600301600081548110620031d757fe5b90600052602060002001546040518363ffffffff1660e01b81526004016200320192919062005629565b600060405180830381600087803b1580156200321c57600080fd5b505af115801562003231573d6000803e3d6000fd5b5050505062003ae0565b6000828152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200326d57fe5b60009182526020909120600160059092020101546001600160a01b03161415620033b9576000828152600a60205260409020805482908110620032ac57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263b88d4fde92309290918110620032fb57fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a600087815260200190815260200160002085815481106200333f57fe5b90600052602060002090600502016002016000815481106200335d57fe5b9060005260206000200154600a600088815260200190815260200160002086815481106200338757fe5b90600052602060002090600502016004016040518563ffffffff1660e01b8152600401620032019493929190620055ea565b6000828152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c39919083908110620033eb57fe5b60009182526020909120600160059092020101546001600160a01b0316141562003550576000828152600a602052604090208054829081106200342a57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d9094529093205482549390911692632eb2c2d6923092909181106200347957fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620034bd57fe5b9060005260206000209060050201600201600a60008881526020019081526020016000208681548110620034ed57fe5b9060005260206000209060050201600301600a600089815260200190815260200160002087815481106200351d57fe5b90600052602060002090600502016004016040518663ffffffff1660e01b81526004016200320195949392919062005562565b6001546000838152600a6020526040902080546001600160a01b0390921691839081106200357a57fe5b60009182526020909120600160059092020101546001600160a01b03161415620038c9576001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481546002939291908110620035d557fe5b6000918252602080832060016009909302018201546001600160a01b0390811685528482019590955260409384018320549154878452600a909152929091208054918416939290921691635817816891859081106200363057fe5b90600052602060002090600502016002016000815481106200364e57fe5b90600052602060002001546040518263ffffffff1660e01b815260040162003677919062005a2a565b60206040518083038186803b1580156200369057600080fd5b505afa158015620036a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036cb919062004f9b565b6001600160a01b031614620036f45760405162461bcd60e51b815260040162000fc89062005716565b6001600160a01b0383166000908152600c60209081526040808320858452600d909252822054815460029392919081106200372b57fe5b6000918252602080832060016009909302018201546001600160a01b03908116855284820195909552604093840183205491548886168452600c8252848420888552600d909252939092205482549185169463ca4fb8569416929181106200378f57fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620037d357fe5b9060005260206000209060050201600201600081548110620037f157fe5b90600052602060002001546040518463ffffffff1660e01b81526004016200381c93929190620055c6565b600060405180830381600087803b1580156200383757600080fd5b505af11580156200384c573d6000803e3d6000fd5b50505050600060036000600a600086815260200190815260200160002084815481106200387557fe5b90600052602060002090600502016002016000815481106200389357fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062003ae0565b6000828152600a602052604081208054600692919084908110620038e957fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600a9091529190208054919092169163810a665391849081106200393b57fe5b60009182526020808320600590920290910154868352600a9091526040822080546001600160a01b0390921692600692909190879081106200397957fe5b600091825260208083206005909202909101546001600160a01b0390811684528382019490945260409283018220548a85168352600c82528383208a8452600d90925292909120548154929093169290918110620039d357fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a6000888152602001908152602001600020868154811062003a1757fe5b9060005260206000209060050201600201600a6000898152602001908152602001600020878154811062003a4757fe5b9060005260206000209060050201600301600a60008a8152602001908152602001600020888154811062003a7757fe5b90600052602060002090600502016004016040518763ffffffff1660e01b815260040162003aab9695949392919062005642565b600060405180830381600087803b15801562003ac657600080fd5b505af115801562003adb573d6000803e3d6000fd5b505050505b60010162003034565b6001600160a01b0383166000908152600c60209081526040808320858452600d9092528220548154811062003b1a57fe5b906000526020600020906009020160020154111562003bf4576001600160a01b0383166000908152600c60209081526040808320858452600d909252909120548154811062003b6557fe5b60009182526020808320600360099093020191909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926108fc929190811062003bb457fe5b9060005260206000209060090201600201549081150290604051600060405180830381858888f1935050505015801562003bf2573d6000803e3d6000fd5b505b5060005b6000828152600b602052604090205481101562004781576000828152600b60205260408120805460079291908490811062003c2f57fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff1662003c7b5760405162461bcd60e51b815260040162000fc89062005742565b6000828152600b6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee91908390811062003cad57fe5b60009182526020909120600160059092020101546001600160a01b0316141562003e49576000828152600b6020526040902080548290811062003cec57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926323b872dd929190811062003d3957fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d9094529093205482549390911692811062003d8257fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b6000878152602001908152602001600020858154811062003dc657fe5b906000526020600020906005020160030160008154811062003de457fe5b90600052602060002001546040518463ffffffff1660e01b815260040162003e0f93929190620055c6565b600060405180830381600087803b15801562003e2a57600080fd5b505af115801562003e3f573d6000803e3d6000fd5b5050505062004778565b6000828152600b6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d7991908390811062003e7b57fe5b60009182526020909120600160059092020101546001600160a01b031614156200400e576000828152600b6020526040902080548290811062003eba57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263b88d4fde929190811062003f0757fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d9094529093205482549390911692811062003f5057fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b6000878152602001908152602001600020858154811062003f9457fe5b906000526020600020906005020160020160008154811062003fb257fe5b9060005260206000200154600b6000888152602001908152602001600020868154811062003fdc57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b815260040162003e0f9493929190620055ea565b6000828152600b60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200404057fe5b60009182526020909120600160059092020101546001600160a01b03161415620041ec576000828152600b602052604090208054829081106200407f57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d9094529093205482549390911692632eb2c2d69291908110620040cc57fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d909452909320548254939091169281106200411557fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b600087815260200190815260200160002085815481106200415957fe5b9060005260206000209060050201600201600b600088815260200190815260200160002086815481106200418957fe5b9060005260206000209060050201600301600b60008981526020019081526020016000208781548110620041b957fe5b90600052602060002090600502016004016040518663ffffffff1660e01b815260040162003e0f95949392919062005562565b6001546000838152600b6020526040902080546001600160a01b0390921691839081106200421657fe5b60009182526020909120600160059092020101546001600160a01b031614156200456b576001600160a01b0383166000908152600c60209081526040808320858452600d909252822054815460029392919081106200427157fe5b60009182526020808320600360099093020191909101546001600160a01b039081168452838201949094526040928301822054600154878452600b9092529290912080549284169391909116916358178168919085908110620042d057fe5b9060005260206000209060050201600201600081548110620042ee57fe5b90600052602060002001546040518263ffffffff1660e01b815260040162004317919062005a2a565b60206040518083038186803b1580156200433057600080fd5b505afa15801562004345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200436b919062004f9b565b6001600160a01b031614620043945760405162461bcd60e51b815260040162000fc89062005716565b6001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481546002939291908110620043cb57fe5b60009182526020808320600360099093020191909101546001600160a01b0390811684528382019490945260409283018220546001548886168452600c8352848420888552600d909352939092205481549285169463ca4fb85694169281106200443157fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b600087815260200190815260200160002085815481106200447557fe5b90600052602060002090600502016002016000815481106200449357fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620044be93929190620055c6565b600060405180830381600087803b158015620044d957600080fd5b505af1158015620044ee573d6000803e3d6000fd5b50505050600060036000600b600086815260200190815260200160002084815481106200451757fe5b90600052602060002090600502016002016000815481106200453557fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062004778565b6000828152600b6020526040812080546006929190849081106200458b57fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600b9091529190208054919092169163810a66539184908110620045dd57fe5b600091825260208083206005909202909101546001600160a01b038881168452600c83526040808520898652600d909452909320548254939091169281106200462257fe5b60009182526020808320600360099093020191909101546001600160a01b038981168452600c835260408085208a8652600d909452909320548254939091169281106200466b57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b60008881526020019081526020016000208681548110620046af57fe5b9060005260206000209060050201600201600b60008981526020019081526020016000208781548110620046df57fe5b9060005260206000209060050201600301600b60008a815260200190815260200160002088815481106200470f57fe5b90600052602060002090600502016004016040518763ffffffff1660e01b8152600401620047439695949392919062005642565b600060405180830381600087803b1580156200475e57600080fd5b505af115801562004773573d6000803e3d6000fd5b505050505b60010162003bf8565b6001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481548110620047b257fe5b90600052602060002090600902016004015411156200488c576001600160a01b0383166000908152600c60209081526040808320858452600d9092529091205481548110620047fd57fe5b60009182526020808320600160099093020191909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926108fc92919081106200484c57fe5b9060005260206000209060090201600401549081150290604051600060405180830381858888f193505050501580156200488a573d6000803e3d6000fd5b505b60016201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d8587604051620048d392919062005a33565b60405180910390a4505050565b336000908152600260205260409020546001600160a01b031615620049195760405162461bcd60e51b815260040162000fc8906200584b565b3033604051620049299062004ca6565b6200493692919062005548565b604051809103906000f08015801562004953573d6000803e3d6000fd5b5033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600f5490565b7ff23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf979695505050505050565b620049be62004abe565b6001600160a01b0316620049d162000dc9565b6001600160a01b03161462004a1c576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03811662004a635760405162461bcd60e51b815260040180806020018281038252602681526020018062005f656026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008282018381101562000974576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b80546001019055565b6040518061012001604052806000815260200160006001600160a01b031681526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000600281111562004b8e57fe5b905290565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b82805482825590600052602060002090810192821562004c12579160200282015b8281111562004c1257825182559160200191906001019062004bf5565b5062004c2092915062004cb4565b5090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262004c5c576000855562004c12565b82601f1062004c7757805160ff191683800117855562004c12565b8280016001018555821562004c12579182018281111562004c1257825182559160200191906001019062004bf5565b6104b18062005ab483390190565b5b8082111562004c20576000815560010162004cb5565b80356200068a8162005a9a565b600082601f83011262004ce9578081fd5b8135602062004d0262004cfc8362005a6f565b62005a4a565b82815281810190858301855b8581101562004df4578135880160a080601f19838d0301121562004d30578889fd5b62004d3b8162005a4a565b62004d4888840162004ccb565b8152604062004d5981850162004ccb565b89830152606084013567ffffffffffffffff8082111562004d78578c8dfd5b62004d888f8c8489010162004e4d565b83850152608086013592508083111562004da0578c8dfd5b62004db08f8c8589010162004e4d565b606085015293850135938085111562004dc7578c8dfd5b50505062004dda8c898486010162004f02565b608082015286525050928401929084019060010162004d0e565b5090979650505050505050565b60008083601f84011262004e13578182fd5b50813567ffffffffffffffff81111562004e2b578182fd5b602083019150836020808302850101111562004e4657600080fd5b9250929050565b600082601f83011262004e5e578081fd5b8135602062004e7162004cfc8362005a6f565b828152818101908583018385028701840188101562004e8e578586fd5b855b8581101562004df45781358452928401929084019060010162004e90565b803580151581146200068a57600080fd5b60008083601f84011262004ed1578182fd5b50813567ffffffffffffffff81111562004ee9578182fd5b60208301915083602082850101111562004e4657600080fd5b600082601f83011262004f13578081fd5b813567ffffffffffffffff81111562004f2857fe5b62004f3d601f8201601f191660200162005a4a565b81815284602083860101111562004f52578283fd5b816020850160208301379081016020019190915292915050565b8035600381106200068a57600080fd5b60006020828403121562004f8e578081fd5b8135620009748162005a9a565b60006020828403121562004fad578081fd5b8151620009748162005a9a565b6000806040838503121562004fcd578081fd5b823562004fda8162005a9a565b9150602083013562004fec8162005a9a565b809150509250929050565b60008060008060008060008060a0898b03121562005013578384fd5b8835620050208162005a9a565b97506020890135620050328162005a9a565b9650604089013567ffffffffffffffff808211156200504f578586fd5b6200505d8c838d0162004e01565b909850965060608b013591508082111562005076578586fd5b620050848c838d0162004e01565b909650945060808b01359150808211156200509d578384fd5b50620050ac8b828c0162004ebf565b999c989b5096995094979396929594505050565b600080600080600060808688031215620050d8578283fd5b8535620050e58162005a9a565b94506020860135620050f78162005a9a565b935060408601359250606086013567ffffffffffffffff8111156200511a578182fd5b620051288882890162004ebf565b969995985093965092949392505050565b60008060008060008060a0878903121562005152578384fd5b86356200515f8162005a9a565b95506020870135620051718162005a9a565b94506040870135935060608701359250608087013567ffffffffffffffff8111156200519b578283fd5b620051a989828a0162004ebf565b979a9699509497509295939492505050565b60008060408385031215620051ce578182fd5b8235620051db8162005a9a565b9150620051eb6020840162004eae565b90509250929050565b6000806040838503121562005207578182fd5b8235620052148162005a9a565b946020939093013593505050565b6000806040838503121562005235578182fd5b620052148362004eae565b60006020828403121562005252578081fd5b81356001600160e01b03198116811462000974578182fd5b600080600083850361016081121562005281578182fd5b6101208082121562005291578283fd5b6200529c8162005a4a565b915085358252620052b06020870162004ccb565b602083015260408601356040830152620052cd6060870162004ccb565b60608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101006200530a81880162004f6c565b9083015290935084013567ffffffffffffffff808211156200532a578283fd5b620053388783880162004cd8565b93506101408601359150808211156200534f578283fd5b506200535e8682870162004cd8565b9150509250925092565b6000602082840312156200537a578081fd5b5035919050565b60006020828403121562005393578081fd5b5051919050565b60008060408385031215620053ad578182fd5b82359150602083013562004fec8162005a9a565b60008060408385031215620053d4578182fd5b82359150620051eb6020840162004eae565b600080600060608486031215620053fb578081fd5b833592506200540d6020850162004eae565b9150604084013590509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156200545b578151875295820195908201906001016200543d565b509495945050505050565b6000815480845260208085019450838352808320835b838110156200545b578154875295820195600191820191016200547c565b60008154600180821660008114620054bb5760018114620054da576200551c565b60028304607f16865260ff19831660208701526040860193506200551c565b60028304808752620054ec8662005a8e565b60005b82811015620055125781546020828b0101528482019150602081019050620054ef565b8801602001955050505b50505092915050565b600381106200553057fe5b9052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0386811682528516602082015260a060408201819052600090620055909083018662005466565b8281036060840152620055a4818662005466565b90508281036080840152620055ba81856200549a565b98975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906200561f908301846200549a565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03878116825286811660208301528516604082015260c060608201819052600090620056789083018662005466565b82810360808401526200568c818662005466565b905082810360a0840152620056a281856200549a565b9998505050505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526027908201527f4d6573736167652073656e646572206d7573742062652074686520737761702060408201526631b932b0ba37b960c91b606082015260800190565b60208082526012908201527143727970746f50756e6b206d697373696e6760701b604082015260600190565b60208082526023908201527f412044415050206973206e6f742068616e646c6564206279207468652073797360408201526274656d60e81b606082015260800190565b60208082526025908201527f596f75277265206e6f742074686520696e746572657374656420636f756e74656040820152641c9c185c9d60da1b606082015260800190565b60208082526019908201527f5377617020537461747573206973206e6f74206f70656e656400000000000000604082015260600190565b6020808252602a908201527f4e6f7420656e6f756768742057454920666f722068616e646c652074686520746040820152693930b739b0b1ba34b7b760b11b606082015260800190565b60208082526018908201527f50726f787920616c726561647920726567697374657265640000000000000000604082015260600190565b6020808252601c908201527f50756e6b20696e20757365206f6e20616e6f7468657220747261646500000000604082015260600190565b6020808252601d908201527f50756e6b20616c726561647920696e2075736520696e20612073776170000000604082015260600190565b815181526020808301516001600160a01b031690820152604080830151908201526060808301516101208301916200592b908401826200541d565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151620059698285018262005525565b505092915050565b6000602080835260018060a01b038085511682850152808286015116604085015250604084015160a06060850152620059ae60c08501826200542a565b90506060850151601f1980868403016080870152620059ce83836200542a565b925060808701519150808684030160a08701528151808452855b8181101562005a05578381018601518582018701528501620059e8565b8181111562005a1657868683870101525b50601f011691909101909101949350505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b60405181810167ffffffffffffffff8111828210171562005a6757fe5b604052919050565b600067ffffffffffffffff82111562005a8457fe5b5060209081020190565b60009081526020902090565b6001600160a01b038116811462005ab057600080fd5b5056fe608060405234801561001057600080fd5b506040516104b13803806104b183398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100ae565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008e578182fd5b61009783610060565b91506100a560208401610060565b90509250929050565b6103f4806100bd6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80639ecef39a14610046578063ca4fb8561461005b578063da023b211461006e575b600080fd5b61005961005436600461029f565b610081565b005b61005961006936600461029f565b6101ea565b61005961007c366004610260565b610214565b6000546001600160a01b031633146100b45760405162461bcd60e51b81526004016100ab9061032f565b60405180910390fd5b6001546001600160a01b038381169116146100e15760405162461bcd60e51b81526004016100ab906102f8565b604051630b02f02d60e31b815230906001600160a01b0385169063581781689061010f90859060040161039d565b60206040518083038186803b15801561012757600080fd5b505afa15801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f9190610283565b6001600160a01b0316146101855760405162461bcd60e51b81526004016100ab90610366565b6040516322dca8bb60e21b81526001600160a01b03841690638b72a2ec906101b390859085906004016102df565b600060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031633146100e15760405162461bcd60e51b81526004016100ab9061032f565b6000546001600160a01b0316331461023e5760405162461bcd60e51b81526004016100ab9061032f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610271578081fd5b813561027c816103a6565b9392505050565b600060208284031215610294578081fd5b815161027c816103a6565b6000806000606084860312156102b3578182fd5b83356102be816103a6565b925060208401356102ce816103a6565b929592945050506040919091013590565b6001600160a01b03929092168252602082015260400190565b60208082526019908201527f596f75277265206e6f74207468652070756e6b206f776e657200000000000000604082015260600190565b6020808252601d908201527f596f75277265206e6f742074686520636f6e7472616374206f776e6572000000604082015260600190565b6020808252601f908201527f50756e6b206973206d697373696e672066726f6d20746869732050726f787900604082015260600190565b90815260200190565b6001600160a01b03811681146103bb57600080fd5b5056fea264697066735822122056e6fbcd26bb716264388409c08ba431201ebae93ad34f1aa7f0298533f6f8b764736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212207c6afe2c4470236159a290c787a5bb758561175a25d0d28d387a7441f640838864736f6c63430007060033
Deployed Bytecode
0x608060405260043610620001f35760003560e01c8063715018a6116200010f578063c1be3b4a11620000a3578063e9abffe1116200006d578063e9abffe114620005db578063eed188b514620005f3578063f23a6e61146200060b578063f2fde38b1462000630576200023e565b8063c1be3b4a1462000555578063cf14e557146200057a578063dc788a24146200059f578063e7b061e814620005c4576200023e565b80639dfe9d6811620000e55780639dfe9d6814620004cf578063b19eee1314620004f4578063bc197c811462000519578063c041abb1146200053e576200023e565b8063715018a6146200047a57806385535cc514620004925780638da5cb5b14620004b7576200023e565b806342a22917116200018757806353d6fd59116200015d57806353d6fd5914620004005780635c975abb146200042557806363bf87d4146200043d57806368eb640d1462000455576200023e565b806342a22917146200038f5780634a10bc5e14620003c35780634c6545f414620003db576200023e565b806323e0aa4c11620001c957806323e0aa4c14620002e857806325d4eeb0146200031c57806331f01e6d1462000343578063411557d11462000368576200023e565b806301ffc9a71462000243578063150b7a02146200028057806319ba5e7314620002b4576200023e565b366200023e57336001600160a01b03167f0de0271e0148b63e6b759917905b6ae5d995f6081392a30b9fa9e23bb4fb98713460405162000234919062005a2a565b60405180910390a2005b600080fd5b3480156200025057600080fd5b50620002686200026236600462005240565b62000655565b604051620002779190620056af565b60405180910390f35b3480156200028d57600080fd5b50620002a56200029f366004620050c0565b6200068f565b604051620002779190620056ba565b348015620002c157600080fd5b50620002d9620002d3366004620051f4565b620006b9565b604051620002779190620058f0565b348015620002f557600080fd5b506200030d62000307366004620053e6565b620007a6565b60405162000277919062005971565b3480156200032957600080fd5b50620003416200033b36600462005222565b6200097b565b005b3480156200035057600080fd5b50620003416200036236600462004f7c565b62000a4a565b3480156200037557600080fd5b506200038062000ad4565b60405162000277919062005534565b3480156200039c57600080fd5b50620003b4620003ae366004620053c1565b62000ae3565b60405162000277919062005a2a565b348015620003d057600080fd5b506200038062000b18565b348015620003e857600080fd5b5062000380620003fa36600462004f7c565b62000b27565b3480156200040d57600080fd5b50620003416200041f366004620051bb565b62000b45565b3480156200043257600080fd5b506200026862000bd8565b3480156200044a57600080fd5b506200038062000be8565b3480156200046257600080fd5b50620003416200047436600462004fba565b62000bf7565b3480156200048757600080fd5b506200034162000c8d565b3480156200049f57600080fd5b5062000341620004b136600462004f7c565b62000d3f565b348015620004c457600080fd5b506200038062000dc9565b348015620004dc57600080fd5b5062000268620004ee36600462004f7c565b62000dd8565b3480156200050157600080fd5b50620003416200051336600462004f7c565b62000df6565b3480156200052657600080fd5b50620002a56200053836600462004ff7565b62000e80565b620003416200054f3660046200526a565b62000ead565b3480156200056257600080fd5b50620003416200057436600462005368565b62001c3d565b3480156200058757600080fd5b5062000341620005993660046200539a565b62001ceb565b348015620005ac57600080fd5b5062000341620005be36600462005368565b62001db8565b62000341620005d5366004620051f4565b62002a77565b348015620005e857600080fd5b5062000341620048e0565b3480156200060057600080fd5b50620003b462004983565b3480156200061857600080fd5b50620002a56200062a36600462005139565b62004989565b3480156200063d57600080fd5b50620003416200064f36600462004f7c565b620049b4565b60006301ffc9a760e01b6001600160e01b031983161480620006875750630271189760e51b6001600160e01b03198316145b90505b919050565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b620006c362004b2a565b6001600160a01b0383166000908152600c60209081526040808320858452600d9092529091205481548110620006f557fe5b6000918252602091829020604080516101208101825260099093029091018054835260018101546001600160a01b0390811694840194909452600280820154928401929092526003810154909316606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e0830152600883015491929161010084019160ff909116908111156200078e57fe5b60028111156200079a57fe5b90525090505b92915050565b620007b062004b93565b821562000959576000848152600a60205260409020805483908110620007d257fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b0390811684526001820154168385015260028101805483518187028101870185528181529495929493860193928301828280156200085657602002820191906000526020600020905b81548152602001906001019080831162000841575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015620008b057602002820191906000526020600020905b8154815260200190600101908083116200089b575b505050918352505060048201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015620009485780601f106200091c5761010080835404028352916020019162000948565b820191906000526020600020905b8154815290600101906020018083116200092a57829003601f168201915b505050505081525050905062000974565b6000848152600b60205260409020805483908110620007d257fe5b9392505050565b6200098562004abe565b6001600160a01b03166200099862000dc9565b6001600160a01b031614620009e3576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b620009ed62000bd8565b1562000a33576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600e805460ff191692151592909217909155600f55565b62000a5462004abe565b6001600160a01b031662000a6762000dc9565b6001600160a01b03161462000ab2576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031681565b6000811562000b0257506000828152600a6020526040902054620007a0565b506000828152600b6020526040902054620007a0565b6001546001600160a01b031681565b6001600160a01b039081166000908152600260205260409020541690565b62000b4f62004abe565b6001600160a01b031662000b6262000dc9565b6001600160a01b03161462000bad576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1690565b6004546001600160a01b031681565b62000c0162004abe565b6001600160a01b031662000c1462000dc9565b6001600160a01b03161462000c5f576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03918216600090815260066020526040902080546001600160a01b03191691909216179055565b62000c9762004abe565b6001600160a01b031662000caa62000dc9565b6001600160a01b03161462000cf5576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b62000d4962004abe565b6001600160a01b031662000d5c62000dc9565b6001600160a01b03161462000da7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001600160a01b031660009081526007602052604090205460ff1690565b62000e0062004abe565b6001600160a01b031662000e1362000dc9565b6001600160a01b03161462000e5e576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b7fbc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f669414662198975050505050505050565b62000eb762000bd8565b1562000efd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600e5460ff16156200101b57600480546040516370a0823160e01b81526001600160a01b03909116916370a082319162000f3a9133910162005534565b60206040518083038186803b15801562000f5357600080fd5b505afa15801562000f68573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f8e919062005381565b62000fe6576040830151600f5462000fa69162004ac2565b34101562000fd15760405162461bcd60e51b815260040162000fc89062005801565b60405180910390fd5b62000fdb62004983565b60e084015262001015565b82604001513410156200100d5760405162461bcd60e51b815260040162000fc89062005801565b600060e08401525b62001042565b8260400151341015620010425760405162461bcd60e51b815260040162000fc89062005801565b33602084015262001054600862004b1d565b83524260a0840152600060c084018190526101008401819052338152600c602052604081205490600d906200108a600862004b1d565b81526020808201929092526040908101600090812093909355338352600c82528083208054600181810183559185529383902087516009909502019384559186015183830180546001600160a01b039283166001600160a01b0319918216179091559187015160028086019190915560608801516003860180549190931693169290921790556080860151600484015560a0860151600584015560c0860151600684015560e086015160078401556101008601516008840180548895949293919260ff199091169184908111156200115e57fe5b0217905550505060005b82518110156200124e5783516000908152600a6020526040902083518490839081106200119157fe5b602090810291909101810151825460018181018555600094855293839020825160059092020180546001600160a01b039283166001600160a01b031991821617825583850151958201805496909316951694909417905560408101518051919392620012069260028501929091019062004bd4565b50606082015180516200122491600384019160209091019062004bd4565b50608082015180516200124291600484019160209091019062004c24565b50505060010162001168565b5060005b8151811015620013385783516000908152600b6020526040902082518390839081106200127b57fe5b602090810291909101810151825460018181018555600094855293839020825160059092020180546001600160a01b039283166001600160a01b031991821617825583850151958201805496909316951694909417905560408101518051919392620012f09260028501929091019062004bd4565b50606082015180516200130e91600384019160209091019062004bd4565b50608082015180516200132c91600484019160209091019062004c24565b50505060010162001252565b5060005b83516000908152600a602052604090205481101562001bc45783516000908152600a6020526040812080546007929190849081106200137757fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff16620013c35760405162461bcd60e51b815260040162000fc89062005742565b83516000908152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee919083908110620013f757fe5b60009182526020909120600160059092020101546001600160a01b03161415620015025783516000908152600a602052604090208054829081106200143857fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b03909316926323b872dd92913091869081106200147f57fe5b90600052602060002090600502016003016000815481106200149d57fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620014c893929190620055c6565b600060405180830381600087803b158015620014e357600080fd5b505af1158015620014f8573d6000803e3d6000fd5b5050505062001bbb565b83516000908152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200153657fe5b60009182526020909120600160059092020101546001600160a01b031614156200163c5783516000908152600a602052604090208054829081106200157757fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b039093169263b88d4fde9291309186908110620015be57fe5b9060005260206000209060050201600201600081548110620015dc57fe5b9060005260206000200154600a60008a60000151815260200190815260200160002086815481106200160a57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b8152600401620014c89493929190620055ea565b83516000908152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200167057fe5b60009182526020909120600160059092020101546001600160a01b03161415620017935783516000908152600a60205260409020805482908110620016b157fe5b600091825260208083206005909202909101548682015187518452600a909252604090922080546001600160a01b0390931692632eb2c2d69291309186908110620016f857fe5b9060005260206000209060050201600201600a60008a60000151815260200190815260200160002086815481106200172c57fe5b9060005260206000209060050201600301600a60008b60000151815260200190815260200160002087815481106200176057fe5b90600052602060002090600502016004016040518663ffffffff1660e01b8152600401620014c895949392919062005562565b60015484516000908152600a6020526040902080546001600160a01b039092169183908110620017bf57fe5b60009182526020909120600160059092020101546001600160a01b03161415620019e45783516000908152600a6020526040812080546003929190849081106200180557fe5b90600052602060002090600502016002016000815481106200182357fe5b6000918252602080832090910154835282019290925260400190205460ff1615620018625760405162461bcd60e51b815260040162000fc89062005882565b3360009081526002602090815260408083205460015488518552600a909352922080546001600160a01b0393841693909216916358178168919085908110620018a757fe5b9060005260206000209060050201600201600081548110620018c557fe5b90600052602060002001546040518263ffffffff1660e01b8152600401620018ee919062005a2a565b60206040518083038186803b1580156200190757600080fd5b505afa1580156200191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001942919062004f9b565b6001600160a01b0316146200196b5760405162461bcd60e51b815260040162000fc89062005716565b83516000908152600a6020526040812080546001926003929091859081106200199057fe5b9060005260206000209060050201600201600081548110620019ae57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062001bbb565b83516000908152600a60205260408120805460069291908490811062001a0657fe5b600091825260208083206005909202909101546001600160a01b03908116845283820194909452604092830182205488518352600a9091529190208054919092169163810a6653918490811062001a5957fe5b600091825260208083206005909202909101548882015189518452600a9092526040832080546001600160a01b03909216936006929091908890811062001a9c57fe5b600091825260208083206005909202909101546001600160a01b0390811684528382019490945260409283018220548c518352600a90915291902080549190921691908790811062001aea57fe5b9060005260206000209060050201600201600a60008b600001518152602001908152602001600020878154811062001b1e57fe5b9060005260206000209060050201600301600a60008c600001518152602001908152602001600020888154811062001b5257fe5b90600052602060002090600502016004016040518763ffffffff1660e01b815260040162001b869695949392919062005642565b600060405180830381600087803b15801562001ba157600080fd5b505af115801562001bb6573d6000803e3d6000fd5b505050505b6001016200133c565b836101000151600281111562001bd657fe5b6201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d8760000151886060015160405162001c2392919062005a33565b60405180910390a462001c37600862004b21565b50505050565b60008181526003602052604090205460ff161562001c6f5760405162461bcd60e51b815260040162000fc890620058b9565b3360008181526002602052604090819020546001549151634f6779cd60e11b81526001600160a01b0391821693639ecef39a9362001cb49316918690600401620055c6565b600060405180830381600087803b15801562001ccf57600080fd5b505af115801562001ce4573d6000803e3d6000fd5b5050505050565b336000908152600c60209081526040808320858452600d909252909120548154811062001d1457fe5b60009182526020909120600990910201600101546001600160a01b0316331462001d525760405162461bcd60e51b815260040162000fc890620056cf565b336000908152600c60209081526040808320858452600d90925290912054815483929190811062001d7f57fe5b906000526020600020906009020160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b336000818152600c60209081526040808320858452600d909252909120548154811062001de157fe5b60009182526020909120600160099092020101546001600160a01b03161462001e1e5760405162461bcd60e51b815260040162000fc89062005785565b336000908152600c60209081526040808320848452600d9092528220548154811062001e4657fe5b600091825260209091206008600990920201015460ff16600281111562001e6957fe5b1462001e895760405162461bcd60e51b815260040162000fc890620057ca565b336000908152600c60209081526040808320848452600d9092528220548154811062001eb157fe5b906000526020600020906009020160070154111562001f3957336000818152600c60209081526040808320858452600d9092529091205481546108fc929190811062001ef957fe5b9060005260206000209060090201600701549081150290604051600060405180830381858888f1935050505015801562001f37573d6000803e3d6000fd5b505b60005b6000828152600a602052604090205481101562002892576000828152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee91908390811062001f8557fe5b60009182526020909120600160059092020101546001600160a01b03161415620020d4576000828152600a6020526040902080548290811062001fc457fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b039093169263a9059cbb92919081106200200e57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a600086815260200190815260200160002084815481106200205257fe5b90600052602060002090600502016003016000815481106200207057fe5b90600052602060002001546040518363ffffffff1660e01b81526004016200209a92919062005629565b600060405180830381600087803b158015620020b557600080fd5b505af1158015620020ca573d6000803e3d6000fd5b5050505062002889565b6000828152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200210657fe5b60009182526020909120600160059092020101546001600160a01b031614156200224f576000828152600a602052604090208054829081106200214557fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b039093169263b88d4fde923092909181106200219157fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620021d557fe5b9060005260206000209060050201600201600081548110620021f357fe5b9060005260206000200154600a600088815260200190815260200160002086815481106200221d57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b81526004016200209a9493929190620055ea565b6000828152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200228157fe5b60009182526020909120600160059092020101546001600160a01b03161415620023e3576000828152600a60205260409020805482908110620022c057fe5b60009182526020808320600590920290910154338352600c82526040808420868552600d9093529092205481546001600160a01b0390931692632eb2c2d6923092909181106200230c57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a600087815260200190815260200160002085815481106200235057fe5b9060005260206000209060050201600201600a600088815260200190815260200160002086815481106200238057fe5b9060005260206000209060050201600301600a60008981526020019081526020016000208781548110620023b057fe5b90600052602060002090600502016004016040518663ffffffff1660e01b81526004016200209a95949392919062005562565b6001546000838152600a6020526040902080546001600160a01b0390921691839081106200240d57fe5b60009182526020909120600160059092020101546001600160a01b03161415620026745733600090815260026020908152604080832054600154868552600a909352922080546001600160a01b03938416939092169163581781689190859081106200247557fe5b90600052602060002090600502016002016000815481106200249357fe5b90600052602060002001546040518263ffffffff1660e01b8152600401620024bc919062005a2a565b60206040518083038186803b158015620024d557600080fd5b505afa158015620024ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002510919062004f9b565b6001600160a01b031614620025395760405162461bcd60e51b815260040162000fc89062005716565b33600081815260026020908152604080832054600154878552600a909352922080546001600160a01b039384169463ca4fb85694909316929190869081106200257e57fe5b90600052602060002090600502016002016000815481106200259c57fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620025c793929190620055c6565b600060405180830381600087803b158015620025e257600080fd5b505af1158015620025f7573d6000803e3d6000fd5b50505050600060036000600a600086815260200190815260200160002084815481106200262057fe5b90600052602060002090600502016002016000815481106200263e57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062002889565b6000828152600a6020526040812080546006929190849081106200269457fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600a9091529190208054919092169163810a66539184908110620026e657fe5b60009182526020808320600590920290910154868352600a9091526040822080546001600160a01b0390921692600692909190879081106200272457fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054338352600c82528383208a8452600d909252929091205481549290931692909181106200277c57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600a60008881526020019081526020016000208681548110620027c057fe5b9060005260206000209060050201600201600a60008981526020019081526020016000208781548110620027f057fe5b9060005260206000209060050201600301600a60008a815260200190815260200160002088815481106200282057fe5b90600052602060002090600502016004016040518763ffffffff1660e01b8152600401620028549695949392919062005642565b600060405180830381600087803b1580156200286f57600080fd5b505af115801562002884573d6000803e3d6000fd5b505050505b60010162001f3c565b336000908152600c60209081526040808320858452600d90925282205481548110620028ba57fe5b90600052602060002090600902016002015411156200298857336000908152600c60209081526040808320858452600d9092529091205481548110620028fc57fe5b6000918252602080832060016009909302019190910154338352600c82526040808420868552600d9093529092205481546001600160a01b03909316926108fc92919081106200294857fe5b9060005260206000209060090201600201549081150290604051600060405180830381858888f1935050505015801562002986573d6000803e3d6000fd5b505b336000908152600c60209081526040808320858452600d909252909120548154429291908110620029b557fe5b6000918252602080832060066009909302019190910192909255338152600c82526040808220858352600d909352902054815460029291908110620029f657fe5b60009182526020909120600860099092020101805460ff1916600183600281111562002a1e57fe5b021790555060026201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d85600060405162002a6b92919062005a33565b60405180910390a45050565b62002a8162000bd8565b1562002ac7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0382166000908152600c60209081526040808320848452600d9092528220548154811062002af857fe5b600091825260209091206008600990920201015460ff16600281111562002b1b57fe5b1462002b3b5760405162461bcd60e51b815260040162000fc890620057ca565b6001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815433929190811062002b7157fe5b60009182526020909120600360099092020101546001600160a01b03161462002bae5760405162461bcd60e51b815260040162000fc89062005785565b600e5460ff161562002ec657600480546040516370a0823160e01b81526001600160a01b03909116916370a082319162002beb9133910162005534565b60206040518083038186803b15801562002c0457600080fd5b505afa15801562002c19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c3f919062005381565b62002d91576001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815462002c9b929190811062002c7d57fe5b6000918252602090912060046009909202010154600f549062004ac2565b34101562002cbd5760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252822054815462002d13929190811062002cf557fe5b6000918252602090912060076009909202010154600f549062004ac2565b111562002d8b576005546001600160a01b038381166000908152600c60209081526040808320868452600d90925290912054815492909316926108fc9262002d60929190811062002cf557fe5b6040518115909202916000818181858888f1935050505015801562002d89573d6000803e3d6000fd5b505b62002ec0565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252909120548154811062002dc357fe5b90600052602060002090600902016004015434101562002df75760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d9092528220548154811062002e2857fe5b906000526020600020906009020160070154111562002ec0576005546001600160a01b038381166000908152600c60209081526040808320868452600d90925290912054815492909316926108fc92811062002e8057fe5b9060005260206000209060090201600701549081150290604051600060405180830381858888f1935050505015801562002ebe573d6000803e3d6000fd5b505b62002f2c565b6001600160a01b0382166000908152600c60209081526040808320848452600d909252909120548154811062002ef857fe5b90600052602060002090600902016004015434101562002f2c5760405162461bcd60e51b815260040162000fc89062005801565b6001600160a01b0382166000908152600c60209081526040808320848452600d90925290912054815433929190811062002f6257fe5b6000918252602080832060099290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152600c82526040808220848352600d909352902054815442929190811062002fba57fe5b60009182526020808320600660099093020191909101929092556001600160a01b0384168152600c82526040808220848352600d9093529020548154600192919081106200300457fe5b60009182526020909120600860099092020101805460ff191660018360028111156200302c57fe5b021790555060005b6000828152600a602052604090205481101562003ae9576000828152600a6020526040812080546007929190849081106200306b57fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff16620030b75760405162461bcd60e51b815260040162000fc89062005742565b6000828152600a6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee919083908110620030e957fe5b60009182526020909120600160059092020101546001600160a01b031614156200323b576000828152600a602052604090208054829081106200312857fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263a9059cbb92919081106200317557fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008681526020019081526020016000208481548110620031b957fe5b9060005260206000209060050201600301600081548110620031d757fe5b90600052602060002001546040518363ffffffff1660e01b81526004016200320192919062005629565b600060405180830381600087803b1580156200321c57600080fd5b505af115801562003231573d6000803e3d6000fd5b5050505062003ae0565b6000828152600a6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d799190839081106200326d57fe5b60009182526020909120600160059092020101546001600160a01b03161415620033b9576000828152600a60205260409020805482908110620032ac57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263b88d4fde92309290918110620032fb57fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a600087815260200190815260200160002085815481106200333f57fe5b90600052602060002090600502016002016000815481106200335d57fe5b9060005260206000200154600a600088815260200190815260200160002086815481106200338757fe5b90600052602060002090600502016004016040518563ffffffff1660e01b8152600401620032019493929190620055ea565b6000828152600a60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c39919083908110620033eb57fe5b60009182526020909120600160059092020101546001600160a01b0316141562003550576000828152600a602052604090208054829081106200342a57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d9094529093205482549390911692632eb2c2d6923092909181106200347957fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620034bd57fe5b9060005260206000209060050201600201600a60008881526020019081526020016000208681548110620034ed57fe5b9060005260206000209060050201600301600a600089815260200190815260200160002087815481106200351d57fe5b90600052602060002090600502016004016040518663ffffffff1660e01b81526004016200320195949392919062005562565b6001546000838152600a6020526040902080546001600160a01b0390921691839081106200357a57fe5b60009182526020909120600160059092020101546001600160a01b03161415620038c9576001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481546002939291908110620035d557fe5b6000918252602080832060016009909302018201546001600160a01b0390811685528482019590955260409384018320549154878452600a909152929091208054918416939290921691635817816891859081106200363057fe5b90600052602060002090600502016002016000815481106200364e57fe5b90600052602060002001546040518263ffffffff1660e01b815260040162003677919062005a2a565b60206040518083038186803b1580156200369057600080fd5b505afa158015620036a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036cb919062004f9b565b6001600160a01b031614620036f45760405162461bcd60e51b815260040162000fc89062005716565b6001600160a01b0383166000908152600c60209081526040808320858452600d909252822054815460029392919081106200372b57fe5b6000918252602080832060016009909302018201546001600160a01b03908116855284820195909552604093840183205491548886168452600c8252848420888552600d909252939092205482549185169463ca4fb8569416929181106200378f57fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a60008781526020019081526020016000208581548110620037d357fe5b9060005260206000209060050201600201600081548110620037f157fe5b90600052602060002001546040518463ffffffff1660e01b81526004016200381c93929190620055c6565b600060405180830381600087803b1580156200383757600080fd5b505af11580156200384c573d6000803e3d6000fd5b50505050600060036000600a600086815260200190815260200160002084815481106200387557fe5b90600052602060002090600502016002016000815481106200389357fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062003ae0565b6000828152600a602052604081208054600692919084908110620038e957fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600a9091529190208054919092169163810a665391849081106200393b57fe5b60009182526020808320600590920290910154868352600a9091526040822080546001600160a01b0390921692600692909190879081106200397957fe5b600091825260208083206005909202909101546001600160a01b0390811684528382019490945260409283018220548a85168352600c82528383208a8452600d90925292909120548154929093169290918110620039d357fe5b906000526020600020906009020160030160009054906101000a90046001600160a01b0316600a6000888152602001908152602001600020868154811062003a1757fe5b9060005260206000209060050201600201600a6000898152602001908152602001600020878154811062003a4757fe5b9060005260206000209060050201600301600a60008a8152602001908152602001600020888154811062003a7757fe5b90600052602060002090600502016004016040518763ffffffff1660e01b815260040162003aab9695949392919062005642565b600060405180830381600087803b15801562003ac657600080fd5b505af115801562003adb573d6000803e3d6000fd5b505050505b60010162003034565b6001600160a01b0383166000908152600c60209081526040808320858452600d9092528220548154811062003b1a57fe5b906000526020600020906009020160020154111562003bf4576001600160a01b0383166000908152600c60209081526040808320858452600d909252909120548154811062003b6557fe5b60009182526020808320600360099093020191909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926108fc929190811062003bb457fe5b9060005260206000209060090201600201549081150290604051600060405180830381858888f1935050505015801562003bf2573d6000803e3d6000fd5b505b5060005b6000828152600b602052604090205481101562004781576000828152600b60205260408120805460079291908490811062003c2f57fe5b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205460ff1662003c7b5760405162461bcd60e51b815260040162000fc89062005742565b6000828152600b6020526040902080547390b7cf88476cc99d295429d4c1bb1ff52448abee91908390811062003cad57fe5b60009182526020909120600160059092020101546001600160a01b0316141562003e49576000828152600b6020526040902080548290811062003cec57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926323b872dd929190811062003d3957fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d9094529093205482549390911692811062003d8257fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b6000878152602001908152602001600020858154811062003dc657fe5b906000526020600020906005020160030160008154811062003de457fe5b90600052602060002001546040518463ffffffff1660e01b815260040162003e0f93929190620055c6565b600060405180830381600087803b15801562003e2a57600080fd5b505af115801562003e3f573d6000803e3d6000fd5b5050505062004778565b6000828152600b6020526040902080547358874d2951524f7f851bbbe240f0c3cf0b992d7991908390811062003e7b57fe5b60009182526020909120600160059092020101546001600160a01b031614156200400e576000828152600b6020526040902080548290811062003eba57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d909452909320548254939091169263b88d4fde929190811062003f0757fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d9094529093205482549390911692811062003f5057fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b6000878152602001908152602001600020858154811062003f9457fe5b906000526020600020906005020160020160008154811062003fb257fe5b9060005260206000200154600b6000888152602001908152602001600020868154811062003fdc57fe5b90600052602060002090600502016004016040518563ffffffff1660e01b815260040162003e0f9493929190620055ea565b6000828152600b60205260409020805473edfdd7266667d48f3c9ab10194c3d325813d8c399190839081106200404057fe5b60009182526020909120600160059092020101546001600160a01b03161415620041ec576000828152600b602052604090208054829081106200407f57fe5b600091825260208083206005909202909101546001600160a01b038681168452600c83526040808520878652600d9094529093205482549390911692632eb2c2d69291908110620040cc57fe5b60009182526020808320600360099093020191909101546001600160a01b038881168452600c83526040808520898652600d909452909320548254939091169281106200411557fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b600087815260200190815260200160002085815481106200415957fe5b9060005260206000209060050201600201600b600088815260200190815260200160002086815481106200418957fe5b9060005260206000209060050201600301600b60008981526020019081526020016000208781548110620041b957fe5b90600052602060002090600502016004016040518663ffffffff1660e01b815260040162003e0f95949392919062005562565b6001546000838152600b6020526040902080546001600160a01b0390921691839081106200421657fe5b60009182526020909120600160059092020101546001600160a01b031614156200456b576001600160a01b0383166000908152600c60209081526040808320858452600d909252822054815460029392919081106200427157fe5b60009182526020808320600360099093020191909101546001600160a01b039081168452838201949094526040928301822054600154878452600b9092529290912080549284169391909116916358178168919085908110620042d057fe5b9060005260206000209060050201600201600081548110620042ee57fe5b90600052602060002001546040518263ffffffff1660e01b815260040162004317919062005a2a565b60206040518083038186803b1580156200433057600080fd5b505afa15801562004345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200436b919062004f9b565b6001600160a01b031614620043945760405162461bcd60e51b815260040162000fc89062005716565b6001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481546002939291908110620043cb57fe5b60009182526020808320600360099093020191909101546001600160a01b0390811684528382019490945260409283018220546001548886168452600c8352848420888552600d909352939092205481549285169463ca4fb85694169281106200443157fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b600087815260200190815260200160002085815481106200447557fe5b90600052602060002090600502016002016000815481106200449357fe5b90600052602060002001546040518463ffffffff1660e01b8152600401620044be93929190620055c6565b600060405180830381600087803b158015620044d957600080fd5b505af1158015620044ee573d6000803e3d6000fd5b50505050600060036000600b600086815260200190815260200160002084815481106200451757fe5b90600052602060002090600502016002016000815481106200453557fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555062004778565b6000828152600b6020526040812080546006929190849081106200458b57fe5b600091825260208083206005909202909101546001600160a01b039081168452838201949094526040928301822054868352600b9091529190208054919092169163810a66539184908110620045dd57fe5b600091825260208083206005909202909101546001600160a01b038881168452600c83526040808520898652600d909452909320548254939091169281106200462257fe5b60009182526020808320600360099093020191909101546001600160a01b038981168452600c835260408085208a8652600d909452909320548254939091169281106200466b57fe5b906000526020600020906009020160010160009054906101000a90046001600160a01b0316600b60008881526020019081526020016000208681548110620046af57fe5b9060005260206000209060050201600201600b60008981526020019081526020016000208781548110620046df57fe5b9060005260206000209060050201600301600b60008a815260200190815260200160002088815481106200470f57fe5b90600052602060002090600502016004016040518763ffffffff1660e01b8152600401620047439695949392919062005642565b600060405180830381600087803b1580156200475e57600080fd5b505af115801562004773573d6000803e3d6000fd5b505050505b60010162003bf8565b6001600160a01b0383166000908152600c60209081526040808320858452600d90925282205481548110620047b257fe5b90600052602060002090600902016004015411156200488c576001600160a01b0383166000908152600c60209081526040808320858452600d9092529091205481548110620047fd57fe5b60009182526020808320600160099093020191909101546001600160a01b038681168452600c83526040808520878652600d90945290932054825493909116926108fc92919081106200484c57fe5b9060005260206000209060090201600401549081150290604051600060405180830381858888f193505050501580156200488a573d6000803e3d6000fd5b505b60016201518042064203336001600160a01b03167f20c004714deaf94f3e80538ac812eb372a6d40711070cd585f447f9ef76d525d8587604051620048d392919062005a33565b60405180910390a4505050565b336000908152600260205260409020546001600160a01b031615620049195760405162461bcd60e51b815260040162000fc8906200584b565b3033604051620049299062004ca6565b6200493692919062005548565b604051809103906000f08015801562004953573d6000803e3d6000fd5b5033600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600f5490565b7ff23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf979695505050505050565b620049be62004abe565b6001600160a01b0316620049d162000dc9565b6001600160a01b03161462004a1c576040805162461bcd60e51b8152602060048201819052602482015260008051602062005f8b833981519152604482015290519081900360640190fd5b6001600160a01b03811662004a635760405162461bcd60e51b815260040180806020018281038252602681526020018062005f656026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008282018381101562000974576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b80546001019055565b6040518061012001604052806000815260200160006001600160a01b031681526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000600281111562004b8e57fe5b905290565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b82805482825590600052602060002090810192821562004c12579160200282015b8281111562004c1257825182559160200191906001019062004bf5565b5062004c2092915062004cb4565b5090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262004c5c576000855562004c12565b82601f1062004c7757805160ff191683800117855562004c12565b8280016001018555821562004c12579182018281111562004c1257825182559160200191906001019062004bf5565b6104b18062005ab483390190565b5b8082111562004c20576000815560010162004cb5565b80356200068a8162005a9a565b600082601f83011262004ce9578081fd5b8135602062004d0262004cfc8362005a6f565b62005a4a565b82815281810190858301855b8581101562004df4578135880160a080601f19838d0301121562004d30578889fd5b62004d3b8162005a4a565b62004d4888840162004ccb565b8152604062004d5981850162004ccb565b89830152606084013567ffffffffffffffff8082111562004d78578c8dfd5b62004d888f8c8489010162004e4d565b83850152608086013592508083111562004da0578c8dfd5b62004db08f8c8589010162004e4d565b606085015293850135938085111562004dc7578c8dfd5b50505062004dda8c898486010162004f02565b608082015286525050928401929084019060010162004d0e565b5090979650505050505050565b60008083601f84011262004e13578182fd5b50813567ffffffffffffffff81111562004e2b578182fd5b602083019150836020808302850101111562004e4657600080fd5b9250929050565b600082601f83011262004e5e578081fd5b8135602062004e7162004cfc8362005a6f565b828152818101908583018385028701840188101562004e8e578586fd5b855b8581101562004df45781358452928401929084019060010162004e90565b803580151581146200068a57600080fd5b60008083601f84011262004ed1578182fd5b50813567ffffffffffffffff81111562004ee9578182fd5b60208301915083602082850101111562004e4657600080fd5b600082601f83011262004f13578081fd5b813567ffffffffffffffff81111562004f2857fe5b62004f3d601f8201601f191660200162005a4a565b81815284602083860101111562004f52578283fd5b816020850160208301379081016020019190915292915050565b8035600381106200068a57600080fd5b60006020828403121562004f8e578081fd5b8135620009748162005a9a565b60006020828403121562004fad578081fd5b8151620009748162005a9a565b6000806040838503121562004fcd578081fd5b823562004fda8162005a9a565b9150602083013562004fec8162005a9a565b809150509250929050565b60008060008060008060008060a0898b03121562005013578384fd5b8835620050208162005a9a565b97506020890135620050328162005a9a565b9650604089013567ffffffffffffffff808211156200504f578586fd5b6200505d8c838d0162004e01565b909850965060608b013591508082111562005076578586fd5b620050848c838d0162004e01565b909650945060808b01359150808211156200509d578384fd5b50620050ac8b828c0162004ebf565b999c989b5096995094979396929594505050565b600080600080600060808688031215620050d8578283fd5b8535620050e58162005a9a565b94506020860135620050f78162005a9a565b935060408601359250606086013567ffffffffffffffff8111156200511a578182fd5b620051288882890162004ebf565b969995985093965092949392505050565b60008060008060008060a0878903121562005152578384fd5b86356200515f8162005a9a565b95506020870135620051718162005a9a565b94506040870135935060608701359250608087013567ffffffffffffffff8111156200519b578283fd5b620051a989828a0162004ebf565b979a9699509497509295939492505050565b60008060408385031215620051ce578182fd5b8235620051db8162005a9a565b9150620051eb6020840162004eae565b90509250929050565b6000806040838503121562005207578182fd5b8235620052148162005a9a565b946020939093013593505050565b6000806040838503121562005235578182fd5b620052148362004eae565b60006020828403121562005252578081fd5b81356001600160e01b03198116811462000974578182fd5b600080600083850361016081121562005281578182fd5b6101208082121562005291578283fd5b6200529c8162005a4a565b915085358252620052b06020870162004ccb565b602083015260408601356040830152620052cd6060870162004ccb565b60608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101006200530a81880162004f6c565b9083015290935084013567ffffffffffffffff808211156200532a578283fd5b620053388783880162004cd8565b93506101408601359150808211156200534f578283fd5b506200535e8682870162004cd8565b9150509250925092565b6000602082840312156200537a578081fd5b5035919050565b60006020828403121562005393578081fd5b5051919050565b60008060408385031215620053ad578182fd5b82359150602083013562004fec8162005a9a565b60008060408385031215620053d4578182fd5b82359150620051eb6020840162004eae565b600080600060608486031215620053fb578081fd5b833592506200540d6020850162004eae565b9150604084013590509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156200545b578151875295820195908201906001016200543d565b509495945050505050565b6000815480845260208085019450838352808320835b838110156200545b578154875295820195600191820191016200547c565b60008154600180821660008114620054bb5760018114620054da576200551c565b60028304607f16865260ff19831660208701526040860193506200551c565b60028304808752620054ec8662005a8e565b60005b82811015620055125781546020828b0101528482019150602081019050620054ef565b8801602001955050505b50505092915050565b600381106200553057fe5b9052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0386811682528516602082015260a060408201819052600090620055909083018662005466565b8281036060840152620055a4818662005466565b90508281036080840152620055ba81856200549a565b98975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906200561f908301846200549a565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03878116825286811660208301528516604082015260c060608201819052600090620056789083018662005466565b82810360808401526200568c818662005466565b905082810360a0840152620056a281856200549a565b9998505050505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526027908201527f4d6573736167652073656e646572206d7573742062652074686520737761702060408201526631b932b0ba37b960c91b606082015260800190565b60208082526012908201527143727970746f50756e6b206d697373696e6760701b604082015260600190565b60208082526023908201527f412044415050206973206e6f742068616e646c6564206279207468652073797360408201526274656d60e81b606082015260800190565b60208082526025908201527f596f75277265206e6f742074686520696e746572657374656420636f756e74656040820152641c9c185c9d60da1b606082015260800190565b60208082526019908201527f5377617020537461747573206973206e6f74206f70656e656400000000000000604082015260600190565b6020808252602a908201527f4e6f7420656e6f756768742057454920666f722068616e646c652074686520746040820152693930b739b0b1ba34b7b760b11b606082015260800190565b60208082526018908201527f50726f787920616c726561647920726567697374657265640000000000000000604082015260600190565b6020808252601c908201527f50756e6b20696e20757365206f6e20616e6f7468657220747261646500000000604082015260600190565b6020808252601d908201527f50756e6b20616c726561647920696e2075736520696e20612073776170000000604082015260600190565b815181526020808301516001600160a01b031690820152604080830151908201526060808301516101208301916200592b908401826200541d565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151620059698285018262005525565b505092915050565b6000602080835260018060a01b038085511682850152808286015116604085015250604084015160a06060850152620059ae60c08501826200542a565b90506060850151601f1980868403016080870152620059ce83836200542a565b925060808701519150808684030160a08701528151808452855b8181101562005a05578381018601518582018701528501620059e8565b8181111562005a1657868683870101525b50601f011691909101909101949350505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b60405181810167ffffffffffffffff8111828210171562005a6757fe5b604052919050565b600067ffffffffffffffff82111562005a8457fe5b5060209081020190565b60009081526020902090565b6001600160a01b038116811462005ab057600080fd5b5056fe608060405234801561001057600080fd5b506040516104b13803806104b183398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100ae565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008e578182fd5b61009783610060565b91506100a560208401610060565b90509250929050565b6103f4806100bd6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80639ecef39a14610046578063ca4fb8561461005b578063da023b211461006e575b600080fd5b61005961005436600461029f565b610081565b005b61005961006936600461029f565b6101ea565b61005961007c366004610260565b610214565b6000546001600160a01b031633146100b45760405162461bcd60e51b81526004016100ab9061032f565b60405180910390fd5b6001546001600160a01b038381169116146100e15760405162461bcd60e51b81526004016100ab906102f8565b604051630b02f02d60e31b815230906001600160a01b0385169063581781689061010f90859060040161039d565b60206040518083038186803b15801561012757600080fd5b505afa15801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f9190610283565b6001600160a01b0316146101855760405162461bcd60e51b81526004016100ab90610366565b6040516322dca8bb60e21b81526001600160a01b03841690638b72a2ec906101b390859085906004016102df565b600060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031633146100e15760405162461bcd60e51b81526004016100ab9061032f565b6000546001600160a01b0316331461023e5760405162461bcd60e51b81526004016100ab9061032f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610271578081fd5b813561027c816103a6565b9392505050565b600060208284031215610294578081fd5b815161027c816103a6565b6000806000606084860312156102b3578182fd5b83356102be816103a6565b925060208401356102ce816103a6565b929592945050506040919091013590565b6001600160a01b03929092168252602082015260400190565b60208082526019908201527f596f75277265206e6f74207468652070756e6b206f776e657200000000000000604082015260600190565b6020808252601d908201527f596f75277265206e6f742074686520636f6e7472616374206f776e6572000000604082015260600190565b6020808252601f908201527f50756e6b206973206d697373696e672066726f6d20746869732050726f787900604082015260600190565b90815260200190565b6001600160a01b03811681146103bb57600080fd5b5056fea264697066735822122056e6fbcd26bb716264388409c08ba431201ebae93ad34f1aa7f0298533f6f8b764736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212207c6afe2c4470236159a290c787a5bb758561175a25d0d28d387a7441f640838864736f6c63430007060033
Deployed Bytecode Sourcemap
2599:18323:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4817:10;-1:-1:-1;;;;;4801:38:0;;4829:9;4801:38;;;;;;:::i;:::-;;;;;;;;2599:18323;;;;;20750:170;;;;;;;;;;-1:-1:-1;20750:170:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19990:223;;;;;;;;;;-1:-1:-1;19990:223:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19267:168::-;;;;;;;;;;-1:-1:-1;19267:168:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19714:237::-;;;;;;;;;;-1:-1:-1;19714:237:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18632:164::-;;;;;;;;;;-1:-1:-1;18632:164:0;;;;;:::i;:::-;;:::i;:::-;;17030:110;;;;;;;;;;-1:-1:-1;17030:110:0;;;;;:::i;:::-;;:::i;3157:73::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19473:213::-;;;;;;;;;;-1:-1:-1;19473:213:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2915:70::-;;;;;;;;;;;;;:::i;18832:124::-;;;;;;;;;;-1:-1:-1;18832:124:0;;;;;:::i;:::-;;:::i;18165:111::-;;;;;;;;;;-1:-1:-1;18165:111:0;;;;;:::i;:::-;;:::i;1052:84:8:-;;;;;;;;;;;;;:::i;3081:70:0:-;;;;;;;;;;;;;:::i;17992:139::-;;;;;;;;;;-1:-1:-1;17992:139:0;;;;;:::i;:::-;;:::i;1717:145:1:-;;;;;;;;;;;;;:::i;17843:98:0:-;;;;;;;;;;-1:-1:-1;17843:98:0;;;;;:::i;:::-;;:::i;1085:85:1:-;;;;;;;;;;;;;:::i;19004:109:0:-;;;;;;;;;;-1:-1:-1;19004:109:0;;;;;:::i;:::-;;:::i;17702:110::-;;;;;;;;;;-1:-1:-1;17702:110:0;;;;;:::i;:::-;;:::i;20466:279::-;;;;;;;;;;-1:-1:-1;20466:279:0;;;;;:::i;:::-;;:::i;4875:3363::-;;;;;;:::i;:::-;;:::i;17456:209::-;;;;;;;;;;-1:-1:-1;17456:209:0;;;;;:::i;:::-;;:::i;18314:289::-;;;;;;;;;;-1:-1:-1;18314:289:0;;;;;:::i;:::-;;:::i;14393:2609::-;;;;;;;;;;-1:-1:-1;14393:2609:0;;;;;:::i;:::-;;:::i;8270:6098::-;;;;;;:::i;:::-;;:::i;17177:210::-;;;;;;;;;;;;;:::i;19141:98::-;;;;;;;;;;;;;:::i;20218:243::-;;;;;;;;;;-1:-1:-1;20218:243:0;;;;;:::i;:::-;;:::i;2011:240:1:-;;;;;;;;;;-1:-1:-1;2011:240:1;;;;;:::i;:::-;;:::i;20750:170:0:-;20835:4;-1:-1:-1;;;;;;;;;20859:25:0;;;;:54;;-1:-1:-1;;;;;;;;;;20888:25:0;;;20859:54;20851:62;;20750:170;;;;:::o;19990:223::-;20145:60;19990:223;;;;;;;:::o;19267:168::-;19354:17;;:::i;:::-;-1:-1:-1;;;;;19390:18:0;;;;;;:8;:18;;;;;;;;19409;;;:9;:18;;;;;;;19390:38;;;;;;;;;;;;;;;;;19383:45;;;;;;;;19390:38;;;;;;;19383:45;;;;;;;;-1:-1:-1;;;;;19383:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19390:38;19383:45;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19383:45:0;-1:-1:-1;19267:168:0;;;;;:::o;19714:237::-;19802:17;;:::i;:::-;19834:5;19831:112;;;19860:16;;;;:7;:16;;;;;:24;;19877:6;;19860:24;;;;;;;;;;;;;;;19853:31;;;;;;;;19860:24;;;;;;;19853:31;;-1:-1:-1;;;;;19853:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19860:24;;19853:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19853:31:0;;;-1:-1:-1;;19853:31:0;;;;;;;;;;;;;;;;-1:-1:-1;;19853:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19831:112;19919:16;;;;:7;:16;;;;;:24;;19936:6;;19919:24;;;;;19831:112;19714:237;;;;;:::o;18632:164::-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;1366:8:8::1;:6;:8::i;:::-;1365:9;1357:38;;;::::0;;-1:-1:-1;;;1357:38:8;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1357:38:8;;;;;;;;;;;;;::::1;;18723:7:0::2;:24:::0;;-1:-1:-1;;18723:24:0::2;::::0;::::2;;::::0;;;::::2;::::0;;;18757:13;:32;18632:164::o;17030:110::-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;17108:10:0::1;:24:::0;;-1:-1:-1;;;;;;17108:24:0::1;-1:-1:-1::0;;;;;17108:24:0;;;::::1;::::0;;;::::1;::::0;;17030:110::o;3157:73::-;;;-1:-1:-1;;;;;3157:73:0;;:::o;19473:213::-;19549:7;19571:5;19568:110;;;-1:-1:-1;19597:16:0;;;;:7;:16;;;;;:23;19590:30;;19568:110;-1:-1:-1;19655:16:0;;;;:7;:16;;;;;:23;19648:30;;2915:70;;;-1:-1:-1;;;;;2915:70:0;;:::o;18832:124::-;-1:-1:-1;;;;;18926:21:0;;;18892:7;18926:21;;;:11;:21;;;;;;;;18832:124::o;18165:111::-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;18243:16:0;;;::::1;;::::0;;;:9:::1;:16;::::0;;;;:26;;-1:-1:-1;;18243:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18165:111::o;1052:84:8:-;1099:4;1122:7;-1:-1:-1;;;1122:7:8;;;;;1052:84::o;3081:70:0:-;;;-1:-1:-1;;;;;3081:70:0;;:::o;17992:139::-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;18085:20:0;;::::1;;::::0;;;:13:::1;:20;::::0;;;;:39;;-1:-1:-1;;;;;;18085:39:0::1;::::0;;;::::1;;::::0;;17992:139::o;1717:145:1:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;-1:-1:-1;;;;;1807:6:1;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;-1:-1:-1;;;;;;1836:19:1::1;::::0;;1717:145::o;17843:98:0:-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;17919:5:0::1;:14:::0;;-1:-1:-1;;;;;;17919:14:0::1;-1:-1:-1::0;;;;;17919:14:0;;;::::1;::::0;;;::::1;::::0;;17843:98::o;1085:85:1:-;1131:7;1157:6;-1:-1:-1;;;;;1157:6:1;1085:85;:::o;19004:109:0:-;-1:-1:-1;;;;;19087:19:0;19064:4;19087:19;;;:9;:19;;;;;;;;;19004:109::o;17702:110::-;1308:12:1;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;17780:10:0::1;:24:::0;;-1:-1:-1;;;;;;17780:24:0::1;-1:-1:-1::0;;;;;17780:24:0;;;::::1;::::0;;;::::1;::::0;;17702:110::o;20466:279::-;20659:78;20466:279;;;;;;;;;;:::o;4875:3363::-;1366:8:8;:6;:8::i;:::-;1365:9;1357:38;;;;;-1:-1:-1;;;1357:38:8;;;;;;;;;;;;-1:-1:-1;;;1357:38:8;;;;;;;;;;;;;;;5034:7:0::1;:14:::0;::::1;;5031:592;;;5083:10;::::0;;5067:49:::1;::::0;-1:-1:-1;;;5067:49:0;;-1:-1:-1;;;;;5083:10:0;;::::1;::::0;5067:37:::1;::::0;:49:::1;::::0;5105:10:::1;::::0;5067:49:::1;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5064:437;;5176:20;::::0;::::1;::::0;5158:13;;:39:::1;::::0;:17:::1;:39::i;:::-;5147:9;:50;;5139:105;;;;-1:-1:-1::0;;;5139:105:0::1;;;;;;;:::i;:::-;;;;;;;;;5284:22;:20;:22::i;:::-;5262:19;::::0;::::1;:44:::0;5064:437:::1;;;5377:11;:20;;;5366:9;:31;;5358:86;;;;-1:-1:-1::0;;;5358:86:0::1;;;;;;;:::i;:::-;5484:1;5462:19;::::0;::::1;:23:::0;5064:437:::1;5031:592;;;5556:11;:20;;;5545:9;:31;;5537:86;;;;-1:-1:-1::0;;;5537:86:0::1;;;;;;;:::i;:::-;5659:10;5634:22;::::0;::::1;:35:::0;5696:18:::1;:8;:16;:18::i;:::-;5679:35:::0;;5748:15:::1;5724:21;::::0;::::1;:39:::0;-1:-1:-1;5773:19:0::1;::::0;::::1;:23:::0;;;5806:18:::1;::::0;::::1;:38:::0;;;5897:10:::1;5888:20:::0;;:8:::1;:20;::::0;;;;:27;;5856:9:::1;::::0;5866:18:::1;:8;:16;:18::i;:::-;5856:29:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;5856:29:0;;;:59;;;;5934:10:::1;5925:20:::0;;:8:::1;:20:::0;;;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;5925:38:0;;::::1;-1:-1:-1::0;;;;;;5925:38:0;;::::1;;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;5951:11;;5925:38;;;;;-1:-1:-1;;5925:38:0;;::::1;::::0;;;;::::1;;;;;;;;;;;;;5982:9;6001:86;6012:8;:15;6010:1;:17;6001:86;;;6054:14:::0;;6046:23:::1;::::0;;;:7:::1;:23;::::0;;;;6075:11;;:8;;6084:1;;6075:11;::::1;;;;;;::::0;;::::1;::::0;;;;;;;6046:41;;::::1;::::0;;::::1;::::0;;-1:-1:-1;6046:41:0;;;;;;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;;;;;6046:41:0;;::::1;-1:-1:-1::0;;;;;;6046:41:0;;::::1;;::::0;;;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;6075:11;;6046:41;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6046:41:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6046:41:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;6029:3:0::1;;6001:86;;;-1:-1:-1::0;6116:1:0::1;6110:86;6121:8;:15;6119:1;:17;6110:86;;;6163:14:::0;;6155:23:::1;::::0;;;:7:::1;:23;::::0;;;;6184:11;;:8;;6193:1;;6184:11;::::1;;;;;;::::0;;::::1;::::0;;;;;;;6155:41;;::::1;::::0;;::::1;::::0;;-1:-1:-1;6155:41:0;;;;;;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;;;;;6155:41:0;;::::1;-1:-1:-1::0;;;;;;6155:41:0;;::::1;;::::0;;;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;6184:11;;6155:41;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6155:41:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6155:41:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;6138:3:0::1;;6110:86;;;-1:-1:-1::0;6221:1:0::1;6215:1848;6234:14:::0;;6226:23:::1;::::0;;;:7:::1;:23;::::0;;;;:30;6224:32;::::1;6215:1848;;;6303:14:::0;;6285:42:::1;6295:23:::0;;;:7:::1;:23;::::0;;;;:26;;6285:9:::1;::::0;:42;6295:23;6319:1;;6295:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;-1:-1:-1;;;;;6295:31:0::1;6285:42:::0;;;::::1;::::0;;;;;;;;;::::1;;6277:90;;;;-1:-1:-1::0;;;6277:90:0::1;;;;;;;:::i;:::-;6392:14:::0;;6384:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;2710:42:::1;::::0;6384:23;6408:1;;6384:26;::::1;;;;;;::::0;;;::::1;::::0;;;:34:::1;:26;::::0;;::::1;;:34;::::0;-1:-1:-1;;;;;6384:34:0::1;:43;6381:1672;;;6470:14:::0;;6462:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;6486:1;;6462:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;6508:22;;::::1;::::0;6555:14;;6547:23;;:7:::1;:23:::0;;;;;;;:26;;-1:-1:-1;;;;;6462:31:0;;::::1;::::0;6447:60:::1;::::0;6508:22;6540:4:::1;::::0;6571:1;;6547:26;::::1;;;;;;;;;;;;;;;:30;;6578:1;6547:33;;;;;;;;;;;;;;;;6447:134;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6381:1672;;;6625:14:::0;;6617:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;2788:42:::1;::::0;6617:23;6641:1;;6617:26;::::1;;;;;;::::0;;;::::1;::::0;;;:34:::1;:26;::::0;;::::1;;:34;::::0;-1:-1:-1;;;;;6617:34:0::1;:44;6614:1439;;;6705:14:::0;;6697:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;6721:1;;6697:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;6747:22;;::::1;::::0;6794:14;;6786:23;;:7:::1;:23:::0;;;;;;;:26;;-1:-1:-1;;;;;6697:31:0;;::::1;::::0;6681:65:::1;::::0;6747:22;6779:4:::1;::::0;6810:1;;6786:26;::::1;;;;;;;;;;;;;;;:34;;6821:1;6786:37;;;;;;;;;;;;;;;;6825:7;:23;6833:11;:14;;;6825:23;;;;;;;;;;;6849:1;6825:26;;;;;;;;;;;;;;;;;;:31;;6681:176;;;;;;;;;;;;;;;;;;:::i;6614:1439::-;6901:14:::0;;6893:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;2866:42:::1;::::0;6893:23;6917:1;;6893:26;::::1;;;;;;::::0;;;::::1;::::0;;;:34:::1;:26;::::0;;::::1;;:34;::::0;-1:-1:-1;;;;;6893:34:0::1;:45;6890:1163;;;6983:14:::0;;6975:23:::1;::::0;;;:7:::1;:23;::::0;;;;:26;;6999:1;;6975:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;7030:22;;::::1;::::0;7077:14;;7069:23;;:7:::1;:23:::0;;;;;;;:26;;-1:-1:-1;;;;;6975:31:0;;::::1;::::0;6958:71:::1;::::0;7030:22;7062:4:::1;::::0;7093:1;;7069:26;::::1;;;;;;;;;;;;;;;:34;;7105:7;:23;7113:11;:14;;;7105:23;;;;;;;;;;;7129:1;7105:26;;;;;;;;;;;;;;;;;;:30;;7137:7;:23;7145:11;:14;;;7137:23;;;;;;;;;;;7161:1;7137:26;;;;;;;;;;;;;;;;;;:31;;6958:211;;;;;;;;;;;;;;;;;;;:::i;6890:1163::-;7243:10;::::0;7213:14;;7243:10:::1;7205:23:::0;;;:7:::1;:23;::::0;;;;:26;;-1:-1:-1;;;;;7243:10:0;;::::1;::::0;7229:1;;7205:26;::::1;;;;;;::::0;;;::::1;::::0;;;:34:::1;:26;::::0;;::::1;;:34;::::0;-1:-1:-1;;;;;7205:34:0::1;:48;7202:851;;;7384:14:::0;;7366:48:::1;7376:23:::0;;;:7:::1;:23;::::0;;;;:26;;7366:9:::1;::::0;:48;7376:23;7400:1;;7376:26;::::1;;;;;;;;;;;;;;;:34;;7411:1;7376:37;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;7366:48;;;::::1;::::0;;;;;;;;;::::1;;:57;7358:98;;;;-1:-1:-1::0;;;7358:98:0::1;;;;;;;:::i;:::-;7587:10;7575:23;::::0;;;:11:::1;:23;::::0;;;;;;;;;7494:10;7533:14;;7525:23;;:7:::1;:23:::0;;;;;:26;;-1:-1:-1;;;;;7575:23:0;;::::1;::::0;7494:10;;::::1;::::0;7482:42:::1;::::0;7525:23;7549:1;;7525:26;::::1;;;;;;;;;;;;;;;:34;;7560:1;7525:37;;;;;;;;;;;;;;;;7482:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7482:117:0::1;;7474:148;;;;-1:-1:-1::0;;;7474:148:0::1;;;;;;;:::i;:::-;7658:14:::0;;7640:48:::1;7650:23:::0;;;:7:::1;:23;::::0;;;;:26;;7691:4:::1;::::0;7640:9:::1;::::0;:48;;7674:1;;7650:26;::::1;;;;;;;;;;;;;;;:34;;7685:1;7650:37;;;;;;;;;;;;;;;;7640:48;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;7202:851;;;7784:14:::0;;7762:46:::1;7776:23:::0;;;:7:::1;:23;::::0;;;;:26;;7762:13:::1;::::0;:46;7776:23;7800:1;;7776:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;-1:-1:-1;;;;;7776:31:0;;::::1;7762:46:::0;;;;::::1;::::0;;;;;;;;;;;7841:14;;7833:23;;:7:::1;:23:::0;;;;;;:26;;7762:46;;;::::1;::::0;7746:86:::1;::::0;7857:1;;7833:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;7866:22;;::::1;::::0;7912:14;;7904:23;;:7:::1;:23:::0;;;;;;:26;;-1:-1:-1;;;;;7833:31:0;;::::1;::::0;7890:13:::1;::::0;7833:26;;7904:23;7928:1;;7904:26;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:31:::0;-1:-1:-1;;;;;7904:31:0;;::::1;7890:46:::0;;;;::::1;::::0;;;;;;;;;;;7946:14;;7938:23;;:7:::1;:23:::0;;;;;;:26;;7890:46;;;::::1;::::0;7938:23;7962:1;;7938:26;::::1;;;;;;;;;;;;;;;:34;;7974:7;:23;7982:11;:14;;;7974:23;;;;;;;;;;;7998:1;7974:26;;;;;;;;;;;;;;;;;;:30;;8006:7;:23;8014:11;:14;;;8006:23;;;;;;;;;;;8030:1;8006:26;;;;;;;;;;;;;;;;;;:31;;7746:292;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7202:851;6258:3;;6215:1848;;;8142:11;:18;;;8078:123;;;;;;;;3430:5;8118:15;:20;8101:15;:38;8088:10;-1:-1:-1::0;;;;;8078:123:0::1;;8162:11;:14;;;8178:11;:22;;;8078:123;;;;;;;:::i;:::-;;;;;;;;8211:20;:8;:18;:20::i;:::-;1405:1:8;4875:3363:0::0;;;:::o;17456:209::-;17521:18;;;;:9;:18;;;;;;;;:25;17513:67;;;;-1:-1:-1;;;17513:67:0;;;;;;;:::i;:::-;17602:10;17590:23;;;;:11;:23;;;;;;;;;17626:10;17590:68;;-1:-1:-1;;;17590:68:0;;-1:-1:-1;;;;;17590:23:0;;;;:35;;:68;;17626:10;;17650:7;;17590:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17456:209;:::o;18314:289::-;18434:10;18425:20;;;;:8;:20;;;;;;;;18446:18;;;:9;:18;;;;;;;18425:40;;;;;;;;;;;;;;;;;;;;;:51;;;-1:-1:-1;;;;;18425:51:0;18411:10;:65;18403:117;;;;-1:-1:-1;;;18403:117:0;;;;;;;:::i;:::-;18539:10;18530:20;;;;:8;:20;;;;;;;;18551:18;;;:9;:18;;;;;;;18530:40;;18584:12;;18530:20;18551:18;18530:40;;;;;;;;;;;;;;;;:51;;;:66;;;;;-1:-1:-1;;;;;18530:66:0;;;;;-1:-1:-1;;;;;18530:66:0;;;;;;18314:289;;:::o;14393:2609::-;14516:10;14461:20;;;;:8;:20;;;;;;;;14482:18;;;:9;:18;;;;;;;14461:40;;;;;;;;;;;;;;;;:51;:40;;;;;:51;;-1:-1:-1;;;;;14461:51:0;:65;14453:115;;;;-1:-1:-1;;;14453:115:0;;;;;;;:::i;:::-;14595:10;14637:17;14586:20;;;:8;:20;;;;;;;;14607:18;;;:9;:18;;;;;;14586:40;;;;;;;;;;;;;;;;:47;:40;;;;;:47;;;;:68;;;;;;;;;14578:106;;;;-1:-1:-1;;;14578:106:0;;;;;;;:::i;:::-;14725:10;14765:1;14716:20;;;:8;:20;;;;;;;;14737:18;;;:9;:18;;;;;;14716:40;;;;;;;;;;;;;;;;;;:48;;;:50;14713:136;;;14780:10;14800:20;;;;:8;:20;;;;;;;;14821:18;;;:9;:18;;;;;;;14800:40;;14780:69;;14800:20;14821:18;14800:40;;;;;;;;;;;;;;;;:48;;;14780:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14713:136;14859:9;14878:1648;14889:16;;;;:7;:16;;;;;:23;14887:25;;14878:1648;;;14936:16;;;;:7;:16;;;;;:19;;2710:42;;14936:16;14953:1;;14936:19;;;;;;;;;;;;;;:27;:19;;;;;:27;;-1:-1:-1;;;;;14936:27:0;:36;14933:1583;;;15007:16;;;;:7;:16;;;;;:19;;15024:1;;15007:19;;;;;;;;;;;;;;;;;;;;;:24;15051:10;15042:20;;:8;:20;;;;;;15063:18;;;:9;:18;;;;;;;15042:40;;-1:-1:-1;;;;;15007:24:0;;;;14992:49;;15042:20;15063:18;15042:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;-1:-1:-1;;;;;15042:51:0;15095:7;:16;15103:7;15095:16;;;;;;;;;;;15112:1;15095:19;;;;;;;;;;;;;;;;;;:23;;15119:1;15095:26;;;;;;;;;;;;;;;;14992:130;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14933:1583;;;15158:16;;;;:7;:16;;;;;:19;;2788:42;;15158:16;15175:1;;15158:19;;;;;;;;;;;;;;:27;:19;;;;;:27;;-1:-1:-1;;;;;15158:27:0;:37;15155:1361;;;15231:16;;;;:7;:16;;;;;:19;;15248:1;;15231:19;;;;;;;;;;;;;;;;;;;;;:24;15298:10;15289:20;;:8;:20;;;;;;15310:18;;;:9;:18;;;;;;;15289:40;;-1:-1:-1;;;;;15231:24:0;;;;15215:58;;15282:4;;15289:20;;:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;-1:-1:-1;;;;;15289:51:0;15342:7;:16;15350:7;15342:16;;;;;;;;;;;15359:1;15342:19;;;;;;;;;;;;;;;;;;:27;;15370:1;15342:30;;;;;;;;;;;;;;;;15374:7;:16;15382:7;15374:16;;;;;;;;;;;15391:1;15374:19;;;;;;;;;;;;;;;;;;:24;;15215:184;;;;;;;;;;;;;;;;;;:::i;15155:1361::-;15435:16;;;;:7;:16;;;;;:19;;2866:42;;15435:16;15452:1;;15435:19;;;;;;;;;;;;;;:27;:19;;;;;:27;;-1:-1:-1;;;;;15435:27:0;:38;15432:1084;;;15510:16;;;;:7;:16;;;;;:19;;15527:1;;15510:19;;;;;;;;;;;;;;;;;;;;;:24;15582:10;15573:20;;:8;:20;;;;;;15594:18;;;:9;:18;;;;;;;15573:40;;-1:-1:-1;;;;;15510:24:0;;;;15493:64;;15566:4;;15573:20;;:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;-1:-1:-1;;;;;15573:51:0;15626:7;:16;15634:7;15626:16;;;;;;;;;;;15643:1;15626:19;;;;;;;;;;;;;;;;;;:27;;15655:7;:16;15663:7;15655:16;;;;;;;;;;;15672:1;15655:19;;;;;;;;;;;;;;;;;;:23;;15680:7;:16;15688:7;15680:16;;;;;;;;;;;15697:1;15680:19;;;;;;;;;;;;;;;;;;:24;;15493:212;;;;;;;;;;;;;;;;;;;:::i;15432:1084::-;15772:10;;;15741:16;;;:7;:16;;;;;:19;;-1:-1:-1;;;;;15772:10:0;;;;15758:1;;15741:19;;;;;;;;;;;;;;:27;:19;;;;;:27;;-1:-1:-1;;;;;15741:27:0;:41;15738:778;;;15954:10;15942:23;;;;:11;:23;;;;;;;;;;15868:10;15899:16;;;:7;:16;;;;;:19;;-1:-1:-1;;;;;15942:23:0;;;;15868:10;;;;15856:42;;15899:16;15916:1;;15899:19;;;;;;;;;;;;;;;;:27;;15927:1;15899:30;;;;;;;;;;;;;;;;15856:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15856:110:0;;15848:141;;;;-1:-1:-1;;;15848:141:0;;;;;;;:::i;:::-;16019:10;16007:23;;;;:11;:23;;;;;;;;;;16049:10;16073:16;;;:7;:16;;;;;:19;;-1:-1:-1;;;;;16007:23:0;;;;:41;;16049:10;;;;16019;16073:16;16090:1;;16073:19;;;;;;;;;;;;;;;;:27;;16101:1;16073:30;;;;;;;;;;;;;;;;16007:97;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16166:5;16122:9;:41;16132:7;:16;16140:7;16132:16;;;;;;;;;;;16149:1;16132:19;;;;;;;;;;;;;;;;;;:27;;16160:1;16132:30;;;;;;;;;;;;;;;;16122:41;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;15738:778;;;16238:39;16252:16;;;:7;:16;;;;;:19;;16238:13;;:39;16252:16;16269:1;;16252:19;;;;;;;;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;16252:24:0;;;16238:39;;;;;;;;;;;;;;;;16302:16;;;:7;:16;;;;;;:19;;16238:39;;;;;16222:79;;16319:1;;16302:19;;;;;;;;;;;;;;;;;;;;;:24;16342:16;;;:7;:16;;;;;;:19;;-1:-1:-1;;;;;16302:24:0;;;;16328:13;;16302:19;;16342:16;16359:1;;16342:19;;;;;;;;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;16342:24:0;;;16328:39;;;;;;;;;;;;;;;;16378:10;16369:20;;:8;:20;;;;;16390:18;;;:9;:18;;;;;;;;16369:40;;16328:39;;;;;16369:20;;:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;-1:-1:-1;;;;;16369:51:0;16422:7;:16;16430:7;16422:16;;;;;;;;;;;16439:1;16422:19;;;;;;;;;;;;;;;;;;:27;;16451:7;:16;16459:7;16451:16;;;;;;;;;;;16468:1;16451:19;;;;;;;;;;;;;;;;;;:23;;16476:7;:16;16484:7;16476:16;;;;;;;;;;;16493:1;16476:19;;;;;;;;;;;;;;;;;;:24;;16222:279;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15738:778;14914:3;;14878:1648;;;16548:10;16591:1;16539:20;;;:8;:20;;;;;;;;16560:18;;;:9;:18;;;;;;16539:40;;;;;;;;;;;;;;;;;;:49;;;:53;16536:181;;;16615:10;16606:20;;;;:8;:20;;;;;;;;16627:18;;;:9;:18;;;;;;;16606:40;;;;;;;;;;;;;;;;:51;:40;;;;;:51;;;;;16676:10;16667:20;;:8;:20;;;;;;16688:18;;;:9;:18;;;;;;;16667:40;;-1:-1:-1;;;;;16606:51:0;;;;:111;;16667:20;16688:18;16667:40;;;;;;;;;;;;;;;;:49;;;16606:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16536:181;16737:10;16728:20;;;;:8;:20;;;;;;;;16749:18;;;:9;:18;;;;;;;16728:40;;16779:15;;16728:20;16749:18;16728:40;;;;;;;;;;;;;;:48;:40;;;;;:48;;;;:66;;;;16813:10;16804:20;;:8;:20;;;;;;16825:18;;;:9;:18;;;;;;16804:40;;16854:20;;16804;16825:18;16804:40;;;;;;;;;;;;;;:47;:40;;;;;:47;:70;;-1:-1:-1;;16804:70:0;;;;;;;;;;;;;;;-1:-1:-1;16953:20:0;3430:5;16929:15;:20;16912:15;:38;16899:10;-1:-1:-1;;;;;16889:106:0;;16975:7;16992:1;16889:106;;;;;;;:::i;:::-;;;;;;;;14393:2609;;:::o;8270:6098::-;1366:8:8;:6;:8::i;:::-;1365:9;1357:38;;;;;-1:-1:-1;;;1357:38:8;;;;;;;;;;;;-1:-1:-1;;;1357:38:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;8381:22:0;::::1;8434:17;8381:22:::0;;;:8:::1;:22;::::0;;;;;;;8404:18;;;:9:::1;:18:::0;;;;;;8381:42;;;::::1;;;;;;::::0;;;::::1;::::0;;;:49:::1;:42;::::0;;::::1;;:49;::::0;::::1;;:70;::::0;::::1;;;;;;;8373:108;;;;-1:-1:-1::0;;;8373:108:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8499:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;8522:18;;;:9:::1;:18:::0;;;;;;;8499:42;;8556:10:::1;::::0;8499:22;8522:18;8499:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53;::::0;-1:-1:-1;;;;;8499:53:0::1;:67;8491:117;;;;-1:-1:-1::0;;;8491:117:0::1;;;;;;;:::i;:::-;8621:7;:14:::0;::::1;;8618:988;;;8670:10;::::0;;8654:49:::1;::::0;-1:-1:-1;;;8654:49:0;;-1:-1:-1;;;;;8670:10:0;;::::1;::::0;8654:37:::1;::::0;:49:::1;::::0;8692:10:::1;::::0;8654:49:::1;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8651:802;;-1:-1:-1::0;;;;;8763:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;8786:18;;;:9:::1;:18:::0;;;;;;;8763:42;;8745:70:::1;::::0;8763:22;8786:18;8763:42;::::1;;;;;;::::0;;;::::1;::::0;;;:51:::1;:42;::::0;;::::1;;:51;::::0;8745:13;;;:17:::1;:70::i;:::-;8734:9;:81;;8726:136;;;;-1:-1:-1::0;;;8726:136:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8947:22:0;::::1;9001:1;8947:22:::0;;;:8:::1;:22;::::0;;;;;;;8970:18;;;:9:::1;:18:::0;;;;;;8947:42;;8929:69:::1;::::0;8947:22;8970:18;8947:42;::::1;;;;;;::::0;;;::::1;::::0;;;:50:::1;:42;::::0;;::::1;;:50;::::0;8929:13;;;:17:::1;:69::i;:::-;:73;8926:183;;;9024:5;::::0;-1:-1:-1;;;;;9057:22:0;;::::1;9024:5;9057:22:::0;;;:8:::1;:22;::::0;;;;;;;9080:18;;;:9:::1;:18:::0;;;;;;;9057:42;;9024:5;;;::::1;::::0;:85:::1;::::0;9039:69:::1;::::0;9057:22;9080:18;9057:42;::::1;;;;9039:69;9024:85;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8926:183;8651:802;;;-1:-1:-1::0;;;;;9179:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;9202:18;;;:9:::1;:18:::0;;;;;;;9179:42;;;::::1;;;;;;;;;;;;;;;:51;;;9168:9;:62;;9160:117;;;;-1:-1:-1::0;;;9160:117:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9298:22:0;::::1;9349:1;9298:22:::0;;;:8:::1;:22;::::0;;;;;;;9321:18;;;:9:::1;:18:::0;;;;;;9298:42;;;::::1;;;;;;;;;;;;;;;:50;;;:52;9295:143;;;9372:5;::::0;-1:-1:-1;;;;;9387:22:0;;::::1;9372:5;9387:22:::0;;;:8:::1;:22;::::0;;;;;;;9410:18;;;:9:::1;:18:::0;;;;;;;9387:42;;9372:5;;;::::1;::::0;:66:::1;::::0;9387:42;::::1;;;;;;;;;;;;;;;:50;;;9372:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9295:143;8618:988;;;-1:-1:-1::0;;;;;9508:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;9531:18;;;:9:::1;:18:::0;;;;;;;9508:42;;;::::1;;;;;;;;;;;;;;;:51;;;9497:9;:62;;9489:117;;;;-1:-1:-1::0;;;9489:117:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9625:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;9648:18;;;:9:::1;:18:::0;;;;;;;9625:42;;9681:10:::1;::::0;9625:22;9648:18;9625:42;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;:53;;:66:::0;;-1:-1:-1;;;;;;9625:66:0::1;-1:-1:-1::0;;;;;9625:66:0;;::::1;;::::0;;9701:22;;::::1;::::0;;:8:::1;:22:::0;;;;;;9724:18;;;:9:::1;:18:::0;;;;;;9701:42;;9754:15:::1;::::0;9701:22;9724:18;9701:42;::::1;;;;;;::::0;;;::::1;::::0;;;:50:::1;:42;::::0;;::::1;;:50:::0;;;::::1;:68:::0;;;;-1:-1:-1;;;;;9779:22:0;::::1;::::0;;:8:::1;:22:::0;;;;;;9802:18;;;:9:::1;:18:::0;;;;;;9779:42;;9831:17:::1;::::0;9779:22;9802:18;9779:42;::::1;;;;;;::::0;;;::::1;::::0;;;:49:::1;:42;::::0;;::::1;;:49;:69:::0;;-1:-1:-1;;9779:69:0::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;9901:9;9920:1888;9931:16;::::0;;;:7:::1;:16;::::0;;;;:23;9929:25;::::1;9920:1888;;;9983:35;9993:16:::0;;;:7:::1;:16;::::0;;;;:19;;9983:9:::1;::::0;:35;9993:16;10010:1;;9993:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;9993:24:0::1;9983:35:::0;;;::::1;::::0;;;;;;;;;::::1;;9975:83;;;;-1:-1:-1::0;;;9975:83:0::1;;;;;;;:::i;:::-;10075:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2710:42:::1;::::0;10075:16;10092:1;;10075:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;10075:27:0::1;:36;10072:1726;;;10146:16;::::0;;;:7:::1;:16;::::0;;;;:19;;10163:1;;10146:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;10181:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;10204:18;;;:9:::1;:18:::0;;;;;;;10181:42;;10146:24;;;::::1;::::0;10131:49:::1;::::0;10181:22;10204:18;10181:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;10181:53:0::1;10236:7;:16;10244:7;10236:16;;;;;;;;;;;10253:1;10236:19;;;;;;;;;;;;;;;;;;:23;;10260:1;10236:26;;;;;;;;;;;;;;;;10131:132;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10072:1726;;;10299:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2788:42:::1;::::0;10299:16;10316:1;;10299:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;10299:27:0::1;:37;10296:1502;;;10372:16;::::0;;;:7:::1;:16;::::0;;;;:19;;10389:1;;10372:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;10430:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;10453:18;;;:9:::1;:18:::0;;;;;;;10430:42;;10372:24;;;::::1;::::0;10356:58:::1;::::0;10423:4:::1;::::0;10430:22;;:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;10430:53:0::1;10485:7;:16;10493:7;10485:16;;;;;;;;;;;10502:1;10485:19;;;;;;;;;;;;;;;;;;:27;;10513:1;10485:30;;;;;;;;;;;;;;;;10517:7;:16;10525:7;10517:16;;;;;;;;;;;10534:1;10517:19;;;;;;;;;;;;;;;;;;:24;;10356:186;;;;;;;;;;;;;;;;;;:::i;10296:1502::-;10578:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2866:42:::1;::::0;10578:16;10595:1;;10578:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;10578:27:0::1;:38;10575:1223;;;10653:16;::::0;;;:7:::1;:16;::::0;;;;:19;;10670:1;;10653:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;10716:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;10739:18;;;:9:::1;:18:::0;;;;;;;10716:42;;10653:24;;;::::1;::::0;10636:64:::1;::::0;10709:4:::1;::::0;10716:22;;:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;10716:53:0::1;10771:7;:16;10779:7;10771:16;;;;;;;;;;;10788:1;10771:19;;;;;;;;;;;;;;;;;;:27;;10800:7;:16;10808:7;10800:16;;;;;;;;;;;10817:1;10800:19;;;;;;;;;;;;;;;;;;:23;;10825:7;:16;10833:7;10825:16;;;;;;;;;;;10842:1;10825:19;;;;;;;;;;;;;;;;;;:24;;10636:214;;;;;;;;;;;;;;;;;;;:::i;10575:1223::-;10917:10;::::0;::::1;10886:16:::0;;;:7:::1;:16;::::0;;;;:19;;-1:-1:-1;;;;;10917:10:0;;::::1;::::0;10903:1;;10886:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;10886:27:0::1;:41;10883:915;;;-1:-1:-1::0;;;;;11105:22:0;::::1;11093:66;11105:22:::0;;;:8:::1;:22;::::0;;;;;;;11128:18;;;:9:::1;:18:::0;;;;;;11105:42;;11093:11:::1;::::0;:66;11105:22;11128:18;11105:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;::::1;::::0;-1:-1:-1;;;;;11105:53:0;;::::1;11093:66:::0;;;;::::1;::::0;;;;;;;;;;;11019:10;;11050:16;;;:7:::1;:16:::0;;;;;;;:19;;11093:66;;::::1;::::0;11019:10;;;::::1;::::0;11007:42:::1;::::0;11067:1;;11050:19;::::1;;;;;;;;;;;;;;;:27;;11078:1;11050:30;;;;;;;;;;;;;;;;11007:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11007:153:0::1;;10999:184;;;;-1:-1:-1::0;;;10999:184:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11213:22:0;::::1;11201:66;11213:22:::0;;;:8:::1;:22;::::0;;;;;;;11236:18;;;:9:::1;:18:::0;;;;;;11213:42;;11201:11:::1;::::0;:66;11213:22;11236:18;11213:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;::::1;::::0;-1:-1:-1;;;;;11213:53:0;;::::1;11201:66:::0;;;;::::1;::::0;;;;;;;;;;;11286:10;;11298:22;;::::1;::::0;;:8:::1;:22:::0;;;;;11321:18;;;:9:::1;:18:::0;;;;;;;;11298:42;;11201:66;;::::1;::::0;:84:::1;::::0;11286:10:::1;::::0;11298:22;:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;11298:53:0::1;11353:7;:16;11361:7;11353:16;;;;;;;;;;;11370:1;11353:19;;;;;;;;;;;;;;;;;;:27;;11381:1;11353:30;;;;;;;;;;;;;;;;11201:183;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11446:5;11402:9;:41;11412:7;:16;11420:7;11412:16;;;;;;;;;;;11429:1;11412:19;;;;;;;;;;;;;;;;;;:27;;11440:1;11412:30;;;;;;;;;;;;;;;;11402:41;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;10883:915;;;11518:39;11532:16:::0;;;:7:::1;:16;::::0;;;;:19;;11518:13:::1;::::0;:39;11532:16;11549:1;;11532:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;11532:24:0;;::::1;11518:39:::0;;;;::::1;::::0;;;;;;;;;;;11582:16;;;:7:::1;:16:::0;;;;;;:19;;11518:39;;;::::1;::::0;11502:79:::1;::::0;11599:1;;11582:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;11622:16;;;:7:::1;:16:::0;;;;;;:19;;-1:-1:-1;;;;;11582:24:0;;::::1;::::0;11608:13:::1;::::0;11582:19;;11622:16;11639:1;;11622:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;11622:24:0;;::::1;11608:39:::0;;;;::::1;::::0;;;;;;;;;;;11649:22;;::::1;::::0;;:8:::1;:22:::0;;;;;11672:18;;;:9:::1;:18:::0;;;;;;;;11649:42;;11608:39;;;::::1;::::0;11649:22;;:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;11649:53:0::1;11704:7;:16;11712:7;11704:16;;;;;;;;;;;11721:1;11704:19;;;;;;;;;;;;;;;;;;:27;;11733:7;:16;11741:7;11733:16;;;;;;;;;;;11750:1;11733:19;;;;;;;;;;;;;;;;;;:23;;11758:7;:16;11766:7;11758:16;;;;;;;;;;;11775:1;11758:19;;;;;;;;;;;;;;;;;;:24;;11502:281;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10883:915;9956:3;;9920:1888;;;-1:-1:-1::0;;;;;11820:22:0;::::1;11874:1;11820:22:::0;;;:8:::1;:22;::::0;;;;;;;11843:18;;;:9:::1;:18:::0;;;;;;11820:42;;;::::1;;;;;;;;;;;;;;;:51;;;:55;11817:187;;;-1:-1:-1::0;;;;;11889:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;11912:18;;;:9:::1;:18:::0;;;;;;;11889:42;;;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;11952:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;11975:18;;;:9:::1;:18:::0;;;;;;;11952:42;;11889:53;;;::::1;::::0;:115:::1;::::0;11952:22;11975:18;11952:42;::::1;;;;;;;;;;;;;;;:51;;;11889:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11817:187;-1:-1:-1::0;12063:1:0::1;12057:1989;12068:16;::::0;;;:7:::1;:16;::::0;;;;:23;12066:25;::::1;12057:1989;;;12120:35;12130:16:::0;;;:7:::1;:16;::::0;;;;:19;;12120:9:::1;::::0;:35;12130:16;12147:1;;12130:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;12130:24:0::1;12120:35:::0;;;::::1;::::0;;;;;;;;;::::1;;12112:83;;;;-1:-1:-1::0;;;12112:83:0::1;;;;;;;:::i;:::-;12212:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2710:42:::1;::::0;12212:16;12229:1;;12212:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;12212:27:0::1;:36;12209:1827;;;12283:16;::::0;;;:7:::1;:16;::::0;;;;:19;;12300:1;;12283:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;12322:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;12345:18;;;:9:::1;:18:::0;;;;;;;12322:42;;12283:24;;;::::1;::::0;12268:53:::1;::::0;12322:22;12345:18;12322:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;12377:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;12400:18;;;:9:::1;:18:::0;;;;;;;12377:42;;12322:53;;;::::1;::::0;12377:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;12377:53:0::1;12432:7;:16;12440:7;12432:16;;;;;;;;;;;12449:1;12432:19;;;;;;;;;;;;;;;;;;:23;;12456:1;12432:26;;;;;;;;;;;;;;;;12268:191;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12209:1827;;;12495:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2788:42:::1;::::0;12495:16;12512:1;;12495:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;12495:27:0::1;:37;12492:1544;;;12568:16;::::0;;;:7:::1;:16;::::0;;;;:19;;12585:1;;12568:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;12611:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;12634:18;;;:9:::1;:18:::0;;;;;;;12611:42;;12568:24;;;::::1;::::0;12552:58:::1;::::0;12611:22;12634:18;12611:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;12666:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;12689:18;;;:9:::1;:18:::0;;;;;;;12666:42;;12611:53;;;::::1;::::0;12666:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;12666:53:0::1;12721:7;:16;12729:7;12721:16;;;;;;;;;;;12738:1;12721:19;;;;;;;;;;;;;;;;;;:27;;12749:1;12721:30;;;;;;;;;;;;;;;;12753:7;:16;12761:7;12753:16;;;;;;;;;;;12770:1;12753:19;;;;;;;;;;;;;;;;;;:24;;12552:226;;;;;;;;;;;;;;;;;;:::i;12492:1544::-;12814:16;::::0;;;:7:::1;:16;::::0;;;;:19;;2866:42:::1;::::0;12814:16;12831:1;;12814:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;12814:27:0::1;:38;12811:1225;;;12889:16;::::0;;;:7:::1;:16;::::0;;;;:19;;12906:1;;12889:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;12937:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;12960:18;;;:9:::1;:18:::0;;;;;;;12937:42;;12889:24;;;::::1;::::0;12872:64:::1;::::0;12937:22;12960:18;12937:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;12992:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;13015:18;;;:9:::1;:18:::0;;;;;;;12992:42;;12937:53;;;::::1;::::0;12992:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;12992:53:0::1;13047:7;:16;13055:7;13047:16;;;;;;;;;;;13064:1;13047:19;;;;;;;;;;;;;;;;;;:27;;13076:7;:16;13084:7;13076:16;;;;;;;;;;;13093:1;13076:19;;;;;;;;;;;;;;;;;;:23;;13101:7;:16;13109:7;13101:16;;;;;;;;;;;13118:1;13101:19;;;;;;;;;;;;;;;;;;:24;;12872:254;;;;;;;;;;;;;;;;;;;:::i;12811:1225::-;13193:10;::::0;::::1;13162:16:::0;;;:7:::1;:16;::::0;;;;:19;;-1:-1:-1;;;;;13193:10:0;;::::1;::::0;13179:1;;13162:19;::::1;;;;;;::::0;;;::::1;::::0;;;:27:::1;:19;::::0;;::::1;;:27;::::0;-1:-1:-1;;;;;13162:27:0::1;:41;13159:877;;;-1:-1:-1::0;;;;;13329:22:0;::::1;13317:66;13329:22:::0;;;:8:::1;:22;::::0;;;;;;;13352:18;;;:9:::1;:18:::0;;;;;;13329:42;;13317:11:::1;::::0;:66;13329:22;13352:18;13329:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;13329:53:0;;::::1;13317:66:::0;;;;::::1;::::0;;;;;;;;;;;13329:53;13243:10;13274:16;;;:7:::1;:16:::0;;;;;;;:19;;13317:66;;::::1;::::0;13243:10;;;::::1;::::0;13231:42:::1;::::0;13274:16;13291:1;;13274:19;::::1;;;;;;;;;;;;;;;:27;;13302:1;13274:30;;;;;;;;;;;;;;;;13231:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13231:153:0::1;;13223:184;;;;-1:-1:-1::0;;;13223:184:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13437:22:0;::::1;13425:66;13437:22:::0;;;:8:::1;:22;::::0;;;;;;;13460:18;;;:9:::1;:18:::0;;;;;;13437:42;;13425:11:::1;::::0;:66;13437:22;13460:18;13437:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;13437:53:0;;::::1;13425:66:::0;;;;::::1;::::0;;;;;;;;;;;13437:53;13510:10;13522:22;;::::1;::::0;;:8:::1;:22:::0;;;;;13545:18;;;:9:::1;:18:::0;;;;;;;;13522:42;;13425:66;;::::1;::::0;:84:::1;::::0;13510:10:::1;::::0;13522:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;13522:53:0::1;13577:7;:16;13585:7;13577:16;;;;;;;;;;;13594:1;13577:19;;;;;;;;;;;;;;;;;;:27;;13605:1;13577:30;;;;;;;;;;;;;;;;13425:183;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13670:5;13626:9;:41;13636:7;:16;13644:7;13636:16;;;;;;;;;;;13653:1;13636:19;;;;;;;;;;;;;;;;;;:27;;13664:1;13636:30;;;;;;;;;;;;;;;;13626:41;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;13159:877;;;13742:39;13756:16:::0;;;:7:::1;:16;::::0;;;;:19;;13742:13:::1;::::0;:39;13756:16;13773:1;;13756:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;13756:24:0;;::::1;13742:39:::0;;;;::::1;::::0;;;;;;;;;;;13806:16;;;:7:::1;:16:::0;;;;;;:19;;13742:39;;;::::1;::::0;13726:79:::1;::::0;13823:1;;13806:19;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:24:::0;-1:-1:-1;;;;;13832:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;13855:18;;;:9:::1;:18:::0;;;;;;;13832:42;;13806:24;;;::::1;::::0;13832:42;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;13887:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;13910:18;;;:9:::1;:18:::0;;;;;;;13887:42;;13832:53;;;::::1;::::0;13887:42;::::1;;;;;;;;;;;;;;;:53;;;;;;;;;;-1:-1:-1::0;;;;;13887:53:0::1;13942:7;:16;13950:7;13942:16;;;;;;;;;;;13959:1;13942:19;;;;;;;;;;;;;;;;;;:27;;13971:7;:16;13979:7;13971:16;;;;;;;;;;;13988:1;13971:19;;;;;;;;;;;;;;;;;;:23;;13996:7;:16;14004:7;13996:16;;;;;;;;;;;14013:1;13996:19;;;;;;;;;;;;;;;;;;:24;;13726:295;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13159:877;12093:3;;12057:1989;;;-1:-1:-1::0;;;;;14058:22:0;::::1;14110:1;14058:22:::0;;;:8:::1;:22;::::0;;;;;;;14081:18;;;:9:::1;:18:::0;;;;;;14058:42;;;::::1;;;;;;;;;;;;;;;:51;;;:53;14055:185;;;-1:-1:-1::0;;;;;14125:22:0;::::1;;::::0;;;:8:::1;:22;::::0;;;;;;;14148:18;;;:9:::1;:18:::0;;;;;;;14125:42;;;::::1;;;;;;::::0;;;::::1;::::0;;;:53:::1;:42;::::0;;::::1;;:53:::0;;;::::1;::::0;-1:-1:-1;;;;;14188:22:0;;::::1;::::0;;:8:::1;:22:::0;;;;;;14211:18;;;:9:::1;:18:::0;;;;;;;14188:42;;14125:53;;;::::1;::::0;:115:::1;::::0;14188:22;14211:18;14188:42;::::1;;;;;;;;;;;;;;;:51;;;14125:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14055:185;14320:17;3430:5;14296:15;:20;14279:15;:38;14266:10;-1:-1:-1::0;;;;;14256:105:0::1;;14339:7;14348:12;14256:105;;;;;;;:::i;:::-;;;;;;;;1405:1:8;8270:6098:0::0;;:::o;17177:210::-;17251:10;17273:1;17239:23;;;:11;:23;;;;;;-1:-1:-1;;;;;17239:23:0;17231:44;17223:81;;;;-1:-1:-1;;;17223:81:0;;;;;;;:::i;:::-;17362:4;17369:10;17340:40;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17326:10:0;17314:23;;;;:11;:23;;;;;:66;;-1:-1:-1;;;;;;17314:66:0;-1:-1:-1;;;;;17314:66:0;;;;;;;;;;17177:210::o;19141:98::-;19219:13;;19141:98;:::o;20218:243::-;20384:69;20218:243;;;;;;;;:::o;2011:240:1:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:1;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:1;;1289:68;;;;;-1:-1:-1;;;1289:68:1;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;2099:22:1;::::1;2091:73;;;;-1:-1:-1::0;;;2091:73:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;-1:-1:-1;;;;;2179:38:1;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;-1:-1:-1;;;;;;2227:17:1::1;-1:-1:-1::0;;;;;2227:17:1;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:6:-;685:10;598:104;:::o;2690:175:3:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;1106:112:7;1197:14;;1106:112::o;1224:178::-;1376:19;;1394:1;1376:19;;;1224:178::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:138:9;84:20;;113:33;84:20;113:33;:::i;157:1664::-;;281:3;274:4;266:6;262:17;258:27;248:2;;303:5;296;289:20;248:2;343:6;330:20;369:4;393:76;408:60;465:2;408:60;:::i;:::-;393:76;:::i;:::-;503:15;;;534:12;;;;566:15;;;599:5;613:1179;627:2;624:1;621:9;613:1179;;;707:3;694:17;686:6;682:30;735:4;787:2;781;777:7;772:2;767:3;763:12;759:26;755:35;752:2;;;807:5;800;793:20;752:2;841:18;856:2;841:18;:::i;:::-;886:33;915:2;911;907:11;886:33;:::i;:::-;879:5;872:48;943:2;981:33;1010:2;1006;1002:11;981:33;:::i;:::-;976:2;969:5;965:14;958:57;1065:2;1061;1057:11;1044:25;1092:18;1139:2;1129:8;1126:16;1123:2;;;1159:5;1152;1145:20;1123:2;1203:67;1266:3;1261:2;1250:8;1246:2;1242:17;1238:26;1203:67;:::i;:::-;1198:2;1191:5;1187:14;1180:91;1321:3;1317:2;1313:12;1300:26;1284:42;;1355:2;1345:8;1342:16;1339:2;;;1375:5;1368;1361:20;1339:2;1419:67;1482:3;1477:2;1466:8;1462:2;1458:17;1454:26;1419:67;:::i;:::-;1414:2;1403:14;;1396:91;1529:11;;;1516:25;;1557:16;;;1554:2;;;1590:5;1583;1576:20;1554:2;;;;1635:51;1682:3;1677:2;1666:8;1662:2;1658:17;1654:26;1635:51;:::i;:::-;1629:3;1618:15;;1611:76;1700:18;;-1:-1:-1;;1738:12:9;;;;1770;;;;645:1;638:9;613:1179;;;-1:-1:-1;1810:5:9;;238:1583;-1:-1:-1;;;;;;;238:1583:9:o;1826:404::-;;;1959:3;1952:4;1944:6;1940:17;1936:27;1926:2;;1984:8;1974;1967:26;1926:2;-1:-1:-1;2014:20:9;;2057:18;2046:30;;2043:2;;;2096:8;2086;2079:26;2043:2;2140:4;2132:6;2128:17;2116:29;;2203:3;2196:4;2188;2180:6;2176:17;2168:6;2164:30;2160:41;2157:50;2154:2;;;2220:1;2217;2210:12;2154:2;1916:314;;;;;:::o;2235:716::-;;2348:3;2341:4;2333:6;2329:17;2325:27;2315:2;;2370:5;2363;2356:20;2315:2;2410:6;2397:20;2436:4;2460:76;2475:60;2532:2;2475:60;:::i;2460:76::-;2570:15;;;2601:12;;;;2633:15;;;2679:11;;;2667:24;;2663:33;;2660:42;-1:-1:-1;2657:2:9;;;2719:5;2712;2705:20;2657:2;2745:5;2759:163;2773:2;2770:1;2767:9;2759:163;;;2830:17;;2818:30;;2868:12;;;;2900;;;;2791:1;2784:9;2759:163;;2956:162;3023:20;;3079:13;;3072:21;3062:32;;3052:2;;3108:1;3105;3098:12;3123:377;;;3240:3;3233:4;3225:6;3221:17;3217:27;3207:2;;3265:8;3255;3248:26;3207:2;-1:-1:-1;3295:20:9;;3338:18;3327:30;;3324:2;;;3377:8;3367;3360:26;3324:2;3421:4;3413:6;3409:17;3397:29;;3473:3;3466:4;3457:6;3449;3445:19;3441:30;3438:39;3435:2;;;3490:1;3487;3480:12;3505:542;;3602:3;3595:4;3587:6;3583:17;3579:27;3569:2;;3624:5;3617;3610:20;3569:2;3664:6;3651:20;3690:18;3686:2;3683:26;3680:2;;;3712:9;3680:2;3747:54;3789:2;3770:13;;-1:-1:-1;;3766:27:9;3795:4;3762:38;3747:54;:::i;:::-;3826:2;3817:7;3810:19;3872:3;3865:4;3860:2;3852:6;3848:15;3844:26;3841:35;3838:2;;;3893:5;3886;3879:20;3838:2;3962;3955:4;3947:6;3943:17;3936:4;3927:7;3923:18;3910:55;3985:16;;;4003:4;3981:27;3974:42;;;;3989:7;3559:488;-1:-1:-1;;3559:488:9:o;4052:154::-;4131:20;;4180:1;4170:12;;4160:2;;4196:1;4193;4186:12;4211:259;;4323:2;4311:9;4302:7;4298:23;4294:32;4291:2;;;4344:6;4336;4329:22;4291:2;4388:9;4375:23;4407:33;4434:5;4407:33;:::i;4475:263::-;;4598:2;4586:9;4577:7;4573:23;4569:32;4566:2;;;4619:6;4611;4604:22;4566:2;4656:9;4650:16;4675:33;4702:5;4675:33;:::i;5015:402::-;;;5144:2;5132:9;5123:7;5119:23;5115:32;5112:2;;;5165:6;5157;5150:22;5112:2;5209:9;5196:23;5228:33;5255:5;5228:33;:::i;:::-;5280:5;-1:-1:-1;5337:2:9;5322:18;;5309:32;5350:35;5309:32;5350:35;:::i;:::-;5404:7;5394:17;;;5102:315;;;;;:::o;5422:1396::-;;;;;;;;;5691:3;5679:9;5670:7;5666:23;5662:33;5659:2;;;5713:6;5705;5698:22;5659:2;5757:9;5744:23;5776:33;5803:5;5776:33;:::i;:::-;5828:5;-1:-1:-1;5885:2:9;5870:18;;5857:32;5898:35;5857:32;5898:35;:::i;:::-;5952:7;-1:-1:-1;6010:2:9;5995:18;;5982:32;6033:18;6063:14;;;6060:2;;;6095:6;6087;6080:22;6060:2;6139:76;6207:7;6198:6;6187:9;6183:22;6139:76;:::i;:::-;6234:8;;-1:-1:-1;6113:102:9;-1:-1:-1;6322:2:9;6307:18;;6294:32;;-1:-1:-1;6338:16:9;;;6335:2;;;6372:6;6364;6357:22;6335:2;6416:78;6486:7;6475:8;6464:9;6460:24;6416:78;:::i;:::-;6513:8;;-1:-1:-1;6390:104:9;-1:-1:-1;6601:3:9;6586:19;;6573:33;;-1:-1:-1;6618:16:9;;;6615:2;;;6652:6;6644;6637:22;6615:2;;6696:62;6750:7;6739:8;6728:9;6724:24;6696:62;:::i;:::-;5649:1169;;;;-1:-1:-1;5649:1169:9;;-1:-1:-1;5649:1169:9;;;;;;6777:8;-1:-1:-1;;;5649:1169:9:o;6823:780::-;;;;;;7005:3;6993:9;6984:7;6980:23;6976:33;6973:2;;;7027:6;7019;7012:22;6973:2;7071:9;7058:23;7090:33;7117:5;7090:33;:::i;:::-;7142:5;-1:-1:-1;7199:2:9;7184:18;;7171:32;7212:35;7171:32;7212:35;:::i;:::-;7266:7;-1:-1:-1;7320:2:9;7305:18;;7292:32;;-1:-1:-1;7375:2:9;7360:18;;7347:32;7402:18;7391:30;;7388:2;;;7439:6;7431;7424:22;7388:2;7483:60;7535:7;7526:6;7515:9;7511:22;7483:60;:::i;:::-;6963:640;;;;-1:-1:-1;6963:640:9;;-1:-1:-1;7562:8:9;;7457:86;6963:640;-1:-1:-1;;;6963:640:9:o;7608:849::-;;;;;;;7807:3;7795:9;7786:7;7782:23;7778:33;7775:2;;;7829:6;7821;7814:22;7775:2;7873:9;7860:23;7892:33;7919:5;7892:33;:::i;:::-;7944:5;-1:-1:-1;8001:2:9;7986:18;;7973:32;8014:35;7973:32;8014:35;:::i;:::-;8068:7;-1:-1:-1;8122:2:9;8107:18;;8094:32;;-1:-1:-1;8173:2:9;8158:18;;8145:32;;-1:-1:-1;8228:3:9;8213:19;;8200:33;8256:18;8245:30;;8242:2;;;8293:6;8285;8278:22;8242:2;8337:60;8389:7;8380:6;8369:9;8365:22;8337:60;:::i;:::-;7765:692;;;;-1:-1:-1;7765:692:9;;-1:-1:-1;7765:692:9;;8416:8;;7765:692;-1:-1:-1;;;7765:692:9:o;8462:329::-;;;8588:2;8576:9;8567:7;8563:23;8559:32;8556:2;;;8609:6;8601;8594:22;8556:2;8653:9;8640:23;8672:33;8699:5;8672:33;:::i;:::-;8724:5;-1:-1:-1;8748:37:9;8781:2;8766:18;;8748:37;:::i;:::-;8738:47;;8546:245;;;;;:::o;8796:327::-;;;8925:2;8913:9;8904:7;8900:23;8896:32;8893:2;;;8946:6;8938;8931:22;8893:2;8990:9;8977:23;9009:33;9036:5;9009:33;:::i;:::-;9061:5;9113:2;9098:18;;;;9085:32;;-1:-1:-1;;;8883:240:9:o;9128:260::-;;;9254:2;9242:9;9233:7;9229:23;9225:32;9222:2;;;9275:6;9267;9260:22;9222:2;9303:28;9321:9;9303:28;:::i;9393:306::-;;9504:2;9492:9;9483:7;9479:23;9475:32;9472:2;;;9525:6;9517;9510:22;9472:2;9556:23;;-1:-1:-1;;;;;;9608:32:9;;9598:43;;9588:2;;9660:6;9652;9645:22;9704:1558;;;;9972:9;9963:7;9959:23;10002:3;9998:2;9994:12;9991:2;;;10024:6;10016;10009:22;9991:2;10052:6;10078:2;10074;10070:11;10067:2;;;10099:6;10091;10084:22;10067:2;10130:18;10145:2;10130:18;:::i;:::-;10117:31;;10184:9;10171:23;10164:5;10157:38;10227:40;10263:2;10252:9;10248:18;10227:40;:::i;:::-;10222:2;10215:5;10211:14;10204:64;10328:2;10317:9;10313:18;10300:32;10295:2;10288:5;10284:14;10277:56;10365:40;10401:2;10390:9;10386:18;10365:40;:::i;:::-;10360:2;10353:5;10349:14;10342:64;10467:3;10456:9;10452:19;10439:33;10433:3;10426:5;10422:15;10415:58;10534:3;10523:9;10519:19;10506:33;10500:3;10493:5;10489:15;10482:58;10601:3;10590:9;10586:19;10573:33;10567:3;10560:5;10556:15;10549:58;10668:3;10657:9;10653:19;10640:33;10634:3;10627:5;10623:15;10616:58;10693:3;10728:49;10773:2;10762:9;10758:18;10728:49;:::i;:::-;10712:14;;;10705:73;10716:5;;-1:-1:-1;10838:18:9;;10825:32;10876:18;10906:14;;;10903:2;;;10938:6;10930;10923:22;10903:2;10966:78;11036:7;11027:6;11016:9;11012:22;10966:78;:::i;:::-;10956:88;;11097:3;11086:9;11082:19;11069:33;11053:49;;11127:2;11117:8;11114:16;11111:2;;;11148:6;11140;11133:22;11111:2;;11176:80;11248:7;11237:8;11226:9;11222:24;11176:80;:::i;:::-;11166:90;;;9939:1323;;;;;:::o;11267:190::-;;11379:2;11367:9;11358:7;11354:23;11350:32;11347:2;;;11400:6;11392;11385:22;11347:2;-1:-1:-1;11428:23:9;;11337:120;-1:-1:-1;11337:120:9:o;11462:194::-;;11585:2;11573:9;11564:7;11560:23;11556:32;11553:2;;;11606:6;11598;11591:22;11553:2;-1:-1:-1;11634:16:9;;11543:113;-1:-1:-1;11543:113:9:o;11661:335::-;;;11798:2;11786:9;11777:7;11773:23;11769:32;11766:2;;;11819:6;11811;11804:22;11766:2;11860:9;11847:23;11837:33;;11920:2;11909:9;11905:18;11892:32;11933:33;11960:5;11933:33;:::i;12001:260::-;;;12127:2;12115:9;12106:7;12102:23;12098:32;12095:2;;;12148:6;12140;12133:22;12095:2;12189:9;12176:23;12166:33;;12218:37;12251:2;12240:9;12236:18;12218:37;:::i;12266:328::-;;;;12409:2;12397:9;12388:7;12384:23;12380:32;12377:2;;;12430:6;12422;12415:22;12377:2;12471:9;12458:23;12448:33;;12500:37;12533:2;12522:9;12518:18;12500:37;:::i;:::-;12490:47;;12584:2;12573:9;12569:18;12556:32;12546:42;;12367:227;;;;;:::o;12599:114::-;-1:-1:-1;;;;;12675:31:9;12663:44;;12653:60::o;12718:443::-;;12815:5;12809:12;12842:6;12837:3;12830:19;12868:4;12897:2;12892:3;12888:12;12881:19;;12934:2;12927:5;12923:14;12955:3;12967:169;12981:6;12978:1;12975:13;12967:169;;;13042:13;;13030:26;;13076:12;;;;13111:15;;;;13003:1;12996:9;12967:169;;;-1:-1:-1;13152:3:9;;12785:376;-1:-1:-1;;;;;12785:376:9:o;13166:481::-;;13271:5;13265:12;13298:6;13293:3;13286:19;13324:4;13353:2;13348:3;13344:12;13337:19;;13377:5;13372:3;13365:18;13421:2;13416:3;13406:18;13442:3;13454:168;13468:6;13465:1;13462:13;13454:168;;;13529:13;;13517:26;;13563:12;;;;13610:1;13598:14;;;;13483:9;13454:168;;13652:772;;13744:5;13738:12;13769:1;13801:2;13790:9;13786:18;13818:1;13813:165;;;;13992:1;13987:431;;;;13779:639;;13813:165;13865:1;13850:17;;13869:4;13846:28;13834:41;;-1:-1:-1;;13911:24:9;;13904:4;13895:14;;13888:48;13965:2;13956:12;;;-1:-1:-1;13813:165:9;;13987:431;14037:1;14026:9;14022:17;14064:6;14059:3;14052:19;14099:53;14146:5;14099:53;:::i;:::-;14174:1;14188:178;14202:6;14199:1;14196:13;14188:178;;;14299:7;14293:14;14286:4;14282:1;14277:3;14273:11;14269:22;14262:46;14349:2;14340:7;14336:16;14325:27;;14224:4;14221:1;14217:12;14212:17;;14188:178;;;14390:11;;14403:4;14386:22;;-1:-1:-1;;;13779:639:9;;;;13711:713;;;;:::o;14429:135::-;14514:1;14507:5;14504:12;14494:2;;14520:9;14494:2;14540:18;;14484:80::o;14569:203::-;-1:-1:-1;;;;;14733:32:9;;;;14715:51;;14703:2;14688:18;;14670:102::o;15217:320::-;-1:-1:-1;;;;;15463:15:9;;;15445:34;;15515:15;;15510:2;15495:18;;15488:43;15395:2;15380:18;;15362:175::o;15542:871::-;-1:-1:-1;;;;;15946:15:9;;;15928:34;;15998:15;;15993:2;15978:18;;15971:43;15908:3;16045:2;16030:18;;16023:31;;;15542:871;;16077:71;;16128:19;;16120:6;16077:71;:::i;:::-;16196:9;16188:6;16184:22;16179:2;16168:9;16164:18;16157:50;16230:58;16281:6;16273;16230:58;:::i;:::-;16216:72;;16337:9;16329:6;16325:22;16319:3;16308:9;16304:19;16297:51;16365:42;16400:6;16392;16365:42;:::i;:::-;16357:50;15880:533;-1:-1:-1;;;;;;;;15880:533:9:o;16418:391::-;-1:-1:-1;;;;;16692:15:9;;;16674:34;;16744:15;;;;16739:2;16724:18;;16717:43;16791:2;16776:18;;16769:34;;;;16624:2;16609:18;;16591:218::o;16814:511::-;-1:-1:-1;;;;;17096:15:9;;;17078:34;;17148:15;;17143:2;17128:18;;17121:43;17195:2;17180:18;;17173:34;;;17243:3;17238:2;17223:18;;17216:31;;;16814:511;;17264:55;;17299:19;;17291:6;17264:55;:::i;:::-;17256:63;17030:295;-1:-1:-1;;;;;;17030:295:9:o;17330:282::-;-1:-1:-1;;;;;17530:32:9;;;;17512:51;;17594:2;17579:18;;17572:34;17500:2;17485:18;;17467:145::o;17617:952::-;-1:-1:-1;;;;;18049:15:9;;;18031:34;;18101:15;;;18096:2;18081:18;;18074:43;18153:15;;18148:2;18133:18;;18126:43;18205:3;18200:2;18185:18;;18178:31;;;17617:952;;18232:71;;18283:19;;18275:6;18232:71;:::i;:::-;18352:9;18344:6;18340:22;18334:3;18323:9;18319:19;18312:51;18386:58;18437:6;18429;18386:58;:::i;:::-;18372:72;;18493:9;18485:6;18481:22;18475:3;18464:9;18460:19;18453:51;18521:42;18556:6;18548;18521:42;:::i;:::-;18513:50;17983:586;-1:-1:-1;;;;;;;;;17983:586:9:o;20860:187::-;21025:14;;21018:22;21000:41;;20988:2;20973:18;;20955:92::o;21052:202::-;-1:-1:-1;;;;;;21214:33:9;;;;21196:52;;21184:2;21169:18;;21151:103::o;21259:403::-;21461:2;21443:21;;;21500:2;21480:18;;;21473:30;21539:34;21534:2;21519:18;;21512:62;-1:-1:-1;;;21605:2:9;21590:18;;21583:37;21652:3;21637:19;;21433:229::o;21667:342::-;21869:2;21851:21;;;21908:2;21888:18;;;21881:30;-1:-1:-1;;;21942:2:9;21927:18;;21920:48;22000:2;21985:18;;21841:168::o;22014:399::-;22216:2;22198:21;;;22255:2;22235:18;;;22228:30;22294:34;22289:2;22274:18;;22267:62;-1:-1:-1;;;22360:2:9;22345:18;;22338:33;22403:3;22388:19;;22188:225::o;22418:401::-;22620:2;22602:21;;;22659:2;22639:18;;;22632:30;22698:34;22693:2;22678:18;;22671:62;-1:-1:-1;;;22764:2:9;22749:18;;22742:35;22809:3;22794:19;;22592:227::o;22824:349::-;23026:2;23008:21;;;23065:2;23045:18;;;23038:30;23104:27;23099:2;23084:18;;23077:55;23164:2;23149:18;;22998:175::o;23178:406::-;23380:2;23362:21;;;23419:2;23399:18;;;23392:30;23458:34;23453:2;23438:18;;23431:62;-1:-1:-1;;;23524:2:9;23509:18;;23502:40;23574:3;23559:19;;23352:232::o;23589:348::-;23791:2;23773:21;;;23830:2;23810:18;;;23803:30;23869:26;23864:2;23849:18;;23842:54;23928:2;23913:18;;23763:174::o;23942:352::-;24144:2;24126:21;;;24183:2;24163:18;;;24156:30;24222;24217:2;24202:18;;24195:58;24285:2;24270:18;;24116:178::o;24299:353::-;24501:2;24483:21;;;24540:2;24520:18;;;24513:30;24579:31;24574:2;24559:18;;24552:59;24643:2;24628:18;;24473:179::o;24657:921::-;24876:13;;24858:32;;24950:4;24938:17;;;24932:24;-1:-1:-1;;;;;24928:50:9;24906:20;;;24899:80;25035:4;25023:17;;;25017:24;24995:20;;;24988:54;25089:4;25077:17;;;25071:24;24845:3;24830:19;;;25104:64;;25147:20;;25071:24;25104:64;:::i;:::-;;25224:4;25216:6;25212:17;25206:24;25199:4;25188:9;25184:20;25177:54;25287:4;25279:6;25275:17;25269:24;25262:4;25251:9;25247:20;25240:54;25350:4;25342:6;25338:17;25332:24;25325:4;25314:9;25310:20;25303:54;25413:4;25405:6;25401:17;25395:24;25388:4;25377:9;25373:20;25366:54;25439:6;25494:2;25486:6;25482:15;25476:22;25507:65;25568:2;25557:9;25553:18;25537:14;25507:65;:::i;:::-;;;24812:766;;;;:::o;25583:1329::-;;25758:2;25787;25776:9;25769:21;25826:1;25822;25817:3;25813:11;25809:19;25883:2;25874:6;25868:13;25864:22;25859:2;25848:9;25844:18;25837:50;25951:2;25945;25937:6;25933:15;25927:22;25923:31;25918:2;25907:9;25903:18;25896:59;;26002:2;25994:6;25990:15;25984:22;26042:4;26037:2;26026:9;26022:18;26015:32;26070:69;26134:3;26123:9;26119:19;26105:12;26070:69;:::i;:::-;26056:83;;26188:2;26180:6;26176:15;26170:22;26215:2;26211:7;26283:2;26271:9;26263:6;26259:22;26255:31;26249:3;26238:9;26234:19;26227:60;26310:58;26361:6;26345:14;26310:58;:::i;:::-;26296:72;;26417:3;26409:6;26405:16;26399:23;26377:45;;26488:2;26476:9;26468:6;26464:22;26460:31;26453:4;26442:9;26438:20;26431:61;26521:14;26515:21;26560:6;26552;26545:22;26585:4;26598:145;26612:6;26609:1;26606:13;26598:145;;;26704:22;;;26700:31;;26694:38;26673:14;;;26669:23;;26662:71;26627:10;;26598:145;;;26761:6;26758:1;26755:13;26752:2;;;26828:4;26823:2;26814:6;26806;26802:19;26798:28;26791:42;26752:2;-1:-1:-1;26892:2:9;26880:15;26876:24;26864:37;;;;26860:46;;;;25738:1174;-1:-1:-1;;;;25738:1174:9:o;26917:177::-;27063:25;;;27051:2;27036:18;;27018:76::o;27099:274::-;27273:25;;;-1:-1:-1;;;;;27334:32:9;27329:2;27314:18;;27307:60;27261:2;27246:18;;27228:145::o;27665:242::-;27735:2;27729:9;27765:17;;;27812:18;27797:34;;27833:22;;;27794:62;27791:2;;;27859:9;27791:2;27886;27879:22;27709:198;;-1:-1:-1;27709:198:9:o;27912:194::-;;28022:18;28014:6;28011:30;28008:2;;;28044:9;28008:2;-1:-1:-1;28095:4:9;28076:17;;;28072:28;;27998:108::o;28111:144::-;;28194:17;;;28244:4;28228:21;;;28184:71::o;28260:133::-;-1:-1:-1;;;;;28337:31:9;;28327:42;;28317:2;;28383:1;28380;28373:12;28317:2;28307:86;:::o
Swarm Source
ipfs://7c6afe2c4470236159a290c787a5bb758561175a25d0d28d387a7441f6408388
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.