6101006040523480156200001257600080fd5b50604080518082018252600c81526b76697669616e207068756e6760a01b6020808301918252835180850190945260038452622b24ab60e91b90840152815191929160129162000066916000919062000164565b5081516200007c90600190602085019062000164565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b166080524660a052620000b5620000c8565b60c0525050503360601b60e052620002ea565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fc91906200020a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8280546200017290620002ad565b90600052602060002090601f016020900481019282620001965760008555620001e1565b82601f10620001b157805160ff1916838001178555620001e1565b82800160010185558215620001e1579182015b82811115620001e1578251825591602001919060010190620001c4565b50620001ef929150620001f3565b5090565b5b80821115620001ef5760008155600101620001f4565b600080835482600182811c9150808316806200022757607f831692505b60208084108214156200024857634e487b7160e01b87526022600452602487fd5b8180156200025f576001811462000271576200029f565b60ff198616895284890196506200029f565b60008a815260209020885b86811015620002975781548b8201529085019083016200027c565b505084890196505b509498975050505050505050565b600181811c90821680620002c257607f821691505b60208210811415620002e457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160f81c60a05160c05160e05160601c610ea7620003386000396000818161025b015281816104cd01526105e0015260006104a901526000610474015260006101b20152610ea76000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb1461029d578063b187bd26146102b0578063bedb86fb146102bd578063d505accf146102d0578063dd62ed3e146102e357600080fd5b806370a08231146102165780637ecebe00146102365780638da5cb5b1461025657806395d89b411461029557600080fd5b806330adf81f116100e957806330adf81f14610186578063313ce567146101ad5780633644e515146101e657806340c10f19146101ee57806342966c681461020357600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd14610173575b600080fd5b61012361030e565b6040516101309190610d7e565b60405180910390f35b61014c610147366004610c82565b61039c565b6040519015158152602001610130565b61016560025481565b604051908152602001610130565b61014c610181366004610bd6565b610408565b6101657f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610130565b610165610470565b6102016101fc366004610c82565b6104cb565b005b610201610211366004610ccb565b610563565b610165610224366004610b8a565b60036020526000908152604090205481565b610165610244366004610b8a565b60056020526000908152604090205481565b61027d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b610123610570565b61014c6102ab366004610c82565b61057d565b60065461014c9060ff1681565b6102016102cb366004610cab565b6105de565b6102016102de366004610c11565b610681565b6101656102f1366004610ba4565b600460209081526000928352604080842090915290825290205481565b6000805461031b90610e00565b80601f016020809104026020016040519081016040528092919081815260200182805461034790610e00565b80156103945780601f1061036957610100808354040283529160200191610394565b820191906000526020600020905b81548152906001019060200180831161037757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103f79086815260200190565b60405180910390a350600192915050565b60065460009060ff161561045d5760405162461bcd60e51b8152602060048201526017602482015276333ab1b5903a9710122b24ab1034b9903830bab9b2b21760491b60448201526064015b60405180910390fd5b6104688484846108d2565b949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104a6576104a16109b2565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146105555760405162461bcd60e51b815260206004820152602960248201527f6675636b20752e20245649562063616e206f6e6c79206265206d696e74656420604482015268313c903b34bb34b0b760b91b6064820152608401610454565b61055f8282610a4c565b5050565b61056d3382610aa6565b50565b6001805461031b90610e00565b60065460009060ff16156105cd5760405162461bcd60e51b8152602060048201526017602482015276333ab1b5903a9710122b24ab1034b9903830bab9b2b21760491b6044820152606401610454565b6105d78383610b08565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461066e5760405162461bcd60e51b815260206004820152602f60248201527f6675636b20752e2076697669616e2063616e206f6e6c79206368616e6765202460448201526e56495620706175736520737461746560881b6064820152608401610454565b6006805460ff1916911515919091179055565b428410156106d15760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610454565b60006106db610470565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156107f4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061082a5750886001600160a01b0316816001600160a01b0316145b6108675760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610454565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019811461092e576109098382610de9565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b03851660009081526003602052604081208054859290610956908490610de9565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020610e528339815191529061099f9087815260200190565b60405180910390a3506001949350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516109e49190610ce3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254610a5e9190610dd1565b90915550506001600160a01b038216600081815260036020908152604080832080548601905551848152600080516020610e5283398151915291015b60405180910390a35050565b6001600160a01b03821660009081526003602052604081208054839290610ace908490610de9565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020610e5283398151915290602001610a9a565b33600090815260036020526040812080548391908390610b29908490610de9565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020610e52833981519152906103f79086815260200190565b80356001600160a01b0381168114610b8557600080fd5b919050565b600060208284031215610b9b578081fd5b6105d782610b6e565b60008060408385031215610bb6578081fd5b610bbf83610b6e565b9150610bcd60208401610b6e565b90509250929050565b600080600060608486031215610bea578081fd5b610bf384610b6e565b9250610c0160208501610b6e565b9150604084013590509250925092565b600080600080600080600060e0888a031215610c2b578283fd5b610c3488610b6e565b9650610c4260208901610b6e565b95506040880135945060608801359350608088013560ff81168114610c65578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610c94578182fd5b610c9d83610b6e565b946020939093013593505050565b600060208284031215610cbc578081fd5b813580151581146105d7578182fd5b600060208284031215610cdc578081fd5b5035919050565b600080835482600182811c915080831680610cff57607f831692505b6020808410821415610d1f57634e487b7160e01b87526022600452602487fd5b818015610d335760018114610d4457610d70565b60ff19861689528489019650610d70565b60008a815260209020885b86811015610d685781548b820152908501908301610d4f565b505084890196505b509498975050505050505050565b6000602080835283518082850152825b81811015610daa57858101830151858201604001528201610d8e565b81811115610dbb5783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610de457610de4610e3b565b500190565b600082821015610dfb57610dfb610e3b565b500390565b600181811c90821680610e1457607f821691505b60208210811415610e3557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122086a4baa696b70fb3849a66055d641471696446df084aaeaf2d1702495838e96964736f6c63430008040033