6080604052604051620047da380380620047da8339810160408190526200002691620001f4565b600662000034868262000342565b50600762000043858262000342565b50600862000052848262000342565b506009829055600a80546001600160a01b0319166001600160a01b0383161790556040516000907ffeffbbb80afd8dd40bdfa309e27d3d8f87caf900c8ae1e18489937b901b0da3d90620000a89086906200040e565b60405180910390a26040518281526000907f56ac228efc924bd06f3fde5bc1911b723fe4a5553eedfe1422069f8fbd597d849060200160405180910390a26040516001600160a01b038216906000907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97908290a3505050505062000443565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200015a57818101518382015260200162000140565b50506000910152565b600082601f8301126200017557600080fd5b81516001600160401b038082111562000192576200019262000127565b604051601f8301601f19908116603f01168101908282118183101715620001bd57620001bd62000127565b81604052838152866020858801011115620001d757600080fd5b620001ea8460208301602089016200013d565b9695505050505050565b600080600080600060a086880312156200020d57600080fd5b85516001600160401b03808211156200022557600080fd5b6200023389838a0162000163565b965060208801519150808211156200024a57600080fd5b6200025889838a0162000163565b955060408801519150808211156200026f57600080fd5b506200027e8882890162000163565b60608801516080890151919550935090506001600160a01b0381168114620002a557600080fd5b809150509295509295909350565b600181811c90821680620002c857607f821691505b602082108103620002e957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033d57600081815260208120601f850160051c81016020861015620003185750805b601f850160051c820191505b81811015620003395782815560010162000324565b5050505b505050565b81516001600160401b038111156200035e576200035e62000127565b62000376816200036f8454620002b3565b84620002ef565b602080601f831160018114620003ae5760008415620003955750858301515b600019600386901b1c1916600185901b17855562000339565b600085815260208120601f198616915b82811015620003df57888601518255948401946001909101908401620003be565b5085821015620003fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200042f8160408501602087016200013d565b601f01601f19169190910160400192915050565b61438780620004536000396000f3fe6080604052600436106102ba5760003560e01c8063836eebee1161016e578063d4d2e7f2116100cb578063f242432a1161007f578063f5298aca11610064578063f5298aca1461080c578063f851a4401461081f578063fc95ba431461084c57600080fd5b8063f242432a146107c9578063f4c3b4d7146107dc57600080fd5b8063dda40797116100b0578063dda4079714610768578063e985e9c51461077b578063eddd0d9c146107b657600080fd5b8063d4d2e7f214610725578063dc2a90f11461075557600080fd5b8063a22cb46511610122578063ac9650d811610107578063ac9650d814610693578063afa88bca146106c0578063bd85b039146106f857600080fd5b8063a22cb4651461066d578063a5e90eee1461068057600080fd5b806394bfa4581161015357806394bfa4581461063257806395d89b41146106455780639ea64fa41461065a57600080fd5b8063836eebee146105ff578063862440e21461061f57600080fd5b80632eb2c2d61161021c5780636352211e116101d05780637140d960116101b55780637140d960146105b95780637769ea0b146105cc578063807df56d146105df57600080fd5b80636352211e14610563578063704b6c02146105a657600080fd5b806349e5078c1161020157806349e5078c146105105780634e1273f41461052357806355f804b31461055057600080fd5b80632eb2c2d614610457578063387bbabd1461046a57600080fd5b806312156691116102735780631e9ffac9116102585780631e9ffac9146103df5780632606555a146103f257806327dd1b001461041257600080fd5b80631215669114610391578063190e9de0146103cc57600080fd5b8063026e402b116102a4578063026e402b1461033a57806306fdde031461034f5780630e89341c1461037157600080fd5b8062fdd58e146102bf57806301ffc9a71461030a575b600080fd5b3480156102cb57600080fd5b506102f76102da36600461384b565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561031657600080fd5b5061032a6103253660046138a6565b61087c565b6040519015158152602001610301565b61034d61034836600461384b565b610961565b005b34801561035b57600080fd5b50610364610a33565b6040516103019190613927565b34801561037d57600080fd5b5061036461038c36600461393a565b610ac1565b34801561039d57600080fd5b5061032a6103ac36600461384b565b601060209081526000928352604080842090915290825290205460ff1681565b61034d6103da36600461384b565b610c01565b61034d6103ed366004613953565b610d41565b3480156103fe57600080fd5b5061036461040d36600461384b565b610e15565b34801561041e57600080fd5b5061043261042d36600461384b565b610e39565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610301565b61034d610465366004613a14565b610e84565b34801561047657600080fd5b506104d7610485366004613953565b600560209081526000938452604080852082529284528284209052825290205464ffffffffff8116906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff1682565b6040805164ffffffffff90931683527affffffffffffffffffffffffffffffffffffffffffffffffffffff909116602083015201610301565b61034d61051e366004613adf565b611074565b34801561052f57600080fd5b5061054361053e366004613b1b565b6111bf565b6040516103019190613b87565b61034d61055e366004613bcb565b611337565b34801561056f57600080fd5b5061043261057e36600461393a565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61034d6105b4366004613c0d565b61141a565b61034d6105c7366004613c28565b61150c565b61034d6105da366004613c28565b611638565b3480156105eb57600080fd5b506102f76105fa36600461384b565b61175b565b34801561060b57600080fd5b506102f761061a366004613953565b611841565b61034d61062d366004613c54565b611ba8565b61034d610640366004613ca0565b611cb3565b34801561065157600080fd5b50610364611e10565b61034d610668366004613cee565b611e1d565b61034d61067b366004613d92565b611ffb565b61034d61068e366004613d92565b612093565b34801561069f57600080fd5b506106b36106ae366004613dbc565b612199565b6040516103019190613df2565b3480156106cc57600080fd5b506102f76106db36600461384b565b600460209081526000928352604080842090915290825290205481565b34801561070457600080fd5b506102f761071336600461393a565b60006020819052908152604090205481565b34801561073157600080fd5b5061032a610740366004613c0d565b600c6020526000908152604090205460ff1681565b61034d610763366004613cee565b612215565b61034d61077636600461384b565b612401565b34801561078757600080fd5b5061032a610796366004613e72565b600260209081526000928352604080842090915290825290205460ff1681565b61034d6107c436600461393a565b6124ec565b61034d6107d7366004613e9c565b6125aa565b3480156107e857600080fd5b5061032a6107f736600461393a565b600e6020526000908152604090205460ff1681565b61034d61081a366004613953565b612743565b34801561082b57600080fd5b50600a546104329073ffffffffffffffffffffffffffffffffffffffff1681565b34801561085857600080fd5b5061032a61086736600461393a565b600f6020526000908152604090205460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061090f57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061095b57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061096d3383610e39565b33600081815260036020908152604080832087845282529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8981169182179092559251878152949550919391851692917f287e04de574701d97a55bd9ea85b32defecf76a607b8007ee9ae8c126bf7a746910160405180910390a4336000908152600160209081526040808320858452909152902054610a2e908290859085906127fc565b505050565b60068054610a4090613f14565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6c90613f14565b8015610ab95780601f10610a8e57610100808354040283529160200191610ab9565b820191906000526020600020905b815481529060010190602001808311610a9c57829003601f168201915b505050505081565b600081815260116020526040812080546060929190610adf90613f14565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b90613f14565b8015610b585780601f10610b2d57610100808354040283529160200191610b58565b820191906000526020600020905b815481529060010190602001808311610b3b57829003601f168201915b50505050509050805160000361095b5760088054610b7590613f14565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba190613f14565b8015610bee5780601f10610bc357610100808354040283529160200191610bee565b820191906000526020600020905b815481529060010190602001808311610bd157829003601f168201915b5050505050915050919050565b50919050565b6000818152600b6020526040902054819073ffffffffffffffffffffffffffffffffffffffff16331480610c4c5750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b610cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b6000828152600b602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155915184815233917f0c0103fd62c23e8538ac757958ac703a4714b7a2a577784d90669a8966d09a2e910160405180910390a3505050565b6000828152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16331480610d825750336000908152600c602052604090205460ff165b80610da45750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b610a2e838383612a66565b601260209081526000928352604080842090915290825290208054610a4090613f14565b73ffffffffffffffffffffffffffffffffffffffff80831660009081526003602090815260408083208584529091528120549091168015610e7a5780610e7c565b835b949350505050565b610e948888888888888888612a87565b60008060005b8781101561106757888882818110610eb457610eb4613f61565b905060200201359250868682818110610ecf57610ecf613f61565b6000868152600e60209081526040909120549102929092013593505060ff16610f54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c4500000000000000000000000000000000006044820152606401610cae565b6000838152600f602052604090205460ff16156110415773ffffffffffffffffffffffffffffffffffffffff8b16600090815260106020908152604080832086845290915290205460ff168015610fdb575073ffffffffffffffffffffffffffffffffffffffff8a16600090815260106020908152604080832086845290915290205460ff165b611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4f545f5045524d4954544544000000000000000000000000000000000000006044820152606401610cae565b61105f61104e8c85610e39565b6110588c86610e39565b85856127fc565b600101610e9a565b5050505050505050505050565b6000828152600b6020526040902054829073ffffffffffffffffffffffffffffffffffffffff163314806110bf5750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260106020908152604080832087845282529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915582518781529182015233917feddd965981459de97ba24736b7f86682d883ccd91dd7216e944bf3461bd342ac910160405180910390a350505050565b606083821461122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610cae565b8367ffffffffffffffff81111561124357611243613f90565b60405190808252806020026020018201604052801561126c578160200160208202803683370190505b50905060005b8481101561132e576001600087878481811061129057611290613f61565b90506020020160208101906112a59190613c0d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106112f3576112f3613f61565b9050602002013581526020019081526020016000205482828151811061131b5761131b613f61565b6020908102919091010152600101611272565b50949350505050565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146113b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f41444d494e00000000000000000000000000000000000000000000006044820152606401610cae565b60086113c5828483614005565b503373ffffffffffffffffffffffffffffffffffffffff167ffeffbbb80afd8dd40bdfa309e27d3d8f87caf900c8ae1e18489937b901b0da3d838360405161140e929190614168565b60405180910390a25050565b600a5473ffffffffffffffffffffffffffffffffffffffff16331461149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f41444d494e00000000000000000000000000000000000000000000006044820152606401610cae565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff9790600090a350565b6000828152600b6020526040902054829073ffffffffffffffffffffffffffffffffffffffff163314806115575750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b6115bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b6000838152600e602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915582518681529182015233917f030b8b6f293952c4e53cc2ac59481057844588ce19c7d10ca5468e4d6938f19591015b60405180910390a2505050565b6000828152600b6020526040902054829073ffffffffffffffffffffffffffffffffffffffff163314806116835750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b6116e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b6000838152600f602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915582518681529182015233917fe5718fbb4306c0fd3ddee9c0c5459ee4b1a1dc19271ce6bd9447c6938e544af4910161162b565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832084845290915281205480820361179a57600061181c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832086845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850184529091529020546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff165b7affffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60008142116118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e44455445524d494e454400000000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320868452909152812054908190036118ef576000915050611ba1565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260056020908152604080832087845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501845290915290205464ffffffffff1683106119e05773ffffffffffffffffffffffffffffffffffffffff8516600090815260056020908152604080832087845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909401835292905220547affffffffffffffffffffffffffffffffffffffffffffffffffffff65010000000000909104169050611ba1565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320878452825280832083805290915290205464ffffffffff16831015611a31576000915050611ba1565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b81811115611b3e5773ffffffffffffffffffffffffffffffffffffffff87166000908152600560209081526040808320898452825280832060028686030485038085529083529281902081518083019092525464ffffffffff8116808352650100000000009091047affffffffffffffffffffffffffffffffffffffffffffffffffffff169282019290925290879003611b1857602001517affffffffffffffffffffffffffffffffffffffffffffffffffffff169450611ba19350505050565b805164ffffffffff16871115611b3057819350611b37565b6001820392505b5050611a57565b5073ffffffffffffffffffffffffffffffffffffffff86166000908152600560209081526040808320888452825280832093835292905220546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff169150505b9392505050565b6000838152600b6020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331480611bf35750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b611c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b6000848152601160205260409020611c72838583614005565b50837f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8484604051611ca5929190614168565b60405180910390a250505050565b6000838152600b6020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331480611cfe5750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b611d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff851660009081526012602090815260408083208784529091529020611d9f838583614005565b508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167faec44455c89e1ef893ccf0c00a460a424273aa64f494989d9d2f16b6ec2c1101868686604051611e019392919061417c565b60405180910390a35050505050565b60078054610a4090613f14565b6009548015611e8f57803414611e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4e4f545f464545000000000000000000000000000000000000000000000000006044820152606401610cae565b6000888152600d602052604090205460ff1615611f08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f52454749535445524544000000000000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff821615611faa576000888152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff871690811790915590518b81529092917f0c0103fd62c23e8538ac757958ac703a4714b7a2a577784d90669a8966d09a2e910160405180910390a35b6000888152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ff089898989898989612ecf565b505050505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a35050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f41444d494e00000000000000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600c602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016851515908117909155915191825233917f5c7862b97fea73a5d9bf227ebff3c8c786277354825991f1fdc48846baffa83c9101612087565b6060811561095b5750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af46121db573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f0167ffffffffffffffe0168183106121b85760408051919052949350505050565b6000878152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806122575750336000908152600c602052604090205460ff165b806122795750600a5473ffffffffffffffffffffffffffffffffffffffff1633145b6122df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b6000888152600d602052604090205460ff1661232d576000888152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b73ffffffffffffffffffffffffffffffffffffffff811615801561239e57506000888152600b6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915515155b156123f25760405188815273ffffffffffffffffffffffffffffffffffffffff8316906000907f0c0103fd62c23e8538ac757958ac703a4714b7a2a577784d90669a8966d09a2e9060200160405180910390a35b611ff089898989898989612ecf565b600a5473ffffffffffffffffffffffffffffffffffffffff163314612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f41444d494e00000000000000000000000000000000000000000000006044820152606401610cae565b60008060008084865af16124e8577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260136024527f4554485f5452414e534645525f4641494c45440000000000000000000000000060445260646000fd5b5050565b600a5473ffffffffffffffffffffffffffffffffffffffff16331461256d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f41444d494e00000000000000000000000000000000000000000000006044820152606401610cae565b600981905560405181815233907f56ac228efc924bd06f3fde5bc1911b723fe4a5553eedfe1422069f8fbd597d849060200160405180910390a250565b6125b8868686868686612f6f565b6000848152600e602052604090205460ff16612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c4500000000000000000000000000000000006044820152606401610cae565b6000848152600f602052604090205460ff161561271d5773ffffffffffffffffffffffffffffffffffffffff8616600090815260106020908152604080832087845290915290205460ff1680156126b7575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832087845290915290205460ff165b61271d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4f545f5045524d4954544544000000000000000000000000000000000000006044820152606401610cae565b61273b61272a8786610e39565b6127348787610e39565b86866127fc565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff84161480610da4575073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205460ff16610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561283757508015155b15612a605773ffffffffffffffffffffffffffffffffffffffff8416156129525773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083208584529091528120549081810361289857600061291a565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020908152604080832087845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860184529091529020546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff165b7affffffffffffffffffffffffffffffffffffffffffffffffffffff16905061294f8685848461294a88826141ce565b6132ac565b50505b73ffffffffffffffffffffffffffffffffffffffff831615612a605773ffffffffffffffffffffffffffffffffffffffff83166000908152600460209081526040808320858452909152812054908181036129ae576000612a30565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260056020908152604080832087845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860184529091529020546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff165b7affffffffffffffffffffffffffffffffffffffffffffffffffffff16905061273b8585848461294a88826141e1565b50505050565b612a718383836134ce565b610a2e612a7e8484610e39565b600084846127fc565b848314612af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610cae565b3373ffffffffffffffffffffffffffffffffffffffff89161480612b44575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff165b612baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b60008060005b87811015612c7357888882818110612bca57612bca613f61565b905060200201359250868682818110612be557612be5613f61565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260016020908152604080832089845282528220805493909102949094013595508593925090612c319084906141ce565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020818152604080842087855290915290912080548401905501612bb0565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051612cee949392919061423f565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15612e46576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190612d759033908f908e908e908e908e908e908e90600401614271565b6020604051808303816000875af1158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db891906142e2565b7fffffffff000000000000000000000000000000000000000000000000000000001614612e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610cae565b612ec3565b73ffffffffffffffffffffffffffffffffffffffff8916612ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610cae565b50505050505050505050565b612edc878787878761357e565b600086815260208190526040902054612ef4906137e0565b50612f0b6000612f048989610e39565b88886127fc565b8015612f66576000868152601160205260409020612f2a828483614005565b50857f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8383604051612f5d929190614168565b60405180910390a25b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff87161480612fc3575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff165b613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610cae565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160209081526040808320878452909152812080548592906130699084906141ce565b909155505073ffffffffffffffffffffffffffffffffffffffff85811660008181526001602090815260408083208984528252918290208054880190558151888152908101879052919289169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b1561322f576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061315e9033908b908a908a908a908a906004016142ff565b6020604051808303816000875af115801561317d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a191906142e2565b7fffffffff00000000000000000000000000000000000000000000000000000000161461322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610cae565b61273b565b73ffffffffffffffffffffffffffffffffffffffff851661273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610cae565b821580159061331b575073ffffffffffffffffffffffffffffffffffffffff8516600090815260056020908152604080832087845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8701845290915290205464ffffffffff1642145b156133c157613329816137e0565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020908152604080832088845282528083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88018452909152902080547affffffffffffffffffffffffffffffffffffffffffffffffffffff92909216650100000000000264ffffffffff90921691909117905561347e565b60405180604001604052806133d54261380e565b64ffffffffff1681526020016133ea836137e0565b7affffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff871660008181526005602090815260408083208a845282528083208984528252808320865196830151909516650100000000000264ffffffffff909616959095179093559081526004825282812087825290915220805460010190555b6040805183815260208101839052859173ffffffffffffffffffffffffffffffffffffffff8816917f21a99d51b8a0a2e2ead709843a1ecfaab977908135cf1c085c0a6246eea6e0f09101611e01565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083208584529091528120805483929061350e9084906141ce565b909155505060008281526020818152604080832080548590039055805185815291820184905273ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b6000848152602081905260408120805485929061359c9084906141e1565b909155505073ffffffffffffffffffffffffffffffffffffffff851660008181526001602090815260408083208884528252808320805488019055805188815291820187905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b1561375c576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061368b9033906000908a908a908a908a906004016142ff565b6020604051808303816000875af11580156136aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ce91906142e2565b7fffffffff000000000000000000000000000000000000000000000000000000001614613757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610cae565b6137d9565b73ffffffffffffffffffffffffffffffffffffffff85166137d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610cae565b5050505050565b60007b01000000000000000000000000000000000000000000000000000000821061380a57600080fd5b5090565b600065010000000000821061380a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461384657600080fd5b919050565b6000806040838503121561385e57600080fd5b61386783613822565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146138a357600080fd5b50565b6000602082840312156138b857600080fd5b8135611ba181613875565b6000815180845260005b818110156138e9576020818501810151868301820152016138cd565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000611ba160208301846138c3565b60006020828403121561394c57600080fd5b5035919050565b60008060006060848603121561396857600080fd5b61397184613822565b95602085013595506040909401359392505050565b60008083601f84011261399857600080fd5b50813567ffffffffffffffff8111156139b057600080fd5b6020830191508360208260051b85010111156139cb57600080fd5b9250929050565b60008083601f8401126139e457600080fd5b50813567ffffffffffffffff8111156139fc57600080fd5b6020830191508360208285010111156139cb57600080fd5b60008060008060008060008060a0898b031215613a3057600080fd5b613a3989613822565b9750613a4760208a01613822565b9650604089013567ffffffffffffffff80821115613a6457600080fd5b613a708c838d01613986565b909850965060608b0135915080821115613a8957600080fd5b613a958c838d01613986565b909650945060808b0135915080821115613aae57600080fd5b50613abb8b828c016139d2565b999c989b5096995094979396929594505050565b8035801515811461384657600080fd5b600080600060608486031215613af457600080fd5b613afd84613822565b925060208401359150613b1260408501613acf565b90509250925092565b60008060008060408587031215613b3157600080fd5b843567ffffffffffffffff80821115613b4957600080fd5b613b5588838901613986565b90965094506020870135915080821115613b6e57600080fd5b50613b7b87828801613986565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015613bbf57835183529284019291840191600101613ba3565b50909695505050505050565b60008060208385031215613bde57600080fd5b823567ffffffffffffffff811115613bf557600080fd5b613c01858286016139d2565b90969095509350505050565b600060208284031215613c1f57600080fd5b611ba182613822565b60008060408385031215613c3b57600080fd5b82359150613c4b60208401613acf565b90509250929050565b600080600060408486031215613c6957600080fd5b83359250602084013567ffffffffffffffff811115613c8757600080fd5b613c93868287016139d2565b9497909650939450505050565b60008060008060608587031215613cb657600080fd5b613cbf85613822565b935060208501359250604085013567ffffffffffffffff811115613ce257600080fd5b613b7b878288016139d2565b60008060008060008060008060c0898b031215613d0a57600080fd5b613d1389613822565b97506020890135965060408901359550606089013567ffffffffffffffff80821115613d3e57600080fd5b613d4a8c838d016139d2565b909750955060808b0135915080821115613d6357600080fd5b50613d708b828c016139d2565b9094509250613d83905060a08a01613822565b90509295985092959890939650565b60008060408385031215613da557600080fd5b613dae83613822565b9150613c4b60208401613acf565b60008060208385031215613dcf57600080fd5b823567ffffffffffffffff811115613de657600080fd5b613c0185828601613986565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613e65577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613e538583516138c3565b94509285019290850190600101613e19565b5092979650505050505050565b60008060408385031215613e8557600080fd5b613e8e83613822565b9150613c4b60208401613822565b60008060008060008060a08789031215613eb557600080fd5b613ebe87613822565b9550613ecc60208801613822565b94506040870135935060608701359250608087013567ffffffffffffffff811115613ef657600080fd5b613f0289828a016139d2565b979a9699509497509295939492505050565b600181811c90821680613f2857607f821691505b602082108103610bfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610a2e57600081815260208120601f850160051c81016020861015613fe65750805b601f850160051c820191505b8181101561273b57828155600101613ff2565b67ffffffffffffffff83111561401d5761401d613f90565b6140318361402b8354613f14565b83613fbf565b6000601f841160018114614083576000851561404d5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556137d9565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156140d257868501358255602094850194600190920191016140b2565b508682101561410d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000610e7c60208301848661411f565b83815260406020820152600061419660408301848661411f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561095b5761095b61419f565b8082018082111561095b5761095b61419f565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561422657600080fd5b8260051b80836020870137939093016020019392505050565b6040815260006142536040830186886141f4565b82810360208401526142668185876141f4565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526142ab60a08301888a6141f4565b82810360608401526142be8187896141f4565b905082810360808401526142d381858761411f565b9b9a5050505050505050505050565b6000602082840312156142f457600080fd5b8151611ba181613875565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261434560a08301848661411f565b9897505050505050505056fea2646970667358221220918dd42ef83a8664ad39802bec39bed68dc0a872a7370ff03514aea462ec8b9064736f6c6343000810003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0aa8ccd568d90d61659f060d1bfb1e6f855a20000000000000000000000000000000000000000000000000000000000000001d577261707072204c4c4320284d61727368616c6c2049736c616e64732900000000000000000000000000000000000000000000000000000000000000000000034c4c430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e68747470733a2f2f636f6e74656e742e7772617070722e7774662f697066732f516d5635584a453854394136637a724a77736b77777666554d75505835704273726e69354c334a515332316b5877000000000000000000000000000000000000