60806040526007805460ff191660011790553480156200001e57600080fd5b5060405160408062003f8f833981018060405260408110156200004057600080fd5b508051602091820151604080518082018252600a81527f54656e5820546f6b656e00000000000000000000000000000000000000000000818601528151808301909252600482527f54454e5800000000000000000000000000000000000000000000000000000000948201949094529192909160128484808280620000ce3364010000000062000232810204565b60018054600160a060020a031916600160a060020a0392909216919091179055620001023364010000000062000284810204565b50600081116200017357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f436170206d7573742062652061626f7665207a65726f2e000000000000000000604482015290519081900360640190fd5b60085560006009819055600a8054600160a060020a031916331790819055604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001db33640100000000620002d6810204565b5050600d805460ff191690558251620001fc90600e906020860190620003bb565b5081516200021290600f906020850190620003bb565b506010805460ff191660ff92909216919091179055506200046092505050565b6200024d600082640100000000620035f26200032882021704565b604051600160a060020a038216907f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d747490600090a250565b6200029f600682640100000000620035f26200032882021704565b604051600160a060020a038216907f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c290600090a250565b620002f1600c82640100000000620035f26200032882021704565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600160a060020a03811615156200033e57600080fd5b62000353828264010000000062000383810204565b156200035e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200039b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fe57805160ff19168380011785556200042e565b828001600101855582156200042e579182015b828111156200042e57825182559160200191906001019062000411565b506200043c92915062000440565b5090565b6200045d91905b808211156200043c576000815560010162000447565b90565b613b1f80620004706000396000f3fe608060405234801561001057600080fd5b50600436106102995760003560e060020a9004806382dc1ec41161016b578063a7fc7a07116100d2578063e77c646d1161008b578063e77c646d14610bac578063ec38a86214610c59578063ee532f3114610c7f578063f282527a14610d45578063f2fde38b14610e92578063f35dad4014610eb857610299565b8063a7fc7a0714610a43578063a9059cbb14610a69578063b429afeb14610a95578063bb3acde914610abb578063c422293b14610b76578063dd62ed3e14610b7e57610299565b806395d89b411161012457806395d89b411461091e5780639675193c146109265780639d89cdde146109e15780639ec5a89414610a07578063a2309ff814610a0f578063a457c2d714610a1757610299565b806382dc1ec4146108b25780638456cb59146108d8578063877b9a67146108e05780638da5cb5b146109065780638f32d59b1461090e578063938050e11461091657610299565b8063355274ea1161020f5780635c975abb116101c85780635c975abb1461084657806366ac3b681461084e5780636ef8d66d1461085657806370a082311461085e578063715018a61461088457806375bba1891461088c57610299565b8063355274ea146107b857806338743904146107c057806339509351146107e45780633f4ba83a1461081057806346fbf68e146108185780634c783bf51461083e57610299565b806320694db01161026157806320694db01461053757806323b872dd1461055f5780632535f762146105955780632bc6acc3146106505780632f1cae8514610792578063313ce5671461079a57610299565b806306fdde031461029e578063095ea7b31461031b578063122eb5751461035b57806318160ddd146104625780631badb25c1461047c575b600080fd5b6102a6610ec0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e05781810151838201526020016102c8565b50505050905090810190601f16801561030d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103476004803603604081101561033157600080fd5b50600160a060020a038135169060200135610f56565b604080519115158252519081900360200190f35b6104216004803603608081101561037157600080fd5b600160a060020a038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103ac57600080fd5b8201836020820111156103be57600080fd5b803590602001918460018302840111640100000000831117156103e057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f6c945050505050565b6040805193151584527fff00000000000000000000000000000000000000000000000000000000000000909216602084015282820152519081900360600190f35b61046a6110a9565b60408051918252519081900360200190f35b6104216004803603606081101561049257600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111640100000000831117156104f657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110af945050505050565b61055d6004803603602081101561054d57600080fd5b5035600160a060020a03166111df565b005b6103476004803603606081101561057557600080fd5b50600160a060020a03813581169160208101359091169060400135611234565b61055d600480360360608110156105ab57600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156105db57600080fd5b8201836020820111156105ed57600080fd5b8035906020019184600183028401116401000000008311171561060f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061135a945050505050565b61055d6004803603608081101561066657600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561069657600080fd5b8201836020820111156106a857600080fd5b803590602001918460018302840111640100000000831117156106ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561071d57600080fd5b82018360208201111561072f57600080fd5b8035906020019184600183028401116401000000008311171561075157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611429945050505050565b610347611530565b6107a2611539565b6040805160ff9092168252519081900360200190f35b61046a611542565b6107c8611548565b60408051600160a060020a039092168252519081900360200190f35b610347600480360360408110156107fa57600080fd5b50600160a060020a038135169060200135611557565b61055d611598565b6103476004803603602081101561082e57600080fd5b5035600160a060020a03166115fc565b610347611615565b61034761161a565b61055d611623565b61055d61162e565b61046a6004803603602081101561087457600080fd5b5035600160a060020a0316611637565b61055d611652565b61055d600480360360208110156108a257600080fd5b5035600160a060020a03166116bc565b61055d600480360360208110156108c857600080fd5b5035600160a060020a03166117fb565b61055d611818565b610347600480360360208110156108f657600080fd5b5035600160a060020a031661187e565b6107c8611891565b6103476118a0565b61055d6118b1565b6102a66118ba565b61055d6004803603606081101561093c57600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561096c57600080fd5b82018360208201111561097e57600080fd5b803590602001918460018302840111640100000000831117156109a057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061191b945050505050565b61055d600480360360208110156109f757600080fd5b5035600160a060020a0316611a30565b6107c8611bb5565b61046a611bc4565b61034760048036036040811015610a2d57600080fd5b50600160a060020a038135169060200135611bca565b61055d60048036036020811015610a5957600080fd5b5035600160a060020a0316611c06565b61034760048036036040811015610a7f57600080fd5b50600160a060020a038135169060200135611c58565b61034760048036036020811015610aab57600080fd5b5035600160a060020a0316611d7c565b61055d60048036036060811015610ad157600080fd5b600160a060020a0382351691602081013591810190606081016040820135640100000000811115610b0157600080fd5b820183602082011115610b1357600080fd5b80359060200191846001830284011164010000000083111715610b3557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d8e945050505050565b61055d611dae565b61046a60048036036040811015610b9457600080fd5b50600160a060020a0381358116916020013516611e88565b61055d60048036036040811015610bc257600080fd5b81359190810190604081016020820135640100000000811115610be457600080fd5b820183602082011115610bf657600080fd5b80359060200191846001830284011164010000000083111715610c1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611eb3945050505050565b61055d60048036036020811015610c6f57600080fd5b5035600160a060020a0316611fc0565b61055d60048036036080811015610c9557600080fd5b600160a060020a03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610cd057600080fd5b820183602082011115610ce257600080fd5b80359060200191846001830284011164010000000083111715610d0457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120c7945050505050565b61055d600480360360a0811015610d5b57600080fd5b600160a060020a03823581169260208101359091169160408201359190810190608081016060820135640100000000811115610d9657600080fd5b820183602082011115610da857600080fd5b80359060200191846001830284011164010000000083111715610dca57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050640100000000811115610e1d57600080fd5b820183602082011115610e2f57600080fd5b80359060200191846001830284011164010000000083111715610e5157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612192945050505050565b61055d60048036036020811015610ea857600080fd5b5035600160a060020a03166122a5565b61046a6122c1565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f4c5780601f10610f2157610100808354040283529160200191610f4c565b820191906000526020600020905b815481529060010190602001808311610f2f57829003601f168201915b5050505050905090565b6000610f633384846122c7565b50600192915050565b6001546040517f3fbae206000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152868216602484015233604484018190526064840187905260a060848501908152865160a486015286516000968796879690911694633fbae206948d948d9491938d938d9390929160c4019060208501908083838f5b83811015611014578181015183820152602001610ffc565b50505050905090810190601f1680156110415780820380516001836020036101000a031916815260200191505b50965050505050505060606040518083038186803b15801561106257600080fd5b505afa158015611076573d6000803e3d6000fd5b505050506040513d606081101561108c57600080fd5b508051602082015160409092015190999198509650945050505050565b60045490565b6001546040517ff1d74b0f0000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a0387811660248501526044840187905260806064850190815286516084860152865160009687968796949091169463f1d74b0f94938c938c938c93929160a49091019060208501908083838e5b8381101561114c578181015183820152602001611134565b50505050905090810190601f1680156111795780820380516001836020036101000a031916815260200191505b509550505050505060606040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d60608110156111c357600080fd5b5080516020820151604090920151909891975095509350505050565b6111e83361187e565b15156112285760405160e560020a62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b61123181612353565b50565b600d5460009060ff161561124757600080fd5b83838361125587878761239b565b600b54604080517f43f34f9c000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015286811660248301526044820186905291519397509116916343f34f9c916064808201926020929091908290030181600087803b1580156112ce57600080fd5b505af11580156112e2573d6000803e3d6000fd5b505050506040513d60208110156112f857600080fd5b50511515611350576040805160e560020a62461bcd02815260206004820181905260248201527f52657761726473207570646174654f6e5472616e73666572206661696c65642e604482015290519081900360640190fd5b5050509392505050565b60006113678484846110af565b50909150508015156113c3576040805160e560020a62461bcd02815260206004820152601860248201527f5472616e73666572206973206e6f7420616c6c6f7765642e0000000000000000604482015290519081900360640190fd5b6113cd848461242a565b1515611423576040805160e560020a62461bcd02815260206004820152601060248201527f5472616e73666572206661696c65642e00000000000000000000000000000000604482015290519081900360640190fd5b50505050565b838361143786868686612437565b600b54604080517f84733163000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163847331639160448083019260209291908290030181600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d60208110156114d057600080fd5b50511515611528576040805160e560020a62461bcd02815260206004820152601c60248201527f52657761726473207570646174654f6e4275726e206661696c65642e00000000604482015290519081900360640190fd5b505050505050565b60075460ff1681565b60105460ff1690565b60085481565b600154600160a060020a031681565b336000818152600360209081526040808320600160a060020a03871684529091528120549091610f63918590611593908663ffffffff61280516565b6122c7565b6115a1336115fc565b15156115ac57600080fd5b600d5460ff1615156115bd57600080fd5b600d805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061160f600c8363ffffffff61281e16565b92915050565b600190565b600d5460ff1690565b61162c33612855565b565b61162c3361289d565b600160a060020a031660009081526002602052604090205490565b61165a6118a0565b151561166557600080fd5b600a54604051600091600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a805473ffffffffffffffffffffffffffffffffffffffff19169055565b6116c533611d7c565b15156117055760405160e560020a62461bcd02815260040180806020018281038252602b8152602001806139ab602b913960400191505060405180910390fd5b600154600160a060020a031615156117515760405160e560020a62461bcd02815260040180806020018281038252602d815260200180613a31602d913960400191505060405180910390fd5b61175a816128e5565b151561179a5760405160e560020a62461bcd028152600401808060200182810382526021815260200180613a106021913960400191505060405180910390fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f74ad00f42c7567187f818b7401d2b03eae8dc59f390e590b0bbdf9048c53d2549181900360200190a150565b611804336115fc565b151561180f57600080fd5b611231816128ed565b611821336115fc565b151561182c57600080fd5b600d5460ff161561183c57600080fd5b600d805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600061160f60068363ffffffff61281e16565b600a54600160a060020a031690565b600a54600160a060020a0316331490565b61162c33612935565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f4c5780601f10610f2157610100808354040283529160200191610f4c565b600d5460ff161561192b57600080fd5b828261193885858561297d565b600b54604080517f84733163000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163847331639160448083019260209291908290030181600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b505050506040513d60208110156119d157600080fd5b50511515611a29576040805160e560020a62461bcd02815260206004820152601c60248201527f52657761726473207570646174654f6e4275726e206661696c65642e00000000604482015290519081900360640190fd5b5050505050565b60075460ff161515611a8c576040805160e560020a62461bcd02815260206004820152601a60248201527f49737375616e636520706572696f642068617320656e6465642e000000000000604482015290519081900360640190fd5b611a953361187e565b1515611ad55760405160e560020a62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b600160a060020a0381161515611b1f5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613ad26022913960400191505060405180910390fd5b33600160a060020a0382161415611b6a5760405160e560020a62461bcd02815260040180806020018281038252603a8152602001806139d6603a913960400191505060405180910390fd5b611b7381612353565b611b7c33612935565b604051600160a060020a0382169033907ff660028353db429d08dc90729f6902d6823d2da41ed8733e06768beef5e01ddf90600090a350565b600b54600160a060020a031681565b60095481565b336000818152600360209081526040808320600160a060020a03871684529091528120549091610f63918590611593908663ffffffff612bad16565b611c0f33611d7c565b1515611c4f5760405160e560020a62461bcd02815260040180806020018281038252602b8152602001806139ab602b913960400191505060405180910390fd5b61123181612bc2565b600d5460009060ff1615611c6b57600080fd5b338383611c788686612c0a565b600b54604080517f43f34f9c000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015286811660248301526044820186905291519397509116916343f34f9c916064808201926020929091908290030181600087803b158015611cf157600080fd5b505af1158015611d05573d6000803e3d6000fd5b505050506040513d6020811015611d1b57600080fd5b50511515611d73576040805160e560020a62461bcd02815260206004820181905260248201527f52657761726473207570646174654f6e5472616e73666572206661696c65642e604482015290519081900360640190fd5b50505092915050565b600061160f818363ffffffff61281e16565b600d5460ff1615611d9e57600080fd5b611da9838383612c96565b505050565b60075460ff161515611e0a576040805160e560020a62461bcd02815260206004820152601a60248201527f49737375616e636520706572696f642068617320656e6465642e000000000000604482015290519081900360640190fd5b611e133361187e565b1515611e535760405160e560020a62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b6007805460ff191690556040517f29fe76cc5ca143e91eadf7242fda487fcef09318c1237900f958abe1e2c5beff90600090a1565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600d5460ff1615611ec357600080fd5b3382611ecf8484612f21565b600b54604080517f84733163000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163847331639160448083019260209291908290030181600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d6020811015611f6857600080fd5b50511515611423576040805160e560020a62461bcd02815260206004820152601c60248201527f52657761726473207570646174654f6e4275726e206661696c65642e00000000604482015290519081900360640190fd5b611fc86118a0565b1515611fd357600080fd5b600160a060020a038116151561201d5760405160e560020a62461bcd02815260040180806020018281038252602b815260200180613a5e602b913960400191505060405180910390fd5b612026816128e5565b15156120665760405160e560020a62461bcd028152600401808060200182810382526021815260200180613a106021913960400191505060405180910390fd5b600b8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f05f3326e0527f309d4015dee3bc3f36e650b53fc823bab69c99847814acfafdf9181900360200190a150565b60006120d585858585610f6c565b5090915050801515612131576040805160e560020a62461bcd02815260206004820152601c60248201527f5472616e7366657246726f6d206973206e6f7420616c6c6f7765642e00000000604482015290519081900360640190fd5b61213c858585613144565b1515611a29576040805160e560020a62461bcd02815260206004820152601460248201527f5472616e7366657246726f6d206661696c65642e000000000000000000000000604482015290519081900360640190fd5b8484846121a28888888888613196565b600b54604080517f43f34f9c000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152858116602483015260448201859052915191909216916343f34f9c9160648083019260209291908290030181600087803b15801561221957600080fd5b505af115801561222d573d6000803e3d6000fd5b505050506040513d602081101561224357600080fd5b5051151561229b576040805160e560020a62461bcd02815260206004820181905260248201527f52657761726473207570646174654f6e5472616e73666572206661696c65642e604482015290519081900360640190fd5b5050505050505050565b6122ad6118a0565b15156122b857600080fd5b61123181613574565b60055481565b600160a060020a03821615156122dc57600080fd5b600160a060020a03831615156122f157600080fd5b600160a060020a03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61236460068263ffffffff6135f216565b604051600160a060020a038216907f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c290600090a250565b6000806123ba8585856020604051908101604052806000815250610f6c565b5090915050801515612416576040805160e560020a62461bcd02815260206004820152601c60248201527f5472616e7366657246726f6d206973206e6f7420616c6c6f7765642e00000000604482015290519081900360640190fd5b612421858585613144565b95945050505050565b6000610f63338484613640565b61244033611d7c565b15156124805760405160e560020a62461bcd02815260040180806020018281038252602b8152602001806139ab602b913960400191505060405180910390fd5b6000600160009054906101000a9004600160a060020a0316600160a060020a0316638639ccaa33878787876040518663ffffffff1660e060020a0281526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561253457818101518382015260200161251c565b50505050905090810190601f1680156125615780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561259457818101518382015260200161257c565b50505050905090810190601f1680156125c15780820380516001836020036101000a031916815260200191505b5097505050505050505060606040518083038186803b1580156125e357600080fd5b505afa1580156125f7573d6000803e3d6000fd5b505050506040513d606081101561260d57600080fd5b50519050801515612668576040805160e560020a62461bcd02815260206004820181905260248201527f636f6e74726f6c6c657252656465656d206973206e6f7420616c6c6f7765642e604482015290519081900360640190fd5b61267185611637565b8411156126c8576040805160e560020a62461bcd02815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e0000000000000000000000604482015290519081900360640190fd5b6126d2858561370f565b84600160a060020a03167f876b7cb47aa150b3a5516188b19ed308752ad4d0ae9a702543353b78163f7589338686866040518085600160a060020a0316600160a060020a031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612760578181015183820152602001612748565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156127c05781810151838201526020016127a8565b50505050905090810190601f1680156127ed5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a25050505050565b60008282018381101561281757600080fd5b9392505050565b6000600160a060020a038216151561283557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61286660008263ffffffff61373316565b604051600160a060020a038216907f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e8111390600090a250565b6128ae600c8263ffffffff61373316565b604051600160a060020a038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6000903b1190565b6128fe600c8263ffffffff6135f216565b604051600160a060020a038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61294660068263ffffffff61373316565b604051600160a060020a038216907faf66545c919a3be306ee446d8f42a9558b5b022620df880517bc9593ec0f2d5290600090a250565b6001546040517f45c6909b0000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a0387811660248501526044840187905260806064850190815286516084860152865160009692909216946345c6909b94938a938a938a93909160a49091019060208501908083838e5b83811015612a165781810151838201526020016129fe565b50505050905090810190601f168015612a435780820380516001836020036101000a031916815260200191505b509550505050505060606040518083038186803b158015612a6357600080fd5b505afa158015612a77573d6000803e3d6000fd5b505050506040513d6060811015612a8d57600080fd5b50519050801515612ae8576040805160e560020a62461bcd02815260206004820152601a60248201527f52656465656d46726f6d206973206e6f7420616c6c6f7765642e000000000000604482015290519081900360640190fd5b612af2848461377f565b83600160a060020a031633600160a060020a03167fb7d0d6b60740753e9f16692a2f479472a1385aec2420fa43225b02f2ffa1afe785856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b6c578181015183820152602001612b54565b50505050905090810190601f168015612b995780820380516001836020036101000a031916815260200191505b50935050505060405180910390a350505050565b600082821115612bbc57600080fd5b50900390565b612bd360008263ffffffff6135f216565b604051600160a060020a038216907f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d747490600090a250565b600080612c28848460206040519081016040528060008152506110af565b5090915050801515612c84576040805160e560020a62461bcd02815260206004820152601860248201527f5472616e73666572206973206e6f7420616c6c6f7765642e0000000000000000604482015290519081900360640190fd5b612c8e848461242a565b949350505050565b60075460ff161515612cf2576040805160e560020a62461bcd02815260206004820152601a60248201527f49737375616e636520706572696f642068617320656e6465642e000000000000604482015290519081900360640190fd5b612cfb3361187e565b1515612d3b5760405160e560020a62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b6001546040517f10992719000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301908152602483018690526060604484019081528551606485015285516000959390931693631099271993899389938993919290916084019060208501908083838d5b83811015612dcd578181015183820152602001612db5565b50505050905090810190601f168015612dfa5780820380516001836020036101000a031916815260200191505b5094505050505060606040518083038186803b158015612e1957600080fd5b505afa158015612e2d573d6000803e3d6000fd5b505050506040513d6060811015612e4357600080fd5b50519050801515612e9e576040805160e560020a62461bcd02815260206004820152601560248201527f4973737565206973206e6f7420616c6c6f7765642e0000000000000000000000604482015290519081900360640190fd5b612ea884846137c4565b83600160a060020a031633600160a060020a03167f0e9905d62635f049c2f4e11678ebf9dc3d1f8c4a653e290759b772e47ba00d00858560405180838152602001806020018281038252838181518152602001915080519060200190808383600083811015612b6c578181015183820152602001612b54565b6001546040517f9809705d000000000000000000000000000000000000000000000000000000008152336004820181815260248301869052606060448401908152855160648501528551600095600160a060020a031694639809705d9493899389939192909160849091019060208501908083838d5b83811015612faf578181015183820152602001612f97565b50505050905090810190601f168015612fdc5780820380516001836020036101000a031916815260200191505b5094505050505060606040518083038186803b158015612ffb57600080fd5b505afa15801561300f573d6000803e3d6000fd5b505050506040513d606081101561302557600080fd5b50519050801515613080576040805160e560020a62461bcd02815260206004820152601660248201527f52656465656d206973206e6f7420616c6c6f7765642e00000000000000000000604482015290519081900360640190fd5b61308a338461370f565b33600160a060020a031633600160a060020a03167fb7d0d6b60740753e9f16692a2f479472a1385aec2420fa43225b02f2ffa1afe785856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156131045781810151838201526020016130ec565b50505050905090810190601f1680156131315780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3505050565b6000613151848484613640565b600160a060020a03841660009081526003602090815260408083203380855292529091205461318c918691611593908663ffffffff612bad16565b5060019392505050565b61319f33611d7c565b15156131df5760405160e560020a62461bcd02815260040180806020018281038252602b8152602001806139ab602b913960400191505060405180910390fd5b6000600160009054906101000a9004600160a060020a0316600160a060020a031663f269feff3388888888886040518763ffffffff1660e060020a0281526004018087600160a060020a0316600160a060020a0316815260200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156132ac578181015183820152602001613294565b50505050905090810190601f1680156132d95780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561330c5781810151838201526020016132f4565b50505050905090810190601f1680156133395780820380516001836020036101000a031916815260200191505b509850505050505050505060606040518083038186803b15801561335c57600080fd5b505afa158015613370573d6000803e3d6000fd5b505050506040513d606081101561338657600080fd5b505190508015156133cb5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613ab06022913960400191505060405180910390fd5b6133d486611637565b84111561342b576040805160e560020a62461bcd02815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e0000000000000000000000604482015290519081900360640190fd5b613436868686613640565b84600160a060020a031686600160a060020a03167f6bf62b4b9c7b768275122bf70d429efc398a056d669b1efdf6c3976346246d7d338787876040518085600160a060020a0316600160a060020a031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156134ce5781810151838201526020016134b6565b50505050905090810190601f1680156134fb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561352e578181015183820152602001613516565b50505050905090810190601f16801561355b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b600160a060020a038116151561358957600080fd5b600a54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038116151561360757600080fd5b613611828261281e565b1561361b57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038216151561365557600080fd5b600160a060020a03831660009081526002602052604090205461367e908263ffffffff612bad16565b600160a060020a0380851660009081526002602052604080822093909355908416815220546136b3908263ffffffff61280516565b600160a060020a0380841660008181526002602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600554613722908263ffffffff61280516565b60055561372f8282613853565b5050565b600160a060020a038116151561374857600080fd5b613752828261281e565b151561375d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b613789828261370f565b600160a060020a03821660009081526003602090815260408083203380855292529091205461372f918491611593908563ffffffff612bad16565b806008546137dd8260095461280590919063ffffffff16565b1115613833576040805160e560020a62461bcd02815260206004820152601760248201527f43616e6e6f74206d696e74206265796f6e64206361702e000000000000000000604482015290519081900360640190fd5b600954613846908363ffffffff61280516565b600955611da983836138fe565b600160a060020a038216151561386857600080fd5b60045461387b908263ffffffff612bad16565b600455600160a060020a0382166000908152600260205260409020546138a7908263ffffffff612bad16565b600160a060020a0383166000818152600260209081526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600160a060020a038216151561391357600080fd5b600454613926908263ffffffff61280516565b600455600160a060020a038216600090815260026020526040902054613952908263ffffffff61280516565b600160a060020a03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505056fe4f6e6c7920436f6e74726f6c6c6572732063616e206578656375746520746869732066756e6374696f6e2e4e6577204973737565722063616e6e6f742068617665207468652073616d65206164647265737320617320746865206f6c64206973737565722e41646472657373206d75737420706f696e7420746f206120636f6e74726163742e4d6f64657261746f722061646472657373206d757374206e6f742062652061207a65726f20616464726573732e526577617264732061646472657373206d757374206e6f742062652061207a65726f20616464726573732e4f6e6c7920497373756572732063616e206578656375746520746869732066756e6374696f6e2e636f6e74726f6c6c65725472616e73666572206973206e6f7420616c6c6f7765642e4e6577204973737565722063616e6e6f74206265207a65726f20616464726573732ea165627a7a7230582047019c3539fcedb634408cd6c43e8a5e4e651bf313ec9ff2ef8acd2213417f0d0029000000000000000000000000d41f5a9bf9ff2aed4497f39bb3ccb5ef58346aff000000000000000000000000000000000000000000a9c0a7f258183071078b8f