LS0gUkFOQVAtUERVLUNvbnRlbnRzLmFzbgotLQotLSAzR1BQIFRTIDI1LjQxMyBWMTQuMC4wICgyMDE3LTAzKQotLSBodHRwOi8vd3d3LjNncHAub3JnL2Z0cC9TcGVjcy9odG1sLWluZm8vMjU0MTMuaHRtCi0tCi0tIDkuMy4zCVBEVSBEZWZpbml0aW9ucwotLQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUERVIGRlZmluaXRpb25zIGZvciBSQU5BUC4KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBTkFQLVBEVS1Db250ZW50cyB7Cml0dS10ICgwKSBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbiAoNCkgZXRzaSAoMCkgbW9iaWxlRG9tYWluICgwKQp1bXRzLUFjY2VzcyAoMjApIG1vZHVsZXMgKDMpIHJhbmFwICgwKSB2ZXJzaW9uMSAoMSkgcmFuYXAtUERVLUNvbnRlbnRzICgxKSB9CgpERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KCkJFR0lOCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJRSBwYXJhbWV0ZXIgdHlwZXMgZnJvbSBvdGhlciBtb2R1bGVzLgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKSU1QT1JUUwoJQWNjdXJhY3lGdWxmaWxtZW50SW5kaWNhdG9yLAoJVUUtQXBwbGljYXRpb24tTGF5ZXItTWVhc3VyZW1lbnQtQ29uZmlndXJhdGlvbiwKCVVFLUFwcGxpY2F0aW9uLUxheWVyLU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24tRm9yLVJlbG9jYXRpb24sCglBUE4sCglCcm9hZGNhc3RBc3Npc3RhbmNlRGF0YURlY2lwaGVyaW5nS2V5cywKCUxvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0VHlwZSwKCUxvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0VHlwZVNwZWNpZmljVG9HRVJBTkl1TW9kZSwKCURhdGFWb2x1bWVSZWZlcmVuY2UsCglDZWxsTG9hZEluZm9ybWF0aW9uLAoJQXJlYUlkZW50aXR5LAoJQ04tRG9tYWluSW5kaWNhdG9yLAoJQ2F1c2UsCglDZWxsLUFjY2Vzcy1Nb2RlLAoJQ2xpZW50VHlwZSwKCUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MsCglDaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtLAoJQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSwKCUNsYXNzbWFya0luZm9ybWF0aW9uMiwKCUNsYXNzbWFya0luZm9ybWF0aW9uMywKCUNTRy1JZCwKCUNTRy1JZC1MaXN0LAoJQ1NHLU1lbWJlcnNoaXAtU3RhdHVzLAoJREwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlciwKCURMLU4tUERVLVNlcXVlbmNlTnVtYmVyLAoJRGF0YVZvbHVtZVJlcG9ydGluZ0luZGljYXRpb24sCglEZWx0YVJBTGlzdG9mSWRsZU1vZGVVRXMsCglEUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKCUVuY3J5cHRpb25JbmZvcm1hdGlvbiwKCUVuY3J5cHRpb25LZXksCglFLVVUUkFOLVNlcnZpY2UtSGFuZG92ZXIsCglFeHRlbmRlZFJOQy1JRCwKCUZyZXF1ZW5jZUxheWVyQ29udmVyZ2VuY2VGbGFnLAoJR0VSQU4tQlNDLUNvbnRhaW5lciwKCUdFUkFOLUNsYXNzbWFyaywKCUdsb2JhbENOLUlELAoJR2xvYmFsUk5DLUlELAoJR1RQLVRFSSwKCUluY2x1ZGVWZWxvY2l0eSwKCUluZm9ybWF0aW9uRXhjaGFuZ2VJRCwKCUluZm9ybWF0aW9uRXhjaGFuZ2VUeXBlLAoJSW5mb3JtYXRpb25SZXF1ZXN0ZWQsCglJbmZvcm1hdGlvblJlcXVlc3RUeXBlLAoJSW5mb3JtYXRpb25UcmFuc2ZlcklELAoJSW5mb3JtYXRpb25UcmFuc2ZlclR5cGUsCglJbnRlclN5c3RlbUluZm9ybWF0aW9uVHJhbnNmZXJUeXBlLAoJSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uLAoJSW50ZWdyaXR5UHJvdGVjdGlvbktleSwKCUludGVyU3lzdGVtSW5mb3JtYXRpb24tVHJhbnNwYXJlbnRDb250YWluZXIsCglJUE11bHRpY2FzdEFkZHJlc3MsCglJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllciwKCUl1VHJhbnNwb3J0QXNzb2NpYXRpb24sCglLZXlTdGF0dXMsCglMMy1JbmZvcm1hdGlvbiwKCUxBSSwKCUxhc3RLbm93blNlcnZpY2VBcmVhLAoJQ29ycmVsYXRpb24tSUQsCglNQk1TLVBUUC1SQUItSUQsCglNQk1TQmVhcmVyU2VydmljZVR5cGUsCglNQk1TQ291bnRpbmdJbmZvcm1hdGlvbiwKCU1CTVNDTkRlLVJlZ2lzdHJhdGlvbiwKCU1CTVNIQ0luZGljYXRvciwKCU1CTVNSZWdpc3RyYXRpb25SZXF1ZXN0VHlwZSwKCU1CTVNTZXJ2aWNlQXJlYSwKCU1CTVNTZXNzaW9uRHVyYXRpb24sCglNQk1TU2Vzc2lvbklkZW50aXR5LAoJTUJNU1Nlc3Npb25SZXBldGl0aW9uTnVtYmVyLAoJTVNJU0ROLAoJTkFTLVBEVSwKCU5BUy1TZXF1ZW5jZU51bWJlciwKCU5BUy1TeW5jaHJvbmlzYXRpb25JbmRpY2F0b3IsCglOZXdCU1MtVG8tT2xkQlNTLUluZm9ybWF0aW9uLAoJTm9uU2VhcmNoaW5nSW5kaWNhdGlvbiwKCU51bWJlck9mU3RlcHMsCglPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLAoJT2ZmbG9hZC1SQUItUGFyYW1ldGVycy1BUE4sCglPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLUNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzLAoJT01DLUlELAoJT2xkQlNTLVRvTmV3QlNTLUluZm9ybWF0aW9uLAoJUGFnaW5nQXJlYUlELAoJUGFnaW5nQ2F1c2UsCglQRFAtVHlwZUluZm9ybWF0aW9uLAoJUERQLVR5cGVJbmZvcm1hdGlvbi1leHRlbnNpb24sCglQZXJtYW5lbnROQVMtVUUtSUQsCglQTE1OaWRlbnRpdHksCglQb3NpdGlvbkRhdGEsCglQb3NpdGlvbkRhdGFTcGVjaWZpY1RvR0VSQU5JdU1vZGUsCglQb3NpdGlvbmluZ1ByaW9yaXR5LAoJUHJvdmlkZWREYXRhLAoJUG93ZXJTYXZpbmdJbmRpY2F0b3IsCglSQUItSUQsCglSQUItUGFyYW1ldGVycywKCVJBQywKCVJBTGlzdG9mSWRsZU1vZGVVRXMsCglSQVQtVHlwZSwKCVJlZGlyZWN0QXR0ZW1wdEZsYWcsCglSZWRpcmVjdGlvbkNvbXBsZXRlZCwKCVJlamVjdENhdXNlVmFsdWUsCglSZWxvY2F0aW9uVHlwZSwKCVJlcXVlc3RlZEdBTlNTQXNzaXN0YW5jZURhdGEsCglSZXF1ZXN0VHlwZSwKCVJlcXVlc3RlZC1SQUItUGFyYW1ldGVyLVZhbHVlcywKCVJlc3BvbnNlVGltZSwKCVJSQy1Db250YWluZXIsCglSU1JWQ0MtT3BlcmF0aW9uLVBvc3NpYmxlLAoJUlNSUS1UeXBlLAoJUlNSUS1FeHRlbnNpb24sCglTQUksCglTQVBJLAoJU2VydmljZS1IYW5kb3ZlciwKCVNlc3Npb25VcGRhdGVJRCwKCVNOQS1BY2Nlc3MtSW5mb3JtYXRpb24sCglTb3VyY2VCU1MtVG9UYXJnZXRCU1MtVHJhbnNwYXJlbnRDb250YWluZXIsCglTb3VyY2VJRCwKCVNvdXJjZS1Ub1RhcmdldC1UcmFuc3BhcmVudENvbnRhaW5lciwKCVNvdXJjZVJOQy1Ub1RhcmdldFJOQy1UcmFuc3BhcmVudENvbnRhaW5lciwKCVNSVkNDLUhPLUluZGljYXRpb24sCglTUlZDQy1JbmZvcm1hdGlvbiwKCVNSVkNDLU9wZXJhdGlvbi1Qb3NzaWJsZSwKCVRhcmdldEJTUy1Ub1NvdXJjZUJTUy1UcmFuc3BhcmVudENvbnRhaW5lciwKCVRhcmdldElELAoJVGFyZ2V0LVRvU291cmNlLVRyYW5zcGFyZW50Q29udGFpbmVyLAoJVGFyZ2V0Uk5DLVRvU291cmNlUk5DLVRyYW5zcGFyZW50Q29udGFpbmVyLAoJVGVtcG9yYXJ5VUUtSUQsCglUaW1lVG9NQk1TRGF0YVRyYW5zZmVyLAoJVE1HSSwKCVRyYWNlUHJvcGFnYXRpb25QYXJhbWV0ZXJzLAoJVHJhY2VSZWZlcmVuY2UsCglUcmFjZVR5cGUsCglVbnN1Y2Nlc3NmdWxseVRyYW5zbWl0dGVkRGF0YVZvbHVtZSwKCVRyYW5zcG9ydExheWVyQWRkcmVzcywKCVRyaWdnZXJJRCwKCVVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlLAoJVUUtSUQsCglVRVNCSS1JdSwKCVVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIsCglVTC1OLVBEVS1TZXF1ZW5jZU51bWJlciwKCVVQLU1vZGVWZXJzaW9ucywKCVVzZXJQbGFuZU1vZGUsCglWZWxvY2l0eUVzdGltYXRlLAoJVmVydGljYWxBY2N1cmFjeUNvZGUsCglWb2ljZVN1cHBvcnRNYXRjaEluZGljYXRvciwKCUFsdC1SQUItUGFyYW1ldGVycywKCUFzcy1SQUItUGFyYW1ldGVycywKCVBlcmlvZGljTG9jYXRpb25JbmZvLAoJU3Vic2NyaWJlclByb2ZpbGVJRGZvclJGUCwKCVJOU0FQUmVsb2NhdGlvblBhcmFtZXRlcnMsCglSQUJQYXJhbWV0ZXJzTGlzdCwKCU1EVC1Db25maWd1cmF0aW9uLAoJUHJpb3JpdHktQ2xhc3MtSW5kaWNhdG9yLAoJTWFuYWdlbWVudC1CYXNlZC1NRFQtQWxsb3dlZCwKCUhpZ2hlckJpdHJhdGVzVGhhbjE2TWJwc0ZsYWcsCglFbmQtT2YtQ1NGQiwKCU91dC1PZi1VVFJBTiwKCVJTUlZDQy1ITy1JbmRpY2F0aW9uLAoJUlNSVkNDLUluZm9ybWF0aW9uLAoJTURULVBMTU4tTGlzdCwKCVR1bm5lbEluZm9ybWF0aW9uLAoJTEhOLUlELAoJU2Vzc2lvbi1SZS1lc3RhYmxpc2htZW50LUluZGljYXRvciwKCUFkZGl0aW9uYWwtQ1NQUy1jb29yZGluYXRpb24taW5mb3JtYXRpb24sCglVRVJlZ2lzdHJhdGlvblF1ZXJ5UmVzdWx0LAoJU0dTTi1Hcm91cC1JZGVudGl0eSwKCVAtVE1TSSwKCUJhcm9tZXRyaWNQcmVzc3VyZSwKCUNpdmljQWRkcmVzcywKCVVFLVVzYWdlLVR5cGUsCglEQ04tSUQKCkZST00gUkFOQVAtSUVzCgoJUHJpdmF0ZUlFLUNvbnRhaW5lcnt9LAoJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXJ7fSwKCVByb3RvY29sSUUtQ29udGFpbmVyTGlzdHt9LAoJUHJvdG9jb2xJRS1Db250YWluZXJQYWlye30sCglQcm90b2NvbElFLUNvbnRhaW5lclBhaXJMaXN0e30sCglQcm90b2NvbElFLUNvbnRhaW5lcnt9LAoJUkFOQVAtUFJJVkFURS1JRVMsCglSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04sCglSQU5BUC1QUk9UT0NPTC1JRVMsCglSQU5BUC1QUk9UT0NPTC1JRVMtUEFJUgpGUk9NIFJBTkFQLUNvbnRhaW5lcnMKCgltYXhOck9mRFRzLAoJbWF4TnJPZkVycm9ycywKCW1heE5yT2ZJdVNpZ0NvbklkcywKCW1heE5yT2ZSQUJzLAoJbWF4TnJPZlZvbCwKCW1heG5vb2ZNdWx0aWNhc3RTZXJ2aWNlc1BlclVFLAoKCWlkLUFjY3VyYWN5RnVsZmlsbWVudEluZGljYXRvciwKCWlkLVVFLUFwcGxpY2F0aW9uLUxheWVyLU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24sCglpZC1VRS1BcHBsaWNhdGlvbi1MYXllci1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLUZvci1SZWxvY2F0aW9uLAoJaWQtQVBOLAoJaWQtQXJlYUlkZW50aXR5LAoJaWQtQWx0LVJBQi1QYXJhbWV0ZXJzLAoJaWQtQXNzLVJBQi1QYXJhbWV0ZXJzLAoJaWQtQnJvYWRjYXN0QXNzaXN0YW5jZURhdGFEZWNpcGhlcmluZ0tleXMsCglpZC1Mb2NhdGlvblJlbGF0ZWREYXRhUmVxdWVzdFR5cGUsCglpZC1DTi1Eb21haW5JbmRpY2F0b3IsCglpZC1DYXVzZSwKCWlkLUNlbGwtQWNjZXNzLU1vZGUsCglpZC1DaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtLAoJaWQtQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSwKCWlkLUNsYXNzbWFya0luZm9ybWF0aW9uMiwKCWlkLUNsYXNzbWFya0luZm9ybWF0aW9uMywKCWlkLUNsaWVudFR5cGUsCglpZC1DTk1CTVNMaW5raW5nSW5mb3JtYXRpb24sCglpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzLAoJaWQtQ1NHLUlkLAoJaWQtQ1NHLUlkLUxpc3QsCglpZC1DU0ctTWVtYmVyc2hpcC1TdGF0dXMsCglpZC1EZWx0YVJBTGlzdG9mSWRsZU1vZGVVRXMsCglpZC1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKCWlkLURpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25JdGVtLVJBTkFQLVJlbG9jSW5mLAoJaWQtRGlyZWN0VHJhbnNmZXJJbmZvcm1hdGlvbkxpc3QtUkFOQVAtUmVsb2NJbmYsCglpZC1ETC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyLAoJaWQtRW5jcnlwdGlvbkluZm9ybWF0aW9uLAoJaWQtRW5jcnlwdGlvbktleSwKCWlkLUV4dGVuZGVkUk5DLUlELAoJaWQtRnJlcXVlbmNlTGF5ZXJDb252ZXJnZW5jZUZsYWcsCglpZC1HRVJBTi1CU0MtQ29udGFpbmVyLAoJaWQtR0VSQU4tQ2xhc3NtYXJrLAoJaWQtR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbSwKCWlkLUdFUkFOLUl1bW9kZS1SQUItRmFpbGVkTGlzdC1SQUJBc3NnbnRSZXNwb25zZSwKCWlkLUdsb2JhbENOLUlELAoJaWQtR2xvYmFsQ04tSURDUywKCWlkLUdsb2JhbENOLUlEUFMsCglpZC1HbG9iYWxSTkMtSUQsCglpZC1JbmNsdWRlVmVsb2NpdHksCglpZC1JbmZvcm1hdGlvbkV4Y2hhbmdlSUQsCglpZC1JbmZvcm1hdGlvbkV4Y2hhbmdlVHlwZSwKCWlkLUluZm9ybWF0aW9uUmVxdWVzdGVkLAoJaWQtSW5mb3JtYXRpb25SZXF1ZXN0VHlwZSwKCWlkLUluZm9ybWF0aW9uVHJhbnNmZXJJRCwKCWlkLUluZm9ybWF0aW9uVHJhbnNmZXJUeXBlLAoJaWQtSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uLAoJaWQtSW50ZWdyaXR5UHJvdGVjdGlvbktleSwKCWlkLUludGVyU3lzdGVtSW5mb3JtYXRpb25UcmFuc2ZlclR5cGUsCglpZC1JbnRlclN5c3RlbUluZm9ybWF0aW9uLVRyYW5zcGFyZW50Q29udGFpbmVyLAoJaWQtSVBNdWx0aWNhc3RBZGRyZXNzLAoJaWQtSXVTaWdDb25JZCwKCWlkLU9sZEl1U2lnQ29uSWQsCglpZC1PbGRJdVNpZ0NvbklkQ1MsCglpZC1PbGRJdVNpZ0NvbklkUFMsCglpZC1JdVNpZ0NvbklkSXRlbSwKCWlkLUl1U2lnQ29uSWRMaXN0LAoJaWQtSXVUcmFuc3BvcnRBc3NvY2lhdGlvbiwKCWlkLUpvaW5lZE1CTVNCZWFyZXJTZXJ2aWNlc0xpc3QsCglpZC1LZXlTdGF0dXMsCglpZC1MMy1JbmZvcm1hdGlvbiwKCWlkLUxBSSwKCWlkLUxhc3RLbm93blNlcnZpY2VBcmVhLAoJaWQtTGVmdE1CTVNCZWFyZXJTZXJ2aWNlc0xpc3QsCglpZC1Mb2NhdGlvblJlbGF0ZWREYXRhUmVxdWVzdFR5cGVTcGVjaWZpY1RvR0VSQU5JdU1vZGUsCglpZC1NQk1TQmVhcmVyU2VydmljZVR5cGUsCglpZC1NQk1TQ291bnRpbmdJbmZvcm1hdGlvbiwKCWlkLU1CTVNDTkRlLVJlZ2lzdHJhdGlvbiwKCWlkLU1CTVNSZWdpc3RyYXRpb25SZXF1ZXN0VHlwZSwKCWlkLU1CTVNTeW5jaHJvbmlzYXRpb25JbmZvcm1hdGlvbiwKCWlkLU1CTVNTZXJ2aWNlQXJlYSwKCWlkLU1CTVNTZXNzaW9uRHVyYXRpb24sCglpZC1NQk1TU2Vzc2lvbklkZW50aXR5LAoJaWQtTUJNU1Nlc3Npb25SZXBldGl0aW9uTnVtYmVyLAoJaWQtTVNJU0ROLAoJaWQtTkFTLVBEVSwKCWlkLU5BUy1TZXF1ZW5jZU51bWJlciwKCWlkLU5ld0JTUy1Uby1PbGRCU1MtSW5mb3JtYXRpb24sCglpZC1Ob25TZWFyY2hpbmdJbmRpY2F0aW9uLAoJaWQtTnVtYmVyT2ZTdGVwcywKCWlkLU9mZmxvYWQtUkFCLVBhcmFtZXRlcnMsCglpZC1PTUMtSUQsCglpZC1PbGRCU1MtVG9OZXdCU1MtSW5mb3JtYXRpb24sCglpZC1QYWdpbmdBcmVhSUQsCglpZC1QYWdpbmdDYXVzZSwKCWlkLVBEUC1UeXBlSW5mb3JtYXRpb24sCglpZC1QRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbiwKCWlkLVBlcm1hbmVudE5BUy1VRS1JRCwKCWlkLVBvc2l0aW9uRGF0YSwKCWlkLVBvc2l0aW9uRGF0YVNwZWNpZmljVG9HRVJBTkl1TW9kZSwKCWlkLVBvc2l0aW9uaW5nUHJpb3JpdHksCglpZC1Qcm92aWRlZERhdGEsCglpZC1SQUItQ29udGV4dEl0ZW0sCglpZC1SQUItQ29udGV4dExpc3QsCglpZC1SQUItQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJJdGVtLAoJaWQtUkFCLUNvbnRleHRGYWlsZWR0b1RyYW5zZmVyTGlzdCwKCWlkLVJBQi1Db250ZXh0SXRlbS1SQU5BUC1SZWxvY0luZiwKCWlkLVJBQi1Db250ZXh0TGlzdC1SQU5BUC1SZWxvY0luZiwKCWlkLVJBQi1EYXRhRm9yd2FyZGluZ0l0ZW0sCglpZC1SQUItRGF0YUZvcndhcmRpbmdJdGVtLVNSTlMtQ3R4UmVxLAoJaWQtUkFCLURhdGFGb3J3YXJkaW5nTGlzdCwKCWlkLVJBQi1EYXRhRm9yd2FyZGluZ0xpc3QtU1JOUy1DdHhSZXEsCglpZC1SQUItRGF0YVZvbHVtZVJlcG9ydEl0ZW0sCglpZC1SQUItRGF0YVZvbHVtZVJlcG9ydExpc3QsCglpZC1SQUItRGF0YVZvbHVtZVJlcG9ydFJlcXVlc3RJdGVtLAoJaWQtUkFCLURhdGFWb2x1bWVSZXBvcnRSZXF1ZXN0TGlzdCwKCWlkLVJBQi1GYWlsZWRJdGVtLAoJaWQtUkFCLUZhaWxlZExpc3QsCglpZC1SQUItRmFpbGVkTGlzdC1FbmhSZWxvY0luZm9SZXMsCglpZC1SQUItRmFpbGVkSXRlbS1FbmhSZWxvY0luZm9SZXMsCglpZC1SQUItRmFpbGVkdG9SZXBvcnRJdGVtLAoJaWQtUkFCLUZhaWxlZHRvUmVwb3J0TGlzdCwKCWlkLVJBQi1JRCwKCWlkLVJBQi1Nb2RpZnlMaXN0LAoJaWQtUkFCLU1vZGlmeUl0ZW0sCglpZC1SQUItUGFyYW1ldGVycywKCWlkLVJBQi1RdWV1ZWRJdGVtLAoJaWQtUkFCLVF1ZXVlZExpc3QsCglpZC1SQUItUmVsZWFzZUZhaWxlZExpc3QsCglpZC1SQUItUmVsZWFzZUl0ZW0sCglpZC1SQUItUmVsZWFzZWRJdGVtLUl1UmVsQ29tcCwKCWlkLVJBQi1SZWxlYXNlTGlzdCwKCWlkLVJBQi1SZWxlYXNlZEl0ZW0sCglpZC1SQUItUmVsZWFzZWRMaXN0LAoJaWQtUkFCLVJlbGVhc2VkTGlzdC1JdVJlbENvbXAsCglpZC1SQUItUmVsb2NhdGlvblJlbGVhc2VJdGVtLAoJaWQtUkFCLVJlbG9jYXRpb25SZWxlYXNlTGlzdCwKCWlkLVJBQi1TZXR1cEl0ZW0tUmVsb2NSZXEsCglpZC1SQUItU2V0dXBJdGVtLVJlbG9jUmVxQWNrLAoJaWQtUkFCLVNldHVwTGlzdC1SZWxvY1JlcSwKCWlkLVJBQi1TZXR1cExpc3QtUmVsb2NSZXFBY2ssCglpZC1SQUItU2V0dXBMaXN0LUVuaFJlbG9jSW5mb1JlcSwKCWlkLVJBQi1TZXR1cEl0ZW0tRW5oUmVsb2NJbmZvUmVxLAoJaWQtUkFCLVNldHVwTGlzdC1FbmhSZWxvY0luZm9SZXMsCglpZC1SQUItU2V0dXBJdGVtLUVuaFJlbG9jSW5mb1JlcywKCWlkLVJBQi1TZXR1cExpc3QtRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVxLAoJaWQtUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXEsCglpZC1SQUItU2V0dXBMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcywKCWlkLVJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzLAoJaWQtUkFCLVNldHVwT3JNb2RpZmllZEl0ZW0sCglpZC1SQUItU2V0dXBPck1vZGlmaWVkTGlzdCwKCWlkLVJBQi1TZXR1cE9yTW9kaWZ5SXRlbSwKCWlkLVJBQi1TZXR1cE9yTW9kaWZ5TGlzdCwKCWlkLVJBQi1Ub0JlUmVsZWFzZWRJdGVtLUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcywKCWlkLVJBQi1Ub0JlUmVsZWFzZWRMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcywKCWlkLVJBQywKCWlkLVJBTGlzdG9mSWRsZU1vZGVVRXMsCglpZC1SQVQtVHlwZSwKCWlkLVJlZGlyZWN0QXR0ZW1wdEZsYWcsCglpZC1SZWRpcmVjdGlvbkNvbXBsZXRlZCwKCWlkLVJlZGlyZWN0aW9uSW5kaWNhdGlvbiwKCWlkLVJlamVjdENhdXNlVmFsdWUsCglpZC1SZWxvY2F0aW9uVHlwZSwKCWlkLVJlbG9jYXRpb24tU291cmNlUk5DLUlELAoJaWQtUmVsb2NhdGlvbi1Tb3VyY2VFeHRlbmRlZFJOQy1JRCwKCWlkLVJlbG9jYXRpb24tVGFyZ2V0Uk5DLUlELAoJaWQtUmVsb2NhdGlvbi1UYXJnZXRFeHRlbmRlZFJOQy1JRCwKCWlkLVJlcXVlc3RlZEdBTlNTQXNzaXN0YW5jZURhdGEsCglpZC1SZXF1ZXN0VHlwZSwKCWlkLVJlc3BvbnNlVGltZSwKCWlkLVJTUlZDQy1PcGVyYXRpb24tUG9zc2libGUsCglpZC1TQUksCglpZC1TQVBJLAoJaWQtU2VsZWN0ZWRQTE1OLUlELAoJaWQtU2Vzc2lvblVwZGF0ZUlELAoJaWQtU05BLUFjY2Vzcy1JbmZvcm1hdGlvbiwKCWlkLVNvdXJjZUJTUy1Ub1RhcmdldEJTUy1UcmFuc3BhcmVudENvbnRhaW5lciwKCWlkLVNvdXJjZVJOQy1JRCwKCWlkLVNvdXJjZUV4dGVuZGVkUk5DLUlELAoJaWQtU291cmNlSUQsCglpZC1Tb3VyY2UtVG9UYXJnZXQtVHJhbnNwYXJlbnRDb250YWluZXIsCglpZC1Tb3VyY2VSTkMtUERDUC1jb250ZXh0LWluZm8sCglpZC1TUlZDQy1ITy1JbmRpY2F0aW9uLAoJaWQtU1JWQ0MtSW5mb3JtYXRpb24sCglpZC1TUlZDQy1PcGVyYXRpb24tUG9zc2libGUsCglpZC1UYXJnZXRCU1MtVG9Tb3VyY2VCU1MtVHJhbnNwYXJlbnRDb250YWluZXIsCglpZC1UYXJnZXRJRCwKCWlkLVRhcmdldC1Ub1NvdXJjZS1UcmFuc3BhcmVudENvbnRhaW5lciwKCWlkLVRlbXBvcmFyeVVFLUlELAoJaWQtVGltZVRvTUJNU0RhdGFUcmFuc2ZlciwKCWlkLVRNR0ksCglpZC1UcmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycywKCWlkLVRyYWNlUmVmZXJlbmNlLAoJaWQtVHJhY2VUeXBlLAoJaWQtVHJhbnNwb3J0TGF5ZXJBZGRyZXNzLAoJaWQtVHJhbnNwb3J0TGF5ZXJJbmZvcm1hdGlvbiwKCWlkLVRyaWdnZXJJRCwKCWlkLVVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlLAoJaWQtVUUtSUQsCglpZC1VRVNCSS1JdSwKCWlkLVVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIsCglpZC1VbnN1Y2Nlc3NmdWxMaW5raW5nTGlzdCwKCWlkLVZlbG9jaXR5RXN0aW1hdGUsCglpZC1WZXJ0aWNhbEFjY3VyYWN5Q29kZSwKCWlkLVZvaWNlU3VwcG9ydE1hdGNoSW5kaWNhdG9yLAoJaWQtUGVyaW9kaWNMb2NhdGlvbkluZm8sCglpZC1Ccm9hZGNhc3RHQU5TU0Fzc2lzdGFuY2VEYXRhRGVjaXBoZXJpbmdLZXlzLAoJaWQtU3Vic2NyaWJlclByb2ZpbGVJRGZvclJGUCwKCWlkLUUtVVRSQU4tU2VydmljZS1IYW5kb3ZlciwKCWlkLUlQLVNvdXJjZS1BZGRyZXNzLAoJaWQtTEdXLVRyYW5zcG9ydExheWVyQWRkcmVzcywKCWlkLUNvcnJlbGF0aW9uLUlELAoJaWQtTURULUNvbmZpZ3VyYXRpb24sCglpZC1STlNBUFJlbG9jYXRpb25QYXJhbWV0ZXJzLAoJaWQtUkFCUGFyYW1ldGVyc0xpc3QsCglpZC1Qcmlvcml0eS1DbGFzcy1JbmRpY2F0b3IsCglpZC1NYW5hZ2VtZW50LUJhc2VkLU1EVC1BbGxvd2VkLAoJaWQtSGlnaGVyQml0cmF0ZXNUaGFuMTZNYnBzRmxhZywKCWlkLVRyYWNlLUNvbGxlY3Rpb24tRW50aXR5LUlQLUFkZGVzcywKCWlkLUVuZC1PZi1DU0ZCLAoJaWQtT3V0LU9mLVVUUkFOLAoJaWQtUlNSVkNDLUhPLUluZGljYXRpb24sCglpZC1SU1JWQ0MtSW5mb3JtYXRpb24sCglpZC1BbmNob3JQTE1OLUlELAoJaWQtTWFuYWdlbWVudC1CYXNlZC1NRFQtUExNTi1MaXN0LAoJaWQtVHVubmVsLUluZm9ybWF0aW9uLWZvci1CQkYsCglpZC1TSVBUTy1Db3JyZWxhdGlvbi1JRCwKCWlkLVNJUFRPLUxHVy1UcmFuc3BvcnRMYXllckFkZHJlc3MsCglpZC1MSE4tSUQsCglpZC1MYXN0RS1VVFJBTlBMTU5JZGVudGl0eSwKCWlkLVNlc3Npb24tUmUtZXN0YWJsaXNobWVudC1JbmRpY2F0b3IsCglpZC1BZGRpdGlvbmFsLUNTUFMtY29vcmRpbmF0aW9uLWluZm9ybWF0aW9uLAoJaWQtVUVSZWdpc3RyYXRpb25RdWVyeVJlc3VsdCwKCWlkLUl1U2lnQ29uSWRSYW5nZUVuZCwKCWlkLVNHU04tR3JvdXAtSWRlbnRpdHksCglpZC1QLVRNU0ksCglpZC1SQU5BUC1NZXNzYWdlLAoJaWQtUG93ZXJTYXZpbmdJbmRpY2F0b3IsCglpZC1CYXJvbWV0cmljUHJlc3N1cmUsCglpZC1DaXZpY0FkZHJlc3MsCglpZC1VRS1Vc2FnZS1UeXBlLAoJaWQtRENOLUlECgpGUk9NIFJBTkFQLUNvbnN0YW50czsKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIENvbW1vbiBDb250YWluZXIgTGlzdHMKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBQi1JRS1Db250YWluZXJMaXN0CQkJeyBSQU5BUC1QUk9UT0NPTC1JRVMJCTogSUVzU2V0UGFyYW0gfQk6Oj0gUHJvdG9jb2xJRS1Db250YWluZXJMaXN0CQl7IDEsIG1heE5yT2ZSQUJzLAkJCQl7SUVzU2V0UGFyYW19IH0KUkFCLUlFLUNvbnRhaW5lclBhaXJMaXN0CQl7IFJBTkFQLVBST1RPQ09MLUlFUy1QQUlSCTogSUVzU2V0UGFyYW0gfQk6Oj0gUHJvdG9jb2xJRS1Db250YWluZXJQYWlyTGlzdAl7IDEsIG1heE5yT2ZSQUJzLAkJCQl7SUVzU2V0UGFyYW19IH0KUHJvdG9jb2xFcnJvci1JRS1Db250YWluZXJMaXN0CXsgUkFOQVAtUFJPVE9DT0wtSUVTCQk6IElFc1NldFBhcmFtIH0JOjo9IFByb3RvY29sSUUtQ29udGFpbmVyTGlzdAkJeyAxLCBtYXhOck9mUkFCcywJCQkJe0lFc1NldFBhcmFtfSB9Ckl1U2lnQ29uSWQtSUUtQ29udGFpbmVyTGlzdAkJeyBSQU5BUC1QUk9UT0NPTC1JRVMJCTogSUVzU2V0UGFyYW0gfQk6Oj0gUHJvdG9jb2xJRS1Db250YWluZXJMaXN0CQl7IDEsIG1heE5yT2ZJdVNpZ0NvbklkcywJe0lFc1NldFBhcmFtfSB9CkRpcmVjdFRyYW5zZmVyLUlFLUNvbnRhaW5lckxpc3QJeyBSQU5BUC1QUk9UT0NPTC1JRVMJCTogSUVzU2V0UGFyYW0gfQk6Oj0gUHJvdG9jb2xJRS1Db250YWluZXJMaXN0CQl7IDEsIG1heE5yT2ZEVHMsCQkJCXtJRXNTZXRQYXJhbX0gfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSXUgUkVMRUFTRSBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSXUgUmVsZWFzZSBDb21tYW5kCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpJdS1SZWxlYXNlQ29tbWFuZCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge0l1LVJlbGVhc2VDb21tYW5kSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtJdS1SZWxlYXNlQ29tbWFuZEV4dGVuc2lvbnN9IH0gCQkJCU9QVElPTkFMLAoJLi4uCn0KCkl1LVJlbGVhc2VDb21tYW5kSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ2F1c2UJIAkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpJdS1SZWxlYXNlQ29tbWFuZEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLUVuZC1PZi1DU0ZCCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gRW5kLU9mLUNTRkIJCVBSRVNFTkNFIG9wdGlvbmFsIH18Cgl7IElEIGlkLU91dC1PZi1VVFJBTgkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gT3V0LU9mLVVUUkFOCQlQUkVTRU5DRSBvcHRpb25hbCB9fAoJeyBJRCBpZC1MYXN0RS1VVFJBTlBMTU5JZGVudGl0eQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBMTU5pZGVudGl0eQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJdSBSZWxlYXNlIENvbXBsZXRlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpJdS1SZWxlYXNlQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtJdS1SZWxlYXNlQ29tcGxldGVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0l1LVJlbGVhc2VDb21wbGV0ZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKSXUtUmVsZWFzZUNvbXBsZXRlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItRGF0YVZvbHVtZVJlcG9ydExpc3QJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1EYXRhVm9sdW1lUmVwb3J0TGlzdCAJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtUkFCLVJlbGVhc2VkTGlzdC1JdVJlbENvbXAJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxlYXNlZExpc3QtSXVSZWxDb21wCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzIAkJCVBSRVNFTkNFIG9wdGlvbmFsIAl9LAoJLi4uCn0KClJBQi1EYXRhVm9sdW1lUmVwb3J0TGlzdCAJCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsge1JBQi1EYXRhVm9sdW1lUmVwb3J0SXRlbUlFc30gfQoKUkFCLURhdGFWb2x1bWVSZXBvcnRJdGVtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItRGF0YVZvbHVtZVJlcG9ydEl0ZW0JCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1EYXRhVm9sdW1lUmVwb3J0SXRlbQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1EYXRhVm9sdW1lUmVwb3J0SXRlbSA6Oj0gU0VRVUVOQ0UgewoJckFCLUlECQkJCQkJUkFCLUlELAoJZGwtVW5zdWNjZXNzZnVsbHlUcmFuc21pdHRlZERhdGFWb2x1bWUJCURhdGFWb2x1bWVMaXN0CQlPUFRJT05BTAoJLS0gVGhpcyBJRSBzaGFsbCBhbHdheXMgYmUgcHJlc2VudCBhbHRob3VnaCBpdHMgcHJlc2VuY2UgaXMgb3B0aW9uYWwgLS0sCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItRGF0YVZvbHVtZVJlcG9ydEl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLURhdGFWb2x1bWVSZXBvcnRJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItUmVsZWFzZWRMaXN0LUl1UmVsQ29tcAkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLVJlbGVhc2VkSXRlbS1JdVJlbENvbXAtSUVzfSB9CgpSQUItUmVsZWFzZWRJdGVtLUl1UmVsQ29tcC1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1SZWxlYXNlZEl0ZW0tSXVSZWxDb21wCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLVJlbGVhc2VkSXRlbS1JdVJlbENvbXAJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLVJlbGVhc2VkSXRlbS1JdVJlbENvbXAJOjo9IFNFUVVFTkNFIHsKCQlyQUItSUQJCQkJCQlSQUItSUQsCgkJZEwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlcglETC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyIAlPUFRJT05BTCwKCQl1TC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyCVVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIgCU9QVElPTkFMLAoJCWlFLUV4dGVuc2lvbnMJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLVJlbGVhc2VkSXRlbS1JdVJlbENvbXAtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVJlbGVhc2VkSXRlbS1JdVJlbENvbXAtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCgpJdS1SZWxlYXNlQ29tcGxldGVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJFTE9DQVRJT04gUFJFUEFSQVRJT04gRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlbG9jYXRpb24gUmVxdWlyZWQKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlbG9jYXRpb25SZXF1aXJlZCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JlbG9jYXRpb25SZXF1aXJlZElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UmVsb2NhdGlvblJlcXVpcmVkRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKLi4uCn0KClJlbG9jYXRpb25SZXF1aXJlZElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUmVsb2NhdGlvblR5cGUJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgUmVsb2NhdGlvblR5cGUgCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ2F1c2UJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkgCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1Tb3VyY2VJRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBTb3VyY2VJRAkgCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtVGFyZ2V0SUQJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgVGFyZ2V0SUQJIAkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNsYXNzbWFya0luZm9ybWF0aW9uMgkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIENsYXNzbWFya0luZm9ybWF0aW9uMgkJCVBSRVNFTkNFIGNvbmRpdGlvbmFsCgktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIFRhcmdldCBJRCBJRSBjb250YWlucyBhIENHSSBJRSBhbmQgU291cmNlIEJTUyBUbyBUYXJnZXQgQlNTIFRyYW5zcGFyZW50IENvbnRhaW5lciBpcyBub3QgaW5jbHVkZWQgLS0JCX0gfAoJeyBJRCBpZC1DbGFzc21hcmtJbmZvcm1hdGlvbjMJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDbGFzc21hcmtJbmZvcm1hdGlvbjMJCQlQUkVTRU5DRSBjb25kaXRpb25hbAoJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBUYXJnZXQgSUQgSUUgY29udGFpbnMgYSBDR0kgSUUgYW5kIFNvdXJjZSBCU1MgVG8gVGFyZ2V0IEJTUyBUcmFuc3BhcmVudCBDb250YWluZXIgaXMgbm90IGluY2x1ZGVkIC0tCQl9IHwKCXsgSUQgaWQtU291cmNlLVRvVGFyZ2V0LVRyYW5zcGFyZW50Q29udGFpbmVyCgkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBTb3VyY2UtVG9UYXJnZXQtVHJhbnNwYXJlbnRDb250YWluZXIgUFJFU0VOQ0UgY29uZGl0aW9uYWwKCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgVGFyZ2V0IElEIElFIGNvbnRhaW5zIGEgUk5DLUlEIElFIG9yIGVOQi1JRCAtLQkJCQkJCQkJCQkJCX0gfAoJeyBJRCBpZC1PbGRCU1MtVG9OZXdCU1MtSW5mb3JtYXRpb24JCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIE9sZEJTUy1Ub05ld0JTUy1JbmZvcm1hdGlvbgkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KClJlbG9jYXRpb25SZXF1aXJlZEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBHRVJBTiBzdXBwb3J0IG92ZXIgSXUtY3MgLS0KCXsgSUQgaWQtR0VSQU4tQ2xhc3NtYXJrCQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdFUkFOLUNsYXNzbWFyawkJCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgSW50ZXItUkFUIFBTIEhhbmRvdmVyIGJldHdlZW4gVVRSQU4gYW5kIEdFUkFOIEEvR2IgLS0KCXsgSUQgaWQtU291cmNlQlNTLVRvVGFyZ2V0QlNTLVRyYW5zcGFyZW50Q29udGFpbmVyCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gU291cmNlQlNTLVRvVGFyZ2V0QlNTLVRyYW5zcGFyZW50Q29udGFpbmVyCVBSRVNFTkNFIG9wdGlvbmFsfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IGZvciBTUlZDQyBvcGVyYXRpb24gLS0KCXsgSUQgaWQtU1JWQ0MtSE8tSW5kaWNhdGlvbgkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIFNSVkNDLUhPLUluZGljYXRpb24JCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOSB0byBjb21tdW5pY2F0ZSB0byB0aGUgQ04gdGhlIENTRyBpZCBvZiB0aGUgdGFyZ2V0IGNlbGwgLS0KCXsgSUQgaWQtQ1NHLUlkCQkJCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQ1NHLUlkIAkJCQkJCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOSB0byBjb21tdW5pY2F0ZSB0byB0aGUgQ04gdGhlIGh5YnJpZCBhY2Nlc3Mgc3RhdHVzIG9mIHRoZSB0YXJnZXQgY2VsbCAtLQoJeyBJRCBpZC1DZWxsLUFjY2Vzcy1Nb2RlCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQ2VsbC1BY2Nlc3MtTW9kZQkJCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTEgZm9yIHJTUlZDQyBvcGVyYXRpb24gLS0KCXsgSUQgaWQtUlNSVkNDLUhPLUluZGljYXRpb24JCQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIFJTUlZDQy1ITy1JbmRpY2F0aW9uCQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTQgdG8gc3VwcG9ydCBRb0UgZnVuY3Rpb24gLS0KCXtJRCBpZC1VRS1BcHBsaWNhdGlvbi1MYXllci1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLUZvci1SZWxvY2F0aW9uIENSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVUUtQXBwbGljYXRpb24tTGF5ZXItTWVhc3VyZW1lbnQtQ29uZmlndXJhdGlvbi1Gb3ItUmVsb2NhdGlvbglQUkVTRU5DRSBvcHRpb25hbH0sCgoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlbG9jYXRpb24gQ29tbWFuZAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmVsb2NhdGlvbkNvbW1hbmQgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSZWxvY2F0aW9uQ29tbWFuZElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UmVsb2NhdGlvbkNvbW1hbmRFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClJlbG9jYXRpb25Db21tYW5kSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UYXJnZXQtVG9Tb3VyY2UtVHJhbnNwYXJlbnRDb250YWluZXIKCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFRhcmdldC1Ub1NvdXJjZS1UcmFuc3BhcmVudENvbnRhaW5lciBQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtTDMtSW5mb3JtYXRpb24JCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgTDMtSW5mb3JtYXRpb24JCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1SZWxvY2F0aW9uUmVsZWFzZUxpc3QJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxvY2F0aW9uUmVsZWFzZUxpc3QgCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1EYXRhRm9yd2FyZGluZ0xpc3QJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItRGF0YUZvcndhcmRpbmdMaXN0CQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzIAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKUkFCLVJlbG9jYXRpb25SZWxlYXNlTGlzdCAJCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsge1JBQi1SZWxvY2F0aW9uUmVsZWFzZUl0ZW1JRXN9IH0KClJBQi1SZWxvY2F0aW9uUmVsZWFzZUl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1SZWxvY2F0aW9uUmVsZWFzZUl0ZW0JCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxvY2F0aW9uUmVsZWFzZUl0ZW0JCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpSQUItUmVsb2NhdGlvblJlbGVhc2VJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItUmVsb2NhdGlvblJlbGVhc2VJdGVtLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1SZWxvY2F0aW9uUmVsZWFzZUl0ZW0tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KClJBQi1EYXRhRm9yd2FyZGluZ0xpc3QgCQkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLURhdGFGb3J3YXJkaW5nSXRlbUlFc30gfQoKUkFCLURhdGFGb3J3YXJkaW5nSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLURhdGFGb3J3YXJkaW5nSXRlbQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1EYXRhRm9yd2FyZGluZ0l0ZW0JCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpSQUItRGF0YUZvcndhcmRpbmdJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCgl0cmFuc3BvcnRMYXllckFkZHJlc3MJCQkJVHJhbnNwb3J0TGF5ZXJBZGRyZXNzLAoJaXVUcmFuc3BvcnRBc3NvY2lhdGlvbgkJCQlJdVRyYW5zcG9ydEFzc29jaWF0aW9uLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLURhdGFGb3J3YXJkaW5nSXRlbS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSQUItRGF0YUZvcndhcmRpbmdJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gYWxsb3cgdHJhbnNmZXIgb2YgYSBzZWNvbmQgcGFpciBvZiBUTEEgYW5kIGFzc29jaWF0aW9uIC0tCgl7SUQgaWQtVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCVBSRVNFTkNFIG9wdGlvbmFsfSB8Cgl7SUQgaWQtSXVUcmFuc3BvcnRBc3NvY2lhdGlvbglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEl1VHJhbnNwb3J0QXNzb2NpYXRpb24JUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJlbG9jYXRpb25Db21tYW5kRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIEludGVyIFJBTiBMb2FkIEluZm9ybWF0aW9uIEV4Y2hhbmdlIG92ZXIgSXUgLS0KCXsgSUQgaWQtSW50ZXJTeXN0ZW1JbmZvcm1hdGlvbi1UcmFuc3BhcmVudENvbnRhaW5lcglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEludGVyU3lzdGVtSW5mb3JtYXRpb24tVHJhbnNwYXJlbnRDb250YWluZXIJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDYgdG8gZW5hYmxlIEludGVyLVJBVCBQUyBIYW5kb3ZlciBiZXR3ZWVuIFVUUkFOIGFuZCBHRVJBTiBBL0diIC0tCgl7IElEIGlkLVRhcmdldEJTUy1Ub1NvdXJjZUJTUy1UcmFuc3BhcmVudENvbnRhaW5lcglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFRhcmdldEJTUy1Ub1NvdXJjZUJTUy1UcmFuc3BhcmVudENvbnRhaW5lcglQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOCBmb3IgU1JWQ0Mgb3BlcmF0aW9uIC0tCgl7IElEIGlkLVNSVkNDLUluZm9ybWF0aW9uCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gU1JWQ0MtSW5mb3JtYXRpb24JCQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDExIGZvciByU1JWQ0Mgb3BlcmF0aW9uIC0tCgl7IElEIGlkLVJTUlZDQy1JbmZvcm1hdGlvbgkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIFJTUlZDQy1JbmZvcm1hdGlvbgkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZWxvY2F0aW9uIFByZXBhcmF0aW9uIEZhaWx1cmUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlbG9jYXRpb25QcmVwYXJhdGlvbkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSZWxvY2F0aW9uUHJlcGFyYXRpb25GYWlsdXJlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSZWxvY2F0aW9uUHJlcGFyYXRpb25GYWlsdXJlRXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAouLi4KfQoKUmVsb2NhdGlvblByZXBhcmF0aW9uRmFpbHVyZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtQ2F1c2UJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzIAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKUmVsb2NhdGlvblByZXBhcmF0aW9uRmFpbHVyZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBJbnRlciBSQU4gTG9hZCBJbmZvcm1hdGlvbiBFeGNoYW5nZSBvdmVyIEl1IC0tCgl7IElEIGlkLUludGVyU3lzdGVtSW5mb3JtYXRpb24tVHJhbnNwYXJlbnRDb250YWluZXIJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gSW50ZXJTeXN0ZW1JbmZvcm1hdGlvbi1UcmFuc3BhcmVudENvbnRhaW5lcgkJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJFTE9DQVRJT04gUkVTT1VSQ0UgQUxMT0NBVElPTiBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUmVsb2NhdGlvbiBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSZWxvY2F0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JlbG9jYXRpb25SZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSZWxvY2F0aW9uUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKUmVsb2NhdGlvblJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVBlcm1hbmVudE5BUy1VRS1JRAkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFBlcm1hbmVudE5BUy1VRS1JRCAJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtQ2F1c2UJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNOLURvbWFpbkluZGljYXRvcgkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIENOLURvbWFpbkluZGljYXRvcgkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLVNvdXJjZS1Ub1RhcmdldC1UcmFuc3BhcmVudENvbnRhaW5lcgoJCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgU291cmNlUk5DLVRvVGFyZ2V0Uk5DLVRyYW5zcGFyZW50Q29udGFpbmVyCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtUkFCLVNldHVwTGlzdC1SZWxvY1JlcQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1TZXR1cExpc3QtUmVsb2NSZXEJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBJbnRlZ3JpdHlQcm90ZWN0aW9uSW5mb3JtYXRpb24gCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtRW5jcnlwdGlvbkluZm9ybWF0aW9uCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgRW5jcnlwdGlvbkluZm9ybWF0aW9uIAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1JdVNpZ0NvbklkCUNSSVRJQ0FMSVRZIGlnbm9yZSBUWVBFIEl1U2lnbmFsbGluZ0Nvbm5lY3Rpb25JZGVudGlmaWVyIFBSRVNFTkNFIG1hbmRhdG9yeSB9LAoJLi4uCn0KClJBQi1TZXR1cExpc3QtUmVsb2NSZXEgCQkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLVNldHVwSXRlbS1SZWxvY1JlcS1JRXN9IH0KClJBQi1TZXR1cEl0ZW0tUmVsb2NSZXEtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItU2V0dXBJdGVtLVJlbG9jUmVxCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgUkFCLVNldHVwSXRlbS1SZWxvY1JlcQkJCVBSRVNFTkNFIG1hbmRhdG9yeSAJfSwKCS4uLgp9CgpSQUItU2V0dXBJdGVtLVJlbG9jUmVxIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCgluQVMtU3luY2hyb25pc2F0aW9uSW5kaWNhdG9yCU5BUy1TeW5jaHJvbmlzYXRpb25JbmRpY2F0b3IJT1BUSU9OQUwsCglyQUItUGFyYW1ldGVycwkJCQkJUkFCLVBhcmFtZXRlcnMsCglkYXRhVm9sdW1lUmVwb3J0aW5nSW5kaWNhdGlvbgkJCURhdGFWb2x1bWVSZXBvcnRpbmdJbmRpY2F0aW9uIAlPUFRJT05BTAoJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBDTiBkb21haW4gaW5kaWNhdG9yIElFIGlzIHNldCB0byAiUFMgZG9tYWluIiAtLSwKCXBEUC1UeXBlSW5mb3JtYXRpb24JCQkJUERQLVR5cGVJbmZvcm1hdGlvbgkJT1BUSU9OQUwKCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgQ04gZG9tYWluIGluZGljYXRvciBJRSBpcyBzZXQgdG8gIlBTIGRvbWFpbiIgLS0sCgl1c2VyUGxhbmVJbmZvcm1hdGlvbgkJCQlVc2VyUGxhbmVJbmZvcm1hdGlvbiwKCXRyYW5zcG9ydExheWVyQWRkcmVzcwkJCQlUcmFuc3BvcnRMYXllckFkZHJlc3MsCglpdVRyYW5zcG9ydEFzc29jaWF0aW9uCQkJCUl1VHJhbnNwb3J0QXNzb2NpYXRpb24sCglzZXJ2aWNlLUhhbmRvdmVyCQkJCVNlcnZpY2UtSGFuZG92ZXIJCU9QVElPTkFMLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLVNldHVwSXRlbS1SZWxvY1JlcS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSQUItU2V0dXBJdGVtLVJlbG9jUmVxLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDQgdG8gZW5hYmxlIFJBQiBRdWFsaXR5IG9mIFNlcnZpY2UgbmVnb3RpYXRpb24gb3ZlciBJdSAtLQoJeyBJRCBpZC1BbHQtUkFCLVBhcmFtZXRlcnMJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQWx0LVJBQi1QYXJhbWV0ZXJzCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBHRVJBTiBzdXBwb3J0IG92ZXIgSXUtY3MgLS0KCXsgSUQgaWQtR0VSQU4tQlNDLUNvbnRhaW5lcgkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBHRVJBTi1CU0MtQ29udGFpbmVyCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGVuYWJsZSBoYW5kb3ZlciByZXN0cmljdGlvbiB0byBFLVVUUkFOIC0tCgl7IElEIGlkLUUtVVRSQU4tU2VydmljZS1IYW5kb3ZlcgkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gRS1VVFJBTi1TZXJ2aWNlLUhhbmRvdmVyCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOSB0byBlbmFibGUgYSBuZXcgdmFsdWUgLS0KCXsgSUQgaWQtUERQLVR5cGVJbmZvcm1hdGlvbi1leHRlbnNpb24gCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBEUC1UeXBlSW5mb3JtYXRpb24tZXh0ZW5zaW9uCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGVuYWJsZSBvZmZsb2FkIGF0IEl1LVBTIGZvciBVVFJBTiAtLQoJeyBJRCBpZC1PZmZsb2FkLVJBQi1QYXJhbWV0ZXJzCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gT2ZmbG9hZC1SQUItUGFyYW1ldGVycwkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKVXNlclBsYW5lSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKCXVzZXJQbGFuZU1vZGUJCQkJCVVzZXJQbGFuZU1vZGUsCgl1UC1Nb2RlVmVyc2lvbnMJCQkJCVVQLU1vZGVWZXJzaW9ucywKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1VzZXJQbGFuZUluZm9ybWF0aW9uLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClVzZXJQbGFuZUluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSZWxvY2F0aW9uUmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBHbG9iYWxDTi1JRAkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgc2hhcmVkIG5ldHdvcmtzIGluIGNvbm5lY3RlZCBtb2RlIC0tCgl7IElEIGlkLVNOQS1BY2Nlc3MtSW5mb3JtYXRpb24JCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFNOQS1BY2Nlc3MtSW5mb3JtYXRpb24JCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIHNwZWNpZmljIGJlaGF2aW91ciBieSB0aGUgUk5DIGluIHJlbGF0aW9uIHdpdGggZWFybHkgVUUgaGFuZGxpbmcgLS0KCXsgSUQgaWQtVUVTQkktSXUJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFVFU0JJLUl1CQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBjb252ZXkgdGhlIHNlbGVjdGVkIFBMTU4gaWQgaW4gbmV0d29yayBzaGFyaW5nIG1vYmlsaXR5IHNjZW5hcmlvcyAtLQoJeyBJRCBpZC1TZWxlY3RlZFBMTU4tSUQJIAkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBMTU5pZGVudGl0eQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgTUJNUyBVRSBsaW5raW5nIGF0IHJlbG9jYXRpb24gLS0KCXsgSUQgaWQtQ05NQk1TTGlua2luZ0luZm9ybWF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENOTUJNU0xpbmtpbmdJbmZvcm1hdGlvbglQUkVTRU5DRSBvcHRpb25hbH18Cgl7IElEIGlkLVVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDkgdG8gY29tbXVuaWNhdGUgdG8gdGhlIHRhcmdldCBjZWxsIHRoZSBDU0cgaWQgcmVwb3J0ZWQgYnkgdGhlIHNvdXJjZSAtLQoJeyBJRCBpZC1DU0ctSWQgCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQ1NHLUlkIAkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDkgZm9yIGVuYWJsaW5nIFVFIHByaW9yaXRpc2F0aW9uIGR1cmluZyBhY2Nlc3MgdG8gaHlicmlkIGNlbGxzIC0tCgl7IElEIGlkLUNTRy1NZW1iZXJzaGlwLVN0YXR1cwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQ1NHLU1lbWJlcnNoaXAtU3RhdHVzCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gZW5hYmxlIG9mZmxvYWQgYXQgSXUtUFMgZm9yIFVUUkFOIC0tCgl7IElEIGlkLU1TSVNETgkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1TSVNETgkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDExIHRvIHN1cHBvcnQgclNSVkNDIGluIGNhc2Ugb2YgbmV0d29yayBzaGFyaW5nIJYKCXsgSUQgaWQtQW5jaG9yUExNTi1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQTE1OaWRlbnRpdHkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtUG93ZXJTYXZpbmdJbmRpY2F0b3IJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBvd2VyU2F2aW5nSW5kaWNhdG9yCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTQgdG8gc3VwcG9ydCBRb0UgZnVuY3Rpb24gLS0KCXtJRCBpZC1VRS1BcHBsaWNhdGlvbi1MYXllci1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLUZvci1SZWxvY2F0aW9uIENSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVUUtQXBwbGljYXRpb24tTGF5ZXItTWVhc3VyZW1lbnQtQ29uZmlndXJhdGlvbi1Gb3ItUmVsb2NhdGlvbglQUkVTRU5DRSBvcHRpb25hbH0sCgoJLi4uCn0KCkNOTUJNU0xpbmtpbmdJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJam9pbmVkTUJNU0JlYXJlclNlcnZpY2UtSUVzCQlKb2luZWRNQk1TQmVhcmVyU2VydmljZS1JRXMsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtDTk1CTVNMaW5raW5nSW5mb3JtYXRpb24tRXh0SUVzfSB9CQlPUFRJT05BTCwKCS4uLgp9CgpDTk1CTVNMaW5raW5nSW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCkpvaW5lZE1CTVNCZWFyZXJTZXJ2aWNlLUlFcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLiBtYXhub29mTXVsdGljYXN0U2VydmljZXNQZXJVRSkpIE9GCglTRVFVRU5DRSB7CgkJdE1HSQkJCQlUTUdJLAoJCW1CTVMtUFRQLVJBQi1JRAkJTUJNUy1QVFAtUkFCLUlELAoJCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0pvaW5lZE1CTVNCZWFyZXJTZXJ2aWNlLUV4dElFc30gfSBPUFRJT05BTCwKCQkuLi4KCX0KCkpvaW5lZE1CTVNCZWFyZXJTZXJ2aWNlLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZWxvY2F0aW9uIFJlcXVlc3QgQWNrbm93bGVkZ2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlbG9jYXRpb25SZXF1ZXN0QWNrbm93bGVkZ2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSZWxvY2F0aW9uUmVxdWVzdEFja25vd2xlZGdlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSZWxvY2F0aW9uUmVxdWVzdEFja25vd2xlZGdlRXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJlbG9jYXRpb25SZXF1ZXN0QWNrbm93bGVkZ2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVRhcmdldC1Ub1NvdXJjZS1UcmFuc3BhcmVudENvbnRhaW5lcgoJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVGFyZ2V0Uk5DLVRvU291cmNlUk5DLVRyYW5zcGFyZW50Q29udGFpbmVyIFBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1SQUItU2V0dXBMaXN0LVJlbG9jUmVxQWNrCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItU2V0dXBMaXN0LVJlbG9jUmVxQWNrCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKCXsgSUQgaWQtUkFCLUZhaWxlZExpc3QJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLUZhaWxlZExpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKCXsgSUQgaWQtQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDaG9zZW5JbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtQ2hvc2VuRW5jcnlwdGlvbkFsZ29yaXRobQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ2hvc2VuRW5jcnlwdGlvbkFsZ29yaXRobQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcyAJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClJBQi1TZXR1cExpc3QtUmVsb2NSZXFBY2sgCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItU2V0dXBJdGVtLVJlbG9jUmVxQWNrLUlFc30gfQoKUkFCLVNldHVwSXRlbS1SZWxvY1JlcUFjay1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1TZXR1cEl0ZW0tUmVsb2NSZXFBY2sJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1TZXR1cEl0ZW0tUmVsb2NSZXFBY2sJCQlQUkVTRU5DRSBtYW5kYXRvcnkgCX0sCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1SZWxvY1JlcUFjayA6Oj0gU0VRVUVOQ0UgewoJckFCLUlECQkJCQkJUkFCLUlELAoJdHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQkJCVRyYW5zcG9ydExheWVyQWRkcmVzcwlPUFRJT05BTCwKCWl1VHJhbnNwb3J0QXNzb2NpYXRpb24JCQkJSXVUcmFuc3BvcnRBc3NvY2lhdGlvbglPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1TZXR1cEl0ZW0tUmVsb2NSZXFBY2stRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1SZWxvY1JlcUFjay1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IHRvIGVuYWJsZSBSQUIgUXVhbGl0eSBvZiBTZXJ2aWNlIG5lZ290aWF0aW9uIG92ZXIgSXUgLS0KCXtJRCBpZC1Bc3MtUkFCLVBhcmFtZXRlcnMJQ1JJVElDQUxJVFkgaWdub3JlCQlFWFRFTlNJT04gQXNzLVJBQi1QYXJhbWV0ZXJzCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gYWxsb3cgdHJhbnNmZXIgb2YgYSBzZWNvbmQgcGFpciBvZiBUTEEgYW5kIGFzc29jaWF0aW9uIC0tCgl7SUQgaWQtVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCVBSRVNFTkNFIG9wdGlvbmFsfSB8Cgl7SUQgaWQtSXVUcmFuc3BvcnRBc3NvY2lhdGlvbglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEl1VHJhbnNwb3J0QXNzb2NpYXRpb24JUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJBQi1GYWlsZWRMaXN0IAkJCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItRmFpbGVkSXRlbUlFc30gfQoKUkFCLUZhaWxlZEl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1GYWlsZWRJdGVtCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1GYWlsZWRJdGVtCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1GYWlsZWRJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCgljYXVzZQkJCQkJCUNhdXNlLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLUZhaWxlZEl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLUZhaWxlZEl0ZW0tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KClJlbG9jYXRpb25SZXF1ZXN0QWNrbm93bGVkZ2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgSW50ZXIgUkFOIExvYWQgSW5mb3JtYXRpb24gRXhjaGFuZ2Ugb3ZlciBJdSAtLQoJe0lEIGlkLU5ld0JTUy1Uby1PbGRCU1MtSW5mb3JtYXRpb24JQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBOZXdCU1MtVG8tT2xkQlNTLUluZm9ybWF0aW9uCQlQUkVTRU5DRSBvcHRpb25hbAkgfXwKCXtJRCBpZC1DU0ctSWQJCQkJCQlDUklUSUNBTElUWQlpZ25vcmUJRVhURU5TSU9OIENTRy1JZAkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZWxvY2F0aW9uIEZhaWx1cmUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlbG9jYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7UmVsb2NhdGlvbkZhaWx1cmVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1JlbG9jYXRpb25GYWlsdXJlRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpSZWxvY2F0aW9uRmFpbHVyZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtQ2F1c2UJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzIAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKUmVsb2NhdGlvbkZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgSW50ZXIgUkFOIExvYWQgSW5mb3JtYXRpb24gRXhjaGFuZ2Ugb3ZlciBJdSAtLQoJeyBJRCBpZC1OZXdCU1MtVG8tT2xkQlNTLUluZm9ybWF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE5ld0JTUy1Uby1PbGRCU1MtSW5mb3JtYXRpb24JCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgR0VSQU4gc3VwcG9ydCBvdmVyIEl1LWNzIC0tCgl7IElEIGlkLUdFUkFOLUNsYXNzbWFyawkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBHRVJBTi1DbGFzc21hcmsJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJFTE9DQVRJT04gQ0FOQ0VMIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZWxvY2F0aW9uIENhbmNlbAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmVsb2NhdGlvbkNhbmNlbCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JlbG9jYXRpb25DYW5jZWxJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1JlbG9jYXRpb25DYW5jZWxFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClJlbG9jYXRpb25DYW5jZWxJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNhdXNlCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUmVsb2NhdGlvbkNhbmNlbEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUmVsb2NhdGlvbiBDYW5jZWwgQWNrbm93bGVkZ2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlbG9jYXRpb25DYW5jZWxBY2tub3dsZWRnZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JlbG9jYXRpb25DYW5jZWxBY2tub3dsZWRnZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UmVsb2NhdGlvbkNhbmNlbEFja25vd2xlZGdlRXh0ZW5zaW9uc30gfSAJCQlPUFRJT05BTCwKCS4uLgp9CgpSZWxvY2F0aW9uQ2FuY2VsQWNrbm93bGVkZ2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpSZWxvY2F0aW9uQ2FuY2VsQWNrbm93bGVkZ2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNSTlMgQ09OVEVYVCBUUkFOU0ZFUiBPUEVBUkFUSU9OCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTUk5TIENvbnRleHQgUmVxdWVzdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKU1JOUy1Db250ZXh0UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1NSTlMtQ29udGV4dFJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1NSTlMtQ29udGV4dFJlcXVlc3RFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClNSTlMtQ29udGV4dFJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1EYXRhRm9yd2FyZGluZ0xpc3QtU1JOUy1DdHhSZXEJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLURhdGFGb3J3YXJkaW5nTGlzdC1TUk5TLUN0eFJlcQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLURhdGFGb3J3YXJkaW5nTGlzdC1TUk5TLUN0eFJlcSAJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLURhdGFGb3J3YXJkaW5nSXRlbS1TUk5TLUN0eFJlcS1JRXN9IH0KClJBQi1EYXRhRm9yd2FyZGluZ0l0ZW0tU1JOUy1DdHhSZXEtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItRGF0YUZvcndhcmRpbmdJdGVtLVNSTlMtQ3R4UmVxCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1EYXRhRm9yd2FyZGluZ0l0ZW0tU1JOUy1DdHhSZXEJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1EYXRhRm9yd2FyZGluZ0l0ZW0tU1JOUy1DdHhSZXEgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1EYXRhRm9yd2FyZGluZ0l0ZW0tU1JOUy1DdHhSZXEtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLURhdGFGb3J3YXJkaW5nSXRlbS1TUk5TLUN0eFJlcS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKU1JOUy1Db250ZXh0UmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIFRoZSBTR1NOIG1heSBpbmNsdWRlIHRoZSBJRSwgd2hlbiBhdmFpbGFibGUgdG8gaW5kaWNhdGUgdGhlIFJBVCBmcm9tIHdoaWNoIHRoZSBjb250ZXh0IHJlcXVlc3Qgb3JpZ2luYXRlcywgdG8gY29ycmVjdCBtZWFzdXJlbWVudCBwb2ludHMgaW4gU1JOQy4gLS0KCXtJRCBpZC1SQVQtVHlwZQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiAJUkFULVR5cGUJCVBSRVNFTkNFIG9wdGlvbmFsIH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU1JOUyBDb250ZXh0IFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTUk5TLUNvbnRleHRSZXNwb25zZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1NSTlMtQ29udGV4dFJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtTUk5TLUNvbnRleHRSZXNwb25zZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKU1JOUy1Db250ZXh0UmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1Db250ZXh0TGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItQ29udGV4dExpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1Db250ZXh0RmFpbGVkdG9UcmFuc2Zlckxpc3QJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1Db250ZXh0RmFpbGVkdG9UcmFuc2Zlckxpc3QJCVBSRVNFTkNFIG9wdGlvbmFsCX18Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpSQUItQ29udGV4dExpc3QgCQkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLUNvbnRleHRJdGVtSUVzfSB9CgpSQUItQ29udGV4dEl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1Db250ZXh0SXRlbQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItQ29udGV4dEl0ZW0JCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLUNvbnRleHRJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCglkbC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyCQkJREwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCgl1bC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyCQkJVUwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCglkbC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJCQlETC1OLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCgl1bC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJCQlVTC1OLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItQ29udGV4dEl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLUNvbnRleHRJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJMaXN0IAkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCcy1Db250ZXh0RmFpbGVkdG9UcmFuc2Zlckl0ZW1JRXN9IH0KClJBQnMtQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJJdGVtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJJdGVtCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUJzLUNvbnRleHRGYWlsZWR0b1RyYW5zZmVySXRlbQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQnMtQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJJdGVtOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWNhdXNlCQkJCQkJQ2F1c2UsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCcy1Db250ZXh0RmFpbGVkdG9UcmFuc2Zlckl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKClJBQnMtQ29udGV4dEZhaWxlZHRvVHJhbnNmZXJJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpTUk5TLUNvbnRleHRSZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU0VDVVJJVFkgTU9ERSBDT05UUk9MIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTZWN1cml0eSBNb2RlIENvbW1hbmQKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNlY3VyaXR5TW9kZUNvbW1hbmQgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtTZWN1cml0eU1vZGVDb21tYW5kSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtTZWN1cml0eU1vZGVDb21tYW5kRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpTZWN1cml0eU1vZGVDb21tYW5kSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1JbnRlZ3JpdHlQcm90ZWN0aW9uSW5mb3JtYXRpb24JCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEludGVncml0eVByb3RlY3Rpb25JbmZvcm1hdGlvbgkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1FbmNyeXB0aW9uSW5mb3JtYXRpb24JCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBFbmNyeXB0aW9uSW5mb3JtYXRpb24JCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtS2V5U3RhdHVzCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgS2V5U3RhdHVzCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5fSwKCS4uLgp9CgpTZWN1cml0eU1vZGVDb21tYW5kRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTZWN1cml0eSBNb2RlIENvbXBsZXRlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTZWN1cml0eU1vZGVDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1NlY3VyaXR5TW9kZUNvbXBsZXRlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtTZWN1cml0eU1vZGVDb21wbGV0ZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKU2VjdXJpdHlNb2RlQ29tcGxldGVJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNob3NlbkludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0JQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSAJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1DaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpTZWN1cml0eU1vZGVDb21wbGV0ZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU2VjdXJpdHkgTW9kZSBSZWplY3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNlY3VyaXR5TW9kZVJlamVjdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1NlY3VyaXR5TW9kZVJlamVjdElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7U2VjdXJpdHlNb2RlUmVqZWN0RXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpTZWN1cml0eU1vZGVSZWplY3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNhdXNlCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcyAJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClNlY3VyaXR5TW9kZVJlamVjdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gREFUQSBWT0xVTUUgUkVQT1JUIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBEYXRhIFZvbHVtZSBSZXBvcnQgUmVxdWVzdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRGF0YVZvbHVtZVJlcG9ydFJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtEYXRhVm9sdW1lUmVwb3J0UmVxdWVzdElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7RGF0YVZvbHVtZVJlcG9ydFJlcXVlc3RFeHRlbnNpb25zfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKRGF0YVZvbHVtZVJlcG9ydFJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdExpc3QJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdExpc3QJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdExpc3QgCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsge1JBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW1JRXN9IH0KClJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW0JCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW0JCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW0gOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1EYXRhVm9sdW1lUmVwb3J0UmVxdWVzdEl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLURhdGFWb2x1bWVSZXBvcnRSZXF1ZXN0SXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKRGF0YVZvbHVtZVJlcG9ydFJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIERhdGEgVm9sdW1lIFJlcG9ydAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRGF0YVZvbHVtZVJlcG9ydCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge0RhdGFWb2x1bWVSZXBvcnRJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0RhdGFWb2x1bWVSZXBvcnRFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkRhdGFWb2x1bWVSZXBvcnRJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1EYXRhVm9sdW1lUmVwb3J0TGlzdAkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLURhdGFWb2x1bWVSZXBvcnRMaXN0CQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1GYWlsZWR0b1JlcG9ydExpc3QJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItRmFpbGVkdG9SZXBvcnRMaXN0CQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpEYXRhVm9sdW1lUmVwb3J0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItRmFpbGVkdG9SZXBvcnRMaXN0IAkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCcy1mYWlsZWQtdG8tcmVwb3J0SXRlbUlFc30gfQoKUkFCcy1mYWlsZWQtdG8tcmVwb3J0SXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLUZhaWxlZHRvUmVwb3J0SXRlbQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCcy1mYWlsZWQtdG8tcmVwb3J0SXRlbQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQnMtZmFpbGVkLXRvLXJlcG9ydEl0ZW06Oj0gU0VRVUVOQ0UgewoJckFCLUlECQkJCQkJUkFCLUlELAoJY2F1c2UJCQkJCQlDYXVzZSwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBSQUJzLWZhaWxlZC10by1yZXBvcnRJdGVtLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KCgpSQUJzLWZhaWxlZC10by1yZXBvcnRJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkVTRVQgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlc2V0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSZXNldCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1Jlc2V0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSZXNldEV4dGVuc2lvbnN9IH0JCQkJCU9QVElPTkFMLAoJLi4uCn0KClJlc2V0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ2F1c2UJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgQ04tRG9tYWluSW5kaWNhdG9yCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtR2xvYmFsUk5DLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbFJOQy1JRAkJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClJlc2V0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDQgLS0KCXsgSUQgaWQtR2xvYmFsQ04tSUQJCQkJQ1JJVElDQUxJVFkgaWdub3JlCQlFWFRFTlNJT04gR2xvYmFsQ04tSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byBpbmRpY2F0ZSBleHRlbmRlZCBSTkMtSUQgLS0KCXsgSUQgaWQtRXh0ZW5kZWRSTkMtSUQJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBFeHRlbmRlZFJOQy1JRAkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZXNldCBBY2tub3dsZWRnZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmVzZXRBY2tub3dsZWRnZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1Jlc2V0QWNrbm93bGVkZ2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1Jlc2V0QWNrbm93bGVkZ2VFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClJlc2V0QWNrbm93bGVkZ2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNOLURvbWFpbkluZGljYXRvcgkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIENOLURvbWFpbkluZGljYXRvcgkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8CgkgeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1HbG9iYWxSTkMtSUQJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsUk5DLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKUmVzZXRBY2tub3dsZWRnZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIEdsb2JhbENOLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgZXh0ZW5kZWQgUk5DLUlEIC0tCgl7IElEIGlkLUV4dGVuZGVkUk5DLUlECQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gRXh0ZW5kZWRSTkMtSUQJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSRVNFVCBSRVNPVVJDRSBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlc2V0IFJlc291cmNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSZXNldFJlc291cmNlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7UmVzZXRSZXNvdXJjZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UmVzZXRSZXNvdXJjZUV4dGVuc2lvbnN9IH0JCQkJCU9QVElPTkFMLAoJLi4uCn0KClJlc2V0UmVzb3VyY2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNOLURvbWFpbkluZGljYXRvcgkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIENOLURvbWFpbkluZGljYXRvcgkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNhdXNlCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1JdVNpZ0NvbklkTGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSZXNldFJlc291cmNlTGlzdAkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxSTkMtSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpSZXNldFJlc291cmNlTGlzdCAJOjo9CUl1U2lnQ29uSWQtSUUtQ29udGFpbmVyTGlzdHsge1Jlc2V0UmVzb3VyY2VJdGVtSUVzfSB9CgpSZXNldFJlc291cmNlSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSXVTaWdDb25JZEl0ZW0JCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUJUmVzZXRSZXNvdXJjZUl0ZW0JCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpSZXNldFJlc291cmNlSXRlbSA6Oj0gU0VRVUVOQ0UgewoJaXVTaWdDb25JZAkJCQkJSXVTaWduYWxsaW5nQ29ubmVjdGlvbklkZW50aWZpZXIsCglpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBSZXNldFJlc291cmNlSXRlbS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSZXNldFJlc291cmNlSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLUl1U2lnQ29uSWRSYW5nZUVuZAkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllcglQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKUmVzZXRSZXNvdXJjZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIEdsb2JhbENOLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgZXh0ZW5kZWQgUk5DLUlEIC0tCgl7IElEIGlkLUV4dGVuZGVkUk5DLUlECQkJQ1JJVElDQUxJVFkgcmVqZWN0CQlFWFRFTlNJT04gRXh0ZW5kZWRSTkMtSUQJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlc2V0IFJlc291cmNlIEFja25vd2xlZGdlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSZXNldFJlc291cmNlQWNrbm93bGVkZ2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSZXNldFJlc291cmNlQWNrbm93bGVkZ2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1Jlc2V0UmVzb3VyY2VBY2tub3dsZWRnZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKUmVzZXRSZXNvdXJjZUFja25vd2xlZGdlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1JdVNpZ0NvbklkTGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSZXNldFJlc291cmNlQWNrTGlzdAkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtR2xvYmFsUk5DLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbFJOQy1JRAkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KUmVzZXRSZXNvdXJjZUFja0xpc3QgCTo6PQlJdVNpZ0NvbklkLUlFLUNvbnRhaW5lckxpc3R7IHtSZXNldFJlc291cmNlQWNrSXRlbUlFc30gfQoKUmVzZXRSZXNvdXJjZUFja0l0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUl1U2lnQ29uSWRJdGVtCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFCVJlc2V0UmVzb3VyY2VBY2tJdGVtCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUmVzZXRSZXNvdXJjZUFja0l0ZW0gOjo9IFNFUVVFTkNFIHsKCWl1U2lnQ29uSWQJCQkJCUl1U2lnbmFsbGluZ0Nvbm5lY3Rpb25JZGVudGlmaWVyLAoJaUUtRXh0ZW5zaW9ucwkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUmVzZXRSZXNvdXJjZUFja0l0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUmVzZXRSZXNvdXJjZUFja0l0ZW0tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJeyBJRCBpZC1JdVNpZ0NvbklkUmFuZ2VFbmQJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllcgkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJlc2V0UmVzb3VyY2VBY2tub3dsZWRnZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIEdsb2JhbENOLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgZXh0ZW5kZWQgUk5DLUlEIC0tCgl7IElEIGlkLUV4dGVuZGVkUk5DLUlECQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gRXh0ZW5kZWRSTkMtSUQJCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQUIgUkVMRUFTRSBSRVFVRVNUIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQUIgUmVsZWFzZSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSQUItUmVsZWFzZVJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSQUItUmVsZWFzZVJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1JBQi1SZWxlYXNlUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVJlbGVhc2VSZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItUmVsZWFzZUxpc3QJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLVJlbGVhc2VMaXN0CQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1SZWxlYXNlTGlzdCAJCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItUmVsZWFzZUl0ZW1JRXN9IH0KClJBQi1SZWxlYXNlSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVJlbGVhc2VJdGVtCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxlYXNlSXRlbQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpSQUItUmVsZWFzZUl0ZW0gOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWNhdXNlCQkJCQkJQ2F1c2UsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItUmVsZWFzZUl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVJlbGVhc2VJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItUmVsZWFzZVJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEl1IFJFTEVBU0UgUkVRVUVTVCBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSXUgUmVsZWFzZSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpJdS1SZWxlYXNlUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge0l1LVJlbGVhc2VSZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtJdS1SZWxlYXNlUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKSXUtUmVsZWFzZVJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNhdXNlCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKSXUtUmVsZWFzZVJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJFTE9DQVRJT04gREVURUNUIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSZWxvY2F0aW9uIERldGVjdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmVsb2NhdGlvbkRldGVjdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JlbG9jYXRpb25EZXRlY3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1JlbG9jYXRpb25EZXRlY3RFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClJlbG9jYXRpb25EZXRlY3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7CgkuLi4KfQoKUmVsb2NhdGlvbkRldGVjdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkVMT0NBVElPTiBDT01QTEVURSBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUmVsb2NhdGlvbiBDb21wbGV0ZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUmVsb2NhdGlvbkNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7UmVsb2NhdGlvbkNvbXBsZXRlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSZWxvY2F0aW9uQ29tcGxldGVFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KClJlbG9jYXRpb25Db21wbGV0ZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCS4uLgp9CgpSZWxvY2F0aW9uQ29tcGxldGVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOSB0byBlbmFibGUgdGhlIENOIHRvIGhhbmRsZSBwb3RlbnRpYWwgVUUgTkFTIFFvUyBpc3N1ZXMgcmVsYXRlZCB0byBoaWdoZXIgYml0cmF0ZXMgLS0KCXsgSUQgaWQtSGlnaGVyQml0cmF0ZXNUaGFuMTZNYnBzRmxhZwkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBIaWdoZXJCaXRyYXRlc1RoYW4xNk1icHNGbGFnCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBzdXBwb3J0IEJCQUkgLS0KCXsgSUQgaWQtVHVubmVsLUluZm9ybWF0aW9uLWZvci1CQkYJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFR1bm5lbEluZm9ybWF0aW9uCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTIgdG8gc3VwcG9ydCBTSVBUT0BMTiBTdGFuZC1BbG9uZSAtLQoJeyBJRCBpZC1MSE4tSUQJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gTEhOLUlECQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRU5IQU5DRUQgUkVMT0NBVElPTiBDT01QTEVURSBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRW5oYW5jZWQgUmVsb2NhdGlvbiBDb21wbGV0ZSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZVJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZVJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0VuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKRW5oYW5jZWRSZWxvY2F0aW9uQ29tcGxldGVSZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1PbGRJdVNpZ0NvbklkCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEl1U2lnbmFsbGluZ0Nvbm5lY3Rpb25JZGVudGlmaWVyCQkJCVBSRVNFTkNFIG1hbmRhdG9yeSB9IHwKCXsgSUQgaWQtSXVTaWdDb25JZAkJCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgSXVTaWduYWxsaW5nQ29ubmVjdGlvbklkZW50aWZpZXIJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5IH0gfAoJeyBJRCBpZC1SZWxvY2F0aW9uLVNvdXJjZVJOQy1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsUk5DLUlECQkJCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeSB9IHwKCXsgSUQgaWQtUmVsb2NhdGlvbi1Tb3VyY2VFeHRlbmRlZFJOQy1JRAkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEV4dGVuZGVkUk5DLUlECQkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsIH0gfAoJeyBJRCBpZC1SZWxvY2F0aW9uLVRhcmdldFJOQy1JRAkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgR2xvYmFsUk5DLUlECQkJCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeSB9IHwKCXsgSUQgaWQtUmVsb2NhdGlvbi1UYXJnZXRFeHRlbmRlZFJOQy1JRAkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEV4dGVuZGVkUk5DLUlECQkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsIH0gfAoJeyBJRCBpZC1SQUItU2V0dXBMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBSQUItU2V0dXBMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKCS4uLgp9CgpSQUItU2V0dXBMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcSAJCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsgeyBSQUItU2V0dXBJdGVtLUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcS1JRXN9IH0KClJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVxLUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXEJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVxCQkJUFJFU0VOQ0UgbWFuZGF0b3J5IAl9LAoJLi4uCn0KClJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVxIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQkJCQlSQUItSUQsCgl0cmFuc3BvcnRMYXllckFkZHJlc3NSZXExCQkJCVRyYW5zcG9ydExheWVyQWRkcmVzcwlPUFRJT05BTCwKCWl1VHJhbnNwb3J0QXNzb2NpYXRpb25SZXExCQkJCUl1VHJhbnNwb3J0QXNzb2NpYXRpb24JT1BUSU9OQUwsCglhc3MtUkFCLVBhcmFtZXRlcnMJCQkJCQlBc3MtUkFCLVBhcmFtZXRlcnMgT1BUSU9OQUwsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXEtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXEtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCkVuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlUmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLUNob3NlbkludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0JQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDaG9zZW5JbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlQUkVTRU5DRSBvcHRpb25hbH18Cgl7IElEIGlkLUNob3NlbkVuY3J5cHRpb25BbGdvcml0aG0JCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENob3NlbkVuY3J5cHRpb25BbGdvcml0aG0JCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDkgdG8gZW5hYmxlIHRoZSBDTiB0byBoYW5kbGUgcG90ZW50aWFsIFVFIE5BUyBRb1MgaXNzdWVzIHJlbGF0ZWQgdG8gaGlnaGVyIGJpdHJhdGVzIC0tCgl7IElEIGlkLUhpZ2hlckJpdHJhdGVzVGhhbjE2TWJwc0ZsYWcJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gSGlnaGVyQml0cmF0ZXNUaGFuMTZNYnBzRmxhZwkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbnMgZm9yIFJlbGVhc2UgMTEgdG8gZW5hYmxlIGVuaGFuY2VkIHJlbG9jYXRpb24gZnJvbSBSTkMgdG8gaHlicmlkIGNlbGwglgoJeyBJRCBpZC1DU0ctSWQJCQkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQ1NHLUlkCQkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtQ2VsbC1BY2Nlc3MtTW9kZQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBDZWxsLUFjY2Vzcy1Nb2RlCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBzdXBwb3J0IEJCQUkgLS0KCXsgSUQgaWQtVHVubmVsLUluZm9ybWF0aW9uLWZvci1CQkYJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFR1bm5lbEluZm9ybWF0aW9uCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMiB0byBzdXBwb3J0IFNJUFRPQExOIFN0YW5kLUFsb25lIC0tCgl7IElEIGlkLUxITi1JRAkJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBMSE4tSUQJCQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEVuaGFuY2VkIFJlbG9jYXRpb24gQ29tcGxldGUgUmVzcG9uc2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkVuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZVJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZVJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KCkVuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1TZXR1cExpc3QtRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItU2V0dXBMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcwlQUkVTRU5DRSBvcHRpb25hbH0gfAoJeyBJRCBpZC1SQUItVG9CZVJlbGVhc2VkTGlzdC1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1Ub0JlUmVsZWFzZWRMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcwlQUkVTRU5DRSBvcHRpb25hbH0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcyAJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClJBQi1TZXR1cExpc3QtRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzIDo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItU2V0dXBJdGVtLUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcy1JRXN9IH0KClJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzLUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1TZXR1cEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzCQlQUkVTRU5DRSBtYW5kYXRvcnkgCX0sCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCQkJCVJBQi1JRCwKCXJBQi1QYXJhbWV0ZXJzCQkJCQkJCVJBQi1QYXJhbWV0ZXJzCU9QVElPTkFMLAoJdXNlclBsYW5lSW5mb3JtYXRpb24JCQkJCVVzZXJQbGFuZUluZm9ybWF0aW9uLAoJdHJhbnNwb3J0TGF5ZXJBZGRyZXNzUmVzMQkJCQlUcmFuc3BvcnRMYXllckFkZHJlc3MJT1BUSU9OQUwsCglpdVRyYW5zcG9ydEFzc29jaWF0aW9uUmVzMQkJCQlJdVRyYW5zcG9ydEFzc29jaWF0aW9uCU9QVElPTkFMLAoJcmFiMmJlUmVsZWFzZWRMaXN0CQkJCQkJUkFCLVRvQmVSZWxlYXNlZExpc3QtRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzIE9QVElPTkFMLAoJaUUtRXh0ZW5zaW9ucwkJCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGVuYWJsZSBPZmZsb2FkIGF0IEl1LXBzIGZvciBVVFJBTiAtLQoJeyBJRCBpZC1PZmZsb2FkLVJBQi1QYXJhbWV0ZXJzCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJBQi1Ub0JlUmVsZWFzZWRMaXN0LUVuaGFuY2VkUmVsb2NDb21wbGV0ZVJlcyA6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLVRvQmVSZWxlYXNlZEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzLUlFc30gfQoKUkFCLVRvQmVSZWxlYXNlZEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzLUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVRvQmVSZWxlYXNlZEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItVG9CZVJlbGVhc2VkSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMJCVBSRVNFTkNFIG1hbmRhdG9yeSAJfSwKCS4uLgp9CgpSQUItVG9CZVJlbGVhc2VkSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWNhdXNlCQkJCQkJQ2F1c2UsCglpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBSQUItVG9CZVJlbGVhc2VkSXRlbS1FbmhhbmNlZFJlbG9jQ29tcGxldGVSZXMtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVRvQmVSZWxlYXNlZEl0ZW0tRW5oYW5jZWRSZWxvY0NvbXBsZXRlUmVzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZVJlc3BvbnNlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCXsgSUQgaWQtVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGUJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGUJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gZW5hYmxlIE9mZmxvYWQgYXQgSXUtcHMgZm9yIFVUUkFOIC0tCgl7IElEIGlkLU1TSVNETgkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1TSVNETgkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDExIHRvIGVuYWJsZSBlaG5haGNlZCByZWxvY2F0aW9uIGZyb20gUk5DIHRvIGh5YnJpZCBjZWxsIJYKCXsgSUQgaWQtQ1NHLU1lbWJlcnNoaXAtU3RhdHVzCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDU0ctTWVtYmVyc2hpcC1TdGF0dXMJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRW5oYW5jZWQgUmVsb2NhdGlvbiBDb21wbGV0ZSBGYWlsdXJlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZUZhaWx1cmVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0VuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlRmFpbHVyZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKRW5oYW5jZWRSZWxvY2F0aW9uQ29tcGxldGVGYWlsdXJlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ2F1c2UJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MgCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZUZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEVuaGFuY2VkIFJlbG9jYXRpb24gQ29tcGxldGUgQ29uZmlybQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRW5oYW5jZWRSZWxvY2F0aW9uQ29tcGxldGVDb25maXJtIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7RW5oYW5jZWRSZWxvY2F0aW9uQ29tcGxldGVDb25maXJtSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZUNvbmZpcm1FeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkVuaGFuY2VkUmVsb2NhdGlvbkNvbXBsZXRlQ29uZmlybUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLUZhaWxlZExpc3QJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLUZhaWxlZExpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKCS4uLgp9CgpFbmhhbmNlZFJlbG9jYXRpb25Db21wbGV0ZUNvbmZpcm1FeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBQQUdJTkcgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFBhZ2luZwotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKUGFnaW5nIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7UGFnaW5nSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtQYWdpbmdFeHRlbnNpb25zfSB9CQkJCQlPUFRJT05BTCwKCS4uLgp9CgpQYWdpbmdJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNOLURvbWFpbkluZGljYXRvcgkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtUGVybWFuZW50TkFTLVVFLUlEIAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBQZXJtYW5lbnROQVMtVUUtSUQJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtVGVtcG9yYXJ5VUUtSUQJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRlbXBvcmFyeVVFLUlECQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVBhZ2luZ0FyZWFJRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUGFnaW5nQXJlYUlECQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVBhZ2luZ0NhdXNlCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUGFnaW5nQ2F1c2UJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtTm9uU2VhcmNoaW5nSW5kaWNhdGlvbgkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIE5vblNlYXJjaGluZ0luZGljYXRpb24JCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBEUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gLAoJLi4uCn0KClBhZ2luZ0V4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBOTlNGIC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gR2xvYmFsQ04tSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIHN1cHBvcnQgQ1NHIC0tCgl7IElEIGlkLUNTRy1JZC1MaXN0CQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQ1NHLUlkLUxpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDT01NT04gSUQgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIENvbW1vbiBJRAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQ29tbW9uSUQgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtDb21tb25JRC1JRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0NvbW1vbklERXh0ZW5zaW9uc30gfQkJCQkJT1BUSU9OQUwsCgkuLi4KfQoKQ29tbW9uSUQtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1QZXJtYW5lbnROQVMtVUUtSUQJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBQZXJtYW5lbnROQVMtVUUtSUQJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKQ29tbW9uSURFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgc2hhcmVkIG5ldHdvcmtzIGluIGNvbm5lY3RlZCBtb2RlIC0tCgl7IElEIGlkLVNOQS1BY2Nlc3MtSW5mb3JtYXRpb24JCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFNOQS1BY2Nlc3MtSW5mb3JtYXRpb24JCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIHNwZWNpZmljIGJlaGF2aW91ciBieSB0aGUgUk5DIGluIHJlbGF0aW9uIHdpdGggZWFybHkgVUUgaGFuZGxpbmcgLS0KCXsgSUQgaWQtVUVTQkktSXUJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFVFU0JJLUl1CQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbCB9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBpbmRpY2F0ZSB0aGUgc2VsZWN0ZWQgcGxtbiBpbiBHV0NOIGNvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgc2hhcmluZyBub24tc3VwcG9ydGluZyBVRXMgLS0KCXsgSUQgaWQtU2VsZWN0ZWRQTE1OLUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBMTU5pZGVudGl0eQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbCB9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOCB0byBpbmRpY2F0ZSB0aGUgU3Vic2NyaWJlciBQcm9maWxlIElEIGZvciBSQVQvRnJlcXVlbmN5IFNlbGVjdGlvbiBQcmlvcml0eSAtLQoJe0lEIGlkLVN1YnNjcmliZXJQcm9maWxlSURmb3JSRlAJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gU3Vic2NyaWJlclByb2ZpbGVJRGZvclJGUAkJCVBSRVNFTkNFIG9wdGlvbmFsIH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IGZvciBTUlZDQyBvcGVyYXRpb24gLS0KCXsgSUQgaWQtU1JWQ0MtT3BlcmF0aW9uLVBvc3NpYmxlCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFNSVkNDLU9wZXJhdGlvbi1Qb3NzaWJsZQkJCVBSRVNFTkNFIG9wdGlvbmFsIH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA5IHRvIGFsbG93IGZvciBVRSBwcmlvcml0aXNhdGlvbiBkdXJpbmcgYWNjZXNzIHRvIGh5YnJpZCBjZWxscyAtLQoJeyBJRCBpZC1DU0ctTWVtYmVyc2hpcC1TdGF0dXMJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENTRy1NZW1iZXJzaGlwLVN0YXR1cwkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGluZGljYXRlIE1hbmFnZW1lbnQgQmFzZWQgTURUIEFsbG93ZWQgLS0KCXsgSUQgaWQtTWFuYWdlbWVudC1CYXNlZC1NRFQtQWxsb3dlZAlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1hbmFnZW1lbnQtQmFzZWQtTURULUFsbG93ZWQJCVBSRVNFTkNFIG9wdGlvbmFsIH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBpbmRpY2F0ZSBNRFQgUExNTiBMaXN0IC0tCgl7IElEIGlkLU1hbmFnZW1lbnQtQmFzZWQtTURULVBMTU4tTGlzdAlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1EVC1QTE1OLUxpc3QJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDExIHJTUlZDQyBvcGVyYXRpb24gLS0KCXsgSUQgaWQtUlNSVkNDLU9wZXJhdGlvbi1Qb3NzaWJsZQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSU1JWQ0MtT3BlcmF0aW9uLVBvc3NpYmxlCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDExIHRvIGluaWRjYXRlIHRoZSBsYXN0IEUtVVRSQU4gUExNTiBJZGVudGl0eSAtLQoJeyBJRCBpZC1MYXN0RS1VVFJBTlBMTU5JZGVudGl0eQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUExNTmlkZW50aXR5CQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsIH18Cgl7IElEIGlkLVBvd2VyU2F2aW5nSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQb3dlclNhdmluZ0luZGljYXRvcgkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDTiBJTlZPS0UgVFJBQ0UgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIENOIEludm9rZSBUcmFjZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKQ04tSW52b2tlVHJhY2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHtDTi1JbnZva2VUcmFjZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7Q04tSW52b2tlVHJhY2VFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkNOLUludm9rZVRyYWNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UcmFjZVR5cGUgCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRyYWNlVHlwZSAJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCS0tIFRoaXMgaW5mb3JtYXRpb24gaXMgbWFuZGF0b3J5IGZvciBHRVJBTiBJdSBNb2RlLCBub3QgYXBwbGljYWJsZSB0byBVVFJBTiAtLQoJeyBJRCBpZC1UcmFjZVJlZmVyZW5jZQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRyYWNlUmVmZXJlbmNlCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLVRyaWdnZXJJRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBUcmlnZ2VySUQJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCS0tIFRoaXMgaW5mb3JtYXRpb24gaXMgbWFuZGF0b3J5IGZvciBHRVJBTiBJdSBNb2RlLCBub3QgYXBwbGljYWJsZSB0byBVVFJBTiAtLQoJeyBJRCBpZC1VRS1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVUUtSUQJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8CgktLSBUaGlzIGluZm9ybWF0aW9uIGlzIG1hbmRhdG9yeSBmb3IgVVRSQU4sIG9wdGlvbmFsIGZvciBHRVJBTiBJdSBtb2RlIC0tCgl7IElEIGlkLU9NQy1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgT01DLUlECQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgktLSBUaGlzIGluZm9ybWF0aW9uIGlzIG1hbmRhdG9yeSBmb3IgR0VSQU4gSXUgTW9kZSwgbm90IGFwcGxpY2FibGUgdG8gVVRSQU4gLS0KCS4uLgp9CgpDTi1JbnZva2VUcmFjZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA2IHRvIGVuYWJsZSBzaWduYWxsaW5nIGJhc2VkIGFjdGl2YXRpb24gZm9yIFN1YnNjcmliZXIgYW5kIEVxdWlwbWVudCBUcmFjZSBvdmVyIEl1IGludGVyZmFjZSAtLQoJeyBJRCBpZC1UcmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHJhY2VQcm9wYWdhdGlvblBhcmFtZXRlcnMJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIHN1cHBvcnQgTURULS0KCXsgSUQgaWQtTURULUNvbmZpZ3VyYXRpb24JCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gTURULUNvbmZpZ3VyYXRpb24JCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMCB0byBzdXBwb3J0IE1EVC0tCgl7IElEIGlkLVRyYWNlLUNvbGxlY3Rpb24tRW50aXR5LUlQLUFkZGVzcwlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFRyYW5zcG9ydExheWVyQWRkcmVzcwkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxNCB0byBzdXBwb3J0IFFvRSBmdW5jdGlvbiAtLQoJe0lEIGlkLVVFLUFwcGxpY2F0aW9uLUxheWVyLU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24gQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBVRS1BcHBsaWNhdGlvbi1MYXllci1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDTiBERUFDVElWQVRFIFRSQUNFIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBDTiBEZWFjdGl2YXRlIFRyYWNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpDTi1EZWFjdGl2YXRlVHJhY2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtDTi1EZWFjdGl2YXRlVHJhY2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0NOLURlYWN0aXZhdGVUcmFjZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKQ04tRGVhY3RpdmF0ZVRyYWNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UcmFjZVJlZmVyZW5jZQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBUcmFjZVJlZmVyZW5jZQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkgfSB8Cgl7IElEIGlkLVRyaWdnZXJJRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVHJpZ2dlcklECQkJCQlQUkVTRU5DRSBvcHRpb25hbCB9LAoJLS0gVGhpcyBpbmZvcm1hdGlvbiBpcyBvcHRpb25hbCBmb3IgR0VSQU4gSXUgTW9kZSwgbm90IGFwcGxpY2FibGUgdG8gVVRSQU4gLS0KCS4uLgp9CgpDTi1EZWFjdGl2YXRlVHJhY2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIExPQ0FUSU9OIFJFUE9SVElORyBDT05UUk9MIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBMb2NhdGlvbiBSZXBvcnRpbmcgQ29udHJvbAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTG9jYXRpb25SZXBvcnRpbmdDb250cm9sIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7TG9jYXRpb25SZXBvcnRpbmdDb250cm9sSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtMb2NhdGlvblJlcG9ydGluZ0NvbnRyb2xFeHRlbnNpb25zfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKTG9jYXRpb25SZXBvcnRpbmdDb250cm9sSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SZXF1ZXN0VHlwZSAJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUmVxdWVzdFR5cGUgCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KCkxvY2F0aW9uUmVwb3J0aW5nQ29udHJvbEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IHRvIGVuaGFuY2UgdGhlIGxvY2F0aW9uIHJlcXVlc3Qgb3ZlciBJdSAtLQoJeyBJRCBpZC1WZXJ0aWNhbEFjY3VyYWN5Q29kZSAJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBWZXJ0aWNhbEFjY3VyYWN5Q29kZSAJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IHRvIGVuaGFuY2UgdGhlIGxvY2F0aW9uIHJlcXVlc3Qgb3ZlciBJdSAtLQoJeyBJRCBpZC1SZXNwb25zZVRpbWUgCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSZXNwb25zZVRpbWUgCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNCB0byBlbmhhbmNlIHRoZSBsb2NhdGlvbiByZXF1ZXN0IG92ZXIgSXUgLS0KCXsgSUQgaWQtUG9zaXRpb25pbmdQcmlvcml0eSAJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQb3NpdGlvbmluZ1ByaW9yaXR5IAkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDQgdG8gZW5oYW5jZSB0aGUgbG9jYXRpb24gcmVxdWVzdCBvdmVyIEl1IC0tCgl7IElEIGlkLUNsaWVudFR5cGUgCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQ2xpZW50VHlwZSAJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGFsbG93IHRoZSByZXF1ZXN0IG9mIHZlbG9jaXR5IG92ZXIgSXUgLS0KCXsgSUQgaWQtSW5jbHVkZVZlbG9jaXR5IAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBJbmNsdWRlVmVsb2NpdHkgCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGFsbG93IHBlcmlvZGljIHJlcG9ydGluZyBvdmVyIEl1IC0tCgl7IElEIGlkLVBlcmlvZGljTG9jYXRpb25JbmZvIAkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBlcmlvZGljTG9jYXRpb25JbmZvIAkJCQlQUkVTRU5DRSBvcHRpb25hbCB9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIExPQ0FUSU9OIFJFUE9SVCBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTG9jYXRpb24gUmVwb3J0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpMb2NhdGlvblJlcG9ydCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge0xvY2F0aW9uUmVwb3J0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtMb2NhdGlvblJlcG9ydEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKTG9jYXRpb25SZXBvcnRJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUFyZWFJZGVudGl0eQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBBcmVhSWRlbnRpdHkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtQ2F1c2UJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJlcXVlc3RUeXBlIAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSZXF1ZXN0VHlwZSAJCQlQUkVTRU5DRSBvcHRpb25hbAl9CSwKCS4uLgp9CgpMb2NhdGlvblJlcG9ydEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IHRvIGVuYWJsZSByZXBvcnQgb2YgTGFzdCBLbm93biBTZXJ2aWNlIEFyZWEgd2l0aCBpdHMgQWdlIG92ZXIgSXUgLS0KCXsgSUQgaWQtTGFzdEtub3duU2VydmljZUFyZWEJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBMYXN0S25vd25TZXJ2aWNlQXJlYQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIHBhc3MgdGhlIHBvc2l0aW9uaW5nIG1ldGhvZHMgdGhhdCBoYXZlIGJlZW4gdXNlZCAtLQoJeyBJRCBpZC1Qb3NpdGlvbkRhdGEJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBvc2l0aW9uRGF0YQkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gcGFzcyB0aGUgcG9zaXRpb25pbmcgbWV0aG9kcyB0aGF0IGhhdmUgYmVlbiB1c2VkIGZvciBHRVJBTiBJdSBtb2RlIC0tCgl7IElEIGlkLVBvc2l0aW9uRGF0YVNwZWNpZmljVG9HRVJBTkl1TW9kZQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBvc2l0aW9uRGF0YVNwZWNpZmljVG9HRVJBTkl1TW9kZQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAoJLS0gVGhpcyBleHRlbnNpb24gaXMgb3B0aW9uYWwgZm9yIEdFUkFOIEl1IG1vZGUgb25seSwgbm90IGFwcGxpY2FibGUgZm9yIFVUUkFOIC0tCi0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA2IHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIHJldHVybmVkIHBvc2l0aW9uIGVzdGltYXRlIHNhdGlzZmllcyB0aGUgcmVxdWVzdGVkIGFjY3VyYWN5IG9yIG5vdCAtLQoJeyBJRCBpZC1BY2N1cmFjeUZ1bGZpbG1lbnRJbmRpY2F0b3IJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEFjY3VyYWN5RnVsZmlsbWVudEluZGljYXRvcgkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIHByb3ZpZGUgYSB2ZWxvY2l0eSBlc3RpbWF0ZSAtLQoJeyBJRCBpZC1WZWxvY2l0eUVzdGltYXRlCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFZlbG9jaXR5RXN0aW1hdGUJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEzIHRvIHByb3ZpZGUgYSBiYXJvbWV0cmljIHByZXNzdXJlIC0tCgl7IElEIGlkLUJhcm9tZXRyaWNQcmVzc3VyZQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBCYXJvbWV0cmljUHJlc3N1cmUJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTMgdG8gcHJvdmlkZSBhIGNpdmljIGFkZHJlc3MgLS0KCXsgSUQgaWQtQ2l2aWNBZGRyZXNzCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDaXZpY0FkZHJlc3MJCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSU5JVElBTCBVRSBNRVNTQUdFIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJbml0aWFsIFVFIE1lc3NhZ2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkluaXRpYWxVRS1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJCXsge0luaXRpYWxVRS1NZXNzYWdlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgkJeyB7SW5pdGlhbFVFLU1lc3NhZ2VFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkluaXRpYWxVRS1NZXNzYWdlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtTEFJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIExBSQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1SQUMJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFDCQkJCQlQUkVTRU5DRSBjb25kaXRpb25hbAoJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBDTiBEb21haW4gSW5kaWNhdG9yIElFIGlzIHNldCB0byAiUFMgZG9tYWluIgkJLS0JCQkJCQkJCQkJCQl9IHwKCXsgSUQgaWQtU0FJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFNBSQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1OQVMtUERVCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgTkFTLVBEVQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUl1U2lnQ29uSWQJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZSAJVFlQRSBJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllcgkJUFJFU0VOQ0UgbWFuZGF0b3J5IAl9IHwKCXsgSUQgaWQtR2xvYmFsUk5DLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbFJOQy1JRAkJCVBSRVNFTkNFIG1hbmRhdG9yeSAJfSwKCS4uLgp9CgpJbml0aWFsVUUtTWVzc2FnZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBHRVJBTiBzdXBwb3J0IG92ZXIgSXUtY3MgLS0KCXsgSUQgaWQtR0VSQU4tQ2xhc3NtYXJrCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdFUkFOLUNsYXNzbWFyawkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBjb252ZXkgdGhlIHNlbGVjdGVkIFBMTU4gaWQgaW4gc2hhcmVkIG5ldHdvcmtzIC0tCgl7IElEIGlkLVNlbGVjdGVkUExNTi1JRAkgCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUExNTmlkZW50aXR5CQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgcmVyb3V0aW5nIGluIE1PQ04gY29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBzaGFyaW5nIG5vbi1zdXBwb3J0aW5nIFVFcyAtLQoJeyBJRCBpZC1QZXJtYW5lbnROQVMtVUUtSUQJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQZXJtYW5lbnROQVMtVUUtSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgcmVyb3V0aW5nIGluIE1PQ04gY29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBzaGFyaW5nIG5vbi1zdXBwb3J0aW5nIFVFcyAtLQoJeyBJRCBpZC1OQVMtU2VxdWVuY2VOdW1iZXIJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBOQVMtU2VxdWVuY2VOdW1iZXIJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBpbmRpY2F0ZSByZXJvdXRpbmcgaW4gTU9DTiBjb25maWd1cmF0aW9uIGZvciBuZXR3b3JrIHNoYXJpbmcgbm9uLXN1cHBvcnRpbmcgVUVzIC0tCgl7IElEIGlkLVJlZGlyZWN0QXR0ZW1wdEZsYWcJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSZWRpcmVjdEF0dGVtcHRGbGFnCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgZXh0ZW5kZWQgUk5DLUlEIC0tCgl7IElEIGlkLUV4dGVuZGVkUk5DLUlECQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIHN1cHBvcnQgQ1NHIC0tCgl7IElEIGlkLUNTRy1JZAkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIENTRy1JZAkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA5IHRvIGFsbG93IGNvbW11bmljYXRpb24gb2YgdGhlIGNlbGwgYWNjZXNzIG1vZGUgLS0KCXsgSUQgaWQtQ2VsbC1BY2Nlc3MtTW9kZQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIENlbGwtQWNjZXNzLU1vZGUJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIHN1cHBvcnQgTElQQSAtLQoJeyBJRCBpZC1MR1ctVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFRyYW5zcG9ydExheWVyQWRkcmVzcwkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA5IHRvIGVuYWJsZSB0aGUgQ04gdG8gaGFuZGxlIHBvdGVudGlhbCBVRSBOQVMgUW9TIGlzc3VlcyByZWxhdGVkIHRvIGhpZ2hlciBiaXRyYXRlcyAtLQoJeyBJRCBpZC1IaWdoZXJCaXRyYXRlc1RoYW4xNk1icHNGbGFnCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gSGlnaGVyQml0cmF0ZXNUaGFuMTZNYnBzRmxhZwlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBzdXBwb3J0IEJCQUkgLS0KCXsgSUQgaWQtVHVubmVsLUluZm9ybWF0aW9uLWZvci1CQkYJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHVubmVsSW5mb3JtYXRpb24JCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEyIHRvIHN1cHBvcnQgU0lQVE9ATE4gd2l0aCBjb2xsb2NhdGVkIEwtR1ctLQoJeyBJRCBpZC1TSVBUTy1MR1ctVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEyIHRvIHN1cHBvcnQgU0lQVE9ATE4gU3RhbmQtQWxvbmUgLS0KCXsgSUQgaWQtTEhOLUlECQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gTEhOLUlECQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEzIHRvIHN1cHBvcnQgRENOIC0tCgl7IElEIGlkLVNHU04tR3JvdXAtSWRlbnRpdHkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBTR1NOLUdyb3VwLUlkZW50aXR5CQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtVUUtVXNhZ2UtVHlwZQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBVRS1Vc2FnZS1UeXBlCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAoJeyBJRCBpZC1EQ04tSUQJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBEQ04tSUQJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBESVJFQ1QgVFJBTlNGRVIgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIERpcmVjdCBUcmFuc2ZlcgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRGlyZWN0VHJhbnNmZXIgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtEaXJlY3RUcmFuc2ZlcklFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7RGlyZWN0VHJhbnNmZXJFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkRpcmVjdFRyYW5zZmVySUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1OQVMtUERVCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIE5BUy1QRFUJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5fXwKCXsgSUQgaWQtTEFJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBMQUkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtUkFDCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUMJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtU0FJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBTQUkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsgSUQgaWQtU0FQSQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBTQVBJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKRGlyZWN0VHJhbnNmZXJFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgcmVyb3V0aW5nIGluIE1PQ04gY29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBzaGFyaW5nIG5vbi1zdXBwb3J0aW5nIFVFcyAtLQoJeyBJRCBpZC1SZWRpcmVjdGlvbkluZGljYXRpb24JCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSZWRpcmVjdGlvbkluZGljYXRpb24JCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBpbmRpY2F0ZSB0aGUgTU9DTiByZXJvdXRpbmcgaXMgY29tcGxldGVkIC0tCgl7IElEIGlkLVJlZGlyZWN0aW9uQ29tcGxldGVkCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUmVkaXJlY3Rpb25Db21wbGV0ZWQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOCB0byBpbmRpY2F0ZSB0aGUgU3Vic2NyaWJlciBQcm9maWxlIElEIGZvciBSQVQvRnJlcXVlbmN5IFNlbGVjdGlvbiBQcmlvcml0eSAtLQoJeyBJRCBpZC1TdWJzY3JpYmVyUHJvZmlsZUlEZm9yUkZQCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBTdWJzY3JpYmVyUHJvZmlsZUlEZm9yUkZQCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gc3VwcG9ydCBMSVBBIC0tCgl7IElEIGlkLUxHVy1UcmFuc3BvcnRMYXllckFkZHJlc3MJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFRyYW5zcG9ydExheWVyQWRkcmVzcwkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMiB0byBzdXBwb3J0IFNJUFRPQExOIHdpdGggY29sbG9jYXRlZCBMLUdXIC0tCgl7IElEIGlkLVNJUFRPLUxHVy1UcmFuc3BvcnRMYXllckFkZHJlc3MJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEyIHRvIHN1cHBvcnQgU0lQVE9ATE4gU3RhbmQtQWxvbmUgLS0KCXsgSUQgaWQtTEhOLUlECQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIExITi1JRAkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJlZGlyZWN0aW9uSW5kaWNhdGlvbiA6Oj0gUHJvdG9jb2xJRS1Db250YWluZXIgeyB7UmVkaXJlY3Rpb25JbmRpY2F0aW9uLUlFc30gfQoKUmVkaXJlY3Rpb25JbmRpY2F0aW9uLUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsJSUQgaWQtTkFTLVBEVQkJCQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUgVFlQRSBOQVMtUERVCQkJCQkJCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeX18Cgl7CUlEIGlkLVJlamVjdENhdXNlVmFsdWUJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZSBUWVBFIFJlamVjdENhdXNlVmFsdWUJCQkJCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5fXwKCXsJSUQgaWQtTkFTLVNlcXVlbmNlTnVtYmVyCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZSBUWVBFIE5BUy1TZXF1ZW5jZU51bWJlcgkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsJSUQgaWQtUGVybWFuZW50TkFTLVVFLUlECQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZSBUWVBFIFBlcm1hbmVudE5BUy1VRS1JRAkJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKCXsJSUQgaWQtQWRkaXRpb25hbC1DU1BTLWNvb3JkaW5hdGlvbi1pbmZvcm1hdGlvbgkJQ1JJVElDQUxJVFkgcmVqZWN0IFRZUEUgQWRkaXRpb25hbC1DU1BTLWNvb3JkaW5hdGlvbi1pbmZvcm1hdGlvbgkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE9WRVJMT0FEIENPTlRST0wgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE92ZXJsb2FkCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpPdmVybG9hZCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge092ZXJsb2FkSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtPdmVybG9hZEV4dGVuc2lvbnN9IH0JCQkJCU9QVElPTkFMLAoJLi4uCn0KCk92ZXJsb2FkSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1OdW1iZXJPZlN0ZXBzCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIE51bWJlck9mU3RlcHMJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxSTkMtSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpPdmVybG9hZEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA5OSB0byBlbmFibGUgdGhlIGluZGljYXRpb24gdG8gdGhlIFJOQyB3aGljaCBDTiBkb21haW4gaXMgc3VmZmVyaW5nIHRoZSBzaWduYWxsaW5nIHRyYWZmaWMgb3ZlcmxvYWQgLS0KCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDTi1Eb21haW5JbmRpY2F0b3IJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBOTlNGIC0tCgl7IElEIGlkLUdsb2JhbENOLUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdsb2JhbENOLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIHN1cHBvcnQgTG93IFByaW9yaXR5IG92ZXJsb2FkIC0tCgl7IElEIGlkLVByaW9yaXR5LUNsYXNzLUluZGljYXRvcglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFByaW9yaXR5LUNsYXNzLUluZGljYXRvcglQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRVJST1IgSU5ESUNBVElPTiBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRXJyb3IgSW5kaWNhdGlvbgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRXJyb3JJbmRpY2F0aW9uIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7RXJyb3JJbmRpY2F0aW9uSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtFcnJvckluZGljYXRpb25FeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkVycm9ySW5kaWNhdGlvbklFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtQ2F1c2UJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ04tRG9tYWluSW5kaWNhdG9yCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxSTkMtSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpFcnJvckluZGljYXRpb25FeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNCAtLQoJeyBJRCBpZC1HbG9iYWxDTi1JRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJCUVYVEVOU0lPTiBHbG9iYWxDTi1JRAkJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCUNSSVRJQ0FMSVRZIHJlamVjdAkJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTUk5TIERBVEEgRk9SV0FSRCBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gU1JOUyBEYXRhIEZvcndhcmQgQ29tbWFuZAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKU1JOUy1EYXRhRm9yd2FyZENvbW1hbmQgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtTUk5TLURhdGFGb3J3YXJkQ29tbWFuZElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7U1JOUy1EYXRhRm9yd2FyZENvbW1hbmRFeHRlbnNpb25zfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKU1JOUy1EYXRhRm9yd2FyZENvbW1hbmRJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1EYXRhRm9yd2FyZGluZ0xpc3QJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItRGF0YUZvcndhcmRpbmdMaXN0CQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpTUk5TLURhdGFGb3J3YXJkQ29tbWFuZEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRk9SV0FSRCBTUk5TIENPTlRFWFQgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEZvcndhcmQgU1JOUyBDb250ZXh0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpGb3J3YXJkU1JOUy1Db250ZXh0IDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7Rm9yd2FyZFNSTlMtQ29udGV4dElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7Rm9yd2FyZFNSTlMtQ29udGV4dEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKRm9yd2FyZFNSTlMtQ29udGV4dElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLUNvbnRleHRMaXN0CQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1Db250ZXh0TGlzdAkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpGb3J3YXJkU1JOUy1Db250ZXh0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIHJlbG9jYXRpb24gb2YgU291cmNlIFJOQyBQRENQIGNvbnRleHQgaW5mbyAtLQoJeyBJRCBpZC1Tb3VyY2VSTkMtUERDUC1jb250ZXh0LWluZm8JCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUlJDLUNvbnRhaW5lcglQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFCIEFTU0lHTk1FTlQgRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJBQiBBc3NpZ25tZW50IFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBQi1Bc3NpZ25tZW50UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JBQi1Bc3NpZ25tZW50UmVxdWVzdElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UkFCLUFzc2lnbm1lbnRSZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1Bc3NpZ25tZW50UmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVNldHVwT3JNb2RpZnlMaXN0CQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLVNldHVwT3JNb2RpZnlMaXN0CQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1SZWxlYXNlTGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItUmVsZWFzZUxpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpSQUItU2V0dXBPck1vZGlmeUxpc3QgCQkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lclBhaXJMaXN0IHsge1JBQi1TZXR1cE9yTW9kaWZ5SXRlbS1JRXN9IH0KClJBQi1TZXR1cE9yTW9kaWZ5SXRlbS1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTLVBBSVIgOjo9IHsKCXsgSUQgaWQtUkFCLVNldHVwT3JNb2RpZnlJdGVtCQkJRklSU1QgQ1JJVElDQUxJVFkgcmVqZWN0CUZJUlNUIFRZUEUgUkFCLVNldHVwT3JNb2RpZnlJdGVtRmlyc3QKCSAJCQkJCQlTRUNPTkQgQ1JJVElDQUxJVFkgaWdub3JlCVNFQ09ORCBUWVBFIFJBQi1TZXR1cE9yTW9kaWZ5SXRlbVNlY29uZAoJCQkJCQkJCQkJCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLVNldHVwT3JNb2RpZnlJdGVtRmlyc3QgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCW5BUy1TeW5jaHJvbmlzYXRpb25JbmRpY2F0b3IJTkFTLVN5bmNocm9uaXNhdGlvbkluZGljYXRvcglPUFRJT05BTCwKCXJBQi1QYXJhbWV0ZXJzCQkJCQlSQUItUGFyYW1ldGVycwkJT1BUSU9OQUwsCgl1c2VyUGxhbmVJbmZvcm1hdGlvbgkJCQlVc2VyUGxhbmVJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCgl0cmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQkJCSBUcmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQlPUFRJT05BTCwKCXNlcnZpY2UtSGFuZG92ZXIJCQkJCVNlcnZpY2UtSGFuZG92ZXIJCQlPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1TZXR1cE9yTW9kaWZ5SXRlbUZpcnN0LUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClRyYW5zcG9ydExheWVySW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKCXRyYW5zcG9ydExheWVyQWRkcmVzcwkJCVRyYW5zcG9ydExheWVyQWRkcmVzcywKCWl1VHJhbnNwb3J0QXNzb2NpYXRpb24JCQlJdVRyYW5zcG9ydEFzc29jaWF0aW9uLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7VHJhbnNwb3J0TGF5ZXJJbmZvcm1hdGlvbi1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpUcmFuc3BvcnRMYXllckluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItU2V0dXBPck1vZGlmeUl0ZW1GaXJzdC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGVuYWJsZSBoYW5kb3ZlciByZXN0cmljdGlvbiB0byBFLVVUUkFOIC0tCgl7IElEIGlkLUUtVVRSQU4tU2VydmljZS1IYW5kb3ZlcgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBFLVVUUkFOLVNlcnZpY2UtSGFuZG92ZXIJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gc3VwcG9ydCBMSVBBIC0tCgl7IElEIGlkLUNvcnJlbGF0aW9uLUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENvcnJlbGF0aW9uLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEyIHRvIHN1cHBvcnQgU0lQVE9ATE4gd2l0aCBjb2xsb2NhdGVkIEwtR1cgLS0KCXsgSUQgaWQtU0lQVE8tQ29ycmVsYXRpb24tSUQJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENvcnJlbGF0aW9uLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgpSQUItU2V0dXBPck1vZGlmeUl0ZW1TZWNvbmQgOjo9IFNFUVVFTkNFIHsKCXBEUC1UeXBlSW5mb3JtYXRpb24JCQkJUERQLVR5cGVJbmZvcm1hdGlvbiAJCQlPUFRJT05BTCwKCWRhdGFWb2x1bWVSZXBvcnRpbmdJbmRpY2F0aW9uCQkJRGF0YVZvbHVtZVJlcG9ydGluZ0luZGljYXRpb24gCU9QVElPTkFMLAoJZGwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlcgkJCURMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIgCU9QVElPTkFMLAoJdWwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlcgkJCVVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIgCU9QVElPTkFMLAoJZGwtTi1QRFUtU2VxdWVuY2VOdW1iZXIJCQkJREwtTi1QRFUtU2VxdWVuY2VOdW1iZXIgCU9QVElPTkFMLAoJdWwtTi1QRFUtU2VxdWVuY2VOdW1iZXIJCQkJVUwtTi1QRFUtU2VxdWVuY2VOdW1iZXIJCU9QVElPTkFMLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLVNldHVwT3JNb2RpZnlJdGVtU2Vjb25kLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1TZXR1cE9yTW9kaWZ5SXRlbVNlY29uZC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA0IHRvIGVuYWJsZSBSQUIgUXVhbGl0eSBvZiBTZXJ2aWNlIG5lZ290aWF0aW9uIG92ZXIgSXUgLS0KCXsgSUQgaWQtQWx0LVJBQi1QYXJhbWV0ZXJzCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEFsdC1SQUItUGFyYW1ldGVycwkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIEdFUkFOIHN1cHBvcnQgb3ZlciBJdS1jcyAtLQoJeyBJRCBpZC1HRVJBTi1CU0MtQ29udGFpbmVyCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdFUkFOLUJTQy1Db250YWluZXIJCQlQUkVTRU5DRSBvcHRpb25hbH18Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSBSZWxlYXNlIDkgdG8gZW5hYmxlIGEgbmV3IHZhbHVlIC0tCgl7IElEIGlkLVBEUC1UeXBlSW5mb3JtYXRpb24tZXh0ZW5zaW9uCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFBEUC1UeXBlSW5mb3JtYXRpb24tZXh0ZW5zaW9uCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGVuYWJsZSBPZmZsb2FkIGF0IEl1LXBzIGZvciBVVFJBTiAtLQoJeyBJRCBpZC1PZmZsb2FkLVJBQi1QYXJhbWV0ZXJzCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gT2ZmbG9hZC1SQUItUGFyYW1ldGVycwkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAoJLi4uCn0KClJBQi1Bc3NpZ25tZW50UmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLVVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGVuYWJsZSBPZmZsb2FkIGF0IEl1LXBzIGZvciBVVFJBTiAtLQoJeyBJRCBpZC1NU0lTRE4JCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNU0lTRE4JCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFCIEFzc2lnbm1lbnQgUmVzcG9uc2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBQi1Bc3NpZ25tZW50UmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtSQUItQXNzaWdubWVudFJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSQUItQXNzaWdubWVudFJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1Bc3NpZ25tZW50UmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1TZXR1cE9yTW9kaWZpZWRMaXN0CQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLVNldHVwT3JNb2RpZmllZExpc3QJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtUkFCLVJlbGVhc2VkTGlzdAkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxlYXNlZExpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8CgoJeyBJRCBpZC1SQUItUXVldWVkTGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItUXVldWVkTGlzdAkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtUkFCLUZhaWxlZExpc3QJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLUZhaWxlZExpc3QJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8Cgl7IElEIGlkLVJBQi1SZWxlYXNlRmFpbGVkTGlzdAkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxlYXNlRmFpbGVkTGlzdAkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKCS4uLgp9CgpSQUItU2V0dXBPck1vZGlmaWVkTGlzdCAJCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsge1JBQi1TZXR1cE9yTW9kaWZpZWRJdGVtSUVzfSB9CgpSQUItU2V0dXBPck1vZGlmaWVkSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVNldHVwT3JNb2RpZmllZEl0ZW0JCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItU2V0dXBPck1vZGlmaWVkSXRlbQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1TZXR1cE9yTW9kaWZpZWRJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCgl0cmFuc3BvcnRMYXllckFkZHJlc3MJCQkJVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCU9QVElPTkFMLAoJaXVUcmFuc3BvcnRBc3NvY2lhdGlvbgkJCQlJdVRyYW5zcG9ydEFzc29jaWF0aW9uCU9QVElPTkFMLAoJZGwtZGF0YVZvbHVtZXMJCQkJCURhdGFWb2x1bWVMaXN0CQlPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1TZXR1cE9yTW9kaWZpZWRJdGVtLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1TZXR1cE9yTW9kaWZpZWRJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDQgdG8gZW5hYmxlIFJBQiBRdWFsaXR5IG9mIFNlcnZpY2UgbmVnb3RpYXRpb24gb3ZlciBJdSAtLQoJewlJRCBpZC1Bc3MtUkFCLVBhcmFtZXRlcnMJQ1JJVElDQUxJVFkgaWdub3JlCQlFWFRFTlNJT04gQXNzLVJBQi1QYXJhbWV0ZXJzCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClJBQi1SZWxlYXNlZExpc3QgCQkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7UkFCLVJlbGVhc2VkSXRlbUlFc30gfQoKUkFCLVJlbGVhc2VkSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLVJlbGVhc2VkSXRlbQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1SZWxlYXNlZEl0ZW0JCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLVJlbGVhc2VkSXRlbSA6Oj0gU0VRVUVOQ0UgewoJckFCLUlECQkJCQkJUkFCLUlELAoJZGwtZGF0YVZvbHVtZXMJCQkJCURhdGFWb2x1bWVMaXN0CQlPUFRJT05BTCwKCWRMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIJCURMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIJCQlPUFRJT05BTCwKCXVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIJCVVMLUdUUC1QRFUtU2VxdWVuY2VOdW1iZXIJCQlPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQi1SZWxlYXNlZEl0ZW0tRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVJlbGVhc2VkSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKRGF0YVZvbHVtZUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mVm9sKSkgT0YKCVNFUVVFTkNFIHsKCQlkbC1VbnN1Y2Nlc3NmdWxseVRyYW5zbWl0dGVkRGF0YVZvbHVtZQkJVW5zdWNjZXNzZnVsbHlUcmFuc21pdHRlZERhdGFWb2x1bWUsCgkJZGF0YVZvbHVtZVJlZmVyZW5jZQkJCQlEYXRhVm9sdW1lUmVmZXJlbmNlCU9QVElPTkFMLAoJCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0RhdGFWb2x1bWVMaXN0LUV4dElFc30gfQkJCU9QVElPTkFMLAoJCS4uLgoJfQoKRGF0YVZvbHVtZUxpc3QtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KClJBQi1RdWV1ZWRMaXN0IAkJCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItUXVldWVkSXRlbUlFc30gfQoKUkFCLVF1ZXVlZEl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1RdWV1ZWRJdGVtCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1RdWV1ZWRJdGVtCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClJBQi1RdWV1ZWRJdGVtIDo6PSBTRVFVRU5DRSB7CglyQUItSUQJCQkJCQlSQUItSUQsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItUXVldWVkSXRlbS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSQUItUXVldWVkSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKUkFCLVJlbGVhc2VGYWlsZWRMaXN0IDo6PSBSQUItRmFpbGVkTGlzdAoKUkFCLUFzc2lnbm1lbnRSZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBHRVJBTiBzdXBwb3J0IG92ZXIgSXUtY3MgLS0KCXsgSUQgaWQtR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWRMaXN0LVJBQkFzc2dudFJlc3BvbnNlCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdFUkFOLUl1bW9kZS1SQUItRmFpbGVkTGlzdC1SQUJBc3NnbnRSZXNwb25zZQkJCVBSRVNFTkNFIG9wdGlvbmFsfSAsCgkuLi4KfQoKR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWRMaXN0LVJBQkFzc2dudFJlc3BvbnNlCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7R0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbUlFc30gfQoKR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KCkdFUkFOLUl1bW9kZS1SQUItRmFpbGVkLVJBQkFzc2dudFJlc3BvbnNlLUl0ZW0gOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWNhdXNlCQkJCQkJQ2F1c2UsCglnRVJBTi1DbGFzc21hcmsJCQkJR0VSQU4tQ2xhc3NtYXJrCQlPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7R0VSQU4tSXVtb2RlLVJBQi1GYWlsZWQtUkFCQXNzZ250UmVzcG9uc2UtSXRlbS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpHRVJBTi1JdW1vZGUtUkFCLUZhaWxlZC1SQUJBc3NnbnRSZXNwb25zZS1JdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBQUklWQVRFIE1FU1NBR0UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClByaXZhdGVNZXNzYWdlIDo6PSBTRVFVRU5DRSB7Cglwcml2YXRlSUVzCQlQcml2YXRlSUUtQ29udGFpbmVyCQl7IHtQcml2YXRlTWVzc2FnZS1JRXMgfSB9LAoJLi4uCn0KClByaXZhdGVNZXNzYWdlLUlFcyBSQU5BUC1QUklWQVRFLUlFUyA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJBTkFQIFJFTE9DQVRJT04gSU5GT1JNQVRJT04gRUxFTUVOVEFSWSBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBTkFQLVJlbG9jYXRpb25JbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JBTkFQLVJlbG9jYXRpb25JbmZvcm1hdGlvbklFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UkFOQVAtUmVsb2NhdGlvbkluZm9ybWF0aW9uRXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBTkFQLVJlbG9jYXRpb25JbmZvcm1hdGlvbklFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtRGlyZWN0VHJhbnNmZXJJbmZvcm1hdGlvbkxpc3QtUkFOQVAtUmVsb2NJbmYKCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIERpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25MaXN0LVJBTkFQLVJlbG9jSW5mCgkJCQkJCQkJCQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtUkFCLUNvbnRleHRMaXN0LVJBTkFQLVJlbG9jSW5mCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItQ29udGV4dExpc3QtUkFOQVAtUmVsb2NJbmYJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKRGlyZWN0VHJhbnNmZXJJbmZvcm1hdGlvbkxpc3QtUkFOQVAtUmVsb2NJbmYJCTo6PSBEaXJlY3RUcmFuc2Zlci1JRS1Db250YWluZXJMaXN0IHsge0RpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25JdGVtSUVzLVJBTkFQLVJlbG9jSW5mfSB9CgpEaXJlY3RUcmFuc2ZlckluZm9ybWF0aW9uSXRlbUlFcy1SQU5BUC1SZWxvY0luZiBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtRGlyZWN0VHJhbnNmZXJJbmZvcm1hdGlvbkl0ZW0tUkFOQVAtUmVsb2NJbmYKCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIERpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25JdGVtLVJBTkFQLVJlbG9jSW5mCgkJCQkJCQkJCQkJCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpEaXJlY3RUcmFuc2ZlckluZm9ybWF0aW9uSXRlbS1SQU5BUC1SZWxvY0luZiA6Oj0gU0VRVUVOQ0UgewoJbkFTLVBEVQkJCQkJCU5BUy1QRFUsCglzQVBJCQkJCQkJU0FQSSwKCWNOLURvbWFpbkluZGljYXRvcgkJCUNOLURvbWFpbkluZGljYXRvciwKCWlFLUV4dGVuc2lvbnMJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBTkFQLURpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25JdGVtLUV4dElFcy1SQU5BUC1SZWxvY0luZn0gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBTkFQLURpcmVjdFRyYW5zZmVySW5mb3JtYXRpb25JdGVtLUV4dElFcy1SQU5BUC1SZWxvY0luZiBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQUItQ29udGV4dExpc3QtUkFOQVAtUmVsb2NJbmYgCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItQ29udGV4dEl0ZW1JRXMtUkFOQVAtUmVsb2NJbmZ9IH0KClJBQi1Db250ZXh0SXRlbUlFcy1SQU5BUC1SZWxvY0luZiBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtUkFCLUNvbnRleHRJdGVtLVJBTkFQLVJlbG9jSW5mCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItQ29udGV4dEl0ZW0tUkFOQVAtUmVsb2NJbmYJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpSQUItQ29udGV4dEl0ZW0tUkFOQVAtUmVsb2NJbmYgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQlSQUItSUQsCglkbC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyCQkJREwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCgl1bC1HVFAtUERVLVNlcXVlbmNlTnVtYmVyCQkJVUwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlciAJT1BUSU9OQUwsCglkbC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJCQlETC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJT1BUSU9OQUwsCgl1bC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJCQlVTC1OLVBEVS1TZXF1ZW5jZU51bWJlcgkJT1BUSU9OQUwsCglpRS1FeHRlbnNpb25zCQkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UkFCLUNvbnRleHRJdGVtLUV4dElFcy1SQU5BUC1SZWxvY0luZn0gfQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLUNvbnRleHRJdGVtLUV4dElFcy1SQU5BUC1SZWxvY0luZiBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQU5BUC1SZWxvY2F0aW9uSW5mb3JtYXRpb25FeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgcmVsb2NhdGlvbiBvZiBTb3VyY2UgUk5DIFBEQ1AgY29udGV4dCBpbmZvIC0tCgl7IElEIGlkLVNvdXJjZVJOQy1QRENQLWNvbnRleHQtaW5mbwkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSUkMtQ29udGFpbmVyCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gZW5hYmxlIFJOU0FQIFJlbG9jYXRpb24gLS0KCXsgSUQgaWQtUk5TQVBSZWxvY2F0aW9uUGFyYW1ldGVycwkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBSTlNBUFJlbG9jYXRpb25QYXJhbWV0ZXJzCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQU5BUCBFTkhBTkNFRCBSRUxPQ0FUSU9OIElORk9STUFUSU9OIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQU5BUCBFbmhhbmNlZCBSZWxvY2F0aW9uIEluZm9ybWF0aW9uIFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJBTkFQLUVuaGFuY2VkUmVsb2NhdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JBTkFQLUVuaGFuY2VkUmVsb2NhdGlvbkluZm9ybWF0aW9uUmVxdWVzdElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UkFOQVAtRW5oYW5jZWRSZWxvY2F0aW9uSW5mb3JtYXRpb25SZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBTkFQLUVuaGFuY2VkUmVsb2NhdGlvbkluZm9ybWF0aW9uUmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtU291cmNlLVRvVGFyZ2V0LVRyYW5zcGFyZW50Q29udGFpbmVyCgkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBTb3VyY2VSTkMtVG9UYXJnZXRSTkMtVHJhbnNwYXJlbnRDb250YWluZXIJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1PbGRJdVNpZ0NvbklkQ1MJQ1JJVElDQUxJVFkgaWdub3JlIFRZUEUgSXVTaWduYWxsaW5nQ29ubmVjdGlvbklkZW50aWZpZXIJUFJFU0VOQ0Ugb3B0aW9uYWwgfSB8Cgl7IElEIGlkLUdsb2JhbENOLUlEQ1MJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CQlUWVBFIEdsb2JhbENOLUlECQkJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Cgl7IElEIGlkLU9sZEl1U2lnQ29uSWRQUwlDUklUSUNBTElUWSBpZ25vcmUgVFlQRSBJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllcglQUkVTRU5DRSBvcHRpb25hbCB9IHwKCXsgSUQgaWQtR2xvYmFsQ04tSURQUwkJCQlDUklUSUNBTElUWSByZWplY3QJCVRZUEUgR2xvYmFsQ04tSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKCXsgSUQgaWQtUkFCLVNldHVwTGlzdC1FbmhSZWxvY0luZm9SZXEJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBSQUItU2V0dXBMaXN0LUVuaFJlbG9jSW5mb1JlcQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1TTkEtQWNjZXNzLUluZm9ybWF0aW9uCUNSSVRJQ0FMSVRZIGlnbm9yZQkJVFlQRSBTTkEtQWNjZXNzLUluZm9ybWF0aW9uCVBSRVNFTkNFIG9wdGlvbmFsfSB8Cgl7IElEIGlkLVVFU0JJLUl1CUNSSVRJQ0FMSVRZIGlnbm9yZQkJVFlQRSBVRVNCSS1JdQlQUkVTRU5DRSBvcHRpb25hbH18Cgl7IElEIGlkLVNlbGVjdGVkUExNTi1JRAkgCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFBMTU5pZGVudGl0eQkJUFJFU0VOQ0Ugb3B0aW9uYWwgCX18Cgl7IElEIGlkLUNOTUJNU0xpbmtpbmdJbmZvcm1hdGlvbglDUklUSUNBTElUWSBpZ25vcmUJCVRZUEUgQ05NQk1TTGlua2luZ0luZm9ybWF0aW9uCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgpSQUItU2V0dXBMaXN0LUVuaFJlbG9jSW5mb1JlcSAJCQkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHsgUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXEtSUVzfSB9CgpSQUItU2V0dXBJdGVtLUVuaFJlbG9jSW5mb1JlcS1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1TZXR1cEl0ZW0tRW5oUmVsb2NJbmZvUmVxCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXEJCQlQUkVTRU5DRSBtYW5kYXRvcnkgCX0sCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXEgOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCQkJUkFCLUlELAoJY04tRG9tYWluSW5kaWNhdG9yCQkJCQlDTi1Eb21haW5JbmRpY2F0b3IsCglyQUItUGFyYW1ldGVycwkJCQkJCVJBQi1QYXJhbWV0ZXJzLAoJZGF0YVZvbHVtZVJlcG9ydGluZ0luZGljYXRpb24JCQlEYXRhVm9sdW1lUmVwb3J0aW5nSW5kaWNhdGlvbiAJT1BUSU9OQUwKCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgQ04gZG9tYWluIGluZGljYXRvciBJRSBpcyBzZXQgdG8gIlBTIGRvbWFpbiIgLS0sCglwRFAtVHlwZUluZm9ybWF0aW9uCQkJCQlQRFAtVHlwZUluZm9ybWF0aW9uCQlPUFRJT05BTAoJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBDTiBkb21haW4gaW5kaWNhdG9yIElFIGlzIHNldCB0byAiUFMgZG9tYWluIiAtLSwKCXVzZXJQbGFuZUluZm9ybWF0aW9uCQkJCVVzZXJQbGFuZUluZm9ybWF0aW9uLAoJZGF0YUZvcndhcmRpbmdJbmZvcm1hdGlvbgkJCVROTEluZm9ybWF0aW9uRW5oUmVsSW5mb1JlcQlPUFRJT05BTCwKCXNvdXJjZVNpZGVJdVVMVE5MSW5mbwkJCQlUTkxJbmZvcm1hdGlvbkVuaFJlbEluZm9SZXEJT1BUSU9OQUwsCgoJc2VydmljZS1IYW5kb3ZlcgkJCQkJU2VydmljZS1IYW5kb3ZlcgkJT1BUSU9OQUwsCglhbHQtUkFCLVBhcmFtZXRlcnMJCQkJCUFsdC1SQUItUGFyYW1ldGVycwkJT1BUSU9OQUwsCglpRS1FeHRlbnNpb25zCQkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7IFJBQi1TZXR1cEl0ZW0tRW5oUmVsb2NJbmZvUmVxLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1TZXR1cEl0ZW0tRW5oUmVsb2NJbmZvUmVxLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDggdG8gZW5hYmxlIGhhbmRvdmVyIHJlc3RyaWN0aW9uIHRvIEUtVVRSQU4gLS0KCXsgSUQgaWQtRS1VVFJBTi1TZXJ2aWNlLUhhbmRvdmVyCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBFLVVUUkFOLVNlcnZpY2UtSGFuZG92ZXIJCQlQUkVTRU5DRSBvcHRpb25hbAl9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgUmVsZWFzZSA5IHRvIGVuYWJsZSBhIG5ldyB2YWx1ZSAtLQoJeyBJRCBpZC1QRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbglQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClROTEluZm9ybWF0aW9uRW5oUmVsSW5mb1JlcSA6Oj1TRVFVRU5DRXsKCXRyYW5zcG9ydExheWVyQWRkcmVzcwkJCQlUcmFuc3BvcnRMYXllckFkZHJlc3MsCglpdVRyYW5zcG9ydEFzc29jaWF0aW9uCQkJCUl1VHJhbnNwb3J0QXNzb2NpYXRpb24sCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgVE5MSW5mb3JtYXRpb25FbmhSZWxJbmZvUmVxLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClROTEluZm9ybWF0aW9uRW5oUmVsSW5mb1JlcS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKClJBTkFQLUVuaGFuY2VkUmVsb2NhdGlvbkluZm9ybWF0aW9uUmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLUludGVncml0eVByb3RlY3Rpb25JbmZvcm1hdGlvbglDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEludGVncml0eVByb3RlY3Rpb25JbmZvcm1hdGlvbglQUkVTRU5DRSBvcHRpb25hbH0gfAoJeyBJRCBpZC1FbmNyeXB0aW9uSW5mb3JtYXRpb24JCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEVuY3J5cHRpb25JbmZvcm1hdGlvbgkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKCXsgSUQgaWQtVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGUJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGUJCQlQUkVTRU5DRSBvcHRpb25hbH0gfAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTAgdG8gZW5hYmxlIFJOU0FQIFJlbG9jYXRpb24gLS0KCXsgSUQgaWQtUkFCUGFyYW1ldGVyc0xpc3QJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBSQUJQYXJhbWV0ZXJzTGlzdAkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Cgl7IElEIGlkLUNTRy1JZAkJCQkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIENTRy1JZAkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKCXsgSUQgaWQtQ1NHLU1lbWJlcnNoaXAtU3RhdHVzCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBDU0ctTWVtYmVyc2hpcC1TdGF0dXMJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSB8Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBzdXBwb3J0IHJTUlZDQyBpbiBjYXNlIG9mIG5ldHdvcmsgc2hhcmluZyCWCgl7IElEIGlkLUFuY2hvclBMTU4tSUQJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUExNTmlkZW50aXR5CQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSQU5BUCBFbmhhbmNlZCBSZWxvY2F0aW9uIEluZm9ybWF0aW9uIFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSQU5BUC1FbmhhbmNlZFJlbG9jYXRpb25JbmZvcm1hdGlvblJlc3BvbnNlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7UkFOQVAtRW5oYW5jZWRSZWxvY2F0aW9uSW5mb3JtYXRpb25SZXNwb25zZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7UkFOQVAtRW5oYW5jZWRSZWxvY2F0aW9uSW5mb3JtYXRpb25SZXNwb25zZUV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSQU5BUC1FbmhhbmNlZFJlbG9jYXRpb25JbmZvcm1hdGlvblJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UYXJnZXQtVG9Tb3VyY2UtVHJhbnNwYXJlbnRDb250YWluZXIKCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRhcmdldFJOQy1Ub1NvdXJjZVJOQy1UcmFuc3BhcmVudENvbnRhaW5lciBQUkVTRU5DRSBvcHRpb25hbAl9IHwKCXsgSUQgaWQtUkFCLVNldHVwTGlzdC1FbmhSZWxvY0luZm9SZXMJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFJBQi1TZXR1cExpc3QtRW5oUmVsb2NJbmZvUmVzCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9IHwKCXsgSUQgaWQtUkFCLUZhaWxlZExpc3QtRW5oUmVsb2NJbmZvUmVzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItRmFpbGVkTGlzdC1FbmhSZWxvY0luZm9SZXMJCQlQUkVTRU5DRSBvcHRpb25hbCB9fAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ3JpdGljYWxpdHlEaWFnbm9zdGljcyAJCQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KClJBQi1TZXR1cExpc3QtRW5oUmVsb2NJbmZvUmVzIAkJCQk6Oj0gUkFCLUlFLUNvbnRhaW5lckxpc3QgeyB7IFJBQi1TZXR1cEl0ZW0tRW5oUmVsb2NJbmZvUmVzLUlFc30gfQoKUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXMtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItU2V0dXBJdGVtLUVuaFJlbG9jSW5mb1JlcwkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXMJCQlQUkVTRU5DRSBtYW5kYXRvcnkgCX0sCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXMgOjo9IFNFUVVFTkNFIHsKCWNOLURvbWFpbkluZGljYXRvcgkJCUNOLURvbWFpbkluZGljYXRvciwKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWRhdGFGb3J3YXJkaW5nSW5mb3JtYXRpb24JCVROTEluZm9ybWF0aW9uRW5oUmVsSW5mb1JlcwlPUFRJT05BTCwKCWFzcy1SQUItUGFyYW1ldGVycwkJCQkJQXNzLVJBQi1QYXJhbWV0ZXJzCQlPUFRJT05BTCwKCWlFLUV4dGVuc2lvbnMJCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXMtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLVNldHVwSXRlbS1FbmhSZWxvY0luZm9SZXMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KClJBQi1GYWlsZWRMaXN0LUVuaFJlbG9jSW5mb1JlcyAJCQkJOjo9IFJBQi1JRS1Db250YWluZXJMaXN0IHsgeyBSQUItRmFpbGVkSXRlbS1FbmhSZWxvY0luZm9SZXMtSUVzfSB9CgpSQUItRmFpbGVkSXRlbS1FbmhSZWxvY0luZm9SZXMtSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQUItRmFpbGVkSXRlbS1FbmhSZWxvY0luZm9SZXMJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFJBQi1GYWlsZWRJdGVtLUVuaFJlbG9jSW5mb1JlcwkJCVBSRVNFTkNFIG1hbmRhdG9yeSAJfSwKCS4uLgp9CgpSQUItRmFpbGVkSXRlbS1FbmhSZWxvY0luZm9SZXMgOjo9IFNFUVVFTkNFIHsKCWNOLURvbWFpbkluZGljYXRvcgkJCUNOLURvbWFpbkluZGljYXRvciwKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCWNhdXNlCQkJCQkJQ2F1c2UsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCLUZhaWxlZEl0ZW0tRW5oUmVsb2NJbmZvUmVzLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJBQi1GYWlsZWRJdGVtLUVuaFJlbG9jSW5mb1Jlcy1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQpUTkxJbmZvcm1hdGlvbkVuaFJlbEluZm9SZXMgOjo9U0VRVUVOQ0V7CglkbC1mb3J3YXJkaW5nVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQkJCVRyYW5zcG9ydExheWVyQWRkcmVzcywKCWRsLWZvcndhcmRpbmdUcmFuc3BvcnRBc3NvY2lhdGlvbgkJCQlJdVRyYW5zcG9ydEFzc29jaWF0aW9uLAoJaUUtRXh0ZW5zaW9ucwkJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBUTkxJbmZvcm1hdGlvbkVuaFJlbEluZm9SZXMtRXh0SUVzfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKVE5MSW5mb3JtYXRpb25FbmhSZWxJbmZvUmVzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgpSQU5BUC1FbmhhbmNlZFJlbG9jYXRpb25JbmZvcm1hdGlvblJlc3BvbnNlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9Ci0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJBQiBNT0RJRklDQVRJT04gUkVRVUVTVCBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gUkFCIE1vZGlmeSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpSQUItTW9kaWZ5UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsge1JBQi1Nb2RpZnlSZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtSQUItTW9kaWZ5UmVxdWVzdEV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKUkFCLU1vZGlmeVJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1Nb2RpZnlMaXN0CQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFCLU1vZGlmeUxpc3QJCQlQUkVTRU5DRSBtYW5kYXRvcnl9LAoJLi4uCn0KClJBQi1Nb2RpZnlMaXN0IAkJCTo6PSBSQUItSUUtQ29udGFpbmVyTGlzdCB7IHtSQUItTW9kaWZ5SXRlbUlFc30gfQoKUkFCLU1vZGlmeUl0ZW1JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVJBQi1Nb2RpZnlJdGVtCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBSQUItTW9kaWZ5SXRlbQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKUkFCLU1vZGlmeUl0ZW0gOjo9IFNFUVVFTkNFIHsKCXJBQi1JRAkJCQkJCVJBQi1JRCwKCXJlcXVlc3RlZC1SQUItUGFyYW1ldGVyLVZhbHVlcwlSZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1WYWx1ZXMsCglpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItTW9kaWZ5SXRlbS1FeHRJRXN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpSQUItTW9kaWZ5SXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKUkFCLU1vZGlmeVJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIExPQ0FUSU9OIFJFTEFURUQgREFUQSBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTG9jYXRpb24gUmVsYXRlZCBEYXRhIFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkxvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0IDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7TG9jYXRpb25SZWxhdGVkRGF0YVJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge0xvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpMb2NhdGlvblJlbGF0ZWREYXRhUmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtTG9jYXRpb25SZWxhdGVkRGF0YVJlcXVlc3RUeXBlCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBMb2NhdGlvblJlbGF0ZWREYXRhUmVxdWVzdFR5cGUJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgktLSBUaGlzIElFIGlzIG1hbmRhdG9yeSBmb3IgVVRSQU4sIG9wdGlvbmFsIGZvciBHRVJBTiBJdSBNb2RlIJYtCgkuLi4KfQoKTG9jYXRpb25SZWxhdGVkRGF0YVJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgTENTIHN1cHBvcnQgZm9yIEdFUkFOIEl1IG1vZGUgLS0KCXsgSUQgaWQtTG9jYXRpb25SZWxhdGVkRGF0YVJlcXVlc3RUeXBlU3BlY2lmaWNUb0dFUkFOSXVNb2RlCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIExvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0VHlwZVNwZWNpZmljVG9HRVJBTkl1TW9kZQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfXwKCS0tIFRoZSBwcmV2aW91cyBleHRlbnNpb24gaXMgb3B0aW9uYWwgZm9yIEdFUkFOIEl1IE1vZGUgb25seSwgbm90IGFwcGxpY2FibGUgZm9yIFVUUkFOIC0tCgktLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byByZXF1ZXN0IEdBTlNTIEFzc2lzdGFuY2UgRGF0YS4gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBSZXF1ZXN0ZWQgTG9jYXRpb24gUmVsYXRlZCBEYXRhIFR5cGUgSUUgaXMgc2V0IHRvCgktLSCRRGVkaWNhdGVkIEFzc2lzdGFuY2UgRGF0YSBmb3IgQXNzaXN0ZWQgR0FOU1OSIG9yIGBEZWRpY2F0ZWQgQXNzaXN0YW5jZSBEYXRhIGZvciBBc3Npc3RlZCBHUFMgYW5kIEdBTlNTki0tCgl7IElEIGlkLVJlcXVlc3RlZEdBTlNTQXNzaXN0YW5jZURhdGEJCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBSZXF1ZXN0ZWRHQU5TU0Fzc2lzdGFuY2VEYXRhCQkJCQkJCVBSRVNFTkNFIGNvbmRpdGlvbmFsCX0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTG9jYXRpb24gUmVsYXRlZCBEYXRhIFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpMb2NhdGlvblJlbGF0ZWREYXRhUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHsgTG9jYXRpb25SZWxhdGVkRGF0YVJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTG9jYXRpb25SZWxhdGVkRGF0YVJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpMb2NhdGlvblJlbGF0ZWREYXRhUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUJyb2FkY2FzdEFzc2lzdGFuY2VEYXRhRGVjaXBoZXJpbmdLZXlzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBCcm9hZGNhc3RBc3Npc3RhbmNlRGF0YURlY2lwaGVyaW5nS2V5cwkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgpMb2NhdGlvblJlbGF0ZWREYXRhUmVzcG9uc2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIGVycm9yIGhhbmRsaW5nCgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJfXwKCXsgSUQgaWQtQnJvYWRjYXN0R0FOU1NBc3Npc3RhbmNlRGF0YURlY2lwaGVyaW5nS2V5cwlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEJyb2FkY2FzdEFzc2lzdGFuY2VEYXRhRGVjaXBoZXJpbmdLZXlzCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTG9jYXRpb24gUmVsYXRlZCBEYXRhIEZhaWx1cmUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkxvY2F0aW9uUmVsYXRlZERhdGFGYWlsdXJlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7IExvY2F0aW9uUmVsYXRlZERhdGFGYWlsdXJlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTG9jYXRpb25SZWxhdGVkRGF0YUZhaWx1cmVFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkxvY2F0aW9uUmVsYXRlZERhdGFGYWlsdXJlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKTG9jYXRpb25SZWxhdGVkRGF0YUZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIGVycm9yIGhhbmRsaW5nCgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBJTkZPUk1BVElPTiBUUkFOU0ZFUiBFTEVNRU5UQVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gSW5mb3JtYXRpb24gVHJhbnNmZXIgSW5kaWNhdGlvbgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKSW5mb3JtYXRpb25UcmFuc2ZlckluZGljYXRpb24gOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHsgSW5mb3JtYXRpb25UcmFuc2ZlckluZGljYXRpb25JRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBJbmZvcm1hdGlvblRyYW5zZmVySW5kaWNhdGlvbkV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKSW5mb3JtYXRpb25UcmFuc2ZlckluZGljYXRpb25JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUluZm9ybWF0aW9uVHJhbnNmZXJJRAkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgSW5mb3JtYXRpb25UcmFuc2ZlcklECQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLVByb3ZpZGVkRGF0YQkJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBQcm92aWRlZERhdGEJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUdsb2JhbENOLUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxDTi1JRAkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKSW5mb3JtYXRpb25UcmFuc2ZlckluZGljYXRpb25FeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEluZm9ybWF0aW9uIFRyYW5zZmVyIENvbmZpcm1hdGlvbgotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKSW5mb3JtYXRpb25UcmFuc2ZlckNvbmZpcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsgeyBJbmZvcm1hdGlvblRyYW5zZmVyQ29uZmlybWF0aW9uSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgSW5mb3JtYXRpb25UcmFuc2ZlckNvbmZpcm1hdGlvbkV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKSW5mb3JtYXRpb25UcmFuc2ZlckNvbmZpcm1hdGlvbklFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSW5mb3JtYXRpb25UcmFuc2ZlcklECQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBJbmZvcm1hdGlvblRyYW5zZmVySUQJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ04tRG9tYWluSW5kaWNhdG9yCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQlQUkVTRU5DRSBvcHRpb25hbCAJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxSTkMtSUQJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKSW5mb3JtYXRpb25UcmFuc2ZlckNvbmZpcm1hdGlvbkV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIEluZm9ybWF0aW9uIFRyYW5zZmVyIEZhaWx1cmUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkluZm9ybWF0aW9uVHJhbnNmZXJGYWlsdXJlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7IEluZm9ybWF0aW9uVHJhbnNmZXJGYWlsdXJlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgSW5mb3JtYXRpb25UcmFuc2ZlckZhaWx1cmVFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkluZm9ybWF0aW9uVHJhbnNmZXJGYWlsdXJlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1JbmZvcm1hdGlvblRyYW5zZmVySUQJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEluZm9ybWF0aW9uVHJhbnNmZXJJRAkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNhdXNlCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ2F1c2UJCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCVBSRVNFTkNFIG9wdGlvbmFsIAl9IHwKCXsgSUQgaWQtR2xvYmFsUk5DLUlECQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbFJOQy1JRAkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpJbmZvcm1hdGlvblRyYW5zZmVyRmFpbHVyZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVFIFNQRUNJRklDIElORk9STUFUSU9OIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVRSBTcGVjaWZpYyBJbmZvcm1hdGlvbiBJbmRpY2F0aW9uCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVRVNwZWNpZmljSW5mb3JtYXRpb25JbmRpY2F0aW9uIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7VUVTcGVjaWZpY0luZm9ybWF0aW9uSW5kaWNhdGlvbklFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7VUVTcGVjaWZpY0luZm9ybWF0aW9uSW5kaWNhdGlvbkV4dGVuc2lvbnN9IH0JCQkJCU9QVElPTkFMLAoJLi4uCn0KClVFU3BlY2lmaWNJbmZvcm1hdGlvbkluZGljYXRpb25JRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVVFU0JJLUl1CQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFVFU0JJLUl1CQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKVUVTcGVjaWZpY0luZm9ybWF0aW9uSW5kaWNhdGlvbkV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gRElSRUNUIElORk9STUFUSU9OIFRSQU5TRkVSIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBEaXJlY3QgSW5mb3JtYXRpb24gVHJhbnNmZXIKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkRpcmVjdEluZm9ybWF0aW9uVHJhbnNmZXIgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHsgRGlyZWN0SW5mb3JtYXRpb25UcmFuc2ZlcklFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IERpcmVjdEluZm9ybWF0aW9uVHJhbnNmZXJFeHRlbnNpb25zfSB9CQkJCU9QVElPTkFMLAoJLi4uCn0KCkRpcmVjdEluZm9ybWF0aW9uVHJhbnNmZXJJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUludGVyU3lzdGVtSW5mb3JtYXRpb25UcmFuc2ZlclR5cGUJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgSW50ZXJTeXN0ZW1JbmZvcm1hdGlvblRyYW5zZmVyVHlwZQlQUkVTRU5DRSBvcHRpb25hbCB9IHwKCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5IH0gfAoJeyBJRCBpZC1HbG9iYWxSTkMtSUQgCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsUk5DLUlECQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbCB9IHwKCXsgSUQgaWQtR2xvYmFsQ04tSUQgCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsQ04tSUQJCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsIH0sCgkuLi4KfQoKRGlyZWN0SW5mb3JtYXRpb25UcmFuc2ZlckV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gRXh0ZW5kZWRSTkMtSUQJCVBSRVNFTkNFIG9wdGlvbmFsIH0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVVBMSU5LIElORk9STUFUSU9OIEVYQ0hBTkdFIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVcGxpbmsgSW5mb3JtYXRpb24gRXhjaGFuZ2UgUmVxdWVzdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVXBsaW5rSW5mb3JtYXRpb25FeGNoYW5nZVJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgVXBsaW5rSW5mb3JtYXRpb25FeGNoYW5nZVJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSW5mb3JtYXRpb25FeGNoYW5nZUlECQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBJbmZvcm1hdGlvbkV4Y2hhbmdlSUQJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtSW5mb3JtYXRpb25FeGNoYW5nZVR5cGUJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEluZm9ybWF0aW9uRXhjaGFuZ2VUeXBlCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtSW5mb3JtYXRpb25UcmFuc2ZlclR5cGUJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEluZm9ybWF0aW9uVHJhbnNmZXJUeXBlCVBSRVNFTkNFIGNvbmRpdGlvbmFsCgktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIEluZm9ybWF0aW9uIEV4Y2hhbmdlIFR5cGUgSUUgaXMgc2V0IHRvICJ0cmFuc2ZlciIJLS0JCQkJCQkJCQkJCX0gfAoJeyBJRCBpZC1JbmZvcm1hdGlvblJlcXVlc3RUeXBlCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBJbmZvcm1hdGlvblJlcXVlc3RUeXBlCVBSRVNFTkNFIGNvbmRpdGlvbmFsCgktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIEluZm9ybWF0aW9uIEV4Y2hhbmdlIFR5cGUgSUUgaXMgc2V0IHRvICJyZXF1ZXN0IgkJLS0JCQkJCQkJCQkJCX0gfAoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBHbG9iYWxSTkMtSUQJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKVXBsaW5rSW5mb3JtYXRpb25FeGNoYW5nZVJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byBpbmRpY2F0ZSBleHRlbmRlZCBSTkMtSUQgLS0KCXsgSUQgaWQtRXh0ZW5kZWRSTkMtSUQJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBFeHRlbmRlZFJOQy1JRAkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVcGxpbmsgSW5mb3JtYXRpb24gRXhjaGFuZ2UgUmVzcG9uc2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClVwbGlua0luZm9ybWF0aW9uRXhjaGFuZ2VSZXNwb25zZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVzcG9uc2VFeHRlbnNpb25zfSB9CQlPUFRJT05BTCwKCS4uLgp9CgpVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUluZm9ybWF0aW9uRXhjaGFuZ2VJRAkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgSW5mb3JtYXRpb25FeGNoYW5nZUlECQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUluZm9ybWF0aW9uUmVxdWVzdGVkCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBJbmZvcm1hdGlvblJlcXVlc3RlZAkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1DTi1Eb21haW5JbmRpY2F0b3IJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDTi1Eb21haW5JbmRpY2F0b3IJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUdsb2JhbENOLUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBHbG9iYWxDTi1JRAkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCVBSRVNFTkNFIG9wdGlvbmFsCQl9ICwKCS4uLgp9CgpVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlUmVzcG9uc2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVwbGluayBJbmZvcm1hdGlvbiBFeGNoYW5nZSBGYWlsdXJlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJCXsgeyBVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlRmFpbHVyZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IFVwbGlua0luZm9ybWF0aW9uRXhjaGFuZ2VGYWlsdXJlRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpVcGxpbmtJbmZvcm1hdGlvbkV4Y2hhbmdlRmFpbHVyZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSW5mb3JtYXRpb25FeGNoYW5nZUlECQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBJbmZvcm1hdGlvbkV4Y2hhbmdlSUQJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ04tRG9tYWluSW5kaWNhdG9yCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgQ04tRG9tYWluSW5kaWNhdG9yCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1HbG9iYWxDTi1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsQ04tSUQJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1DYXVzZQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQlQUkVTRU5DRSBvcHRpb25hbAkJfSAsCgkuLi4KfQoKVXBsaW5rSW5mb3JtYXRpb25FeGNoYW5nZUZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgU0VTU0lPTiBTVEFSVCBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgU2Vzc2lvbiBTdGFydAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25TdGFydCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TU2Vzc2lvblN0YXJ0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTUJNU1Nlc3Npb25TdGFydEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TU2Vzc2lvblN0YXJ0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UTUdJCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgVE1HSQkJCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtTUJNU1Nlc3Npb25JZGVudGl0eQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgTUJNU1Nlc3Npb25JZGVudGl0eQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1NQk1TQmVhcmVyU2VydmljZVR5cGUJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIE1CTVNCZWFyZXJTZXJ2aWNlVHlwZQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1JdVNpZ0NvbklkCQkJCQlDUklUSUNBTElUWSByZWplY3QgCVRZUEUgSXVTaWduYWxsaW5nQ29ubmVjdGlvbklkZW50aWZpZXIJCVBSRVNFTkNFIG1hbmRhdG9yeQl9fAoJeyBJRCBpZC1SQUItUGFyYW1ldGVycwkJCQlDUklUSUNBTElUWSByZWplY3QgCVRZUEUgUkFCLVBhcmFtZXRlcnMJCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1QRFAtVHlwZUluZm9ybWF0aW9uCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUERQLVR5cGVJbmZvcm1hdGlvbgkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1NQk1TU2Vzc2lvbkR1cmF0aW9uCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgTUJNU1Nlc3Npb25EdXJhdGlvbgkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CQl9IHwKCXsgSUQgaWQtTUJNU1NlcnZpY2VBcmVhCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIE1CTVNTZXJ2aWNlQXJlYQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtRnJlcXVlbmNlTGF5ZXJDb252ZXJnZW5jZUZsYWcJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgRnJlcXVlbmNlTGF5ZXJDb252ZXJnZW5jZUZsYWcJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1SQUxpc3RvZklkbGVNb2RlVUVzCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgUkFMaXN0b2ZJZGxlTW9kZVVFcwkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1HbG9iYWxDTi1JRAkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgR2xvYmFsQ04tSUQJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1NQk1TU2Vzc2lvblJlcGV0aXRpb25OdW1iZXIJQ1JJVElDQUxJVFkJaWdub3JlCVRZUEUgTUJNU1Nlc3Npb25SZXBldGl0aW9uTnVtYmVyCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1UaW1lVG9NQk1TRGF0YVRyYW5zZmVyCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBUaW1lVG9NQk1TRGF0YVRyYW5zZmVyCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpNQk1TU2Vzc2lvblN0YXJ0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDYgdG8gZW5hYmxlIE1CTVMgY291bnRpbmcgaW4gYnJvYWRjYXN0IG1vZGUgLS0KCXsgSUQgaWQtTUJNU0NvdW50aW5nSW5mb3JtYXRpb24JCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNQk1TQ291bnRpbmdJbmZvcm1hdGlvbgkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAoJeyBJRCBpZC1NQk1TU3luY2hyb25pc2F0aW9uSW5mb3JtYXRpb24JCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gTUJNU1N5bmNocm9uaXNhdGlvbkluZm9ybWF0aW9uCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgUmVsZWFzZSA5IHRvIGVuYWJsZSBhIG5ldyB2YWx1ZSAtLQoJeyBJRCBpZC1QRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBQRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbgkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEyIHRvIHN1cHBvcnQgU2Vzc2lvbiByZS1lc3RhYmxpc2htZW50IC0tCgl7IElEIGlkLVNlc3Npb24tUmUtZXN0YWJsaXNobWVudC1JbmRpY2F0b3IJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBTZXNzaW9uLVJlLWVzdGFibGlzaG1lbnQtSW5kaWNhdG9yCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKTUJNU1N5bmNocm9uaXNhdGlvbkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CgltQk1TSENJbmRpY2F0b3IJCQkJCU1CTVNIQ0luZGljYXRvciwKCWlQTXVsdGljYXN0QWRkcmVzcwkJCQlJUE11bHRpY2FzdEFkZHJlc3MsCglnVFBETFRFSUQJCQkJCQlHVFAtVEVJLAoJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7TUJNU1N5bmNocm9uaXNhdGlvbkluZm9ybWF0aW9uLUV4dElFc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNTeW5jaHJvbmlzYXRpb25JbmZvcm1hdGlvbi1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Cgl7IElEIGlkLUlQLVNvdXJjZS1BZGRyZXNzCQkJQ1JJVElDQUxJVFkgcmVqZWN0CQlFWFRFTlNJT04gSVBNdWx0aWNhc3RBZGRyZXNzCQkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBTZXNzaW9uIFN0YXJ0IFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TU2Vzc2lvblN0YXJ0UmVzcG9uc2U6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsge01CTVNTZXNzaW9uU3RhcnRSZXNwb25zZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7TUJNU1Nlc3Npb25TdGFydFJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJT1BUSU9OQUwsCgkuLi4KfQoKTUJNU1Nlc3Npb25TdGFydFJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UcmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBUcmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNhdXNlCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCQl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSAsCgkuLi4KfQoKTUJNU1Nlc3Npb25TdGFydFJlc3BvbnNlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFNlc3Npb24gU3RhcnQgRmFpbHVyZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25TdGFydEZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1Nlc3Npb25TdGFydEZhaWx1cmVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TU2Vzc2lvblN0YXJ0RmFpbHVyZUV4dGVuc2lvbnN9IH0JCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNTZXNzaW9uU3RhcnRGYWlsdXJlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KCk1CTVNTZXNzaW9uU3RhcnRGYWlsdXJlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFNFU1NJT04gVVBEQVRFIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBTZXNzaW9uIFVwZGF0ZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25VcGRhdGUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1Nlc3Npb25VcGRhdGVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TU2Vzc2lvblVwZGF0ZUV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TU2Vzc2lvblVwZGF0ZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtU2Vzc2lvblVwZGF0ZUlECQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIFNlc3Npb25VcGRhdGVJRAkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtRGVsdGFSQUxpc3RvZklkbGVNb2RlVUVzCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIERlbHRhUkFMaXN0b2ZJZGxlTW9kZVVFcwkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgpNQk1TU2Vzc2lvblVwZGF0ZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBTZXNzaW9uIFVwZGF0ZSBSZXNwb25zZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25VcGRhdGVSZXNwb25zZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TU2Vzc2lvblVwZGF0ZVJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTUJNU1Nlc3Npb25VcGRhdGVSZXNwb25zZUV4dGVuc2lvbnN9IH0JCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNTZXNzaW9uVXBkYXRlUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVNlc3Npb25VcGRhdGVJRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgU2Vzc2lvblVwZGF0ZUlECQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtVHJhbnNwb3J0TGF5ZXJJbmZvcm1hdGlvbgkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVHJhbnNwb3J0TGF5ZXJJbmZvcm1hdGlvbgkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1DYXVzZQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KCk1CTVNTZXNzaW9uVXBkYXRlUmVzcG9uc2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgU2Vzc2lvbiBVcGRhdGUgRmFpbHVyZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25VcGRhdGVGYWlsdXJlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7IE1CTVNTZXNzaW9uVXBkYXRlRmFpbHVyZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IE1CTVNTZXNzaW9uVXBkYXRlRmFpbHVyZUV4dGVuc2lvbnN9IH0JCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNTZXNzaW9uVXBkYXRlRmFpbHVyZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtU2Vzc2lvblVwZGF0ZUlECQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBTZXNzaW9uVXBkYXRlSUQJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1DYXVzZQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KCk1CTVNTZXNzaW9uVXBkYXRlRmFpbHVyZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBTRVNTSU9OIFNUT1AgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFNlc3Npb24gU3RvcAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25TdG9wIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7IE1CTVNTZXNzaW9uU3RvcElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IE1CTVNTZXNzaW9uU3RvcEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TU2Vzc2lvblN0b3BJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLU1CTVNDTkRlLVJlZ2lzdHJhdGlvbglDUklUSUNBTElUWSByZWplY3QJVFlQRSBNQk1TQ05EZS1SZWdpc3RyYXRpb24JCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0sCgkuLi4KfQoKTUJNU1Nlc3Npb25TdG9wRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFNlc3Npb24gU3RvcCBSZXNwb25zZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1Nlc3Npb25TdG9wUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1Nlc3Npb25TdG9wUmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TU2Vzc2lvblN0b3BSZXNwb25zZUV4dGVuc2lvbnN9IH0JCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNTZXNzaW9uU3RvcFJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1DYXVzZQkJCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KCk1CTVNTZXNzaW9uU3RvcFJlc3BvbnNlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFVFIExJTktJTkcgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFVFIExpbmtpbmcgUmVxdWVzdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1VFTGlua2luZ1JlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1VFTGlua2luZ1JlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TVUVMaW5raW5nUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TVUVMaW5raW5nUmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSm9pbmVkTUJNU0JlYXJlclNlcnZpY2VzTGlzdAlDUklUSUNBTElUWSByZWplY3QJVFlQRSBKb2luZWRNQk1TQmVhcmVyU2VydmljZS1JRXMJCVBSRVNFTkNFIG9wdGlvbmFsCX0gfAoJeyBJRCBpZC1MZWZ0TUJNU0JlYXJlclNlcnZpY2VzTGlzdAkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgTGVmdE1CTVNCZWFyZXJTZXJ2aWNlLUlFcwkJCVBSRVNFTkNFIG9wdGlvbmFsCX0sCgkuLi4KfQoKTGVmdE1CTVNCZWFyZXJTZXJ2aWNlLUlFcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLiBtYXhub29mTXVsdGljYXN0U2VydmljZXNQZXJVRSkpIE9GCglTRVFVRU5DRSB7CgkJdE1HSQkJCQlUTUdJLAoJCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0xlZnRNQk1TQmVhcmVyU2VydmljZS1FeHRJRXN9IH0gT1BUSU9OQUwsCgkJLi4uCgl9CgpMZWZ0TUJNU0JlYXJlclNlcnZpY2UtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCk1CTVNVRUxpbmtpbmdSZXF1ZXN0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFVFIExpbmtpbmcgUmVzcG9uc2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNVRUxpbmtpbmdSZXNwb25zZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TVUVMaW5raW5nUmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TVUVMaW5raW5nUmVzcG9uc2VFeHRlbnNpb25zfSB9CQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TVUVMaW5raW5nUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVVuc3VjY2Vzc2Z1bExpbmtpbmdMaXN0CQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVW5zdWNjZXNzZnVsTGlua2luZy1JRXMJCVBSRVNFTkNFIG9wdGlvbmFsCQl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSAsCgkuLi4KfQoKVW5zdWNjZXNzZnVsTGlua2luZy1JRXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4gbWF4bm9vZk11bHRpY2FzdFNlcnZpY2VzUGVyVUUpKSBPRgoJU0VRVUVOQ0UgewoJCXRNR0kJCQkJVE1HSSwKCQljYXVzZQkJCQlDYXVzZSwKCQlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtVbnN1Y2Nlc3NmdWxMaW5raW5nLUV4dElFc30gfSBPUFRJT05BTCwKCQkuLi4KCX0KClVuc3VjY2Vzc2Z1bExpbmtpbmctRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCk1CTVNVRUxpbmtpbmdSZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBSRUdJU1RSQVRJT04gUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFJlZ2lzdHJhdGlvbiBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TUmVnaXN0cmF0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TUmVnaXN0cmF0aW9uUmVxdWVzdElFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IE1CTVNSZWdpc3RyYXRpb25SZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNSZWdpc3RyYXRpb25SZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1NQk1TUmVnaXN0cmF0aW9uUmVxdWVzdFR5cGUJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIE1CTVNSZWdpc3RyYXRpb25SZXF1ZXN0VHlwZQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLVRNR0kJCQkJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBUTUdJCQkJCQkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX0gfAoJeyBJRCBpZC1JUE11bHRpY2FzdEFkZHJlc3MJCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBJUE11bHRpY2FzdEFkZHJlc3MJCQkJCQlQUkVTRU5DRSBjb25kaXRpb25hbAoJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBNQk1TIFJlZ2lzdHJhdGlvbiBSZXF1ZXN0IFR5cGUgSUUgaXMgc2V0IHRvICJyZWdpc3RlciIJLS0JCQkJCQkJCX0gfAoJeyBJRCBpZC1BUE4JCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgQVBOCQkJCQkJCQkJUFJFU0VOQ0UgY29uZGl0aW9uYWwKCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgTUJNUyBSZWdpc3RyYXRpb24gUmVxdWVzdCBUeXBlIElFIGlzIHNldCB0byAicmVnaXN0ZXIiCS0tCQkJCQkJCQl9IHwKCXsgSUQgaWQtR2xvYmFsUk5DLUlECQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEdsb2JhbFJOQy1JRAkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSwKCS4uLgp9CgpNQk1TUmVnaXN0cmF0aW9uUmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7Ci0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQoJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQlQUkVTRU5DRSBvcHRpb25hbAl9LAoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgUmVnaXN0cmF0aW9uIFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TUmVnaXN0cmF0aW9uUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1JlZ2lzdHJhdGlvblJlc3BvbnNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTUJNU1JlZ2lzdHJhdGlvblJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJT1BUSU9OQUwsCgkuLi4KfQoKTUJNU1JlZ2lzdHJhdGlvblJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UTUdJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRNR0kJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1HbG9iYWxDTi1JRAkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbENOLUlECQkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gLAoJLi4uCn0KCk1CTVNSZWdpc3RyYXRpb25SZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBSZWdpc3RyYXRpb24gRmFpbHVyZQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU1JlZ2lzdHJhdGlvbkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHsgTUJNU1JlZ2lzdHJhdGlvbkZhaWx1cmVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TUmVnaXN0cmF0aW9uRmFpbHVyZUV4dGVuc2lvbnN9IH0JCU9QVElPTkFMLAoJLi4uCn0KCk1CTVNSZWdpc3RyYXRpb25GYWlsdXJlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UTUdJCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFRNR0kJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWwJCX0gfAoJeyBJRCBpZC1HbG9iYWxDTi1JRAkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIEdsb2JhbENOLUlECQkJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSB8Cgl7IElEIGlkLUNhdXNlCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSAsCgkuLi4KfQoKTUJNU1JlZ2lzdHJhdGlvbkZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgQ04gREUtUkVHSVNUUkFUSU9OIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBDTiBEZS1SZWdpc3RyYXRpb24gUmVxdWVzdAotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKTUJNU0NORGUtUmVnaXN0cmF0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TQ05EZS1SZWdpc3RyYXRpb25SZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHsgTUJNU0NORGUtUmVnaXN0cmF0aW9uUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TQ05EZS1SZWdpc3RyYXRpb25SZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UTUdJCQkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgVE1HSQkJCQkJCQkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9IHwKCXsgSUQgaWQtR2xvYmFsQ04tSUQJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlUWVBFIEdsb2JhbENOLUlECQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCQl9LAoJLi4uCn0KCk1CTVNDTkRlLVJlZ2lzdHJhdGlvblJlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIE1CTVMgQ04gRGUtUmVnaXN0cmF0aW9uIFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TQ05EZS1SZWdpc3RyYXRpb25SZXNwb25zZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TQ05EZS1SZWdpc3RyYXRpb25SZXNwb25zZUlFc30gfSwKCXByb3RvY29sRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIJeyB7IE1CTVNDTkRlLVJlZ2lzdHJhdGlvblJlc3BvbnNlRXh0ZW5zaW9uc30gfQkJT1BUSU9OQUwsCgkuLi4KfQoKTUJNU0NORGUtUmVnaXN0cmF0aW9uUmVzcG9uc2VJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLVRNR0kJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgVE1HSQkJCQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUdsb2JhbFJOQy1JRAkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCVRZUEUgR2xvYmFsUk5DLUlECQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSB8Cgl7IElEIGlkLUNhdXNlCQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCQkJCQkJCVBSRVNFTkNFIG9wdGlvbmFsCQl9IHwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSAsCgkuLi4KfQoKTUJNU0NORGUtUmVnaXN0cmF0aW9uUmVzcG9uc2VFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewotLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byBpbmRpY2F0ZSBleHRlbmRlZCBSTkMtSUQgLS0KCXsgSUQgaWQtRXh0ZW5kZWRSTkMtSUQJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBFeHRlbmRlZFJOQy1JRAkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFJBQiBFU1RBQkxJU0hNRU5UIElORElDQVRJT04gUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFJBQiBFc3RhYmxpc2htZW50IEluZGljYXRpb24KLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCk1CTVNSQUJFc3RhYmxpc2htZW50SW5kaWNhdGlvbiA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsgeyBNQk1TUkFCRXN0YWJsaXNobWVudEluZGljYXRpb25JRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsgeyBNQk1TUkFCRXN0YWJsaXNobWVudEluZGljYXRpb25FeHRlbnNpb25zfSB9CQkJT1BUSU9OQUwsCgkuLi4KfQoKTUJNU1JBQkVzdGFibGlzaG1lbnRJbmRpY2F0aW9uSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1UcmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBUcmFuc3BvcnRMYXllckluZm9ybWF0aW9uCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSAsCgkuLi4KfQoKTUJNU1JBQkVzdGFibGlzaG1lbnRJbmRpY2F0aW9uRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFJBQiBSRUxFQVNFIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBSQUIgUmVsZWFzZSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TUkFCUmVsZWFzZVJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHtNQk1TUkFCUmVsZWFzZVJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge01CTVNSQUJSZWxlYXNlUmVxdWVzdEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TUkFCUmVsZWFzZVJlcXVlc3RJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNhdXNlCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKCS4uLgp9CgoKTUJNU1JBQlJlbGVhc2VSZXF1ZXN0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBNQk1TIFJBQiBSZWxlYXNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TUkFCUmVsZWFzZSA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsge01CTVNSQUJSZWxlYXNlSUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtNQk1TUkFCUmVsZWFzZUV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TUkFCUmVsZWFzZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtQ2F1c2UJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENhdXNlCSAJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfXwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSwKCS4uLgp9CgpNQk1TUkFCUmVsZWFzZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gTUJNUyBSQUIgUmVsZWFzZSBGYWlsdXJlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpNQk1TUkFCUmVsZWFzZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHtNQk1TUkFCUmVsZWFzZUZhaWx1cmVJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge01CTVNSQUJSZWxlYXNlRmFpbHVyZUV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpNQk1TUkFCUmVsZWFzZUZhaWx1cmVJRXMgUkFOQVAtUFJPVE9DT0wtSUVTIDo6PSB7Cgl7IElEIGlkLUNhdXNlCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDYXVzZQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfXwKCXsgSUQgaWQtQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIENyaXRpY2FsaXR5RGlhZ25vc3RpY3MJCQlQUkVTRU5DRSBvcHRpb25hbAkJfSwKCS4uLgp9CgpNQk1TUkFCUmVsZWFzZUZhaWx1cmVFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNSVkNDIFBSRVBBUkFUSU9OIEVMRU1FTlRBUlkgUFJPQ0VEVVJFCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBTUlZDQyBDUyBLZXlzIFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNSVkNDLUNTS2V5c1JlcXVlc3QgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCQl7IHtTUlZDQy1DU0tleXNSZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtTUlZDQy1DU0tleXNSZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpTUlZDQy1DU0tleXNSZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJLi4uCn0KClNSVkNDLUNTS2V5c1JlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFNSVkNDIENTIEtleXMgUmVzcG9uc2UKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClNSVkNDLUNTS2V5c1Jlc3BvbnNlIDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCVByb3RvY29sSUUtQ29udGFpbmVyCQkJeyB7U1JWQ0MtQ1NLZXlzUmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1NSVkNDLUNTS2V5c1Jlc3BvbnNlRXh0ZW5zaW9uc30gfQkJCQlPUFRJT05BTCwKCS4uLgp9CgpTUlZDQy1DU0tleXNSZXNwb25zZUlFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSW50ZWdyaXR5UHJvdGVjdGlvbktleQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgSW50ZWdyaXR5UHJvdGVjdGlvbktleQkJUFJFU0VOQ0UgbWFuZGF0b3J5CX18Cgl7IElEIGlkLUVuY3J5cHRpb25LZXkJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgRW5jcnlwdGlvbktleQkJCQlQUkVTRU5DRSBtYW5kYXRvcnkJfXwKCXsgSUQgaWQtU1JWQ0MtSW5mb3JtYXRpb24JCQlDUklUSUNBTElUWSByZWplY3QJVFlQRSBTUlZDQy1JbmZvcm1hdGlvbgkJCVBSRVNFTkNFIG1hbmRhdG9yeQl9fAoJeyBJRCBpZC1Dcml0aWNhbGl0eURpYWdub3N0aWNzCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBDcml0aWNhbGl0eURpYWdub3N0aWNzCQlQUkVTRU5DRSBvcHRpb25hbAkJfSwKCS4uLgp9CgpTUlZDQy1DU0tleXNSZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVUUgUkFESU8gQ0FQQUJJTElUWSBNQVRDSCBQUk9DRURVUkUKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVRSBSYWRpbyBDYXBhYmlsaXR5IE1hdGNoIFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClVlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXF1ZXN0IDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7VWVSYWRpb0NhcGFiaWxpdHlNYXRjaFJlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1VlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClVlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJLi4uCn0KClVlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXF1ZXN0RXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBVRSBSYWRpbyBDYXBhYmlsaXR5IE1hdGNoIFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVZVJhZGlvQ2FwYWJpbGl0eU1hdGNoUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHtVZVJhZGlvQ2FwYWJpbGl0eU1hdGNoUmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1VlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXNwb25zZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKVWVSYWRpb0NhcGFiaWxpdHlNYXRjaFJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1Wb2ljZVN1cHBvcnRNYXRjaEluZGljYXRvcgkJQ1JJVElDQUxJVFkgcmVqZWN0CVRZUEUgVm9pY2VTdXBwb3J0TWF0Y2hJbmRpY2F0b3IJCVBSRVNFTkNFIG1hbmRhdG9yeQl9LAoJLi4uCn0KClVlUmFkaW9DYXBhYmlsaXR5TWF0Y2hSZXNwb25zZUV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVUUgUkVHSVNUUkFUSU9OIFFVRVJZIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFVFIFJlZ2lzdHJhdGlvbiBRdWVyeSBSZXF1ZXN0Ci0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewoJcHJvdG9jb2xJRXMJCQkJUHJvdG9jb2xJRS1Db250YWluZXIJCXsge1VlUmVnaXN0cmF0aW9uUXVlcnlSZXF1ZXN0SUVzfSB9LAoJcHJvdG9jb2xFeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lcgl7IHtVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVxdWVzdEV4dGVuc2lvbnN9IH0JCQlPUFRJT05BTCwKCS4uLgp9CgpVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVxdWVzdElFcyBSQU5BUC1QUk9UT0NPTC1JRVMgOjo9IHsKCXsgSUQgaWQtSXVTaWdDb25JZAkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBJdVNpZ25hbGxpbmdDb25uZWN0aW9uSWRlbnRpZmllcglQUkVTRU5DRSBtYW5kYXRvcnl9fAoJeyBJRCBpZC1QZXJtYW5lbnROQVMtVUUtSUQJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFBlcm1hbmVudE5BUy1VRS1JRAkJCQkJUFJFU0VOQ0UgbWFuZGF0b3J5fSwKCS4uLgp9CgpVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVxdWVzdEV4dGVuc2lvbnMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CgkuLi4KfQoKLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0KLS0gVUUgUmVnaXN0cmF0aW9uIFF1ZXJ5IFJlc3BvbnNlCi0tCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKCXByb3RvY29sSUVzCQkJCVByb3RvY29sSUUtQ29udGFpbmVyCQl7IHtVZVJlZ2lzdHJhdGlvblF1ZXJ5UmVzcG9uc2VJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1VlUmVnaXN0cmF0aW9uUXVlcnlSZXNwb25zZUV4dGVuc2lvbnN9IH0JCQkJT1BUSU9OQUwsCgkuLi4KfQoKVWVSZWdpc3RyYXRpb25RdWVyeVJlc3BvbnNlSUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1VRVJlZ2lzdHJhdGlvblF1ZXJ5UmVzdWx0CQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBVRVJlZ2lzdHJhdGlvblF1ZXJ5UmVzdWx0CVBSRVNFTkNFIG1hbmRhdG9yeX0sCgkuLi4KfQoKVWVSZWdpc3RyYXRpb25RdWVyeVJlc3BvbnNlRXh0ZW5zaW9ucyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKCS4uLgp9CgotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLQotLSBSRVJPVVRFIE5BUyBSRVFVRVNUIFBST0NFRFVSRQotLQotLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tCi0tIFJlcm91dGUgTkFTIFJlcXVlc3QKLS0KLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClJlcm91dGVOQVNSZXF1ZXN0IDo6PSBTRVFVRU5DRSB7Cglwcm90b2NvbElFcwkJCQlQcm90b2NvbElFLUNvbnRhaW5lcgkJeyB7UmVyb3V0ZU5BU1JlcXVlc3RJRXN9IH0sCglwcm90b2NvbEV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyCXsge1Jlcm91dGVOQVNSZXF1ZXN0RXh0ZW5zaW9uc30gfQkJCU9QVElPTkFMLAoJLi4uCn0KClJlcm91dGVOQVNSZXF1ZXN0SUVzIFJBTkFQLVBST1RPQ09MLUlFUyA6Oj0gewoJeyBJRCBpZC1SQU5BUC1NZXNzYWdlCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIE9DVEVUIFNUUklORwkJCVBSRVNFTkNFIG1hbmRhdG9yeX18Cgl7IElEIGlkLVNHU04tR3JvdXAtSWRlbnRpdHkJCQlDUklUSUNBTElUWSBpZ25vcmUJVFlQRSBTR1NOLUdyb3VwLUlkZW50aXR5CVBSRVNFTkNFIG1hbmRhdG9yeX18Cgl7IElEIGlkLVAtVE1TSQkJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFAtVE1TSQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAoJeyBJRCBpZC1VRS1Vc2FnZS1UeXBlCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlUWVBFIFVFLVVzYWdlLVR5cGUJCQlQUkVTRU5DRSBvcHRpb25hbH0sCgkuLi4KfQoKUmVyb3V0ZU5BU1JlcXVlc3RFeHRlbnNpb25zIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0gewoJLi4uCn0KCkVORAo=