<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>136606</bug_id>
          
          <creation_ts>2014-09-06 17:32:18 -0700</creation_ts>
          <short_desc>Web Inspector: disambiguate integral and real number primitive types in the protocol</short_desc>
          <delta_ts>2014-09-11 21:53:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033707</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-06 17:32:18 -0700</bug_when>
    <thetext>Misc cleanup post-code generator rewrite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033708</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-06 17:32:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/18258060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034233</commentid>
    <comment_count>2</comment_count>
      <attachid>237880</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-09 22:55:20 -0700</bug_when>
    <thetext>Created attachment 237880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034299</commentid>
    <comment_count>3</comment_count>
      <attachid>237880</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-10 08:11:44 -0700</bug_when>
    <thetext>Comment on attachment 237880
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237880&amp;action=review

Looks good, but I think the new names aren&apos;t great.

&gt; Source/JavaScriptCore/inspector/InspectorValues.h:62
&gt; +        Real,
&gt; +        Integral,

I think Double and Integer would be better here and throughout this patch. Even if that would be less accurate, it does tend to be the names we use in WebKit and JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034431</commentid>
    <comment_count>4</comment_count>
      <attachid>237908</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-10 15:22:30 -0700</bug_when>
    <thetext>Created attachment 237908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034549</commentid>
    <comment_count>5</comment_count>
      <attachid>237908</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-11 00:12:12 -0700</bug_when>
    <thetext>Comment on attachment 237908
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237908&amp;action=review

&gt; Source/JavaScriptCore/inspector/InspectorValues.h:278
&gt; +    void pushIntegral(int);
&gt; +    void pushReal(double);

Missed these (and callers)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034655</commentid>
    <comment_count>6</comment_count>
      <attachid>237908</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-11 11:32:42 -0700</bug_when>
    <thetext>Comment on attachment 237908
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237908&amp;action=review

&gt;&gt; Source/JavaScriptCore/inspector/InspectorValues.h:278
&gt;&gt; +    void pushReal(double);
&gt; 
&gt; Missed these (and callers)?

Oops, grep fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034792</commentid>
    <comment_count>7</comment_count>
      <attachid>238007</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-11 19:16:31 -0700</bug_when>
    <thetext>Created attachment 238007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034817</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-11 21:53:42 -0700</bug_when>
    <thetext>Committed r173554: &lt;http://trac.webkit.org/changeset/173554&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237880</attachid>
            <date>2014-09-09 22:55:20 -0700</date>
            <delta_ts>2014-09-10 15:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136606-20140909225507.patch</filename>
            <type>text/plain</type>
            <size>82196</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YmM1NTcxNGZmZjY1MzhjMDRlNDU0OWMzOTdjNmZjNzc0MTU5NWExLi41YjQ5M2ViYjdmMDFkNDc3
M2I5ZGE3MDNiM2JlZjRiMTcxMjhhNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGludGVncmFsIGFu
ZCByZWFsIG51bWJlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3cgaXQncyByZWFs
bHkgZWFzeSB0byBtaXggdXAgZG91YmxlcyBhbmQgaW50ZWdlcnMgd2hlbiBzZXJpYWxpemluZyBv
ciBkZXNlcmlhbGl6aW5nCisgICAgICAgIHZhbHVlcyBmb3IgdGhlIGluc3BlY3RvciBwcm90b2Nv
bC4gVGhpcyBwYXRjaCBkaXNhbWJpZ3VhdGVzIHJlYWwgbnVtYmVycyBhbmQgaW50ZWdyYWwgbnVt
YmVycworICAgICAgICBzbyB0aGF0IGl0IGlzIGNsZWFyZXIgYXMgdG8gd2hpY2ggdHlwZSBpcyBp
bnRlbmRlZC4KKworICAgICAgICBBIG5ldyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSBpcyBhZGRlZCBm
b3IgSW50ZWdyYWwgdHlwZXMsIGFuZCB0aGUgTnVtYmVyIHR5cGUgaXMgcmVuYW1lZCB0byBSZWFs
LgorICAgICAgICBUaGUgZXhpc3RpbmcgY2FsbHNpdGVzIGZvciBhc051bWJlci9nZXROdW1iZXIv
c2V0TnVtYmVyIGhhdmUgYmVlbiBmaXhlZC4KKworICAgICAgICBBZGRyZXNzIHZhcmlvdXMgaW50
ZWdyYXRpb24gcG9pbnRzIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgdHlwZSB0YWcgaXMgYXNzaWdu
ZWQgdG8gSW5zcGVjdG9yVmFsdWVzLgorCisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6anNUb0luc3BlY3RvclZhbHVlKTogTWFrZSBhbiBJ
bnRlZ3JhbCBpZiB0aGUgSlNWYWx1ZSBpcyBJbnQ1MiBvciBzbWFsbGVyLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJv
dG9jb2xFcnJvcik6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNJbnRl
Z3JhbCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNSZWFsKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVncmFs
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFJl
YWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpBc01ldGhvZEJyaWRnZXM6OmFzSW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6QXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSk6IERlbGV0
ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJ
bnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0RG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oOiBSZW1vdmUgdGhlIHNwZWNpYWwgY2FzZSBmb3IgY2hlY2tpbmcgaW50IHR5cGUg
dGFncy4KKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5SXRlbUhlbHBlcjxpbnQ+
OjpUcmFpdHM6OnB1c2hSYXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXlJ
dGVtSGVscGVyPGRvdWJsZT46OlRyYWl0czo6cHVzaFJhdyk6CisgICAgICAgIChJbnNwZWN0b3I6
OlByb3RvY29sOjpCaW5kaW5nVHJhaXRzPGludD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDogQWxs
b3cgaW50ZWdyYWxzIGFuZCByZWFscyB0byBiZSBjb252ZXJ0aWJsZSB1c2luZyBhc0ludGVncmFs
L2FzUmVhbC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OmFzUmVhbCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjphc0ludGVncmFsKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNSZWFsKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNJbnRlZ3JhbCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTik6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlOjphc051bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdEJhc2U6OnNldEludGVncmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6c2V0UmVhbCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFz
ZTo6cHVzaEludGVncmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoUmVhbCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OnNl
dE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFz
ZTo6cHVzaEludCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
QmFzZTo6cHVzaE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRPYmpl
Y3RGb3JCcmVha3BvaW50Q29va2llKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2wpOgorICAgICAgICAoSW5z
cGVjdG9yOjpwYXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5OiBVcGRhdGUgZW1p
dHRlZCBjb2RlIGFuZCByZWJhc2VsaW5lIHRlc3QgcmVzdWx0cy4KKyAgICAgICAgKEdlbmVyYXRv
ci5rZXllZF9nZXRfbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKEdlbmVyYXRvci5rZXllZF9z
ZXRfbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0
aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4p
OgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxmbG9hdD4pOgorICAgICAg
ICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQzMl90Pik6CisgICAgICAgIChKU0M6
OkVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2Rl
ZFZhbHVlOjpjb252ZXJ0VG88dWludDMyX3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVl
Ojpjb252ZXJ0VG88dWludDY0X3Q+KToKKwogMjAxNC0wOS0wOSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHRoZSAidW5yZWFjaGFibGUt
Y29kZSIgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJmNmI2ZTQwNWY1ZTdkMGQ2OGM1NmFjYjE2MGQw
Y2QyZGEwNzA0N2UuLmU0ZmFhYjE4NjY1OGZkYzMwMWM2MDJhMjExNTc5OWQ2NzgzYWMxMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1
cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1
YXRlIGludGVncmFsIGFuZCByZWFsIG51bWJlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3Rv
Y29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY2xpZW50cyBvZiBJbnNwZWN0b3JWYWx1ZSB0byBkaXNhbWJpZ3VhdGUgcmVhbCBudW1iZXJz
IGFuZCBpbnRlZ3JhbCBudW1iZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZp
b3IgY2hhbmdlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25G
b3JET01FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZE9iamVjdEZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
T2JqZWN0Rm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0aENvbW1hbmRBbmRQb2ludHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6cmVwbGF5VG9Qb3NpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0lkOjpJbnNwZWN0
b3JDU1NJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1M
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRl
UmVjb3JkRW50cnkpOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5l
cmljUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlQmFja2dyb3VuZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZUdDRXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rpb25DYWxsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lckluc3Rh
bGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
WEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNvdXJj
ZUZpbmlzaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlTGF5b3V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVBhcnNlSFRNTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVBbmltYXRpb25GcmFtZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUXVhZCk6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEpOgorICAgICAgICAqIHBhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKToKKwogMjAxNC0wOS0wOSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUuaHRtbCBm
YWlsaW5nIGFmdGVyIHIxNzMzMTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDAwNGZmMjQ2YjQ2NzFhNjBjNmFlNmJhZmY0ODU4ZjcxYzRm
NzNmYmIuLmQwNDZhYjJhNWNiMmFjMTlmOTg1NzYzMjVmODkxMmI0OTBkNDhhYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTE0LDgg
KzExNCwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3Rv
clZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVgogICAgICAgICByZXR1cm4gSW5zcGVj
dG9yVmFsdWU6Om51bGwoKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUuYXNCb29sZWFuKCkpOwotICAg
IGlmICh2YWx1ZS5pc051bWJlcigpKQorICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmIHZhbHVl
LmlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
dmFsdWUuYXNOdW1iZXIoKSk7CisgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkgJiYgdmFsdWUuaXNN
YWNoaW5lSW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS5hc01hY2hpbmVJbnQoKSkpOwogICAgIGlmICh2YWx1ZS5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUu
Z2V0U3RyaW5nKHNjcmlwdFN0YXRlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA1OWEwZWRl
ZWFhMGMyOTBlNTljMGNiM2VhYjRmNWFlNWJkMGQ5NzM2Li40ZDVkM2RmY2ZkYzRlNjQ3YTEwNmUx
MmNjNDBhYmFjNWY2ZjBiNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChjb25zdCBTdHJpbmcmIG9iCiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwYXJz
ZWRPYmplY3RJZCA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04ob2JqZWN0SWQpOwogICAgIGlm
IChwYXJzZWRPYmplY3RJZCAmJiBwYXJzZWRPYmplY3RJZC0+dHlwZSgpID09IEluc3BlY3RvclZh
bHVlOjpUeXBlOjpPYmplY3QpIHsKICAgICAgICAgbG9uZyBpbmplY3RlZFNjcmlwdElkID0gMDsK
LSAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFyc2VkT2JqZWN0SWQtPmFzT2JqZWN0KCktPmdldE51
bWJlcihBU0NJSUxpdGVyYWwoImluamVjdGVkU2NyaXB0SWQiKSwgJmluamVjdGVkU2NyaXB0SWQp
OworICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZWRPYmplY3RJZC0+YXNPYmplY3QoKS0+Z2V0
SW50ZWdyYWwoQVNDSUlMaXRlcmFsKCJpbmplY3RlZFNjcmlwdElkIiksICZpbmplY3RlZFNjcmlw
dElkKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gbV9pZFRvSW5q
ZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKaW5kZXggYmIzZWM4MjIxZGQzYmQwOWU4NTg3ZDE2YjA4NjdkNzI5NDBhYWY4
YS4uYmZmNGMzNzAxZGM3NDFlMWQ2ZjljN2UyYWUxZGQxNzk2NGE2OTFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIAogICAg
IGxvbmcgY2FsbElkID0gMDsKLSAgICBpZiAoIWNhbGxJZFZhbHVlLT5hc051bWJlcigmY2FsbElk
KSkgewotICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIEludmFsaWRSZXF1ZXN0
LCBBU0NJSUxpdGVyYWwoIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBudW1iZXIi
KSk7CisgICAgaWYgKCFjYWxsSWRWYWx1ZS0+YXNJbnRlZ3JhbCgmY2FsbElkKSkgeworICAgICAg
ICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIEludmFsaWRSZXF1ZXN0LCBBU0NJSUxpdGVy
YWwoIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBpbnRlZ2VyIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck8KIAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3BvbnNlTWVzc2FnZSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJyZXN1bHQiKSwgcmVzdWx0KTsKLSAgICByZXNwb25zZU1lc3NhZ2UtPnNl
dE51bWJlcihBU0NJSUxpdGVyYWwoImlkIiksIGNhbGxJZCk7CisgICAgcmVzcG9uc2VNZXNzYWdl
LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImlkIiksIGNhbGxJZCk7CiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChyZXNwb25zZU1lc3NhZ2Ut
PnRvSlNPTlN0cmluZygpKTsKIH0KIApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3Qg
Y2FsbElkLCBDCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGVycm9yID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBlcnJvci0+c2V0TnVtYmVy
KEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0pOworICAgIGVycm9y
LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVd
KTsKICAgICBlcnJvci0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWVzc2FnZSIpLCBlcnJvck1l
c3NhZ2UpOwogICAgIGlmIChkYXRhKQogICAgICAgICBlcnJvci0+c2V0QXJyYXkoQVNDSUlMaXRl
cmFsKCJkYXRhIiksIGRhdGEpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2Fs
bElkLCBDCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgbWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJy
b3IiKSwgZXJyb3IucmVsZWFzZSgpKTsKICAgICBpZiAoY2FsbElkKQotICAgICAgICBtZXNzYWdl
LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCAqY2FsbElkKTsKKyAgICAgICAgbWVzc2Fn
ZS0+c2V0SW50ZWdyYWwoQVNDSUlMaXRlcmFsKCJpZCIpLCAqY2FsbElkKTsKICAgICBlbHNlCiAg
ICAgICAgIG1lc3NhZ2UtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgSW5zcGVjdG9yVmFs
dWU6Om51bGwoKSk7CiAKQEAgLTIyMSwyMiArMjIxLDIyIEBAIHN0YXRpYyBSZXR1cm5WYWx1ZVR5
cGUgZ2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5n
JiBuCiB9CiAKIHN0cnVjdCBBc01ldGhvZEJyaWRnZXMgewotICAgIHN0YXRpYyBib29sIGFzSW50
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSwgaW50KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc051
bWJlcihvdXRwdXQpOyB9Ci0gICAgc3RhdGljIGJvb2wgYXNEb3VibGUoSW5zcGVjdG9yVmFsdWUq
IHZhbHVlLCBkb3VibGUqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7
IH0KKyAgICBzdGF0aWMgYm9vbCBhc0ludGVncmFsKEluc3BlY3RvclZhbHVlKiB2YWx1ZSwgaW50
KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc0ludGVncmFsKG91dHB1dCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBhc1JlYWwoSW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBkb3VibGUqIG91dHB1dCkgeyBy
ZXR1cm4gdmFsdWUtPmFzUmVhbChvdXRwdXQpOyB9CiAgICAgc3RhdGljIGJvb2wgYXNTdHJpbmco
SW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBTdHJpbmcqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFz
U3RyaW5nKG91dHB1dCk7IH0KICAgICBzdGF0aWMgYm9vbCBhc0Jvb2xlYW4oSW5zcGVjdG9yVmFs
dWUqIHZhbHVlLCBib29sKiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4ob3V0cHV0
KTsgfQogICAgIHN0YXRpYyBib29sIGFzT2JqZWN0KEluc3BlY3RvclZhbHVlKiB2YWx1ZSwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KG91
dHB1dCk7IH0KICAgICBzdGF0aWMgYm9vbCBhc0FycmF5KEluc3BlY3RvclZhbHVlKiB2YWx1ZSwg
UmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNBcnJheShv
dXRwdXQpOyB9CiB9OwogCi1pbnQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCitpbnQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldEludGVncmFsKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVy
cm9ycykKIHsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxpbnQsIGludCwgaW50PihvYmpl
Y3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRnZXM6
OmFzSW50LCAiTnVtYmVyIik7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBpbnQs
IGludD4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRo
b2RCcmlkZ2VzOjphc0ludGVncmFsLCAiSW50ZWdlciIpOwogfQogCi1kb3VibGUgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9j
b2xFcnJvcnMpCitkb3VibGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFJlYWwoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQogewotICAgIHJldHVybiBnZXRQcm9w
ZXJ0eVZhbHVlPGRvdWJsZSwgZG91YmxlLCBkb3VibGU+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3Vu
ZCwgcHJvdG9jb2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNEb3VibGUsICJOdW1iZXIi
KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxkb3VibGUsIGRvdWJsZSwgZG91YmxlPihv
YmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRn
ZXM6OmFzUmVhbCwgIk51bWJlciIpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggMGE1NWExYzk2YWU0NTk4MWNjZjhmNDM0MTgwMWVm
YTc5MzllZmI3ZS4uNmY3ZjdjNTZhZDk2OGM2MjBmYWFlMWNiYzVlZDQ3OTQ1YWE0ZjdiNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3Q7CiAgICAgdm9pZCByZXBv
cnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
ZGF0YSkgY29uc3Q7CiAKLSAgICBzdGF0aWMgaW50IGdldEludChJbnNwZWN0b3JPYmplY3QqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90
b2NvbEVycm9ycyk7Ci0gICAgc3RhdGljIGRvdWJsZSBnZXREb3VibGUoSW5zcGVjdG9yT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSog
cHJvdG9jb2xFcnJvcnMpOworICAgIHN0YXRpYyBpbnQgZ2V0SW50ZWdyYWwoSW5zcGVjdG9yT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJh
eSogcHJvdG9jb2xFcnJvcnMpOworICAgIHN0YXRpYyBkb3VibGUgZ2V0UmVhbChJbnNwZWN0b3JP
YmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFy
cmF5KiBwcm90b2NvbEVycm9ycyk7CiAgICAgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcoSW5zcGVj
dG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwogICAgIHN0YXRpYyBib29sIGdldEJvb2xlYW4oSW5z
cGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNw
ZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZ2V0T2JqZWN0KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90
b2NvbFR5cGVzLmgKaW5kZXggMGU5MmNlNmQ5ZmFjZDg0ZTlhMThkYmY2NWY0MDY2MDcwZDNkOTA2
Ny4uMGM0MWFlNDIzNDEwODlmMmE2MzY2MjkxZDQ1YTYwNWI2ODBiNjY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5
cGVzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewog
ICAgIHN0cnVjdCBUcmFpdHMgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rv
ckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+
cHVzaEludCh2YWx1ZSk7CisgICAgICAgICAgICBhcnJheS0+cHVzaEludGVncmFsKHZhbHVlKTsK
ICAgICAgICAgfQogICAgIH07CiB9OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0cnVjdCBBcnJheUl0
ZW1IZWxwZXI8ZG91YmxlPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUgdmFsdWUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgICAgIGFy
cmF5LT5wdXNoUmVhbCh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogfTsKQEAgLTI0OCwyMSAr
MjQ4LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JBcnJheT4g
OiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czwKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yT2JqZWN0PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRz
PEluc3BlY3RvclZhbHVlOjpUeXBlOjpPYmplY3Q+IHsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJp
bmRpbmdUcmFpdHM8U3RyaW5nPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3Bl
Y3RvclZhbHVlOjpUeXBlOjpTdHJpbmc+IHsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdU
cmFpdHM8Ym9vbD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1
ZTo6VHlwZTo6Qm9vbGVhbj4geyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxk
b3VibGU+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5
cGU6Ok51bWJlcj4geyB9OwotCi0vLyBGSVhNRTogQWRkIGFuIEluc3BlY3Rvcjo6VHlwZSB0YWcg
Zm9yIGludCBzbyB3ZSBjYW4gcmVtb3ZlIHRoaXMgc3BlY2lhbCBjYXNlLgotdGVtcGxhdGU8Pgot
c3RydWN0IEJpbmRpbmdUcmFpdHM8aW50PiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHN0
YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIGRvdWJsZSB2OwotICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1
ZS0+YXNOdW1iZXIoJnYpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMp
OwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ+KHYp
KSA9PSB2KTsKLSAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKK3RlbXBsYXRl
PD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5n
VHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpSZWFsPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPGludD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3JWYWx1ZTo6VHlwZTo6SW50ZWdyYWw+IHsgfTsKIAogfSAvLyBuYW1lc3BhY2UgUHJvdG9j
b2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCmluZGV4IGUyZDAzNWRjMDlhMWJiZDg1ZjE3YWEwMTA4ZTIwMTg2MTVmOWEyZDUu
LmJlYzEyZjY5ODRjZGUwMGVmMWMxMDdhOTk0MDMzMTg5ZDQwZGEwYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTQ4
NSw0MiArNDg1LDQyIEBAIGJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzQm9vbGVhbihib29sKikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVy
KGRvdWJsZSopIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc1JlYWwoZG91YmxlKikgY29u
c3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVt
YmVyKGZsb2F0KikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzUmVhbChmbG9hdCopIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051
bWJlcihpbnQqKSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ3JhbChpbnQqKSBj
b25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNO
dW1iZXIodW5zaWduZWQqKSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ3JhbCh1
bnNpZ25lZCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3Rv
clZhbHVlOjphc051bWJlcihsb25nKikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50
ZWdyYWwobG9uZyopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3Bl
Y3RvclZhbHVlOjphc051bWJlcihsb25nIGxvbmcqKSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1
ZTo6YXNJbnRlZ3JhbChsb25nIGxvbmcqKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyopIGNvbnN0Citi
b29sIEluc3BlY3RvclZhbHVlOjphc0ludGVncmFsKHVuc2lnbmVkIGxvbmcqKSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5z
aWduZWQgbG9uZyBsb25nKikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdyYWwo
dW5zaWduZWQgbG9uZyBsb25nKikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01
OTEsNjUgKzU5MSw2NSBAQCBib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzQm9vbGVhbihib29s
KiBvdXRwdXQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFz
aWNWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJh
c2ljVmFsdWU6OmFzUmVhbChkb3VibGUqIG91dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgp
ICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OlJlYWwpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0gbV9kb3VibGVWYWx1ZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcihmbG9hdCogb3V0
cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc1JlYWwoZmxvYXQqIG91dHB1
dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlw
ZSgpICE9IFR5cGU6OlJlYWwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdAor
Ym9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVncmFsKGludCogb3V0cHV0KSBjb25zdAog
ewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVtYmVyKQorICAgIGlmICh0eXBlKCkgIT0gVHlw
ZTo6SW50ZWdyYWwgJiYgdHlwZSgpICE9IFR5cGU6OlJlYWwpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8aW50PihtX2RvdWJsZVZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNp
Z25lZCogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVncmFs
KHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpOdW1i
ZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ3JhbCAmJiB0eXBlKCkgIT0gVHlwZTo6
UmVhbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9kb3VibGVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVncmFsKGxvbmcqIG91dHB1dCkgY29uc3QKIHsKLSAgICBp
ZiAodHlwZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVn
cmFsICYmIHR5cGUoKSAhPSBUeXBlOjpSZWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Km91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmc+KG1fZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGxvbmcgbG9uZyog
b3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVncmFsKGxvbmcg
bG9uZyogb3V0cHV0KSBjb25zdAogewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVtYmVyKQor
ICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6SW50ZWdyYWwgJiYgdHlwZSgpICE9IFR5cGU6OlJlYWwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihtX2RvdWJsZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0
b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0Citib29s
IEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50ZWdyYWwodW5zaWduZWQgbG9uZyogb3V0cHV0KSBj
b25zdAogewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVtYmVyKQorICAgIGlmICh0eXBlKCkg
IT0gVHlwZTo6SW50ZWdyYWwgJiYgdHlwZSgpICE9IFR5cGU6OlJlYWwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9kb3Vi
bGVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1
ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0Citib29sIEluc3Bl
Y3RvckJhc2ljVmFsdWU6OmFzSW50ZWdyYWwodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNv
bnN0CiB7Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpOdW1iZXIpCisgICAgaWYgKHR5cGUoKSAh
PSBUeXBlOjpJbnRlZ3JhbCAmJiB0eXBlKCkgIT0gVHlwZTo6UmVhbCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG1f
ZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU3LDEzICs2NTcsMTMgQEAgYm9v
bCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1
dCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVp
bGRlciogb3V0cHV0KSBjb25zdAogewotICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6Qm9vbGVh
biB8fCB0eXBlKCkgPT0gVHlwZTo6TnVtYmVyKTsKKyAgICBBU1NFUlQodHlwZSgpID09IFR5cGU6
OkJvb2xlYW4gfHwgdHlwZSgpID09IFR5cGU6OlJlYWwgfHwgdHlwZSgpID09IFR5cGU6OkludGVn
cmFsKTsKICAgICBpZiAodHlwZSgpID09IFR5cGU6OkJvb2xlYW4pIHsKICAgICAgICAgaWYgKG1f
Ym9vbFZhbHVlKQogICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQodHJ1ZVN0cmluZywgNCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKGZhbHNlU3RyaW5nLCA1KTsK
LSAgICB9IGVsc2UgaWYgKHR5cGUoKSA9PSBUeXBlOjpOdW1iZXIpIHsKKyAgICB9IGVsc2UgaWYg
KHR5cGUoKSA9PSBUeXBlOjpSZWFsIHx8IHR5cGUoKSA9PSBUeXBlOjpJbnRlZ3JhbCkgewogICAg
ICAgICBOdW1iZXJUb0xTdHJpbmdCdWZmZXIgYnVmZmVyOwogICAgICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUobV9kb3VibGVWYWx1ZSkpIHsKICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKG51bGxT
dHJpbmcsIDQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmgKaW5kZXggOTdjYjg4YmYxY2MzOWUxNmNjNzU5MTllM2E4ZjJlODBiNTk3MzZm
MC4uMGRmYzY3ODhlZDg2ZDNmMmI4YTVjOTNkZmNmMjc2NmFmYjFmNDk1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC01OCw3
ICs1OCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICBOdWxsID0g
MCwKICAgICAgICAgQm9vbGVhbiwKLSAgICAgICAgTnVtYmVyLAorICAgICAgICBSZWFsLAorICAg
ICAgICBJbnRlZ3JhbCwKICAgICAgICAgU3RyaW5nLAogICAgICAgICBPYmplY3QsCiAgICAgICAg
IEFycmF5CkBAIC02OSwxNCArNzAsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok51bGw7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBh
c0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIo
ZG91YmxlKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihmbG9hdCog
b3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoaW50KiBvdXRwdXQpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCogb3V0cHV0KSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgYXNOdW1iZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGFzSW50ZWdyYWwoaW50KiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBhc0ludGVncmFsKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBh
c0ludGVncmFsKGxvbmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdy
YWwobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc0ludGVncmFs
KHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdy
YWwodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBh
c1JlYWwoZG91YmxlKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc1JlYWwoZmxv
YXQqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFzU3RyaW5nKFN0cmluZyogb3V0
cHV0KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiBvdXRwdXQpOwogICAgIHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Piogb3V0cHV0KTsKQEAgLTEwNCwxNCArMTA1LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUoZG91YmxlKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihmbG9hdCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoaW50KiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCogb3V0cHV0KSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25n
IGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gTnVtYmVycyBmcm9tIHRoZSBm
cm9udGVuZCBhcmUgYWx3YXlzIHBhcnNlZCBhcyByZWFscywgc28gd2UgYWxsb3cKKyAgICAvLyBj
bGllbnRzIHRvIGNvbnZlcnQgdG8gaW50ZWdyYWwgdmFsdWVzIHdpdGggdGhpcyBmdW5jdGlvbi4K
KyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ3JhbChpbnQqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdyYWwodW5zaWduZWQqIG91dHB1dCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdyYWwobG9uZyogb3V0cHV0KSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ3JhbChsb25nIGxvbmcqIG91dHB1dCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdyYWwodW5zaWduZWQgbG9u
Zyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ3JhbCh1
bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGFzUmVhbChkb3VibGUqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGFzUmVhbChmbG9hdCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIApA
QCAtMTIxLDExICsxMjQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2Jvb2xWYWx1ZSh2YWx1
ZSkgeyB9CiAKICAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGludCB2YWx1ZSkKLSAg
ICAgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpOdW1iZXIpCisgICAgICAgIDogSW5zcGVjdG9y
VmFsdWUoVHlwZTo6SW50ZWdyYWwpCiAgICAgICAgICwgbV9kb3VibGVWYWx1ZShzdGF0aWNfY2Fz
dDxkb3VibGU+KHZhbHVlKSkgeyB9CiAKICAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVl
KGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpOdW1iZXIpCisg
ICAgICAgIDogSW5zcGVjdG9yVmFsdWUoVHlwZTo6UmVhbCkKICAgICAgICAgLCBtX2RvdWJsZVZh
bHVlKHZhbHVlKSB7IH0KIAogICAgIHVuaW9uIHsKQEAgLTE3MSw4ICsxNzQsMTAgQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBvdXRwdXQpIG92ZXJyaWRlOwogCisgICAgLy8gRklYTUU6IHVzZSB0ZW1wbGF0ZXMgdG8gcmVk
dWNlIHRoZSBhbW91bnQgb2YgZHVwbGljYXRlZCBzZXQqKCkgbWV0aG9kcy4KICAgICB2b2lkIHNl
dEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsKLSAgICB2b2lkIHNldE51bWJlcihj
b25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7CisgICAgdm9pZCBzZXRJbnRlZ3JhbChjb25zdCBT
dHJpbmcmIG5hbWUsIGludCk7CisgICAgdm9pZCBzZXRSZWFsKGNvbnN0IFN0cmluZyYgbmFtZSwg
ZG91YmxlKTsKICAgICB2b2lkIHNldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPik7CiAgICAgdm9pZCBzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdEJhc2U+KTsKQEAgLTE4MCwxNCArMTg1LDI0IEBA
IHByb3RlY3RlZDoKIAogICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisKKyAgICAv
LyBGSVhNRTogdXNlIHRlbXBsYXRlcyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBkdXBsaWNhdGVk
IGdldCooKSBtZXRob2RzLgogICAgIGJvb2wgZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIG91dHB1dCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXROdW1i
ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBUKiBvdXRwdXQpIGNvbnN0CisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4gYm9vbCBnZXRSZWFsKGNvbnN0IFN0cmluZyYgbmFtZSwgVCogb3V0cHV0KSBjb25zdAor
ICAgIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsK
KyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlLT5hc1JlYWwob3V0cHV0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gYm9vbCBnZXRJbnRlZ3JhbChjb25zdCBTdHJpbmcmIG5hbWUsIFQqIG91dHB1dCkgY29uc3QK
ICAgICB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBnZXQobmFtZSk7
CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJldHVybiB2YWx1ZS0+YXNOdW1iZXIob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5h
c0ludGVncmFsKG91dHB1dCk7CiAgICAgfQorCiAgICAgYm9vbCBnZXRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGdldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7
CkBAIC0yMTksNyArMjM0LDggQEAgcHVibGljOgogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJh
c2U6OmFzT2JqZWN0OwogCiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0Qm9vbGVh
bjsKLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXROdW1iZXI7CisgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdyYWw7CisgICAgdXNpbmcgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6c2V0UmVhbDsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRTdHJp
bmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0VmFsdWU7CiAgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0OwpAQCAtMjI3LDcgKzI0Myw4IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmZpbmQ7CiAgICAgdXNpbmcgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbjsKLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpnZXROdW1iZXI7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0SW50ZWdy
YWw7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0UmVhbDsKICAgICB1c2luZyBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpnZXRTdHJpbmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6Z2V0T2JqZWN0OwogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5
OwpAQCAtMjU3LDggKzI3NCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgYXNBcnJh
eShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBw
dXNoQm9vbGVhbihib29sKTsKLSAgICB2b2lkIHB1c2hJbnQoaW50KTsKLSAgICB2b2lkIHB1c2hO
dW1iZXIoZG91YmxlKTsKKyAgICB2b2lkIHB1c2hJbnRlZ3JhbChpbnQpOworICAgIHZvaWQgcHVz
aFJlYWwoZG91YmxlKTsKICAgICB2b2lkIHB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBwdXNoVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4pOwogICAgIHZvaWQgcHVz
aE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwpAQCAtMjg3LDggKzMwNCw4IEBA
IHB1YmxpYzoKICAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmFzQXJyYXk7CiAKICAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hCb29sZWFuOwotICAgIHVzaW5nIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaEludDsKLSAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hO
dW1iZXI7CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50ZWdyYWw7CisgICAg
dXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoUmVhbDsKICAgICB1c2luZyBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hTdHJpbmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNo
VmFsdWU7CiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0OwpAQCAtMzE2
LDcgKzMzMywxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFu
KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCB2YWx1ZSkKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVl
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdyYWwoY29uc3QgU3Ry
aW5nJiBuYW1lLCBpbnQgdmFsdWUpCit7CisgICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFz
aWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldFJlYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgdmFsdWUpCiB7CiAgICAg
c2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CkBA
IC0zNTIsMTIgKzM3NCwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hC
b29sZWFuKGJvb2wgdmFsdWUpCiAgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JCYXNpY1ZhbHVl
OjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoSW50KGludCB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaElu
dGVncmFsKGludCB2YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvckJhc2ljVmFs
dWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6
OnB1c2hOdW1iZXIoZG91YmxlIHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoUmVhbChkb3VibGUgdmFsdWUpCiB7CiAgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JC
YXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggM2E1MjhhZmEyZTQ1MjBiMGU0MDRkODc1NmI1ZGQzMGFhMjg4M2EzYi4uOGIx
ZTcxNTYxYTgxM2Y0ZTBmY2NkNjQwZTk1NWNkZTA2NzQwYjA4MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTE1Miw4ICsxNTIsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZShjb25zdCBTdHJp
bmcmCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgidXJsIiksIHVybCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0TnVt
YmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBsaW5lTnVtYmVyKTsKLSAgICBicmVha3Bv
aW50T2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgY29sdW1u
TnVtYmVyKTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwo
ImxpbmVOdW1iZXIiKSwgbGluZU51bWJlcik7CisgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50
ZWdyYWwoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgY29sdW1uTnVtYmVyKTsKICAgICBi
cmVha3BvaW50T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb25kaXRpb24iKSwgY29u
ZGl0aW9uKTsKICAgICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgi
aXNSZWdleCIpLCBpc1JlZ2V4KTsKICAgICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFT
Q0lJTGl0ZXJhbCgiYXV0b0NvbnRpbnVlIiksIGF1dG9Db250aW51ZSk7CkBAIC0yMjgsNyArMjI4
LDcgQEAgYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Q
cm90b2NvbChFcnJvclN0cmluZyogZXJyb3JTdHIKICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgIC8vIGluIHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVsdGlwbGUgYmFja2Vu
ZCBwcm9iZSBhY3Rpb25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4KICAgICAgICAgaW50
IGlkZW50aWZpZXIgPSAwOwotICAgICAgICBvYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwo
ImlkIiksICZpZGVudGlmaWVyKTsKKyAgICAgICAgb2JqZWN0LT5nZXRJbnRlZ3JhbChBU0NJSUxp
dGVyYWwoImlkIiksICZpZGVudGlmaWVyKTsKIAogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICAg
ICAgb2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJkYXRhIiksICZkYXRhKTsKQEAgLTI4
OCw3ICsyODgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQogc3RhdGljIGJvb2wgcGFyc2VM
b2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogbG9jYXRp
b24sIEpTQzo6U291cmNlSUQqIHNvdXJjZUlELCB1bnNpZ25lZCogbGluZU51bWJlciwgdW5zaWdu
ZWQqIGNvbHVtbk51bWJlcikKIHsKICAgICBTdHJpbmcgc2NyaXB0SURTdHI7Ci0gICAgaWYgKCFs
b2NhdGlvbi0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQiKSwgJnNjcmlwdElEU3Ry
KSB8fCAhbG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwgbGlu
ZU51bWJlcikpIHsKKyAgICBpZiAoIWxvY2F0aW9uLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
Y3JpcHRJZCIpLCAmc2NyaXB0SURTdHIpIHx8ICFsb2NhdGlvbi0+Z2V0SW50ZWdyYWwoQVNDSUlM
aXRlcmFsKCJsaW5lTnVtYmVyIiksIGxpbmVOdW1iZXIpKSB7CiAgICAgICAgICpzb3VyY2VJRCA9
IEpTQzo6bm9Tb3VyY2VJRDsKICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJz
Y3JpcHRJZCBhbmQgbGluZU51bWJlciBhcmUgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBsb2NhdGlvbiwgSgogCiAgICAg
KnNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsKICAgICAqY29sdW1uTnVtYmVyID0g
MDsKLSAgICBsb2NhdGlvbi0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uTnVtYmVyIiks
IGNvbHVtbk51bWJlcik7CisgICAgbG9jYXRpb24tPmdldEludGVncmFsKEFTQ0lJTGl0ZXJhbCgi
Y29sdW1uTnVtYmVyIiksIGNvbHVtbk51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTYwMSw4ICs2MDEsOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291
cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdAogICAgICAgICBpZiAoIW1h
dGNoZXMoc2NyaXB0VVJMLCB1cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIFNjcmlwdEJyZWFrcG9pbnQgYnJlYWtwb2ludDsKLSAgICAgICAgYnJlYWtwb2ludE9i
amVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCAmYnJlYWtwb2ludC5s
aW5lTnVtYmVyKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTnVtYmVyIiksICZicmVha3BvaW50LmNvbHVtbk51bWJlcik7CisgICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVncmFsKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIp
LCAmYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0
SW50ZWdyYWwoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgJmJyZWFrcG9pbnQuY29sdW1u
TnVtYmVyKTsKICAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiY29uZGl0aW9uIiksICZicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgICAgIGJyZWFrcG9p
bnRPYmplY3QtPmdldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJhdXRvQ29udGludWUiKSwgJmJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBiNzZmNjBkZWUzOGU3NTBmMGQ3OWEw
ZjY4MmZiZDRmM2MyOWY2NzA5Li4zYmVhZmYzMzhlMTQwY2FmN2FjY2IwNzU3MzAzNDlmNTZkNWI1
N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTIyMSw5ICsyMjEsOSBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nKiBlcgogICAgICAgICBpbnQgZGVzY3JpcHRvcjsKICAgICAg
ICAgU3RyaW5nIHNvdXJjZUlEQXNTdHJpbmc7CiAgICAgICAgIGludCBkaXZvdDsKLSAgICAgICAg
bG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoInR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0
b3IiKSwgJmRlc2NyaXB0b3IpOworICAgICAgICBsb2NhdGlvbi0+Z2V0SW50ZWdyYWwoQVNDSUlM
aXRlcmFsKCJ0eXBlSW5mb3JtYXRpb25EZXNjcmlwdG9yIiksICZkZXNjcmlwdG9yKTsKICAgICAg
ICAgbG9jYXRpb24tPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlEIiksICZzb3VyY2VJ
REFzU3RyaW5nKTsKLSAgICAgICAgbG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImRp
dm90IiksICZkaXZvdCk7CisgICAgICAgIGxvY2F0aW9uLT5nZXRJbnRlZ3JhbChBU0NJSUxpdGVy
YWwoImRpdm90IiksICZkaXZvdCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4gdHlwZURlc2NyaXB0aW9uID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAg
Ym9vbCBva2F5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CmluZGV4IDYyOWYzYThjNzdkYTM3YjFj
YTdhNWU1OTk0NDU2MmY5YjIxYWVlNzguLmQyNDQxMWVhMjVjZmVjMzY5MTA3N2NmMDEwY2M5MmI0
NjgwMGZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKQEAgLTIzMiw3ICsyMzIsOSBAQCBj
bGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICByZXR1cm4gJ2dldEFycmF5JwogICAgICAgICBp
ZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAgICAgICAgIGlmIF90eXBl
LnJhd19uYW1lKCkgaXMgJ2ludGVnZXInOgotICAgICAgICAgICAgICAgIHJldHVybiAnZ2V0SW50
JworICAgICAgICAgICAgICAgIHJldHVybiAnZ2V0SW50ZWdyYWwnCisgICAgICAgICAgICBlbGlm
IF90eXBlLnJhd19uYW1lKCkgaXMgJ251bWJlcic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdn
ZXRSZWFsJwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJ2dldCcg
KyB1Y2ZpcnN0KF90eXBlLnJhd19uYW1lKCkpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUs
IEFsaWFzZWRUeXBlKToKQEAgLTI0Nyw5ICsyNDksMTEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAg
ICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBcnJheVR5cGUpOgogICAgICAgICAgICAgcmV0dXJu
ICdzZXRBcnJheScKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6
Ci0gICAgICAgICAgICBpZiBfdHlwZS5yYXdfbmFtZSgpIGluIFsnaW50ZWdlcicsICdudW1iZXIn
XToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ3NldE51bWJlcicKLSAgICAgICAgICAgIGVsaWYg
X3R5cGUucmF3X25hbWUoKSBpbiBbJ2FueSddOgorICAgICAgICAgICAgaWYgX3R5cGUucmF3X25h
bWUoKSBpcyAnaW50ZWdlcic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdzZXRJbnRlZ3JhbCcK
KyAgICAgICAgICAgIGVsaWYgX3R5cGUucmF3X25hbWUoKSBpcyAnbnVtYmVyJzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gJ3NldFJlYWwnCisgICAgICAgICAgICBlbGlmIF90eXBlLnJhd19uYW1l
KCkgaXMgJ2FueSc6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdzZXRWYWx1ZScKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdzZXQnICsgdWNmaXJzdChfdHlwZS5y
YXdfbmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDI5
MWJiODZjN2MyNzdlMTM3ZjA5MTAxNGE2YzZjMTk1ZjZlODdiYjAuLjc4OWRmYjI2ODY3NjdjYzE3
ZGYyMzFjYjI3NzE3MmE2NmYwM2ZjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0
dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNv
bi1yZXN1bHQKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogICAg
IGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKICAgICAgICAgZXhlY3V0ZVNR
TEFzeW5jKGNhbGxJZCwgKm1lc3NhZ2UuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIFN0cmluZygiJyIpICsgIkRhdGFiYXNlIiAr
ICcuJyArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4n
LCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQpAQCAtMjE1LDcgKzIx
NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNR
TFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcGFyYW1zQ29udGFpbmVyID0gbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJh
bXMiKSk7CiAgICAgSW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIgPSBwYXJhbXND
b250YWluZXIuZ2V0KCk7CiAgICAgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzUHRyID0g
cHJvdG9jb2xFcnJvcnMuZ2V0KCk7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBpbnQgaW5f
ZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ3JhbChwYXJh
bXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicXVl
cnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIGlmIChwcm90b2NvbEVycm9y
cy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9y
bWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAi
RGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwpAQCAtMjQyLDEz
ICsyNDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICAgICAgaWYgKG91dF9ub3Rl
cy5pc0Fzc2lnbmVkKCkpCiAgICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoIm5vdGVzIiksIG91dF9ub3Rlcy5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF90aW1l
c3RhbXAuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+c2V0UmVhbChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0
YW1wLmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3ZhbHVlcy5pc0Fzc2lnbmVkKCkpCiAg
ICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBvdXRf
dmFsdWVzLmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3BheWxvYWQuaXNBc3NpZ25lZCgp
KQogICAgICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
b3V0X3BheWxvYWQuZ2V0VmFsdWUoKSk7CiAgICAgICAgIGlmIChvdXRfZGF0YWJhc2VJZC5pc0Fz
c2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRh
dGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICByZXN1
bHQtPnNldEludGVncmFsKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJ
ZC5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJl
c3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsK
ICAgICAgICAgaWYgKG91dF9zY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCkBAIC0yNjksMTMgKzI2
OSwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbAogICAgIGlmIChub3Rlcy5pc0Fzc2lnbmVk
KCkpCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIp
LCBub3Rlcy5nZXRWYWx1ZSgpKTsKICAgICBpZiAodGltZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAg
ICAgICAganNvbk1lc3NhZ2UtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0
aW1lc3RhbXAuZ2V0VmFsdWUoKSk7CisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRSZWFsKEFTQ0lJ
TGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKICAgICBpZiAodmFs
dWVzLmlzQXNzaWduZWQoKSkKICAgICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMuZ2V0VmFsdWUoKSk7CiAgICAgaWYgKHBheWxvYWQuaXNB
c3NpZ25lZCgpKQogICAgICAgICBqc29uTWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJw
YXlsb2FkIiksIHBheWxvYWQuZ2V0VmFsdWUoKSk7CiAgICAgaWYgKGRhdGFiYXNlSWQuaXNBc3Np
Z25lZCgpKQotICAgICAgICBqc29uTWVzc2FnZS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0
YWJhc2VJZCIpLCBkYXRhYmFzZUlkLmdldFZhbHVlKCkpOworICAgICAgICBqc29uTWVzc2FnZS0+
c2V0SW50ZWdyYWwoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNlSWQuZ2V0VmFs
dWUoKSk7CiAgICAgaWYgKHNxbEVycm9yKQogICAgICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgc3FsRXJyb3IpOwogICAgIGlmIChzY3JlZW5Db2xv
ci5pc0Fzc2lnbmVkKCkpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhs
b24KICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWluZXIgPSBtZXNzYWdl
LmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpKTsKICAgICBJbnNwZWN0b3JPYmplY3Qq
IHBhcmFtc0NvbnRhaW5lclB0ciA9IHBhcmFtc0NvbnRhaW5lci5nZXQoKTsKICAgICBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnNQdHIgPSBwcm90b2NvbEVycm9ycy5nZXQoKTsKLSAgICBp
bnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnQocGFy
YW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnNQdHIpOworICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldEludGVncmFsKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBTdHJpbmcg
aW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0Nv
bnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
c1B0cik7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhv
ZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyIpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0gbWVz
c2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSk7CiAgICAgSW5zcGVjdG9yT2Jq
ZWN0KiBwYXJhbXNDb250YWluZXJQdHIgPSBwYXJhbXNDb250YWluZXIuZ2V0KCk7CiAgICAgSW5z
cGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzUHRyID0gcHJvdG9jb2xFcnJvcnMuZ2V0KCk7Ci0g
ICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50
KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ3JhbChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3Ry
aW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJh
bXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xF
cnJvcnNQdHIpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmMi
KTsKQEAgLTM0MSwxMCArMzQxLDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgaWYg
KCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICByZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJh
bCgiY29sdW1uTmFtZXMiKSwgb3V0X2NvbHVtbk5hbWVzKTsKICAgICAgICAgcmVzdWx0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBvdXRfbm90ZXMpOwotICAgICAgICByZXN1bHQt
PnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRSZWFsKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG91dF90aW1l
c3RhbXApOwogICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIp
LCBvdXRfdmFsdWVzKTsKICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBh
eWxvYWQiKSwgb3V0X3BheWxvYWQpOwotICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxp
dGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOworICAgICAgICByZXN1bHQtPnNl
dEludGVncmFsKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZCk7CiAg
ICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3Nx
bEVycm9yKTsKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5D
b2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0
X3NjcmVlbkNvbG9yKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
cHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFs
dWUob3V0X3ByaW50Q29sb3IpKTsKQEAgLTM1OSwxMCArMzU5LDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNr
OjpzZW5kU3VjCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxp
dGVyYWwoImNvbHVtbk5hbWVzIiksIGNvbHVtbk5hbWVzKTsKICAgICBqc29uTWVzc2FnZS0+c2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMpOwotICAgIGpzb25NZXNzYWdlLT5z
ZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wKTsKKyAgICBqc29u
TWVzc2FnZS0+c2V0UmVhbChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOwog
ICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgdmFsdWVz
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBh
eWxvYWQpOwotICAgIGpzb25NZXNzYWdlLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFz
ZUlkIiksIGRhdGFiYXNlSWQpOworICAgIGpzb25NZXNzYWdlLT5zZXRJbnRlZ3JhbChBU0NJSUxp
dGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZCk7CiAgICAganNvbk1lc3NhZ2UtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIHNxbEVycm9yKTsKICAgICBqc29uTWVzc2Fn
ZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHNjcmVlbkNvbG9yKSk7CiAgICAganNvbk1l
c3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHByaW50Q29sb3IpKTsKQEAgLTM3NSw3
ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1
dGVTUUxBc3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcAogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHBhcmFtc0NvbnRhaW5lciA9IG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
cGFyYW1zIikpOwogICAgIEluc3BlY3Rvck9iamVjdCogcGFyYW1zQ29udGFpbmVyUHRyID0gcGFy
YW1zQ29udGFpbmVyLmdldCgpOwogICAgIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9yc1B0
ciA9IHByb3RvY29sRXJyb3JzLmdldCgpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAgaW50
IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdyYWwo
cGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwg
cHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwo
InF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBpZiAocHJvdG9jb2xF
cnJvcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2Vk
IiwgIkRhdGFiYXNlLmV4ZWN1dGVTUUxBc3luYyIpOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvZGVTZXQ+JiBzZXRDb2RlKGludCB2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIENvZGVTZXQp
LCBwcm9wZXJ0eV9jb2RlX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRO
dW1iZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0
LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuIGNhc3RTdGF0ZTxDb2RlU2V0PigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IGZjZmUyY2Q3ZGViOGMxMjEyMWFhMWIxNDlhMjJlZGVmMGNlZDE1MzQuLjcxODhkZTgyZmU2
NWE3Zjk4YWNlYjg4MmNjOGNiZGYyZGZmMTFjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTg1LDcg
KzE4NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0
Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0CiAgICAgZWxzZSBpZiAobWV0aG9kID09
ICJleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoY2FsbElkLCAqbWVzc2FnZS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiRGF0YWJh
c2UiICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2Ui
LCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCkBAIC0xOTksMTMgKzE5
OSwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgIGJvb2wgbm90ZXNfdmFsdWVGb3Vu
ZCA9IGZhbHNlOwogICAgIFN0cmluZyBpbl9ub3RlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiks
ICZub3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCB0aW1lc3Rh
bXBfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxkb3VibGU+IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRO
dW1iZXIocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGlt
ZXN0YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0UmVhbChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgidGlt
ZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAg
IGJvb2wgdmFsdWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRPYmplY3QocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFs
dWVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHBheWxvYWRfdmFs
dWVGb3VuZCA9IGZhbHNlOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBp
bl9wYXlsb2FkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFueShwYXJhbXNDb250
YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPSBmYWxz
ZTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRJbnQocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgJmRh
dGFiYXNlSWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnNQdHIpOworICAgIGludCBpbl9kYXRh
YmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVncmFsKHBhcmFtc0Nv
bnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVl
Rm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHNxbEVycm9yX3ZhbHVlRm91bmQg
PSBmYWxzZTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVy
cm9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWlu
ZXJQdHIsIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPSBmYWxz
ZTsKQEAgLTIzNywxMyArMjM3LDEzIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgICAg
IGlmIChvdXRfbm90ZXMuaXNBc3NpZ25lZCgpKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBvdXRfbm90ZXMuZ2V0VmFsdWUoKSk7CiAgICAgICAg
IGlmIChvdXRfdGltZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0
TnVtYmVyKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFsdWUo
KSk7CisgICAgICAgICAgICByZXN1bHQtPnNldFJlYWwoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF92YWx1ZXMuaXNB
c3NpZ25lZCgpKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2
YWx1ZXMiKSwgb3V0X3ZhbHVlcy5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF9wYXlsb2Fk
LmlzQXNzaWduZWQoKSkKICAgICAgICAgICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFs
KCJwYXlsb2FkIiksIG91dF9wYXlsb2FkLmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X2Rh
dGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdldFZhbHVlKCkpOworICAg
ICAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
b3V0X2RhdGFiYXNlSWQuZ2V0VmFsdWUoKSk7CiAgICAgICAgIGlmIChvdXRfc3FsRXJyb3IpCiAg
ICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91
dF9zcWxFcnJvcik7CiAgICAgICAgIGlmIChvdXRfc2NyZWVuQ29sb3IuaXNBc3NpZ25lZCgpKQpA
QCAtMjYyLDEwICsyNjIsMTAgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQKICAgICBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnNQdHIgPSBwcm90b2NvbEVycm9ycy5nZXQoKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fY29sdW1uTmFtZXMgPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxp
dGVyYWwoImNvbHVtbk5hbWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBT
dHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBh
cmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9yc1B0cik7Ci0gICAgZG91YmxlIGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXROdW1iZXIocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInRp
bWVzdGFtcCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAgZG91YmxlIGluX3Rp
bWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRSZWFsKHBhcmFtc0NvbnRh
aW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnNQdHIpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVz
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXJQ
dHIsIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBbnkocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxp
dGVyYWwoInBheWxvYWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwotICAgIGludCBp
bl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXND
b250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9yc1B0cik7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0SW50ZWdyYWwocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRh
dGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fc3FsRXJyb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJzcWxF
cnJvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX3NjcmVl
bkNvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xF
cnJvcnNQdHIpOwogICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicHJp
bnRDb2xvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CkBAIC0yOTEsMTAgKzI5MSwx
MCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsK
ICAgICAgICAgcmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG91
dF9jb2x1bW5OYW1lcyk7CiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
bm90ZXMiKSwgb3V0X25vdGVzKTsKLSAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRl
cmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcCk7CisgICAgICAgIHJlc3VsdC0+c2V0UmVh
bChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wKTsKICAgICAgICAgcmVz
dWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3ZhbHVlcyk7CiAgICAg
ICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2Fk
KTsKLSAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IG91dF9kYXRhYmFzZUlkKTsKKyAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVy
YWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAgIHJl
c3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5Db2xvcikpOwogICAg
ICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENvbG9yKSk7
CkBAIC01MjEsNyArNTIxLDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29k
ZVNldD4mIHNldENvZGUoaW50IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVCghKFNUQVRFICYgQ29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFkeV9zZXQpOwot
ICAgICAgICAgICAgbV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFs
dWUpOworICAgICAgICAgICAgbV9yZXN1bHQtPnNldEludGVncmFsKEFTQ0lJTGl0ZXJhbCgiY29k
ZSIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvZGVTZXQ+KCk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3Vs
dAppbmRleCBhN2VhNzhiNDIxYzFjMjhjMDRhZjJjOGUxYzFmMGVhNTM4MGNjOTY5Li41ZDI3M2Q1
ZTQzZGEwYzY4MWRmYTAzNDBiYzY4ZmVkODY2MDg0ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRo
LXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlp
bmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0CiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlMSIpCiAgICAg
ICAgIGxvYWRSZXNvdXJjZTEoY2FsbElkLCAqbWVzc2FnZS5nZXQoKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAi
TmV0d29yazEiICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0
d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElk
LCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0
IFN0cmluZyYgbWV0CiAKICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRv
ciBpdCA9IGRpc3BhdGNoTWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hN
YXAuZW5kKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQs
IFN0cmluZygiJyIpICsgIk5ldHdvcmszIiArICcuJyArIG1ldGhvZCArICInIHdhcyBub3QgZm91
bmQiKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VT
dHJpbmcoJ1wnJywgIk5ldHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKaW5kZXggNWNlOWE1ZTA0YTdlNGMxNGNiZWZhZDliYmJmZjk5MTFkZTMxMzEy
Ny4uMzBmMGU3ZjE1OGRmNTFhMmNkMzJmYTFiMWM5Mjk2N2Y4ZWE0Njk1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2
ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFBhc3NSZWZQdAogICAgIGlmIChub3RlcykKICAgICAgICAgcGFyYW1zT2JqZWN0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqbm90ZXMpOwogICAgIGlmICh0aW1l
c3RhbXApCi0gICAgICAgIHBhcmFtc09iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgidGlt
ZXN0YW1wIiksICp0aW1lc3RhbXApOworICAgICAgICBwYXJhbXNPYmplY3QtPnNldFJlYWwoQVND
SUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKnRpbWVzdGFtcCk7CiAgICAgaWYgKHZhbHVlcykKICAg
ICAgICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgdmFs
dWVzKTsKICAgICBpZiAocGF5bG9hZCkKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMoUGFzc1JlZgogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJ
SUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIGNvbHVtbk5hbWVzKTsKICAgICBwYXJhbXNPYmplY3Qt
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG5vdGVzKTsKLSAgICBwYXJhbXNPYmpl
Y3QtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOworICAg
IHBhcmFtc09iamVjdC0+c2V0UmVhbChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3Rh
bXApOwogICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiks
IHZhbHVlcyk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxv
YWQiKSwgcGF5bG9hZCk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJzcWxFcnJvciIpLCBzcWxFcnJvcik7CkBAIC0zOTgsNyArMzk4LDcgQEAgcHVibGljOgogICAg
ICAgICBCdWlsZGVyPFNUQVRFIHwgQ29kZVNldD4mIHNldENvZGUoaW50IHZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQ29kZVNldCksIHByb3Bl
cnR5X2NvZGVfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAgbV9yZXN1bHQtPnNldE51bWJlcihB
U0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOworICAgICAgICAgICAgbV9yZXN1bHQtPnNldElu
dGVncmFsKEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
Y2FzdFN0YXRlPENvZGVTZXQ+KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggZWFiZmNlMGUyYzA1Njk4MzMzZjgz
ZWVhNTFiMjhlNTkwMWUwMWZlNi4uYzEyYTAxYTA3ZjAzNDU2YjNkYjMxZDY1Y2FkYjMyYjc2ZDQ2
ZGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICBpZiAo
bWV0aG9kID09ICJsb2FkUmVzb3VyY2UiKQogICAgICAgICBsb2FkUmVzb3VyY2UoY2FsbElkLCAq
bWVzc2FnZS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiTmV0d29yazEiICsgJy4nICsgbWV0aG9kICsg
Iicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2RO
b3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2Fz
IG5vdCBmb3VuZCIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOjpsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCkBA
IC00MTksNyArNDE5LDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29kZVNl
dD4mIHNldENvZGUoaW50IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVCghKFNUQVRFICYgQ29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFkeV9zZXQpOwotICAg
ICAgICAgICAgbV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUp
OworICAgICAgICAgICAgbV9yZXN1bHQtPnNldEludGVncmFsKEFTQ0lJTGl0ZXJhbCgiY29kZSIp
LCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvZGVTZXQ+KCk7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCBkZjk3YzIw
ZTNhODM2N2I2YzQ1YWE1ODI4ZWFkNTgyMzQ4ODNmYzU3Li4xOWU5OWE4MmJkZGVmMWZkNzlmY2Y5
NzE1YWI4ZDcxMjkzYTc4OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlw
ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dApAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxTVEFURSB8IENv
ZGVTZXQ+JiBzZXRDb2RlKGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoIShTVEFURSAmIENvZGVTZXQpLCBwcm9wZXJ0eV9jb2RlX2FscmVhZHlfc2V0KTsK
LSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZh
bHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImNv
ZGUiKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxDb2RlU2V0PigpOwog
ICAgICAgICB9CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRp
bWVzdGFtcChkb3VibGUgdmFsdWUpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOworICAgICAgICBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpzZXRSZWFsKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHZh
bHVlKTsKICAgICB9CiAKICAgICB2b2lkIHNldFZhbHVlcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKQEAgLTQ5OCw3ICs0OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEJ1aWxkZXI8U1RBVEUgfCBUaW1lc3RhbXBTZXQ+JiBzZXRUaW1lc3RhbXAoZG91YmxlIHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgVGlt
ZXN0YW1wU2V0KSwgcHJvcGVydHlfdGltZXN0YW1wX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAg
IG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOwor
ICAgICAgICAgICAgbV9yZXN1bHQtPnNldFJlYWwoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwg
dmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxUaW1lc3RhbXBTZXQ+KCk7CiAg
ICAgICAgIH0KIApAQCAtNjk5LDcgKzY5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxT
VEFURSB8IFRpbWVzdGFtcFNldD4mIHNldFRpbWVzdGFtcChkb3VibGUgdmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBUaW1lc3RhbXBTZXQpLCBw
cm9wZXJ0eV90aW1lc3RhbXBfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAgbV9yZXN1bHQtPnNl
dE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB2YWx1ZSk7CisgICAgICAgICAgICBt
X3Jlc3VsdC0+c2V0UmVhbChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB2YWx1ZSk7CiAgICAg
ICAgICAgICByZXR1cm4gY2FzdFN0YXRlPFRpbWVzdGFtcFNldD4oKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJl
cXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IDFlZjEzYzcyMDU0NTZiMDNj
OGFhMWMzZDI0NmNlZDUxMTM0YTRmZTQuLjZhOTFkMGEzODdkMjBjNmIzYWRkZDFlOTU0NDlhNDJk
OGE3Y2IxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0zNTAs
NyArMzUwLDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgTnVtYmVyU2V0PiYg
c2V0TnVtYmVyKGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoIShTVEFURSAmIE51bWJlclNldCksIHByb3BlcnR5X251bWJlcl9hbHJlYWR5X3NldCk7Ci0g
ICAgICAgICAgICBtX3Jlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIiksIHZh
bHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoIm51
bWJlciIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPE51bWJlclNldD4o
KTsKICAgICAgICAgfQogCkBAIC0zNjQsNyArMzY0LDcgQEAgcHVibGljOgogICAgICAgICBCdWls
ZGVyPFNUQVRFIHwgSWRTZXQ+JiBzZXRJZChpbnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBJZFNldCksIHByb3BlcnR5X2lkX2FscmVhZHlf
c2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJpZCIp
LCB2YWx1ZSk7CisgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0SW50ZWdyYWwoQVNDSUlMaXRlcmFs
KCJpZCIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPElkU2V0PigpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5j
b2RlZFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVl
LmNwcAppbmRleCA3M2Y5OGE1NmQyN2QwOTFjMTY1NTA5NmNjYTczM2MwNmRjMGY1ZTk1Li4xMWM2
MDllOWE1MGQ5ZDVkYzQ5MGFmY2QzOGI5MjJlY2QyNjUzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdGVt
cGxhdGU8PiBib29sIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGJvb2w+KCkKIHRlbXBsYXRlPD4g
ZG91YmxlIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4oKQogewogICAgIGRvdWJsZSBy
ZXN1bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNOdW1iZXIoJnJlc3Vs
dCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNSZWFsKCZyZXN1bHQpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMTIxLDcgKzEyMSw3IEBAIHRlbXBsYXRlPD4gZG91YmxlIEVuY29k
ZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4oKQogdGVtcGxhdGU8PiBmbG9hdCBFbmNvZGVkVmFs
dWU6OmNvbnZlcnRUbzxmbG9hdD4oKQogewogICAgIGZsb2F0IHJlc3VsdDsKLSAgICBib29sIGNh
c3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSBtX3ZhbHVlLT5hc1JlYWwoJnJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChj
YXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0x
MzAsNyArMTMwLDcgQEAgdGVtcGxhdGU8PiBmbG9hdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxm
bG9hdD4oKQogdGVtcGxhdGU8PiBpbnQzMl90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDMy
X3Q+KCkKIHsKICAgICBpbnQzMl90IHJlc3VsdDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBt
X3ZhbHVlLT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3Zh
bHVlLT5hc0ludGVncmFsKCZyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRl
ZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM5LDcgKzEzOSw3
IEBAIHRlbXBsYXRlPD4gaW50MzJfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQzMl90Pigp
CiB0ZW1wbGF0ZTw+IGludDY0X3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50NjRfdD4oKQog
ewogICAgIGludDY0X3QgcmVzdWx0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUt
PmFzTnVtYmVyKCZyZXN1bHQpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFz
SW50ZWdyYWwoJnJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0
U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVt
cGxhdGU8PiBpbnQ2NF90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KCkKIHRlbXBs
YXRlPD4gdWludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dWludDMyX3Q+KCkKIHsKICAg
ICB1aW50MzJfdCByZXN1bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNO
dW1iZXIoJnJlc3VsdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNJbnRl
Z3JhbCgmcmVzdWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNj
ZWVkZWQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB0ZW1wbGF0
ZTw+IHVpbnQzMl90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQzMl90PigpCiB0ZW1wbGF0
ZTw+IHVpbnQ2NF90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQ2NF90PigpCiB7CiAgICAg
dWludDY0X3QgcmVzdWx0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVt
YmVyKCZyZXN1bHQpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzSW50ZWdy
YWwoJnJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2Vl
ZGVkKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA0YjI5NzkzMjgwZDk1OWQ1MzE1MGFhNjEwNjgy
Yzc4OTVhMzZlZWNjLi4yY2ExMTkzZDdkM2I5M2I3ZGVjYTZlZjYwYWE0ZThhYTA5ODZlZGRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTExOSwxNCArMTE5LDE0IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvck9iamVjdCkKICAgICBpbnQgcjsKICAgICBpbnQgZzsKICAg
ICBpbnQgYjsKLSAgICBib29sIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJy
IiwgJnIpOwotICAgIHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiZyIsICZn
KTsKLSAgICBzdWNjZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImIiLCAmYik7Cisg
ICAgYm9vbCBzdWNjZXNzID0gKCpjb2xvck9iamVjdCktPmdldEludGVncmFsKCJyIiwgJnIpOwor
ICAgIHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldEludGVncmFsKCJnIiwgJmcpOworICAg
IHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldEludGVncmFsKCJiIiwgJmIpOwogICAgIGlm
ICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgIGRv
dWJsZSBhOwotICAgIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJhIiwgJmEp
OworICAgIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0UmVhbCgiYSIsICZhKTsKICAgICBp
ZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBDb2xvcihyLCBnLCBiKTsKIApAQCAtMTU0LDcg
KzE1NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlUXVhZChjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBxdWFkQXJyYXksIEZsb2F0UXVhZCogcXVhZCkKICAgICBpZiAocXVhZEFycmF5LT5sZW5n
dGgoKSAhPSBjb29yZGluYXRlc0luUXVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXNJblF1YWQ7ICsraSkgewotICAgICAgICBp
ZiAoIXF1YWRBcnJheS0+Z2V0KGkpLT5hc051bWJlcihjb29yZGluYXRlcyArIGkpKQorICAgICAg
ICBpZiAoIXF1YWRBcnJheS0+Z2V0KGkpLT5hc1JlYWwoY29vcmRpbmF0ZXMgKyBpKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcXVhZC0+c2V0UDEoRmxvYXRQb2ludChj
b29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pKTsKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB3aAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGludCBub2RlSWQgPSAwOwotICAgICAgICAgICAgaWYgKCFub2RlVmFs
dWUtPmFzTnVtYmVyKCZub2RlSWQpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNJ
bnRlZ3JhbCgmbm9kZUlkKSkgewogICAgICAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZh
bGlkIG5vZGVJZHMgaXRlbSB0eXBlLiBFeHBlY3RpbmcgaW50ZWdlciB0eXBlcy4iOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjNTU5NzEx
ZDAyNTMzMmMzMjcwMWZlZjU5MzA0ZDIzYTgyNmE5MWI5Li5lZGJjN2FiMjUxNDBiZWQ2MjMxYjUx
NDc4YzlkZjQ1YzYzNzFjNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUq
IHRhcmdldCwgaW50IGJyZWFrcG8KIAogICAgIGludCBicmVha3BvaW50T3duZXJOb2RlSWQgPSBt
X2RvbUFnZW50LT5ib3VuZE5vZGVJZChicmVha3BvaW50T3duZXIpOwogICAgIEFTU0VSVChicmVh
a3BvaW50T3duZXJOb2RlSWQpOwotICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoIm5vZGVJZCIs
IGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgZGVzY3JpcHRpb24tPnNldEludGVncmFsKCJu
b2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOwogICAgIGRlc2NyaXB0aW9uLT5zZXRTdHJp
bmcoInR5cGUiLCBkb21UeXBlTmFtZShicmVha3BvaW50VHlwZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRl
eCA3M2NkMDZiNjZhNjNlNTkwY2Y3YWIyMjU3ZjQyYzRjMmIwMzlkNmE0Li4zM2I4YzdmMjBmYWIy
ZWU0MzMxZDU0MDBlMmM0N2E2MWMyZjNjMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5z
cGVjdG9yT2JqZWN0KiBrZXkpCiAKICAgICBpZiAodHlwZSA9PSBudW1iZXIpIHsKICAgICAgICAg
ZG91YmxlIG51bWJlcjsKLSAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigibnVtYmVyIiwgJm51
bWJlcikpCisgICAgICAgIGlmICgha2V5LT5nZXRSZWFsKCJudW1iZXIiLCAmbnVtYmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0
ZU51bWJlcihudW1iZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBzdHJpbmcpIHsKQEAgLTM0
Niw3ICszNDYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0
b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgICAgIGlkYktleSA9IElEQktleTo6
Y3JlYXRlU3RyaW5nKHN0cmluZyk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IGRhdGUpIHsKICAg
ICAgICAgZG91YmxlIGRhdGU7Ci0gICAgICAgIGlmICgha2V5LT5nZXROdW1iZXIoImRhdGUiLCAm
ZGF0ZSkpCisgICAgICAgIGlmICgha2V5LT5nZXRSZWFsKCJkYXRlIiwgJmRhdGUpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlRGF0
ZShkYXRlKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gYXJyYXkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyOGMwYTEyMWY2YTY3ZjNk
YTYyMWZkNjZkYTllMzg4MWVjZTJlOWFkLi43ZDU2YzM3OWM0OWYyYTkxNmU5MzMyM2Q2Y2M5NmYy
NmJkZGVhNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCkBAIC0zMzMsMTggKzMzMywxOCBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0
ZSgpCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUG9p
bnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gb2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBvYmplY3QtPnNldE51
bWJlcihBU0NJSUxpdGVyYWwoIngiKSwgcG9pbnQueCgpKTsKLSAgICBvYmplY3QtPnNldE51bWJl
cihBU0NJSUxpdGVyYWwoInkiKSwgcG9pbnQueSgpKTsKKyAgICBvYmplY3QtPnNldFJlYWwoQVND
SUlMaXRlcmFsKCJ4IiksIHBvaW50LngoKSk7CisgICAgb2JqZWN0LT5zZXRSZWFsKEFTQ0lJTGl0
ZXJhbCgieSIpLCBwb2ludC55KCkpOwogICAgIHJldHVybiBvYmplY3QucmVsZWFzZSgpOwogfQog
CiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2Jq
ZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBvYmplY3QtPnNldE51bWJlcihB
U0NJSUxpdGVyYWwoIngiKSwgcmVjdC54KCkpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJ
TGl0ZXJhbCgieSIpLCByZWN0LnkoKSk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRl
cmFsKCJ3aWR0aCIpLCByZWN0LndpZHRoKCkpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJ
TGl0ZXJhbCgiaGVpZ2h0IiksIHJlY3QuaGVpZ2h0KCkpOworICAgIG9iamVjdC0+c2V0UmVhbChB
U0NJSUxpdGVyYWwoIngiKSwgcmVjdC54KCkpOworICAgIG9iamVjdC0+c2V0UmVhbChBU0NJSUxp
dGVyYWwoInkiKSwgcmVjdC55KCkpOworICAgIG9iamVjdC0+c2V0UmVhbChBU0NJSUxpdGVyYWwo
IndpZHRoIiksIHJlY3Qud2lkdGgoKSk7CisgICAgb2JqZWN0LT5zZXRSZWFsKEFTQ0lJTGl0ZXJh
bCgiaGVpZ2h0IiksIHJlY3QuaGVpZ2h0KCkpOwogICAgIHJldHVybiBvYmplY3QucmVsZWFzZSgp
OwogfQogCkBAIC00NDAsOCArNDQwLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodChSZW5kZXJSZWdpb24KIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXN1bHQtPnNldE51bWJlcigid2lkdGgiLCBz
aXplLndpZHRoKCkpOwotICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJoZWlnaHQiLCBzaXplLmhlaWdo
dCgpKTsKKyAgICByZXN1bHQtPnNldEludGVncmFsKCJ3aWR0aCIsIHNpemUud2lkdGgoKSk7Cisg
ICAgcmVzdWx0LT5zZXRJbnRlZ3JhbCgiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU5OSw4ICs1OTksOCBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRQYXRoQ29tbWFuZEFuZFBvaW50cyhQYXRoQXBwbHlJbmZvKiBpbmZvLCBjb25zdCBT
dHJpbmcmIGNvbW1hbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICBwb2ludCA9IGluZm8tPnNoYXBlT3V0c2lkZUluZm8tPnNoYXBlVG9SZW5kZXJl
clBvaW50KHBvaW50c1tpXSk7CiAgICAgICAgIHBvaW50ID0gbG9jYWxQb2ludFRvUm9vdChpbmZv
LT5yZW5kZXJlciwgaW5mby0+cm9vdFZpZXcsIGluZm8tPnZpZXcsIHBvaW50KTsKLSAgICAgICAg
aW5mby0+YXJyYXktPnB1c2hOdW1iZXIocG9pbnQueCgpKTsKLSAgICAgICAgaW5mby0+YXJyYXkt
PnB1c2hOdW1iZXIocG9pbnQueSgpKTsKKyAgICAgICAgaW5mby0+YXJyYXktPnB1c2hSZWFsKHBv
aW50LngoKSk7CisgICAgICAgIGluZm8tPmFycmF5LT5wdXNoUmVhbChwb2ludC55KCkpOwogICAg
IH0KIH0KIApAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Zm9yY2VQ
YWludCgpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpCiB7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVzZXREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICByZXNldERhdGEtPnNldE51bWJlcigiZGV2aWNlU2NhbGVGYWN0b3IiLCBtX3BhZ2UuZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmVzZXREYXRhLT5zZXRSZWFsKCJkZXZpY2VTY2FsZUZh
Y3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICByZXNldERhdGEtPnNldE9i
amVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkpOwog
ICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxkT2JqZWN0
Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5KCJyZXNl
dCIsIHJlc2V0RGF0YS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggYzE0ODdhMDk3MTMyNjc2MTAyYzI2NGJk
ZDMxYTc3MGNkYmY2NzE4My4uOGYzOTdkNzIxMDFiMTEzZDE4ODgyZmIwYWUwMjJhMDgxZTZhOGZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpz
dG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHZvaWQgSW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OnJlcGxheVRvUG9zaXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcG9zaXRpb25PYmplY3QsIGJvb2wgZmFzdFJlcGxh
eSkKIHsKICAgICBSZXBsYXlQb3NpdGlvbiBwb3NpdGlvbjsKLSAgICBpZiAoIXBvc2l0aW9uT2Jq
ZWN0LT5nZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJzZWdtZW50T2Zmc2V0IiksICZwb3NpdGlvbi5z
ZWdtZW50T2Zmc2V0KSkgeworICAgIGlmICghcG9zaXRpb25PYmplY3QtPmdldEludGVncmFsKEFT
Q0lJTGl0ZXJhbCgic2VnbWVudE9mZnNldCIpLCAmcG9zaXRpb24uc2VnbWVudE9mZnNldCkpIHsK
ICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZG4ndCBkZWNvZGUgUmVw
bGF5UG9zaXRpb24gc2VnbWVudCBvZmZzZXQgcHJvdmlkZWQgdG8gUmVwbGF5QWdlbnQucmVwbGF5
VG9Qb3NpdGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghcG9zaXRp
b25PYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImlucHV0T2Zmc2V0IiksICZwb3NpdGlv
bi5pbnB1dE9mZnNldCkpIHsKKyAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ3JhbChB
U0NJSUxpdGVyYWwoImlucHV0T2Zmc2V0IiksICZwb3NpdGlvbi5pbnB1dE9mZnNldCkpIHsKICAg
ICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZG4ndCBkZWNvZGUgUmVwbGF5
UG9zaXRpb24gaW5wdXQgb2Zmc2V0IHByb3ZpZGVkIHRvIFJlcGxheUFnZW50LnJlcGxheVRvUG9z
aXRpb24uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCA0MTgzYjk0MWZhMDA0NmYwYzViMGQy
NzI3ZmVhOTZkYTQzZjFjZjgxLi42NDUxOWFmNTVhNTQzNmRjZWZjMTEwNzFiY2Q5MjhhYzQwZWE0
ODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1
ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKLSAgICAgICAgaWYgKCFvcmRpbmFsVmFsdWUgfHwg
IW9yZGluYWxWYWx1ZS0+YXNOdW1iZXIoJm1fb3JkaW5hbCkpCisgICAgICAgIGlmICghb3JkaW5h
bFZhbHVlIHx8ICFvcmRpbmFsVmFsdWUtPmFzSW50ZWdyYWwoJm1fb3JkaW5hbCkpCiAgICAgICAg
ICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGJjNDk2ZDAzMWFh
MTI3N2M0MTdlNzMxZjE3MDVkYmI4MGVlY2NmMjkuLjE3MWYyZWUyNDQ3YmRjOTVjNTk0MTM0YTll
YTFlNDk4NTcwZmY1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCh1bnNpZ25lZCBlbmRMaW5lKQogewogICAgIGlm
ICghbV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgVGltZWxpbmVSZWNv
cmRFbnRyeSYgZW50cnkgPSBtX3JlY29yZFN0YWNrLmxhc3QoKTsKLSAgICAgICAgZW50cnkuZGF0
YS0+c2V0TnVtYmVyKCJlbmRMaW5lIiwgZW5kTGluZSk7CisgICAgICAgIGVudHJ5LmRhdGEtPnNl
dEludGVncmFsKCJlbmRMaW5lIiwgZW5kTGluZSk7CiAgICAgICAgIGRpZENvbXBsZXRlQ3VycmVu
dFJlY29yZChUaW1lbGluZVJlY29yZFR5cGU6OlBhcnNlSFRNTCk7CiAgICAgfQogfQpAQCAtNjcw
LDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVSZWNv
cmRFbnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlCiB7CiAgICAgZW50cnkucmVjb3Jk
LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJkYXRhIiksIGVudHJ5LmRhdGEpOwogICAgIGVudHJ5
LnJlY29yZC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjaGlsZHJlbiIpLCBlbnRyeS5jaGlsZHJl
bik7Ci0gICAgZW50cnkucmVjb3JkLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJlbmRUaW1lIiks
IHRpbWVzdGFtcCgpKTsKKyAgICBlbnRyeS5yZWNvcmQtPnNldFJlYWwoQVNDSUlMaXRlcmFsKCJl
bmRUaW1lIiksIHRpbWVzdGFtcCgpKTsKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKGVudHJ5LnJl
Y29yZCwgZW50cnkudHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggZDQ1OWRmYzk0MWFlMDE2N2Q4ODFkMzU4
NmFkOWY5YWEwYTBmNjVjNy4uNTU0NDQxYTBjMGI1YmVlODE3NDRmNDMzOThiYjllMzg3MjcyYjc4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1Jl
Y29yZChkb3VibGUgc3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICByZWNvcmQtPnNldE51bWJlcigic3RhcnRUaW1lIiwgc3RhcnRUaW1lKTsKKyAgICByZWNv
cmQtPnNldFJlYWwoInN0YXJ0VGltZSIsIHN0YXJ0VGltZSk7CiAKICAgICBpZiAobWF4Q2FsbFN0
YWNrRGVwdGgpIHsKICAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0
ZSgpLCBtYXhDYWxsU3RhY2tEZXB0aCk7CkBAIC02OSw3ICs2OSw3IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQo
ZG91YmxlIHN0CiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmlu
ZyYgdGhyZWFkTmFtZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlY29yZC0+c2V0TnVtYmVyKCJzdGFydFRp
bWUiLCBzdGFydFRpbWUpOworICAgIHJlY29yZC0+c2V0UmVhbCgic3RhcnRUaW1lIiwgc3RhcnRU
aW1lKTsKICAgICByZWNvcmQtPnNldFN0cmluZygidGhyZWFkIiwgdGhyZWFkTmFtZSk7CiAgICAg
cmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tncm91bmRS
ZWNvcmQoZG91YmxlCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVHQ0V2ZW50RGF0YShjb25zdCBzaXplX3QgdXNlZEhlYXBTaXplRGVsdGEp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ1c2VkSGVhcFNpemVEZWx0YSIsIHVzZWRI
ZWFwU2l6ZURlbHRhKTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgidXNlZEhlYXBTaXplRGVsdGEi
LCB1c2VkSGVhcFNpemVEZWx0YSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCkBA
IC04NSw3ICs4NSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRh
LT5zZXRTdHJpbmcoInNjcmlwdE5hbWUiLCBzY3JpcHROYW1lKTsKLSAgICBkYXRhLT5zZXROdW1i
ZXIoInNjcmlwdExpbmUiLCBzY3JpcHRMaW5lKTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgic2Ny
aXB0TGluZSIsIHNjcmlwdExpbmUpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApA
QCAtOTksOCArOTksOCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29ucwogUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRh
KGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgaW50IGhpdENvdW50KQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInByb2JlSWQiKSwgYWN0aW9u
LmlkZW50aWZpZXIpOwotICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImhpdENvdW50
IiksIGhpdENvdW50KTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoInByb2Jl
SWQiKSwgYWN0aW9uLmlkZW50aWZpZXIpOworICAgIGRhdGEtPnNldEludGVncmFsKEFTQ0lJTGl0
ZXJhbCgiaGl0Q291bnQiKSwgaGl0Q291bnQpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsK
IH0KIApAQCAtMTE0LDE1ICsxMTQsMTUgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QKIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNUaW1lckRhdGEoaW50IHRpbWVySWQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ0
aW1lcklkIiwgdGltZXJJZCk7CisgICAgZGF0YS0+c2V0SW50ZWdyYWwoInRpbWVySWQiLCB0aW1l
cklkKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFsbERhdGEo
aW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ZGF0YS0+c2V0TnVtYmVyKCJ0aW1lcklkIiwgdGltZXJJZCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVy
KCJ0aW1lb3V0IiwgdGltZW91dCk7CisgICAgZGF0YS0+c2V0SW50ZWdyYWwoInRpbWVySWQiLCB0
aW1lcklkKTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgidGltZW91dCIsIHRpbWVvdXQpOwogICAg
IGRhdGEtPnNldEJvb2xlYW4oInNpbmdsZVNob3QiLCBzaW5nbGVTaG90KTsKICAgICByZXR1cm4g
ZGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5n
ZURhdGEKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGF0
YS0+c2V0TnVtYmVyKCJyZWFkeVN0YXRlIiwgcmVhZHlTdGF0ZSk7CisgICAgZGF0YS0+c2V0SW50
ZWdyYWwoInJlYWR5U3RhdGUiLCByZWFkeVN0YXRlKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNl
KCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29ucwogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBkYXRhLT5zZXROdW1i
ZXIoImxpbmVOdW1iZXIiLCBsaW5lTnVtYmVyKTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgibGlu
ZU51bWJlciIsIGxpbmVOdW1iZXIpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApA
QCAtMTc3LDcgKzE3Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0SWQiLCByZXF1ZXN0SWQpOwotICAgIGRhdGEtPnNldE51
bWJlcigic3RhdHVzQ29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIGRhdGEt
PnNldEludGVncmFsKCJzdGF0dXNDb2RlIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAg
ICAgZGF0YS0+c2V0U3RyaW5nKCJtaW1lVHlwZSIsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAg
IHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KQEAgLTE4OCw3ICsxODgsNyBAQCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNvdXJjZUZp
bmlzaERhdGEoY29ucwogICAgIGRhdGEtPnNldFN0cmluZygicmVxdWVzdElkIiwgcmVxdWVzdElk
KTsKICAgICBkYXRhLT5zZXRCb29sZWFuKCJkaWRGYWlsIiwgZGlkRmFpbCk7CiAgICAgaWYgKGZp
bmlzaFRpbWUpCi0gICAgICAgIGRhdGEtPnNldE51bWJlcigibmV0d29ya1RpbWUiLCBmaW5pc2hU
aW1lKTsKKyAgICAgICAgZGF0YS0+c2V0UmVhbCgibmV0d29ya1RpbWUiLCBmaW5pc2hUaW1lKTsK
ICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKQEAgLTE5NiwxNSArMTk2LDE1IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJl
Y2VpdmVSZXNvdXJjZURhdGEoY29uCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0
YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1
ZXN0SWQiLCByZXF1ZXN0SWQpOwotICAgIGRhdGEtPnNldE51bWJlcigiZW5jb2RlZERhdGFMZW5n
dGgiLCBsZW5ndGgpOworICAgIGRhdGEtPnNldEludGVncmFsKCJlbmNvZGVkRGF0YUxlbmd0aCIs
IGxlbmd0aCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVMYXlvdXREYXRhKHVu
c2lnbmVkIGRpcnR5T2JqZWN0cywgdW5zaWduZWQgdG90YWxPYmplY3RzLCBib29sIHBhcnRpYWxM
YXlvdXQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJkaXJ0eU9iamVjdHMiLCBkaXJ0
eU9iamVjdHMpOwotICAgIGRhdGEtPnNldE51bWJlcigidG90YWxPYmplY3RzIiwgdG90YWxPYmpl
Y3RzKTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgiZGlydHlPYmplY3RzIiwgZGlydHlPYmplY3Rz
KTsKKyAgICBkYXRhLT5zZXRJbnRlZ3JhbCgidG90YWxPYmplY3RzIiwgdG90YWxPYmplY3RzKTsK
ICAgICBkYXRhLT5zZXRCb29sZWFuKCJwYXJ0aWFsTGF5b3V0IiwgcGFydGlhbExheW91dCk7CiAg
ICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQpAQCAtMjMzLDI4ICsyMzMsMjggQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlTWFya0Rh
dGEoYm9vbCBpc01haW5GcmEKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQgc3RhcnRMaW5lKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcigic3RhcnRMaW5lIiwgc3RhcnRMaW5lKTsKKyAgICBk
YXRhLT5zZXRJbnRlZ3JhbCgic3RhcnRMaW5lIiwgc3RhcnRMaW5lKTsKICAgICByZXR1cm4gZGF0
YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUFuaW1hdGlvbkZyYW1lRGF0YShpbnQgY2FsbGJhY2tJZCkKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoImlkIiwgY2FsbGJhY2tJZCk7CisgICAgZGF0YS0+
c2V0SW50ZWdyYWwoImlkIiwgY2FsbGJhY2tJZCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgp
OwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlUXVhZChjb25z
dCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihxdWFkLnAx
KCkueCgpKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihxdWFkLnAxKCkueSgpKTsKLSAgICBhcnJh
eS0+cHVzaE51bWJlcihxdWFkLnAyKCkueCgpKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihxdWFk
LnAyKCkueSgpKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihxdWFkLnAzKCkueCgpKTsKLSAgICBh
cnJheS0+cHVzaE51bWJlcihxdWFkLnAzKCkueSgpKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihx
dWFkLnA0KCkueCgpKTsKLSAgICBhcnJheS0+cHVzaE51bWJlcihxdWFkLnA0KCkueSgpKTsKKyAg
ICBhcnJheS0+cHVzaFJlYWwocXVhZC5wMSgpLngoKSk7CisgICAgYXJyYXktPnB1c2hSZWFsKHF1
YWQucDEoKS55KCkpOworICAgIGFycmF5LT5wdXNoUmVhbChxdWFkLnAyKCkueCgpKTsKKyAgICBh
cnJheS0+cHVzaFJlYWwocXVhZC5wMigpLnkoKSk7CisgICAgYXJyYXktPnB1c2hSZWFsKHF1YWQu
cDMoKS54KCkpOworICAgIGFycmF5LT5wdXNoUmVhbChxdWFkLnAzKCkueSgpKTsKKyAgICBhcnJh
eS0+cHVzaFJlYWwocXVhZC5wNCgpLngoKSk7CisgICAgYXJyYXktPnB1c2hSZWFsKHF1YWQucDQo
KS55KCkpOwogICAgIHJldHVybiBhcnJheS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAppbmRleCA2ZTFmNjU2YTBi
MDMzMzdiNjVjMTQ1ZGViMjg5YmI3MWE3NTM0YjVlLi43NjhlMGEwMWEzZDQyZjIxZGI5MWMxMGRi
YmYxMTkyZmQ5ZmJiMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oCkBAIC0xMTEsNyArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICAgICAgewogICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0TnVt
YmVyKCJpZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBkYXRhLT5zZXRJbnRl
Z3JhbCgiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZGF0YS0+c2V0U3Ry
aW5nKCJ1cmwiLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFwcm90b2NvbC5pc051
bGwoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5zZXRTdHJpbmcoIndlYlNvY2tldFByb3RvY29s
IiwgcHJvdG9jb2wpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
ZGF0YSA9IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAg
IGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOworICAgICAgICAgICAg
ZGF0YS0+c2V0SW50ZWdyYWwoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTRiOGE2MzMxNDAwNzM2
Nzg5ZjEzODA3YmNlODZjNTgxNGMyNmMxOC4uYWM0ODVjNDJlYWNhMzUyZjYxZDc1NDQ0M2E1ZDEx
MmYxNzYwYTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcApAQCAtMTY2MSw3ICsxNjYxLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFMKICAg
ICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZS0+bGluZU51bWJlcigpKSB7CiAgICAgICAgIFVS
TCBzb3VyY2UgPSBVUkwoVVJMKCksIGNhbGxGcmFtZS0+c291cmNlVVJMKCkpOwogICAgICAgICBj
c3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZS1maWxlIiksIHN0cmlwVVJM
Rm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSkpOwotICAgICAgICBjc3BSZXBvcnQtPnNl
dE51bWJlcihBU0NJSUxpdGVyYWwoImxpbmUtbnVtYmVyIiksIGNhbGxGcmFtZS0+bGluZU51bWJl
cigpKTsKKyAgICAgICAgY3NwUmVwb3J0LT5zZXRJbnRlZ3JhbChBU0NJSUxpdGVyYWwoImxpbmUt
bnVtYmVyIiksIGNhbGxGcmFtZS0+bGluZU51bWJlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZXBvcnRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237908</attachid>
            <date>2014-09-10 15:22:30 -0700</date>
            <delta_ts>2014-09-11 19:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136606-20140910152213.patch</filename>
            <type>text/plain</type>
            <size>81271</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YmM1NTcxNGZmZjY1MzhjMDRlNDU0OWMzOTdjNmZjNzc0MTU5NWExLi5hYTRkYjI2OThhZGIwYmM4
MjE4ZDc4ZTkxOTk1NGU2OWU1Yzk1YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGRvdWJsZSBhbmQg
aW50ZWdlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3cgaXQncyByZWFsbHkgZWFz
eSB0byBtaXggdXAgZG91YmxlcyBhbmQgaW50ZWdlcnMgd2hlbiBzZXJpYWxpemluZyBvciBkZXNl
cmlhbGl6aW5nCisgICAgICAgIHZhbHVlcyBmb3IgdGhlIGluc3BlY3RvciBwcm90b2NvbC4gVGhp
cyBwYXRjaCBkaXNhbWJpZ3VhdGVzIHNldHRpbmcvZ2V0dGluZyBkb3VibGVzIGFuZCBpbnRlZ2Vy
cworICAgICAgICBzbyB0aGF0IGl0IGlzIGNsZWFyZXIgYXMgdG8gd2hpY2ggdHlwZSBpcyBpbnRl
bmRlZC4KKworICAgICAgICBBIG5ldyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSBpcyBhZGRlZCBmb3Ig
SW50ZWdlciB0eXBlcywgYW5kIHRoZSBOdW1iZXIgdHlwZSBpcyByZW5hbWVkIHRvIERvdWJsZS4K
KyAgICAgICAgVGhlIGV4aXN0aW5nIGNhbGxzaXRlcyBmb3IgYXNOdW1iZXIvZ2V0TnVtYmVyL3Nl
dE51bWJlciBoYXZlIGJlZW4gZml4ZWQuCisKKyAgICAgICAgQWRkcmVzcyB2YXJpb3VzIGludGVn
cmF0aW9uIHBvaW50cyB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IHR5cGUgdGFnIGlzIGFzc2lnbmVk
IHRvIEluc3BlY3RvclZhbHVlcy4KKworICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6IE1ha2UgYW4gSW50
ZWdlciBpZiB0aGUgSlNWYWx1ZSBpcyBJbnQ1MiBvciBzbWFsbGVyLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNJbnRlZ2Vy
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJs
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNJbnQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOiBSZW1v
dmUgdGhlIHNwZWNpYWwgY2FzZSBmb3IgY2hlY2tpbmcgaW50IHR5cGUgdGFncy4KKyAgICAgICAg
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5SXRlbUhlbHBlcjxpbnQ+OjpUcmFpdHM6OnB1c2hS
YXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXlJdGVtSGVscGVyPGRvdWJs
ZT46OlRyYWl0czo6cHVzaFJhdyk6CisgICAgICAgIChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5k
aW5nVHJhaXRzPGludD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDogQWxsb3cgaW50ZWdlcnMgYW5k
IGRvdWJsZXMgdG8gYmUgY29udmVydGlibGUgdXNpbmcgYXNJbnRlZ2VyL2FzRG91YmxlLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNEb3VibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNEb3VibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYXNpY1ZhbHVlOjp3cml0ZUpTT04pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZTo6YXNOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpz
ZXRJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50
ZWdlcik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaERvdWJs
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldE51bWJlcik6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaElu
dCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVz
aE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRPYmplY3RGb3JCcmVh
a3BvaW50Q29va2llKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2wpOgorICAgICAgICAoSW5zcGVjdG9yOjpw
YXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5OiBVcGRhdGUgZW1pdHRlZCBjb2Rl
IGFuZCByZWJhc2VsaW5lIHRlc3QgcmVzdWx0cy4KKyAgICAgICAgKEdlbmVyYXRvci5rZXllZF9n
ZXRfbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKEdlbmVyYXRvci5rZXllZF9zZXRfbWV0aG9k
X2Zvcl90eXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVu
dHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRp
bWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4pOgorICAgICAg
ICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxmbG9hdD4pOgorICAgICAgICAoSlNDOjpF
bmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQzMl90Pik6CisgICAgICAgIChKU0M6OkVuY29kZWRW
YWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpj
b252ZXJ0VG88dWludDMyX3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpjb252ZXJ0
VG88dWludDY0X3Q+KToKKwogMjAxNC0wOS0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHRoZSAidW5yZWFjaGFibGUtY29kZSIgd2Fy
bmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGJmNmI2ZTQwNWY1ZTdkMGQ2OGM1NmFjYjE2MGQwY2QyZGEwNzA0
N2UuLjg1N2JlNWJhYWQ0NDk5MzkxMTJjZTk2MTllYWM5NjQxMjJkYjA0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NyBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGludGVn
cmFsIGFuZCByZWFsIG51bWJlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3RvY29sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2xpZW50
cyBvZiBJbnNwZWN0b3JWYWx1ZSB0byBkaXNhbWJpZ3VhdGUgaW50ZWdlciBhbmQgZG91YmxlIHBy
aW1pdGl2ZSB0eXBlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5n
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZv
clJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZFBhdGhDb21tYW5kQW5kUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OnJlcGxheVRvUG9zaXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZVJlY29yZEVu
dHJ5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tn
cm91bmRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVHQ0V2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0YWxsRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVhIUlJlYWR5
U3RhdGVDaGFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVj
ZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUxheW91dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVF1YWQpOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2Vi
U29ja2V0Q3JlYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdGlvbik6CisKIDIwMTQtMDktMDkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1iaXRyYXRlLmh0bWwgZmFpbGluZyBh
ZnRlciByMTczMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAppbmRleCAwMDRmZjI0NmI0NjcxYTYwYzZhZTZiYWZmNDg1OGY3MWM0ZjczZmJiLi5k
MDQ2YWIyYTVjYjJhYzE5Zjk4NTc2MzI1Zjg5MTJiNDkwZDQ4YWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTExNCw4ICsxMTQsMTAg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1YKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVl
OjpudWxsKCk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzQm9vbGVhbigpKTsKLSAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkKKyAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc0RvdWJs
ZSgpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFz
TnVtYmVyKCkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmIHZhbHVlLmlzTWFjaGluZUlu
dCgpKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHN0YXRpY19j
YXN0PGludD4odmFsdWUuYXNNYWNoaW5lSW50KCkpKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmco
KSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlLmdldFN0cmlu
ZyhzY3JpcHRTdGF0ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNTlhMGVkZWVhYTBjMjkw
ZTU5YzBjYjNlYWI0ZjVhZTViZDBkOTczNi4uYWRjY2NmYzY1MWVmNjBhYzgxMzU4OTM3OTg0NGZk
ZDBlMmU1M2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQo
Y29uc3QgU3RyaW5nJiBvYgogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkT2JqZWN0
SWQgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG9iamVjdElkKTsKICAgICBpZiAocGFyc2Vk
T2JqZWN0SWQgJiYgcGFyc2VkT2JqZWN0SWQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlw
ZTo6T2JqZWN0KSB7CiAgICAgICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0gICAgICAg
IGJvb2wgc3VjY2VzcyA9IHBhcnNlZE9iamVjdElkLT5hc09iamVjdCgpLT5nZXROdW1iZXIoQVND
SUlMaXRlcmFsKCJpbmplY3RlZFNjcmlwdElkIiksICZpbmplY3RlZFNjcmlwdElkKTsKKyAgICAg
ICAgYm9vbCBzdWNjZXNzID0gcGFyc2VkT2JqZWN0SWQtPmFzT2JqZWN0KCktPmdldEludGVnZXIo
QVNDSUlMaXRlcmFsKCJpbmplY3RlZFNjcmlwdElkIiksICZpbmplY3RlZFNjcmlwdElkKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3Jp
cHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAKaW5kZXggYmIzZWM4MjIxZGQzYmQwOWU4NTg3ZDE2YjA4NjdkNzI5NDBhYWY4YS4uYWYxYjhl
NTNkNTJkODI4MjcxZjNmNjdiZDY4OWIxMzM4YTljNjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIAogICAgIGxvbmcgY2Fs
bElkID0gMDsKLSAgICBpZiAoIWNhbGxJZFZhbHVlLT5hc051bWJlcigmY2FsbElkKSkgewotICAg
ICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIEludmFsaWRSZXF1ZXN0LCBBU0NJSUxp
dGVyYWwoIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBudW1iZXIiKSk7CisgICAg
aWYgKCFjYWxsSWRWYWx1ZS0+YXNJbnRlZ2VyKCZjYWxsSWQpKSB7CisgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IobnVsbHB0ciwgSW52YWxpZFJlcXVlc3QsIEFTQ0lJTGl0ZXJhbCgiVGhlIHR5
cGUgb2YgJ2lkJyBwcm9wZXJ0eSBtdXN0IGJlIGludGVnZXIiKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yTwogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVy
YWwoInJlc3VsdCIpLCByZXN1bHQpOwotICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCBjYWxsSWQpOwogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7CiB9CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQwog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlcnJvciA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXJyb3ItPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKKyAgICBlcnJvci0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKICAgICBlcnJv
ci0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWVzc2FnZSIpLCBlcnJvck1lc3NhZ2UpOwogICAg
IGlmIChkYXRhKQogICAgICAgICBlcnJvci0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJkYXRhIiks
IGRhdGEpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgbWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgZXJyb3Iu
cmVsZWFzZSgpKTsKICAgICBpZiAoY2FsbElkKQotICAgICAgICBtZXNzYWdlLT5zZXROdW1iZXIo
QVNDSUlMaXRlcmFsKCJpZCIpLCAqY2FsbElkKTsKKyAgICAgICAgbWVzc2FnZS0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImlkIiksICpjYWxsSWQpOwogICAgIGVsc2UKICAgICAgICAgbWVzc2Fn
ZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJpZCIpLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsK
IApAQCAtMjIxLDE3ICsyMjEsMTcgQEAgc3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0
eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG4KIH0KIAogc3Ry
dWN0IEFzTWV0aG9kQnJpZGdlcyB7Ci0gICAgc3RhdGljIGJvb2wgYXNJbnQoSW5zcGVjdG9yVmFs
dWUqIHZhbHVlLCBpbnQqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBhc0RvdWJsZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGRvdWJs
ZSogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNOdW1iZXIob3V0cHV0KTsgfQorICAgIHN0YXRp
YyBib29sIGFzSW50ZWdlcihJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGludCogb3V0cHV0KSB7IHJl
dHVybiB2YWx1ZS0+YXNJbnRlZ2VyKG91dHB1dCk7IH0KKyAgICBzdGF0aWMgYm9vbCBhc0RvdWJs
ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGRvdWJsZSogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+
YXNEb3VibGUob3V0cHV0KTsgfQogICAgIHN0YXRpYyBib29sIGFzU3RyaW5nKEluc3BlY3RvclZh
bHVlKiB2YWx1ZSwgU3RyaW5nKiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc1N0cmluZyhvdXRw
dXQpOyB9CiAgICAgc3RhdGljIGJvb2wgYXNCb29sZWFuKEluc3BlY3RvclZhbHVlKiB2YWx1ZSwg
Ym9vbCogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKG91dHB1dCk7IH0KICAgICBz
dGF0aWMgYm9vbCBhc09iamVjdChJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc09iamVjdChvdXRwdXQpOyB9CiAg
ICAgc3RhdGljIGJvb2wgYXNBcnJheShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzQXJyYXkob3V0cHV0KTsgfQog
fTsKIAotaW50IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnQoSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoraW50IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRJbnRlZ2VyKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKIHsKLSAg
ICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxpbnQsIGludCwgaW50PihvYmplY3QsIG5hbWUsIHZh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRnZXM6OmFzSW50LCAiTnVt
YmVyIik7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBpbnQsIGludD4ob2JqZWN0
LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjph
c0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKIGRvdWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAwYTU1YTFjOTZhZTQ1OTgxY2NmOGY0MzQxODAxZWZh
NzkzOWVmYjdlLi4yOTU4YTRkY2JhNmM4ZjZhNWE4M2ZkMzY4NzM0OWNlYmE4YzJhZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBjb25zdDsKICAgICB2b2lkIHJlcG9y
dFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBk
YXRhKSBjb25zdDsKIAotICAgIHN0YXRpYyBpbnQgZ2V0SW50KEluc3BlY3Rvck9iamVjdCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3Rv
Y29sRXJyb3JzKTsKKyAgICBzdGF0aWMgaW50IGdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJv
dG9jb2xFcnJvcnMpOwogICAgIHN0YXRpYyBkb3VibGUgZ2V0RG91YmxlKEluc3BlY3Rvck9iamVj
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkq
IHByb3RvY29sRXJyb3JzKTsKICAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZyhJbnNwZWN0b3JP
YmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFy
cmF5KiBwcm90b2NvbEVycm9ycyk7CiAgICAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbihJbnNwZWN0
b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rv
ckFycmF5KiBwcm90b2NvbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCmluZGV4IDBlOTJjZTZkOWZh
Y2Q4NGU5YTE4ZGJmNjVmNDA2NjA3MGQzZDkwNjcuLjA2NDdlY2JhNmQwZmYwYjBiYjQwZjE4MjVi
ZTczZTdmNjExOTYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgc3Ry
dWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKICAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKICAg
ICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOworICAgICAgICAgICAg
YXJyYXktPnB1c2hJbnRlZ3JhbCh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogfTsKQEAgLTEz
MCw3ICsxMzAsNyBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4gewogICAgIHN0cnVj
dCBUcmFpdHMgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBh
cnJheSwgZG91YmxlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaE51
bWJlcih2YWx1ZSk7CisgICAgICAgICAgICBhcnJheS0+cHVzaFJlYWwodmFsdWUpOwogICAgICAg
ICB9CiAgICAgfTsKIH07CkBAIC0yNDgsMjEgKzI0OCw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yQXJyYXk+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFp
dHM8CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvck9iamVjdD4gOiBw
dWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6T2JqZWN0
PiB7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBwdWJsaWMg
UHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6U3RyaW5nPiB7IH07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGJvb2w+IDogcHVibGljIFByaW1pdGl2
ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKLXRlbXBs
YXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5k
aW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpOdW1iZXI+IHsgfTsKLQotLy8gRklYTUU6
IEFkZCBhbiBJbnNwZWN0b3I6OlR5cGUgdGFnIGZvciBpbnQgc28gd2UgY2FuIHJlbW92ZSB0aGlz
IHNwZWNpYWwgY2FzZS4KLXRlbXBsYXRlPD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4gewot
I2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVj
dGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBkb3VibGUgdjsK
LSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50Pih2KSkgPT0gdik7Ci0gICAgfQotI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQKLX07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJs
ZT4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6
RG91YmxlPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4gOiBwdWJs
aWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6SW50ZWdlcj4g
eyB9OwogCiB9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggZTJkMDM1ZGMwOWEx
YmJkODVmMTdhYTAxMDhlMjAxODYxNWY5YTJkNS4uYjIwMzk2MTZiNTYzYzIzMWJmZTZmZmIxYzg5
ZjRhNTBkNTQ0NDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNDg1LDQyICs0ODUsNDIgQEAgYm9vbCBJbnNwZWN0
b3JWYWx1ZTo6YXNCb29sZWFuKGJvb2wqKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKikgY29uc3QKK2Jvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzRG91YmxlKGRvdWJsZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihmbG9hdCopIGNvbnN0Citib29sIElu
c3BlY3RvclZhbHVlOjphc0RvdWJsZShmbG9hdCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihpbnQqKSBjb25zdAorYm9vbCBJ
bnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKGludCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcih1bnNpZ25lZCopIGNvbnN0Citi
b29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIodW5zaWduZWQqKSBjb25zdAogewogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyopIGNv
bnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIobG9uZyopIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihsb25nIGxv
bmcqKSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKGxvbmcgbG9uZyopIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc051
bWJlcih1bnNpZ25lZCBsb25nKikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdl
cih1bnNpZ25lZCBsb25nKikgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyopIGNvbnN0Citib29s
IEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nKikgY29uc3QKIHsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01OTEsNjUgKzU5MSw2NSBAQCBib29sIEluc3BlY3Rv
ckJhc2ljVmFsdWU6OmFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKiBvdXRw
dXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzRG91YmxlKGRvdWJsZSogb3V0
cHV0KSBjb25zdAogewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVtYmVyKQorICAgIGlmICh0
eXBlKCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgKm91dHB1
dCA9IG1fZG91YmxlVmFsdWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9y
QmFzaWNWYWx1ZTo6YXNOdW1iZXIoZmxvYXQqIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9y
QmFzaWNWYWx1ZTo6YXNEb3VibGUoZmxvYXQqIG91dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlw
ZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9k
b3VibGVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6YXNOdW1iZXIoaW50KiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFs
dWU6OmFzSW50ZWdlcihpbnQqIG91dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgpICE9IFR5
cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlwZSgpICE9
IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRwdXQgPSBzdGF0
aWNfY2FzdDxpbnQ+KG1fZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0Citi
b29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50ZWdlcih1bnNpZ25lZCogb3V0cHV0KSBjb25z
dAogewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVtYmVyKQorICAgIGlmICh0eXBlKCkgIT0g
VHlwZTo6SW50ZWdlciAmJiB0eXBlKCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RvdWJsZVZhbHVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051
bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50
ZWdlcihsb25nKiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpOdW1i
ZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpE
b3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8
bG9uZz4obV9kb3VibGVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0Citib29sIElu
c3BlY3RvckJhc2ljVmFsdWU6OmFzSW50ZWdlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3QKIHsK
LSAgICBpZiAodHlwZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6
OkludGVnZXIgJiYgdHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fZG91YmxlVmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVy
KHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
YXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgp
ICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlw
ZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRwdXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2RvdWJsZVZhbHVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBs
b25nIGxvbmcqIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNJbnRl
Z2VyKHVuc2lnbmVkIGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdAogewotICAgIGlmICh0eXBlKCkg
IT0gVHlwZTo6TnVtYmVyKQorICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6SW50ZWdlciAmJiB0eXBl
KCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgKm91dHB1dCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9kb3VibGVWYWx1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC02NTcsMTMgKzY1NywxMyBAQCBib29sIEluc3BlY3RvckJhc2ljVmFsdWU6
OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdAogCiB2b2lkIEluc3Bl
Y3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlOjpCb29sZWFuIHx8IHR5cGUoKSA9PSBUeXBlOjpO
dW1iZXIpOworICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6Qm9vbGVhbiB8fCB0eXBlKCkgPT0g
VHlwZTo6RG91YmxlIHx8IHR5cGUoKSA9PSBUeXBlOjpJbnRlZ2VyKTsKICAgICBpZiAodHlwZSgp
ID09IFR5cGU6OkJvb2xlYW4pIHsKICAgICAgICAgaWYgKG1fYm9vbFZhbHVlKQogICAgICAgICAg
ICAgb3V0cHV0LT5hcHBlbmQodHJ1ZVN0cmluZywgNCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG91dHB1dC0+YXBwZW5kKGZhbHNlU3RyaW5nLCA1KTsKLSAgICB9IGVsc2UgaWYgKHR5cGUo
KSA9PSBUeXBlOjpOdW1iZXIpIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUoKSA9PSBUeXBlOjpEb3Vi
bGUgfHwgdHlwZSgpID09IFR5cGU6OkludGVnZXIpIHsKICAgICAgICAgTnVtYmVyVG9MU3RyaW5n
QnVmZmVyIGJ1ZmZlcjsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1fZG91YmxlVmFsdWUp
KSB7CiAgICAgICAgICAgICBvdXRwdXQtPmFwcGVuZChudWxsU3RyaW5nLCA0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IDk3
Y2I4OGJmMWNjMzllMTZjYzc1OTE5ZTNhOGYyZTgwYjU5NzM2ZjAuLmFjMmY4NGRhZDhjNTg4MTY3
NTFkYTk0NzViOGEyZGMwMTM0N2E1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtNTgsNyArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgTnVsbCA9IDAsCiAgICAgICAgIEJvb2xlYW4s
Ci0gICAgICAgIE51bWJlciwKKyAgICAgICAgRG91YmxlLAorICAgICAgICBJbnRlZ2VyLAogICAg
ICAgICBTdHJpbmcsCiAgICAgICAgIE9iamVjdCwKICAgICAgICAgQXJyYXkKQEAgLTY5LDE0ICs3
MCwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gVHlwZTo6TnVsbDsgfQogCiAgICAgdmlydHVhbCBib29sIGFzQm9vbGVhbihib29sKiBvdXRw
dXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihkb3VibGUqIG91dHB1dCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGZsb2F0KiBvdXRwdXQpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcihpbnQqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBh
c051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihs
b25nIGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2ln
bmVkIGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2ln
bmVkIGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2Vy
KGludCogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVk
KiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc0ludGVnZXIobG9uZyogb3V0cHV0
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKGxvbmcgbG9uZyogb3V0cHV0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91
dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzRG91YmxlKGRvdWJsZSogb3V0cHV0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNEb3VibGUoZmxvYXQqIG91dHB1dCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGFzU3RyaW5nKFN0cmluZyogb3V0cHV0KSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgYXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBvdXRwdXQpOwogICAgIHZp
cnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KTsKQEAg
LTEwNCwxNCArMTA1LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JCYXNpY1ZhbHVlPiBjcmVhdGUoZG91YmxlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xl
YW4oYm9vbCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1i
ZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051
bWJlcihmbG9hdCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNO
dW1iZXIoaW50KiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051
bWJlcih1bnNpZ25lZCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgLy8gTnVtYmVycyBmcm9tIHRoZSBmcm9udGVuZCBhcmUgYWx3YXlzIHBh
cnNlZCBhcyBkb3VibGVzLCBzbyB3ZSBhbGxvdworICAgIC8vIGNsaWVudHMgdG8gY29udmVydCB0
byBpbnRlZ3JhbCB2YWx1ZXMgd2l0aCB0aGlzIGZ1bmN0aW9uLgorICAgIHZpcnR1YWwgYm9vbCBh
c0ludGVnZXIoaW50KiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBh
c0ludGVnZXIodW5zaWduZWQqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGFzSW50ZWdlcihsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBhc0ludGVnZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBhc0ludGVnZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgbG9uZyogb3V0cHV0
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNEb3VibGUoZG91YmxlKiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhc0RvdWJsZShmbG9hdCogb3V0
cHV0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5n
QnVpbGRlciogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTIxLDExICsxMjQsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgLCBtX2Jvb2xWYWx1ZSh2YWx1ZSkgeyB9CiAKICAgICBleHBsaWNp
dCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGludCB2YWx1ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JWYWx1
ZShUeXBlOjpOdW1iZXIpCisgICAgICAgIDogSW5zcGVjdG9yVmFsdWUoVHlwZTo6SW50ZWdlcikK
ICAgICAgICAgLCBtX2RvdWJsZVZhbHVlKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKSB7IH0K
IAogICAgIGV4cGxpY2l0IEluc3BlY3RvckJhc2ljVmFsdWUoZG91YmxlIHZhbHVlKQotICAgICAg
ICA6IEluc3BlY3RvclZhbHVlKFR5cGU6Ok51bWJlcikKKyAgICAgICAgOiBJbnNwZWN0b3JWYWx1
ZShUeXBlOjpEb3VibGUpCiAgICAgICAgICwgbV9kb3VibGVWYWx1ZSh2YWx1ZSkgeyB9CiAKICAg
ICB1bmlvbiB7CkBAIC0xNzEsOCArMTc0LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwg
Ym9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KSBvdmVycmlkZTsK
IAorICAgIC8vIEZJWE1FOiB1c2UgdGVtcGxhdGVzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGR1
cGxpY2F0ZWQgc2V0KigpIG1ldGhvZHMuCiAgICAgdm9pZCBzZXRCb29sZWFuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCk7Ci0gICAgdm9pZCBzZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBk
b3VibGUpOworICAgIHZvaWQgc2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUsIGludCk7Cisg
ICAgdm9pZCBzZXREb3VibGUoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUpOwogICAgIHZvaWQg
c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KTsK
ICAgICB2b2lkIHNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0QmFzZT4pOwpAQCAtMTgwLDE0ICsxODUsMjQgQEAgcHJvdGVjdGVkOgogCiAgICAg
aXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIGNvbnN0X2l0ZXJhdG9yIGZp
bmQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiB1c2UgdGVtcGxh
dGVzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGR1cGxpY2F0ZWQgZ2V0KigpIG1ldGhvZHMuCiAg
ICAgYm9vbCBnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0cHV0KSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIGdldE51bWJlcihjb25zdCBTdHJpbmcmIG5h
bWUsIFQqIG91dHB1dCkgY29uc3QKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIGdldERvdWJs
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFQqIG91dHB1dCkgY29uc3QKKyAgICB7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBnZXQobmFtZSk7CisgICAgICAgIGlmICghdmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB2YWx1ZS0+YXNE
b3VibGUob3V0cHV0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXRJbnRl
Z2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgVCogb3V0cHV0KSBjb25zdAogICAgIHsKICAgICAgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsKICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5h
c051bWJlcihvdXRwdXQpOworICAgICAgICByZXR1cm4gdmFsdWUtPmFzSW50ZWdlcihvdXRwdXQp
OwogICAgIH0KKwogICAgIGJvb2wgZ2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
KiBvdXRwdXQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRPYmpl
Y3QoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBnZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwpAQCAtMjE5LDcgKzIzNCw4
IEBAIHB1YmxpYzoKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdDsKIAog
ICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW47Ci0gICAgdXNpbmcgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJh
c2U6OnNldEludGVnZXI7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0RG91Ymxl
OwogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFN0cmluZzsKICAgICB1c2luZyBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZTsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpzZXRPYmplY3Q7CkBAIC0yMjcsNyArMjQzLDggQEAgcHVibGljOgogCiAgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZDsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNl
OjpnZXRCb29sZWFuOwotICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldE51bWJlcjsK
KyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRJbnRlZ2VyOworICAgIHVzaW5nIElu
c3BlY3Rvck9iamVjdEJhc2U6OmdldERvdWJsZTsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpnZXRTdHJpbmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0T2JqZWN0
OwogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5OwpAQCAtMjU3LDggKzI3
NCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBvdXRwdXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwdXNoQm9vbGVhbihib29s
KTsKLSAgICB2b2lkIHB1c2hJbnQoaW50KTsKLSAgICB2b2lkIHB1c2hOdW1iZXIoZG91YmxlKTsK
KyAgICB2b2lkIHB1c2hJbnRlZ3JhbChpbnQpOworICAgIHZvaWQgcHVzaFJlYWwoZG91YmxlKTsK
ICAgICB2b2lkIHB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwdXNoVmFsdWUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4pOwogICAgIHZvaWQgcHVzaE9iamVjdChQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4pOwpAQCAtMjg3LDggKzMwNCw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmFzQXJyYXk7CiAKICAgICB1c2luZyBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hCb29sZWFuOwotICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVz
aEludDsKLSAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hOdW1iZXI7CisgICAgdXNp
bmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50ZWdyYWw7CisgICAgdXNpbmcgSW5zcGVjdG9y
QXJyYXlCYXNlOjpwdXNoUmVhbDsKICAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hT
dHJpbmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoVmFsdWU7CiAgICAgdXNp
bmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0OwpAQCAtMzE2LDcgKzMzMywxMiBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuKGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCB2YWx1ZSkKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVl
OjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVlKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUsIGludCB2
YWx1ZSkKK3sKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
dmFsdWUpKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0RG91Ymxl
KGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVlKQogewogICAgIHNldFZhbHVlKG5hbWUs
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQpAQCAtMzUyLDEyICszNzQs
MTIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVhbihib29sIHZh
bHVlKQogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVl
KSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEludChpbnQgdmFs
dWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnRlZ3JhbChpbnQgdmFs
dWUpCiB7CiAgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFs
dWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyKGRv
dWJsZSB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFJlYWwoZG91
YmxlIHZhbHVlKQogewogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3Jl
YXRlKHZhbHVlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDNh
NTI4YWZhMmU0NTIwYjBlNDA0ZDg3NTZiNWRkMzBhYTI4ODNhM2IuLjBhZGUzNGU2MDMxZmMyMmNj
MTI0ODEyODQ2NDRlMjIxOTlhNDdmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0xNTIsOCArMTUyLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJgogewogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwo
InVybCIpLCB1cmwpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoImxpbmVOdW1iZXIiKSwgbGluZU51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0
TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uTnVtYmVyIiksIGNvbHVtbk51bWJlcik7CisgICAg
YnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwg
bGluZU51bWJlcik7CisgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVy
YWwoImNvbHVtbk51bWJlciIpLCBjb2x1bW5OdW1iZXIpOwogICAgIGJyZWFrcG9pbnRPYmplY3Qt
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImNvbmRpdGlvbiIpLCBjb25kaXRpb24pOwogICAgIGJy
ZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJpc1JlZ2V4IiksIGlzUmVn
ZXgpOwogICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJhdXRv
Q29udGludWUiKSwgYXV0b0NvbnRpbnVlKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3Ry
aW5nKiBlcnJvclN0cgogICAgICAgICAvLyBTcGVjaWZ5aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0
aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRlIHByb2JlIHNhbXBsZXMKICAgICAgICAg
Ly8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBsZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMg
YW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgogICAgICAgICBpbnQgaWRlbnRpZmllciA9IDA7
Ci0gICAgICAgIG9iamVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgJmlkZW50aWZp
ZXIpOworICAgICAgICBvYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCAmaWRl
bnRpZmllcik7CiAKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgICAgIG9iamVjdC0+Z2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiZGF0YSIpLCAmZGF0YSk7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbGkKIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGxvY2F0aW9uLCBKU0M6OlNvdXJjZUlE
KiBzb3VyY2VJRCwgdW5zaWduZWQqIGxpbmVOdW1iZXIsIHVuc2lnbmVkKiBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyOwotICAgIGlmICghbG9jYXRpb24tPmdldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjcmlwdElkIiksICZzY3JpcHRJRFN0cikgfHwgIWxvY2F0aW9uLT5n
ZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJsaW5lTnVtYmVyIiksIGxpbmVOdW1iZXIpKSB7CisgICAg
aWYgKCFsb2NhdGlvbi0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQiKSwgJnNjcmlw
dElEU3RyKSB8fCAhbG9jYXRpb24tPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJsaW5lTnVtYmVy
IiksIGxpbmVOdW1iZXIpKSB7CiAgICAgICAgICpzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsK
ICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCBhbmQgbGluZU51
bWJlciBhcmUgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5Niw3ICsy
OTYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgSW5zcGVjdG9yT2JqZWN0KiBsb2NhdGlvbiwgSgogCiAgICAgKnNvdXJjZUlEID0gc2NyaXB0
SURTdHIudG9JbnRQdHIoKTsKICAgICAqY29sdW1uTnVtYmVyID0gMDsKLSAgICBsb2NhdGlvbi0+
Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uTnVtYmVyIiksIGNvbHVtbk51bWJlcik7Cisg
ICAgbG9jYXRpb24tPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgY29s
dW1uTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjAxLDggKzYwMSw4IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBz
b3VyY2VJRCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkwsIHVy
bCwgaXNSZWdleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU2NyaXB0QnJlYWtw
b2ludCBicmVha3BvaW50OwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXROdW1iZXIoQVND
SUlMaXRlcmFsKCJsaW5lTnVtYmVyIiksICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAg
ICBicmVha3BvaW50T2JqZWN0LT5nZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIi
KSwgJmJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+
Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwgJmJyZWFrcG9pbnQubGluZU51
bWJlcik7CisgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OdW1iZXIiKSwgJmJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKICAgICAgICAgYnJl
YWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiY29uZGl0aW9uIiksICZicmVh
a3BvaW50LmNvbmRpdGlvbik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEJvb2xlYW4o
QVNDSUlMaXRlcmFsKCJhdXRvQ29udGludWUiKSwgJmJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsK
ICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcAppbmRleCBiNzZmNjBkZWUzOGU3NTBmMGQ3OWEwZjY4MmZiZDRmM2MyOWY2NzA5Li4z
MThmYzA4YWQwOGI5NTc3MmZjZWQwYWQyZWM5MTA5MWM0NWVjNTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKQEAgLTIyMSw5ICsyMjEsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5n
KiBlcgogICAgICAgICBpbnQgZGVzY3JpcHRvcjsKICAgICAgICAgU3RyaW5nIHNvdXJjZUlEQXNT
dHJpbmc7CiAgICAgICAgIGludCBkaXZvdDsKLSAgICAgICAgbG9jYXRpb24tPmdldE51bWJlcihB
U0NJSUxpdGVyYWwoInR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3IiKSwgJmRlc2NyaXB0b3IpOwor
ICAgICAgICBsb2NhdGlvbi0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3IiKSwgJmRlc2NyaXB0b3IpOwogICAgICAgICBsb2NhdGlvbi0+Z2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgic291cmNlSUQiKSwgJnNvdXJjZUlEQXNTdHJpbmcpOwotICAgICAgICBs
b2NhdGlvbi0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGl2b3QiKSwgJmRpdm90KTsKKyAgICAg
ICAgbG9jYXRpb24tPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkaXZvdCIpLCAmZGl2b3QpOwog
CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3Jp
cHRpb24+IHR5cGVEZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5
cGVEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGJvb2wgb2theTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvci5weQppbmRleCA2MjlmM2E4Yzc3ZGEzN2IxY2E3YTVlNTk5NDQ1NjJmOWIyMWFlZTc4
Li4yYTZlYjY3OTIzNDc2ODZiMTk3MGFhNDkzNzEzYmNhYTdkNTZjZTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3Iu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdG9yLnB5CkBAIC0yMzIsNyArMjMyLDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAg
ICAgICAgcmV0dXJuICdnZXRBcnJheScKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJp
bWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5yYXdfbmFtZSgpIGlzICdpbnRlZ2Vy
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2dldEludCcKKyAgICAgICAgICAgICAgICByZXR1
cm4gJ2dldEludGVnZXInCisgICAgICAgICAgICBlbGlmIF90eXBlLnJhd19uYW1lKCkgaXMgJ251
bWJlcic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdnZXREb3VibGUnCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAnZ2V0JyArIHVjZmlyc3QoX3R5cGUucmF3X25h
bWUoKSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgpAQCAtMjQ3
LDkgKzI0OSwxMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5
cGUsIEFycmF5VHlwZSk6CiAgICAgICAgICAgICByZXR1cm4gJ3NldEFycmF5JwogICAgICAgICBp
ZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKLSAgICAgICAgICAgIGlmIF90eXBl
LnJhd19uYW1lKCkgaW4gWydpbnRlZ2VyJywgJ251bWJlciddOgotICAgICAgICAgICAgICAgIHJl
dHVybiAnc2V0TnVtYmVyJwotICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGluIFsn
YW55J106CisgICAgICAgICAgICBpZiBfdHlwZS5yYXdfbmFtZSgpIGlzICdpbnRlZ2VyJzoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ3NldEludGVnZXInCisgICAgICAgICAgICBlbGlmIF90eXBl
LnJhd19uYW1lKCkgaXMgJ251bWJlcic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdzZXREb3Vi
bGUnCisgICAgICAgICAgICBlbGlmIF90eXBlLnJhd19uYW1lKCkgaXMgJ2FueSc6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuICdzZXRWYWx1ZScKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuICdzZXQnICsgdWNmaXJzdChfdHlwZS5yYXdfbmFtZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDI5MWJiODZjN2MyNzdlMTM3ZjA5MTAx
NGE2YzZjMTk1ZjZlODdiYjAuLjRlMTlhZGIxZGFiNTNlMzIxODZlNjA1NmZiOTdjNjlmYTczYTA0
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAi
ZXhlY3V0ZVNRTEFzeW5jIikKICAgICAgICAgZXhlY3V0ZVNRTEFzeW5jKGNhbGxJZCwgKm1lc3Nh
Z2UuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0
UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIFN0cmluZygiJyIpICsgIkRhdGFiYXNlIiArICcuJyArIG1ldGhvZCArICInIHdh
cyBub3QgZm91bmQiKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91
bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3Qg
Zm91bmQiKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JiBtZXNzYWdlKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlcyhsb25nCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0g
bWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSk7CiAgICAgSW5zcGVjdG9y
T2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIgPSBwYXJhbXNDb250YWluZXIuZ2V0KCk7CiAgICAg
SW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzUHRyID0gcHJvdG9jb2xFcnJvcnMuZ2V0KCk7
Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
SW50KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlM
aXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBT
dHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBh
cmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9yc1B0cik7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9m
IG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzIik7CkBAIC0yNDIsMTMgKzI0MiwxMyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMobG9uZwogICAgICAgICBpZiAob3V0X25vdGVzLmlzQXNzaWduZWQoKSkKICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgb3V0X25vdGVz
LmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3RpbWVzdGFtcC5pc0Fzc2lnbmVkKCkpCi0g
ICAgICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBv
dXRfdGltZXN0YW1wLmdldFZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXREb3VibGUo
QVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKICAg
ICAgICAgaWYgKG91dF92YWx1ZXMuaXNBc3NpZ25lZCgpKQogICAgICAgICAgICAgcmVzdWx0LT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3ZhbHVlcy5nZXRWYWx1ZSgpKTsK
ICAgICAgICAgaWYgKG91dF9wYXlsb2FkLmlzQXNzaWduZWQoKSkKICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2FkLmdldFZhbHVl
KCkpOwogICAgICAgICBpZiAob3V0X2RhdGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAgICAg
ICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRh
YmFzZUlkLmdldFZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJ
TGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZC5nZXRWYWx1ZSgpKTsKICAgICAg
ICAgaWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKICAgICAgICAgaWYgKG91dF9zY3Jl
ZW5Db2xvci5pc0Fzc2lnbmVkKCkpCkBAIC0yNjksMTMgKzI2OSwxMyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbAogICAgIGlmIChub3Rlcy5pc0Fzc2lnbmVkKCkpCiAgICAgICAgIGpzb25NZXNz
YWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBub3Rlcy5nZXRWYWx1ZSgpKTsK
ICAgICBpZiAodGltZXN0YW1wLmlzQXNzaWduZWQoKSkKLSAgICAgICAganNvbk1lc3NhZ2UtPnNl
dE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXAuZ2V0VmFsdWUoKSk7
CisgICAgICAgIGpzb25NZXNzYWdlLT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSwgdGltZXN0YW1wLmdldFZhbHVlKCkpOwogICAgIGlmICh2YWx1ZXMuaXNBc3NpZ25lZCgpKQog
ICAgICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIHZh
bHVlcy5nZXRWYWx1ZSgpKTsKICAgICBpZiAocGF5bG9hZC5pc0Fzc2lnbmVkKCkpCiAgICAgICAg
IGpzb25NZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgcGF5bG9hZC5n
ZXRWYWx1ZSgpKTsKICAgICBpZiAoZGF0YWJhc2VJZC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpz
b25NZXNzYWdlLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNl
SWQuZ2V0VmFsdWUoKSk7CisgICAgICAgIGpzb25NZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBkYXRhYmFzZUlkLmdldFZhbHVlKCkpOwogICAgIGlmIChzcWxF
cnJvcikKICAgICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVy
cm9yIiksIHNxbEVycm9yKTsKICAgICBpZiAoc2NyZWVuQ29sb3IuaXNBc3NpZ25lZCgpKQpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uCiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0gbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJwYXJhbXMiKSk7CiAgICAgSW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIg
PSBwYXJhbXNDb250YWluZXIuZ2V0KCk7CiAgICAgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJy
b3JzUHRyID0gcHJvdG9jb2xFcnJvcnMuZ2V0KCk7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50KHBhcmFtc0NvbnRhaW5lclB0ciwgQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRl
Z2VyKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRl
cmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgaWYgKHByb3Rv
Y29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nl
c3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwpA
QCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0gbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJwYXJhbXMiKSk7CiAgICAgSW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQ
dHIgPSBwYXJhbXNDb250YWluZXIuZ2V0KCk7CiAgICAgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29s
RXJyb3JzUHRyID0gcHJvdG9jb2xFcnJvcnMuZ2V0KCk7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50KHBhcmFtc0NvbnRhaW5lclB0ciwg
QVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsK
KyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJ
bnRlZ2VyKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51
bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlM
aXRlcmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgaWYgKHBy
b3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0g
U3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHBy
b2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luYyIpOwpAQCAtMzQxLDEwICszNDEsMTAg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3lu
Yyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGUKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CiAg
ICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBvdXRf
Y29sdW1uTmFtZXMpOwogICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5v
dGVzIiksIG91dF9ub3Rlcyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXApOworICAgICAgICByZXN1bHQtPnNldERvdWJs
ZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wKTsKICAgICAgICAgcmVz
dWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3ZhbHVlcyk7CiAgICAg
ICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2Fk
KTsKLSAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IG91dF9kYXRhYmFzZUlkKTsKKyAgICAgICAgcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJh
bCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAgIHJlc3VsdC0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKICAgICAgICAgcmVz
dWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0X3NjcmVlbkNvbG9yKSk7CiAgICAg
ICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0X3ByaW50Q29sb3IpKTsK
QEAgLTM1OSwxMCArMzU5LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjCiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiks
IGNvbHVtbk5hbWVzKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
bm90ZXMiKSwgbm90ZXMpOwotICAgIGpzb25NZXNzYWdlLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wKTsKKyAgICBqc29uTWVzc2FnZS0+c2V0RG91YmxlKEFT
Q0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7CiAgICAganNvbk1lc3NhZ2UtPnNl
dE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMpOwogICAgIGpzb25NZXNzYWdl
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgcGF5bG9hZCk7Ci0gICAganNvbk1l
c3NhZ2UtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZCk7
CisgICAganNvbk1lc3NhZ2UtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IGRhdGFiYXNlSWQpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJz
cWxFcnJvciIpLCBzcWxFcnJvcik7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29u
c3RhbnRWYWx1ZShzY3JlZW5Db2xvcikpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RFbnVt
Q29uc3RhbnRWYWx1ZShwcmludENvbG9yKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3AKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWlu
ZXIgPSBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpKTsKICAgICBJbnNw
ZWN0b3JPYmplY3QqIHBhcmFtc0NvbnRhaW5lclB0ciA9IHBhcmFtc0NvbnRhaW5lci5nZXQoKTsK
ICAgICBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnNQdHIgPSBwcm90b2NvbEVycm9ycy5n
ZXQoKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRJbnQocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOworICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyUHRyLCBB
U0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwog
ICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJp
bmcocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzUHRyKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7CiAg
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29tZSBhcmd1bWVu
dHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNlLmV4ZWN1dGVT
UUxBc3luYyIpOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxT
VEFURSB8IENvZGVTZXQ+JiBzZXRDb2RlKGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIENvZGVTZXQpLCBwcm9wZXJ0eV9jb2RlX2FscmVh
ZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJj
b2RlIiksIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvZGVT
ZXQ+KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZmNmZTJjZDdkZWI4YzEyMTIx
YWExYjE0OWEyMmVkZWYwY2VkMTUzNC4uMDUxMGFlYzA0MzFmZDYzOGVmZDk2YWFhNmJmYmZmNGNk
YTI2YzA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBtZXQKICAgICBlbHNlIGlmIChtZXRob2QgPT0gImV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVycyIpCiAgICAgICAgIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsICpt
ZXNzYWdlLmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1l
dGhvZE5vdEZvdW5kLCBTdHJpbmcoIiciKSArICJEYXRhYmFzZSIgKyAnLicgKyBtZXRob2QgKyAi
JyB3YXMgbm90IGZvdW5kIik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMg
bm90IGZvdW5kIikpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCYgbWVzc2FnZSkKQEAgLTE5OSwxMyArMTk5LDEzIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIGNhbGxJCiAgICAgYm9vbCBub3Rlc192YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgU3RyaW5n
IGluX25vdGVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXND
b250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgJm5vdGVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHRpbWVzdGFtcF92YWx1ZUZvdW5kID0gZmFsc2U7
Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gaW5fdGltZXN0YW1w
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE51bWJlcihwYXJhbXNDb250YWluZXJQ
dHIsIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVGb3VuZCwgcHJv
dG9jb2xFcnJvcnNQdHIpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3Vi
bGU+IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUo
cGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGltZXN0YW1w
X3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHZhbHVlc192YWx1ZUZv
dW5kID0gZmFsc2U7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl92
YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRh
aW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJnZhbHVlc192YWx1ZUZvdW5kLCBwcm90
b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCBwYXlsb2FkX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBbnkocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVy
YWwoInBheWxvYWQiKSwgJnBheWxvYWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnNQdHIpOwog
ICAgIGJvb2wgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgaW50IGluX2RhdGFi
YXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50KHBhcmFtc0NvbnRhaW5l
clB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRl
cmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3Jz
UHRyKTsKICAgICBib29sIHNxbEVycm9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgi
c3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAg
ICBib29sIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKQEAgLTIzNywxMyArMjM3LDEz
IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgICAgIGlmIChvdXRfbm90ZXMuaXNBc3Np
Z25lZCgpKQogICAgICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3Rl
cyIpLCBvdXRfbm90ZXMuZ2V0VmFsdWUoKSk7CiAgICAgICAgIGlmIChvdXRfdGltZXN0YW1wLmlz
QXNzaWduZWQoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgi
dGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICByZXN1
bHQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wLmdl
dFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3ZhbHVlcy5pc0Fzc2lnbmVkKCkpCiAgICAgICAg
ICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBvdXRfdmFsdWVz
LmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3BheWxvYWQuaXNBc3NpZ25lZCgpKQogICAg
ICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgb3V0X3Bh
eWxvYWQuZ2V0VmFsdWUoKSk7CiAgICAgICAgIGlmIChvdXRfZGF0YWJhc2VJZC5pc0Fzc2lnbmVk
KCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNl
SWQiKSwgb3V0X2RhdGFiYXNlSWQuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICByZXN1bHQtPnNl
dEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdldFZh
bHVlKCkpOwogICAgICAgICBpZiAob3V0X3NxbEVycm9yKQogICAgICAgICAgICAgcmVzdWx0LT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwogICAgICAg
ICBpZiAob3V0X3NjcmVlbkNvbG9yLmlzQXNzaWduZWQoKSkKQEAgLTI2MiwxMCArMjYyLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkCiAgICAgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJy
b3JzUHRyID0gcHJvdG9jb2xFcnJvcnMuZ2V0KCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXk+IGluX2NvbHVtbk5hbWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIp
LCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX25vdGVzID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFT
Q0lJTGl0ZXJhbCgibm90ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwotICAgIGRv
dWJsZSBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0TnVtYmVy
KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwg
cHJvdG9jb2xFcnJvcnNQdHIpOworICAgIGRvdWJsZSBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRl
cmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgi
dmFsdWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRBbnkocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAg
aW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdl
cihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBpbl9zcWxFcnJvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3Qo
cGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzUHRyKTsKICAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRl
cmFsKCJzY3JlZW5Db2xvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3Ry
aW5nIGluX3ByaW50Q29sb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5n
KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzUHRyKTsKQEAgLTI5MSwxMCArMjkxLDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxv
bmcgY2FsbElkCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICByZXN1bHQtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgb3V0X2NvbHVtbk5hbWVzKTsKICAg
ICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBvdXRfbm90ZXMp
OwotICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBv
dXRfdGltZXN0YW1wKTsKKyAgICAgICAgcmVzdWx0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0
aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcCk7CiAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMpOwogICAgICAgICByZXN1bHQtPnNldFZh
bHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZCk7
CisgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
b3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVu
dW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5Db2xvcikpOwogICAgICAgICByZXN1bHQtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0
VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENvbG9yKSk7CkBAIC01MjEsNyArNTIxLDcg
QEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29kZVNldD4mIHNldENvZGUoaW50
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYg
Q29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAgbV9yZXN1
bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOworICAgICAgICAgICAg
bV9yZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZhbHVlKTsKICAgICAg
ICAgICAgIHJldHVybiBjYXN0U3RhdGU8Q29kZVNldD4oKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IGE3ZWE3OGI0MjFj
MWMyOGMwNGFmMmM4ZTFjMWYwZWE1MzgwY2M5NjkuLjVkMjczZDVlNDNkYTBjNjgxZGZhMDM0MGJj
NjhmZWQ4NjYwODRmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAg
ICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UxIikKICAgICAgICAgbG9hZFJlc291cmNlMShj
YWxsSWQsICptZXNzYWdlLmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBTdHJpbmcoIiciKSArICJOZXR3b3JrMSIgKyAnLicgKyBt
ZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcuJywgbWV0aG9k
LCAiJyB3YXMgbm90IGZvdW5kIikpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKIAogICAg
IEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAu
ZmluZChtZXRob2QpOwogICAgIGlmIChpdCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewotICAgICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiTmV0
d29yazMiICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29y
azMiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA1
Y2U5YTVlMDRhN2U0YzE0Y2JlZmFkOWJiYmZmOTkxMWRlMzEzMTI3Li5jOTg4NzYxY2U1NjI0ZDNl
ZWVkM2Q0NWNmNmIxMzFiMzlkMzZiNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVy
cy5qc29uLXJlc3VsdApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0
CiAgICAgaWYgKG5vdGVzKQogICAgICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm5vdGVzIiksICpub3Rlcyk7CiAgICAgaWYgKHRpbWVzdGFtcCkKLSAgICAgICAgcGFy
YW1zT2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKnRpbWVzdGFt
cCk7CisgICAgICAgIHBhcmFtc09iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0
YW1wIiksICp0aW1lc3RhbXApOwogICAgIGlmICh2YWx1ZXMpCiAgICAgICAgIHBhcmFtc09iamVj
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIHZhbHVlcyk7CiAgICAgaWYgKHBh
eWxvYWQpCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5k
RGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWYKICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5O
YW1lcyIpLCBjb2x1bW5OYW1lcyk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJub3RlcyIpLCBub3Rlcyk7Ci0gICAgcGFyYW1zT2JqZWN0LT5zZXROdW1iZXIoQVND
SUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wKTsKKyAgICBwYXJhbXNPYmplY3QtPnNl
dERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOwogICAgIHBhcmFt
c09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIHZhbHVlcyk7CiAgICAg
cGFyYW1zT2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgcGF5bG9hZCk7
CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBz
cWxFcnJvcik7CkBAIC0zOTgsNyArMzk4LDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNU
QVRFIHwgQ29kZVNldD4mIHNldENvZGUoaW50IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgQ29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFk
eV9zZXQpOwotICAgICAgICAgICAgbV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNv
ZGUiKSwgdmFsdWUpOworICAgICAgICAgICAgbV9yZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRl
cmFsKCJjb2RlIiksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8Q29kZVNl
dD4oKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1
cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJk
cy5qc29uLXJlc3VsdAppbmRleCBlYWJmY2UwZTJjMDU2OTgzMzNmODNlZWE1MWIyOGU1OTAxZTAx
ZmU2Li4wNDMyY2Y0MzJjMjQzZmZjOGU3OTg2ZjkxZjg2NzI2Y2E5ODEwZmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTE3Nyw3ICsx
NzcsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogICAgIGlmIChtZXRob2QgPT0gImxvYWRS
ZXNvdXJjZSIpCiAgICAgICAgIGxvYWRSZXNvdXJjZShjYWxsSWQsICptZXNzYWdlLmdldCgpKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBT
dHJpbmcoIiciKSArICJOZXR3b3JrMSIgKyAnLicgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5k
Iik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3Ry
aW5nKCdcJycsICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwog
fQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKQEAgLTQxOSw3ICs0MTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2RlU2V0PiYgc2V0Q29kZShpbnQg
dmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBD
b2RlU2V0KSwgcHJvcGVydHlfY29kZV9hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3Vs
dC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CisgICAgICAgICAgICBt
X3Jlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOwogICAgICAg
ICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxDb2RlU2V0PigpOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZGY5N2MyMGUzYTgzNjdiNmM0NWFhNTgy
OGVhZDU4MjM0ODgzZmM1Ny4uY2E4ZmQyYTgyOWJmNmI5NzQwNjNkY2JlZjlhMzc2ODZlMzE2NmY1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM0MSw3ICszNDEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2RlU2V0PiYgc2V0Q29kZShp
bnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUg
JiBDb2RlU2V0KSwgcHJvcGVydHlfY29kZV9hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jl
c3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CisgICAgICAgICAg
ICBtX3Jlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOwogICAg
ICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxDb2RlU2V0PigpOwogICAgICAgICB9CiAKQEAgLTQz
MSw3ICs0MzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRpbWVzdGFtcChkb3VibGUgdmFs
dWUpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOworICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOwogICAgIH0KIAog
ICAgIHZvaWQgc2V0VmFsdWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlKQpAQCAtNDk4LDcgKzQ5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxTVEFU
RSB8IFRpbWVzdGFtcFNldD4mIHNldFRpbWVzdGFtcChkb3VibGUgdmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBUaW1lc3RhbXBTZXQpLCBwcm9w
ZXJ0eV90aW1lc3RhbXBfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAgbV9yZXN1bHQtPnNldE51
bWJlcihBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX3Jl
c3VsdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHZhbHVlKTsKICAgICAg
ICAgICAgIHJldHVybiBjYXN0U3RhdGU8VGltZXN0YW1wU2V0PigpOwogICAgICAgICB9CiAKQEAg
LTY5OSw3ICs2OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBUaW1lc3Rh
bXBTZXQ+JiBzZXRUaW1lc3RhbXAoZG91YmxlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgVGltZXN0YW1wU2V0KSwgcHJvcGVydHlfdGltZXN0
YW1wX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOworICAgICAgICAgICAgbV9yZXN1bHQtPnNldERv
dWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1
cm4gY2FzdFN0YXRlPFRpbWVzdGFtcFNldD4oKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50
aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IDFlZjEzYzcyMDU0NTZiMDNjOGFhMWMzZDI0NmNl
ZDUxMTM0YTRmZTQuLmQxMzE5MDgzYjUyZmU3ZTllZmI2NDExNjM0YTZkYTJkOGZlYTk4M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0zNTAsNyArMzUwLDcgQEAg
cHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgTnVtYmVyU2V0PiYgc2V0TnVtYmVyKGlu
dCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAm
IE51bWJlclNldCksIHByb3BlcnR5X251bWJlcl9hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBt
X3Jlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIiksIHZhbHVlKTsKKyAgICAg
ICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIiksIHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8TnVtYmVyU2V0PigpOwogICAgICAgICB9
CiAKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBJ
ZFNldD4mIHNldElkKGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoIShTVEFURSAmIElkU2V0KSwgcHJvcGVydHlfaWRfYWxyZWFkeV9zZXQpOwotICAgICAg
ICAgICAgbV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImlkIiksIHZhbHVlKTsKKyAg
ICAgICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgdmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxJZFNldD4oKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKaW5kZXggNzNm
OThhNTZkMjdkMDkxYzE2NTUwOTZjY2E3MzNjMDZkYzBmNWU5NS4uODYzZjViNDFjNTFhMjMxMmJm
ZDlmMzI0ZTBjNDI4YWU0MmQ2ZjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvRW5jb2RlZFZhbHVlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHRlbXBsYXRlPD4gYm9vbCBF
bmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxib29sPigpCiB0ZW1wbGF0ZTw+IGRvdWJsZSBFbmNvZGVk
VmFsdWU6OmNvbnZlcnRUbzxkb3VibGU+KCkKIHsKICAgICBkb3VibGUgcmVzdWx0OwotICAgIGJv
b2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1bHQpOworICAgIGJvb2wg
Y2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzRG91YmxlKCZyZXN1bHQpOwogICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIHRlbXBsYXRlPD4gZG91YmxlIEVuY29kZWRWYWx1ZTo6Y29u
dmVydFRvPGRvdWJsZT4oKQogdGVtcGxhdGU8PiBmbG9hdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRU
bzxmbG9hdD4oKQogewogICAgIGZsb2F0IHJlc3VsdDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQg
PSBtX3ZhbHVlLT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBt
X3ZhbHVlLT5hc0RvdWJsZSgmcmVzdWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVk
ZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzMCw3ICsxMzAs
NyBAQCB0ZW1wbGF0ZTw+IGZsb2F0IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGZsb2F0PigpCiB0
ZW1wbGF0ZTw+IGludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50MzJfdD4oKQogewog
ICAgIGludDMyX3QgcmVzdWx0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFz
TnVtYmVyKCZyZXN1bHQpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzSW50
ZWdlcigmcmVzdWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNj
ZWVkZWQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzOSw3ICsxMzksNyBAQCB0ZW1wbGF0
ZTw+IGludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50MzJfdD4oKQogdGVtcGxhdGU8
PiBpbnQ2NF90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KCkKIHsKICAgICBpbnQ2
NF90IHJlc3VsdDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5hc051bWJlcigm
cmVzdWx0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5hc0ludGVnZXIoJnJl
c3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxhdGU8PiBpbnQ2
NF90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KCkKIHRlbXBsYXRlPD4gdWludDMy
X3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dWludDMyX3Q+KCkKIHsKICAgICB1aW50MzJfdCBy
ZXN1bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNOdW1iZXIoJnJlc3Vs
dCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNJbnRlZ2VyKCZyZXN1bHQp
OwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHRlbXBsYXRlPD4gdWludDMyX3Qg
RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dWludDMyX3Q+KCkKIHRlbXBsYXRlPD4gdWludDY0X3Qg
RW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dWludDY0X3Q+KCkKIHsKICAgICB1aW50NjRfdCByZXN1
bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNOdW1iZXIoJnJlc3VsdCk7
CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNJbnRlZ2VyKCZyZXN1bHQpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggNGIyOTc5MzI4MGQ5NTlkNTMxNTBhYTYxMDY4MmM3ODk1YTM2ZWVjYy4u
ZmQ3ZTkyMzg4NDRkYjhhN2ZiZTQ4NzU4MTg0YWM2ZDUxZjAyN2M1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMTksMTQgKzExOSwx
NCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogY29sb3JPYmplY3QpCiAgICAgaW50IHI7CiAgICAgaW50IGc7CiAgICAgaW50IGI7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiciIsICZyKTsKLSAgICBz
dWNjZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImciLCAmZyk7Ci0gICAgc3VjY2Vz
cyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJiIiwgJmIpOworICAgIGJvb2wgc3VjY2Vz
cyA9ICgqY29sb3JPYmplY3QpLT5nZXRJbnRlZ2VyKCJyIiwgJnIpOworICAgIHN1Y2Nlc3MgfD0g
KCpjb2xvck9iamVjdCktPmdldEludGVnZXIoImciLCAmZyk7CisgICAgc3VjY2VzcyB8PSAoKmNv
bG9yT2JqZWN0KS0+Z2V0SW50ZWdlcigiYiIsICZiKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICBkb3VibGUgYTsKLSAgICBzdWNj
ZXNzID0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiYSIsICZhKTsKKyAgICBzdWNjZXNzID0g
KCpjb2xvck9iamVjdCktPmdldERvdWJsZSgiYSIsICZhKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgIHJldHVybiBDb2xvcihyLCBnLCBiKTsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRp
YyBib29sIHBhcnNlUXVhZChjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBxdWFkQXJyYXks
IEZsb2F0UXVhZCogcXVhZCkKICAgICBpZiAocXVhZEFycmF5LT5sZW5ndGgoKSAhPSBjb29yZGlu
YXRlc0luUXVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29vcmRpbmF0ZXNJblF1YWQ7ICsraSkgewotICAgICAgICBpZiAoIXF1YWRBcnJheS0+
Z2V0KGkpLT5hc051bWJlcihjb29yZGluYXRlcyArIGkpKQorICAgICAgICBpZiAoIXF1YWRBcnJh
eS0+Z2V0KGkpLT5hc0RvdWJsZShjb29yZGluYXRlcyArIGkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBxdWFkLT5zZXRQMShGbG9hdFBvaW50KGNvb3JkaW5hdGVzWzBd
LCBjb29yZGluYXRlc1sxXSkpOwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHdoCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW50IG5vZGVJZCA9IDA7Ci0gICAgICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNOdW1iZXIo
Jm5vZGVJZCkpIHsKKyAgICAgICAgICAgIGlmICghbm9kZVZhbHVlLT5hc0ludGVnZXIoJm5vZGVJ
ZCkpIHsKICAgICAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0
ZW0gdHlwZS4gRXhwZWN0aW5nIGludGVnZXIgdHlwZXMuIjsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYzU1OTcxMWQwMjUzMzJjMzI3MDFm
ZWY1OTMwNGQyM2E4MjZhOTFiOS4uNGMwZmRkOTEyNWFiZmYwYjkzMGU2MWQ4NWVhZmUxOTc4YzMy
OTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBi
cmVha3BvCiAKICAgICBpbnQgYnJlYWtwb2ludE93bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91
bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsKICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9k
ZUlkKTsKLSAgICBkZXNjcmlwdGlvbi0+c2V0TnVtYmVyKCJub2RlSWQiLCBicmVha3BvaW50T3du
ZXJOb2RlSWQpOworICAgIGRlc2NyaXB0aW9uLT5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3Bv
aW50T3duZXJOb2RlSWQpOwogICAgIGRlc2NyaXB0aW9uLT5zZXRTdHJpbmcoInR5cGUiLCBkb21U
eXBlTmFtZShicmVha3BvaW50VHlwZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA3M2NkMDZiNjZhNjNl
NTkwY2Y3YWIyMjU3ZjQyYzRjMmIwMzlkNmE0Li4wYWU2YmVlYTNmYWYzNjJhYmE1ZmI1YjQ1OTQ5
ZThlZTg1YWU5ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBr
ZXkpCiAKICAgICBpZiAodHlwZSA9PSBudW1iZXIpIHsKICAgICAgICAgZG91YmxlIG51bWJlcjsK
LSAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigibnVtYmVyIiwgJm51bWJlcikpCisgICAgICAg
IGlmICgha2V5LT5nZXREb3VibGUoIm51bWJlciIsICZudW1iZXIpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlTnVtYmVyKG51bWJl
cik7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IHN0cmluZykgewpAQCAtMzQ2LDcgKzM0Niw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChJbnNw
ZWN0b3JPYmplY3QqIGtleSkKICAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVTdHJpbmco
c3RyaW5nKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZGF0ZSkgewogICAgICAgICBkb3VibGUg
ZGF0ZTsKLSAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigiZGF0ZSIsICZkYXRlKSkKKyAgICAg
ICAgaWYgKCFrZXktPmdldERvdWJsZSgiZGF0ZSIsICZkYXRlKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0ZURhdGUoZGF0ZSk7CiAg
ICAgfSBlbHNlIGlmICh0eXBlID09IGFycmF5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggMjhjMGExMjFmNmE2N2YzZGE2MjFmZDY2ZGE5
ZTM4ODFlY2UyZTlhZC4uYmQzODZhMDNjYWM4Njc3ZWI4ZWYyMjcxNmFhMDczNmE0MWRhZjBkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAt
MzMzLDE4ICszMzMsMTggQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUoKQogc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJ4IiksIHBvaW50LngoKSk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRl
cmFsKCJ5IiksIHBvaW50LnkoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFs
KCJ4IiksIHBvaW50LngoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ5
IiksIHBvaW50LnkoKSk7CiAgICAgcmV0dXJuIG9iamVjdC5yZWxlYXNlKCk7CiB9CiAKIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3QgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0
ZXJhbCgieCIpLCByZWN0LngoKSk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJ5IiksIHJlY3QueSgpKTsKLSAgICBvYmplY3QtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoIndp
ZHRoIiksIHJlY3Qud2lkdGgoKSk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJoZWlnaHQiKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJ4IiksIHJlY3QueCgpKTsKKyAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVy
YWwoInkiKSwgcmVjdC55KCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgi
d2lkdGgiKSwgcmVjdC53aWR0aCgpKTsKKyAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVy
YWwoImhlaWdodCIpLCByZWN0LmhlaWdodCgpKTsKICAgICByZXR1cm4gb2JqZWN0LnJlbGVhc2Uo
KTsKIH0KIApAQCAtNDQwLDggKzQ0MCw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBidWlsZE9iamVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQoUmVuZGVyUmVnaW9uCiBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXROdW1iZXIoIndpZHRoIiwg
c2l6ZS53aWR0aCgpKTsKLSAgICByZXN1bHQtPnNldE51bWJlcigiaGVpZ2h0Iiwgc2l6ZS5oZWln
aHQoKSk7CisgICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSk7Cisg
ICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpKTsKICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAtNTk5LDggKzU5OSw4IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFBhdGhDb21tYW5kQW5kUG9pbnRzKFBhdGhBcHBseUluZm8qIGluZm8sIGNvbnN0IFN0
cmluZyYgY29tbWFuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CiAgICAgICAgIHBvaW50ID0gaW5mby0+c2hhcGVPdXRzaWRlSW5mby0+c2hhcGVUb1JlbmRlcmVy
UG9pbnQocG9pbnRzW2ldKTsKICAgICAgICAgcG9pbnQgPSBsb2NhbFBvaW50VG9Sb290KGluZm8t
PnJlbmRlcmVyLCBpbmZvLT5yb290VmlldywgaW5mby0+dmlldywgcG9pbnQpOwotICAgICAgICBp
bmZvLT5hcnJheS0+cHVzaE51bWJlcihwb2ludC54KCkpOwotICAgICAgICBpbmZvLT5hcnJheS0+
cHVzaE51bWJlcihwb2ludC55KCkpOworICAgICAgICBpbmZvLT5hcnJheS0+cHVzaFJlYWwocG9p
bnQueCgpKTsKKyAgICAgICAgaW5mby0+YXJyYXktPnB1c2hSZWFsKHBvaW50LnkoKSk7CiAgICAg
fQogfQogCkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpmb3JjZVBh
aW50KCkKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSkKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZXNldERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIHJlc2V0RGF0YS0+c2V0TnVtYmVyKCJkZXZpY2VTY2FsZUZhY3RvciIsIG1fcGFnZS5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICByZXNldERhdGEtPnNldERvdWJsZSgiZGV2aWNlU2NhbGVG
YWN0b3IiLCBtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgcmVzZXREYXRhLT5zZXRP
YmplY3QoInZpZXdwb3J0U2l6ZSIsIGJ1aWxkT2JqZWN0Rm9yU2l6ZSh2aWV3cG9ydFNpemUpKTsK
ICAgICByZXNldERhdGEtPnNldE9iamVjdCgiZnJhbWVWaWV3RnVsbFNpemUiLCBidWlsZE9iamVj
dEZvclNpemUoZnJhbWVWaWV3RnVsbFNpemUpKTsKICAgICBldmFsdWF0ZUluT3ZlcmxheSgicmVz
ZXQiLCByZXNldERhdGEucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCmluZGV4IGMxNDg3YTA5NzEzMjY3NjEwMmMyNjRi
ZGQzMWE3NzBjZGJmNjcxODMuLmVjNGE0YmEyNGI2ODdjZjRmNjkwNTUzYjRiZDMwMzRhNjczNjk0
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50LmNwcApAQCAtMzQwLDEyICszNDAsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6
c3RvcENhcHR1cmluZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpyZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHBvc2l0aW9uT2JqZWN0LCBib29sIGZhc3RSZXBs
YXkpCiB7CiAgICAgUmVwbGF5UG9zaXRpb24gcG9zaXRpb247Ci0gICAgaWYgKCFwb3NpdGlvbk9i
amVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgic2VnbWVudE9mZnNldCIpLCAmcG9zaXRpb24u
c2VnbWVudE9mZnNldCkpIHsKKyAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgic2VnbWVudE9mZnNldCIpLCAmcG9zaXRpb24uc2VnbWVudE9mZnNldCkpIHsK
ICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZG4ndCBkZWNvZGUgUmVw
bGF5UG9zaXRpb24gc2VnbWVudCBvZmZzZXQgcHJvdmlkZWQgdG8gUmVwbGF5QWdlbnQucmVwbGF5
VG9Qb3NpdGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghcG9zaXRp
b25PYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImlucHV0T2Zmc2V0IiksICZwb3NpdGlv
bi5pbnB1dE9mZnNldCkpIHsKKyAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgiaW5wdXRPZmZzZXQiKSwgJnBvc2l0aW9uLmlucHV0T2Zmc2V0KSkgewogICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGRlY29kZSBSZXBsYXlQ
b3NpdGlvbiBpbnB1dCBvZmZzZXQgcHJvdmlkZWQgdG8gUmVwbGF5QWdlbnQucmVwbGF5VG9Qb3Np
dGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDQxODNiOTQxZmEwMDQ2ZjBjNWIwZDI3
MjdmZWE5NmRhNDNmMWNmODEuLjQ1YjRjZDJkNjQ4MTBmNjZkMDk2MTM0MTc0MWE3MjEwNTgzMzAy
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3JkaW5hbFZhbHVl
ID0gdmFsdWUtPmdldCgib3JkaW5hbCIpOwotICAgICAgICBpZiAoIW9yZGluYWxWYWx1ZSB8fCAh
b3JkaW5hbFZhbHVlLT5hc051bWJlcigmbV9vcmRpbmFsKSkKKyAgICAgICAgaWYgKCFvcmRpbmFs
VmFsdWUgfHwgIW9yZGluYWxWYWx1ZS0+YXNJbnRlZ2VyKCZtX29yZGluYWwpKQogICAgICAgICAg
ICAgbV9zdHlsZVNoZWV0SWQgPSAiIjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBiYzQ5NmQwMzFhYTEy
NzdjNDE3ZTczMWYxNzA1ZGJiODBlZWNjZjI5Li4wMTZkNjc4ZWQ1MGM4NDU5MTlhODU3MWYwMDZh
NTcxOWE2MmQzZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwodW5zaWduZWQgZW5kTGluZSkKIHsKICAgICBpZiAo
IW1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFRpbWVsaW5lUmVjb3Jk
RW50cnkmIGVudHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7Ci0gICAgICAgIGVudHJ5LmRhdGEt
PnNldE51bWJlcigiZW5kTGluZSIsIGVuZExpbmUpOworICAgICAgICBlbnRyeS5kYXRhLT5zZXRJ
bnRlZ2VyKCJlbmRMaW5lIiwgZW5kTGluZSk7CiAgICAgICAgIGRpZENvbXBsZXRlQ3VycmVudFJl
Y29yZChUaW1lbGluZVJlY29yZFR5cGU6OlBhcnNlSFRNTCk7CiAgICAgfQogfQpAQCAtNjcwLDcg
KzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVSZWNvcmRF
bnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlCiB7CiAgICAgZW50cnkucmVjb3JkLT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJkYXRhIiksIGVudHJ5LmRhdGEpOwogICAgIGVudHJ5LnJl
Y29yZC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjaGlsZHJlbiIpLCBlbnRyeS5jaGlsZHJlbik7
Ci0gICAgZW50cnkucmVjb3JkLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJlbmRUaW1lIiksIHRp
bWVzdGFtcCgpKTsKKyAgICBlbnRyeS5yZWNvcmQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoImVu
ZFRpbWUiKSwgdGltZXN0YW1wKCkpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUoZW50cnkucmVj
b3JkLCBlbnRyeS50eXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCBkNDU5ZGZjOTQxYWUwMTY3ZDg4MWQzNTg2
YWQ5ZjlhYTBhMGY2NWM3Li40YTYzMmZhN2FkMzc2NDM1ZGYzNGEwNzc1YmE0ZWI3ZTBiYzhhYWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVj
b3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIHJlY29yZC0+c2V0TnVtYmVyKCJzdGFydFRpbWUiLCBzdGFydFRpbWUpOworICAgIHJlY29y
ZC0+c2V0RG91YmxlKCJzdGFydFRpbWUiLCBzdGFydFRpbWUpOwogCiAgICAgaWYgKG1heENhbGxT
dGFja0RlcHRoKSB7CiAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2Ug
PSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3Rh
dGUoKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOwpAQCAtNjksNyArNjksNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3Jk
KGRvdWJsZSBzdAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlQmFja2dyb3VuZFJlY29yZChkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBTdHJp
bmcmIHRocmVhZE5hbWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZWNvcmQtPnNldE51bWJlcigic3RhcnRU
aW1lIiwgc3RhcnRUaW1lKTsKKyAgICByZWNvcmQtPnNldERvdWJsZSgic3RhcnRUaW1lIiwgc3Rh
cnRUaW1lKTsKICAgICByZWNvcmQtPnNldFN0cmluZygidGhyZWFkIiwgdGhyZWFkTmFtZSk7CiAg
ICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tncm91
bmRSZWNvcmQoZG91YmxlCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVHQ0V2ZW50RGF0YShjb25zdCBzaXplX3QgdXNlZEhlYXBTaXplRGVs
dGEpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ1c2VkSGVhcFNpemVEZWx0YSIsIHVz
ZWRIZWFwU2l6ZURlbHRhKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJ1c2VkSGVhcFNpemVEZWx0
YSIsIHVzZWRIZWFwU2l6ZURlbHRhKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAK
QEAgLTg1LDcgKzg1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdAogewogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGRh
dGEtPnNldFN0cmluZygic2NyaXB0TmFtZSIsIHNjcmlwdE5hbWUpOwotICAgIGRhdGEtPnNldE51
bWJlcigic2NyaXB0TGluZSIsIHNjcmlwdExpbmUpOworICAgIGRhdGEtPnNldEludGVnZXIoInNj
cmlwdExpbmUiLCBzY3JpcHRMaW5lKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAK
QEAgLTk5LDggKzk5LDggQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKGNvbnMKIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0
YShjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIGludCBoaXRDb3VudCkKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJwcm9iZUlkIiksIGFjdGlv
bi5pZGVudGlmaWVyKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJoaXRDb3Vu
dCIpLCBoaXRDb3VudCk7CisgICAgZGF0YS0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInByb2Jl
SWQiKSwgYWN0aW9uLmlkZW50aWZpZXIpOworICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRl
cmFsKCJoaXRDb3VudCIpLCBoaXRDb3VudCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwog
fQogCkBAIC0xMTQsMTUgKzExNCwxNSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdAogUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJp
Y1RpbWVyRGF0YShpbnQgdGltZXJJZCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBk
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInRp
bWVySWQiLCB0aW1lcklkKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJ0aW1lcklkIiwgdGltZXJJ
ZCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lckluc3RhbGxEYXRhKGlu
dCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogewogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRh
dGEtPnNldE51bWJlcigidGltZXJJZCIsIHRpbWVySWQpOwotICAgIGRhdGEtPnNldE51bWJlcigi
dGltZW91dCIsIHRpbWVvdXQpOworICAgIGRhdGEtPnNldEludGVnZXIoInRpbWVySWQiLCB0aW1l
cklkKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJ0aW1lb3V0IiwgdGltZW91dCk7CiAgICAgZGF0
YS0+c2V0Qm9vbGVhbigic2luZ2xlU2hvdCIsIHNpbmdsZVNob3QpOwogICAgIHJldHVybiBkYXRh
LnJlbGVhc2UoKTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0
YQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBkYXRhLT5z
ZXROdW1iZXIoInJlYWR5U3RhdGUiLCByZWFkeVN0YXRlKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2Vy
KCJyZWFkeVN0YXRlIiwgcmVhZHlTdGF0ZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwog
fQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnMKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBkYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJs
aW5lTnVtYmVyIiwgbGluZU51bWJlcik7CisgICAgZGF0YS0+c2V0SW50ZWdlcigibGluZU51bWJl
ciIsIGxpbmVOdW1iZXIpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApAQCAtMTc3
LDcgKzE3Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+
c2V0U3RyaW5nKCJyZXF1ZXN0SWQiLCByZXF1ZXN0SWQpOwotICAgIGRhdGEtPnNldE51bWJlcigi
c3RhdHVzQ29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIGRhdGEtPnNldElu
dGVnZXIoInN0YXR1c0NvZGUiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICBkYXRh
LT5zZXRTdHJpbmcoIm1pbWVUeXBlIiwgcmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgcmV0dXJu
IGRhdGEucmVsZWFzZSgpOwogfQpAQCAtMTg4LDcgKzE4OCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmluaXNoRGF0
YShjb25zCiAgICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0SWQiLCByZXF1ZXN0SWQpOwogICAg
IGRhdGEtPnNldEJvb2xlYW4oImRpZEZhaWwiLCBkaWRGYWlsKTsKICAgICBpZiAoZmluaXNoVGlt
ZSkKLSAgICAgICAgZGF0YS0+c2V0TnVtYmVyKCJuZXR3b3JrVGltZSIsIGZpbmlzaFRpbWUpOwor
ICAgICAgICBkYXRhLT5zZXREb3VibGUoIm5ldHdvcmtUaW1lIiwgZmluaXNoVGltZSk7CiAgICAg
cmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCkBAIC0xOTYsMTUgKzE5NiwxNSBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZWNlaXZl
UmVzb3VyY2VEYXRhKGNvbgogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZygicmVxdWVzdElk
IiwgcmVxdWVzdElkKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoImVuY29kZWREYXRhTGVuZ3RoIiwg
bGVuZ3RoKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJlbmNvZGVkRGF0YUxlbmd0aCIsIGxlbmd0
aCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVMYXlvdXREYXRhKHVuc2lnbmVk
IGRpcnR5T2JqZWN0cywgdW5zaWduZWQgdG90YWxPYmplY3RzLCBib29sIHBhcnRpYWxMYXlvdXQp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJkaXJ0eU9iamVjdHMiLCBkaXJ0eU9iamVj
dHMpOwotICAgIGRhdGEtPnNldE51bWJlcigidG90YWxPYmplY3RzIiwgdG90YWxPYmplY3RzKTsK
KyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJkaXJ0eU9iamVjdHMiLCBkaXJ0eU9iamVjdHMpOworICAg
IGRhdGEtPnNldEludGVnZXIoInRvdGFsT2JqZWN0cyIsIHRvdGFsT2JqZWN0cyk7CiAgICAgZGF0
YS0+c2V0Qm9vbGVhbigicGFydGlhbExheW91dCIsIHBhcnRpYWxMYXlvdXQpOwogICAgIHJldHVy
biBkYXRhLnJlbGVhc2UoKTsKIH0KQEAgLTIzMywyOCArMjMzLDI4IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZU1hcmtEYXRhKGJvb2wg
aXNNYWluRnJhCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBkYXRhLT5zZXROdW1iZXIoInN0YXJ0TGluZSIsIHN0YXJ0TGluZSk7CisgICAgZGF0YS0+c2V0
SW50ZWdlcigic3RhcnRMaW5lIiwgc3RhcnRMaW5lKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNl
KCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUFuaW1hdGlvbkZyYW1lRGF0YShpbnQgY2FsbGJhY2tJZCkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBkYXRhLT5zZXROdW1iZXIoImlkIiwgY2FsbGJhY2tJZCk7CisgICAgZGF0YS0+c2V0SW50ZWdl
cigiaWQiLCBjYWxsYmFja0lkKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjcmVhdGVRdWFkKGNvbnN0IEZsb2F0UXVh
ZCYgcXVhZCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwotICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDEoKS54KCkpOwot
ICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDEoKS55KCkpOwotICAgIGFycmF5LT5wdXNoTnVt
YmVyKHF1YWQucDIoKS54KCkpOwotICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDIoKS55KCkp
OwotICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDMoKS54KCkpOwotICAgIGFycmF5LT5wdXNo
TnVtYmVyKHF1YWQucDMoKS55KCkpOwotICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDQoKS54
KCkpOwotICAgIGFycmF5LT5wdXNoTnVtYmVyKHF1YWQucDQoKS55KCkpOworICAgIGFycmF5LT5w
dXNoUmVhbChxdWFkLnAxKCkueCgpKTsKKyAgICBhcnJheS0+cHVzaFJlYWwocXVhZC5wMSgpLnko
KSk7CisgICAgYXJyYXktPnB1c2hSZWFsKHF1YWQucDIoKS54KCkpOworICAgIGFycmF5LT5wdXNo
UmVhbChxdWFkLnAyKCkueSgpKTsKKyAgICBhcnJheS0+cHVzaFJlYWwocXVhZC5wMygpLngoKSk7
CisgICAgYXJyYXktPnB1c2hSZWFsKHF1YWQucDMoKS55KCkpOworICAgIGFycmF5LT5wdXNoUmVh
bChxdWFkLnA0KCkueCgpKTsKKyAgICBhcnJheS0+cHVzaFJlYWwocXVhZC5wNCgpLnkoKSk7CiAg
ICAgcmV0dXJuIGFycmF5LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IDZlMWY2NTZhMGIwMzMzN2I2NWMx
NDVkZWIyODliYjcxYTc1MzRiNWUuLjlmMTEzMTEwZDk0ZTYzN2E0NWIwZjYwYTQ1NDUzZDE0ZTQ0
MTU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50
aWZpZXIiLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGRhdGEtPnNldEludGVnZXIoImlkZW50
aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwg
dXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJ3ZWJTb2NrZXRQcm90b2NvbCIsIHByb3RvY29s
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2Vu
ZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRO
dW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGRhdGEtPnNldElu
dGVnZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LnJlbGVhc2UoKTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTRiOGE2MzMxNDAwNzM2Nzg5ZjEzODA3YmNl
ODZjNTgxNGMyNmMxOC4uZjljNWM5ODAxMTk0NmM4Njk0NWMzYjU5NDFhNjk3MTY3OTZlODk5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAt
MTY2MSw3ICsxNjYxLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFMKICAgICBpZiAoY2FsbEZy
YW1lICYmIGNhbGxGcmFtZS0+bGluZU51bWJlcigpKSB7CiAgICAgICAgIFVSTCBzb3VyY2UgPSBV
UkwoVVJMKCksIGNhbGxGcmFtZS0+c291cmNlVVJMKCkpOwogICAgICAgICBjc3BSZXBvcnQtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZS1maWxlIiksIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoZG9jdW1lbnQsIHNvdXJjZSkpOwotICAgICAgICBjc3BSZXBvcnQtPnNldE51bWJlcihBU0NJ
SUxpdGVyYWwoImxpbmUtbnVtYmVyIiksIGNhbGxGcmFtZS0+bGluZU51bWJlcigpKTsKKyAgICAg
ICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibGluZS1udW1iZXIiKSwgY2Fs
bEZyYW1lLT5saW5lTnVtYmVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlcG9ydE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238007</attachid>
            <date>2014-09-11 19:16:31 -0700</date>
            <delta_ts>2014-09-11 19:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136606-20140911191606.patch</filename>
            <type>text/plain</type>
            <size>81295</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YmM1NTcxNGZmZjY1MzhjMDRlNDU0OWMzOTdjNmZjNzc0MTU5NWExLi5hYTRkYjI2OThhZGIwYmM4
MjE4ZDc4ZTkxOTk1NGU2OWU1Yzk1YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGRvdWJsZSBhbmQg
aW50ZWdlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3cgaXQncyByZWFsbHkgZWFz
eSB0byBtaXggdXAgZG91YmxlcyBhbmQgaW50ZWdlcnMgd2hlbiBzZXJpYWxpemluZyBvciBkZXNl
cmlhbGl6aW5nCisgICAgICAgIHZhbHVlcyBmb3IgdGhlIGluc3BlY3RvciBwcm90b2NvbC4gVGhp
cyBwYXRjaCBkaXNhbWJpZ3VhdGVzIHNldHRpbmcvZ2V0dGluZyBkb3VibGVzIGFuZCBpbnRlZ2Vy
cworICAgICAgICBzbyB0aGF0IGl0IGlzIGNsZWFyZXIgYXMgdG8gd2hpY2ggdHlwZSBpcyBpbnRl
bmRlZC4KKworICAgICAgICBBIG5ldyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSBpcyBhZGRlZCBmb3Ig
SW50ZWdlciB0eXBlcywgYW5kIHRoZSBOdW1iZXIgdHlwZSBpcyByZW5hbWVkIHRvIERvdWJsZS4K
KyAgICAgICAgVGhlIGV4aXN0aW5nIGNhbGxzaXRlcyBmb3IgYXNOdW1iZXIvZ2V0TnVtYmVyL3Nl
dE51bWJlciBoYXZlIGJlZW4gZml4ZWQuCisKKyAgICAgICAgQWRkcmVzcyB2YXJpb3VzIGludGVn
cmF0aW9uIHBvaW50cyB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IHR5cGUgdGFnIGlzIGFzc2lnbmVk
IHRvIEluc3BlY3RvclZhbHVlcy4KKworICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6IE1ha2UgYW4gSW50
ZWdlciBpZiB0aGUgSlNWYWx1ZSBpcyBJbnQ1MiBvciBzbWFsbGVyLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNJbnRlZ2Vy
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJs
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkFzTWV0aG9kQnJpZGdlczo6YXNJbnQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOiBSZW1v
dmUgdGhlIHNwZWNpYWwgY2FzZSBmb3IgY2hlY2tpbmcgaW50IHR5cGUgdGFncy4KKyAgICAgICAg
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5SXRlbUhlbHBlcjxpbnQ+OjpUcmFpdHM6OnB1c2hS
YXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXlJdGVtSGVscGVyPGRvdWJs
ZT46OlRyYWl0czo6cHVzaFJhdyk6CisgICAgICAgIChJbnNwZWN0b3I6OlByb3RvY29sOjpCaW5k
aW5nVHJhaXRzPGludD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDogQWxsb3cgaW50ZWdlcnMgYW5k
IGRvdWJsZXMgdG8gYmUgY29udmVydGlibGUgdXNpbmcgYXNJbnRlZ2VyL2FzRG91YmxlLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNEb3VibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNEb3VibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYXNpY1ZhbHVlOjp3cml0ZUpTT04pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZTo6YXNOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpz
ZXRJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50
ZWdlcik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaERvdWJs
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldE51bWJlcik6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaElu
dCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVz
aE51bWJlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRPYmplY3RGb3JCcmVh
a3BvaW50Q29va2llKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2wpOgorICAgICAgICAoSW5zcGVjdG9yOjpw
YXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5OiBVcGRhdGUgZW1pdHRlZCBjb2Rl
IGFuZCByZWJhc2VsaW5lIHRlc3QgcmVzdWx0cy4KKyAgICAgICAgKEdlbmVyYXRvci5rZXllZF9n
ZXRfbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKEdlbmVyYXRvci5rZXllZF9zZXRfbWV0aG9k
X2Zvcl90eXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVu
dHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRp
bWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGRvdWJsZT4pOgorICAgICAg
ICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxmbG9hdD4pOgorICAgICAgICAoSlNDOjpF
bmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQzMl90Pik6CisgICAgICAgIChKU0M6OkVuY29kZWRW
YWx1ZTo6Y29udmVydFRvPGludDY0X3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpj
b252ZXJ0VG88dWludDMyX3Q+KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpjb252ZXJ0
VG88dWludDY0X3Q+KToKKwogMjAxNC0wOS0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHRoZSAidW5yZWFjaGFibGUtY29kZSIgd2Fy
bmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGJmNmI2ZTQwNWY1ZTdkMGQ2OGM1NmFjYjE2MGQwY2QyZGEwNzA0
N2UuLjg1N2JlNWJhYWQ0NDk5MzkxMTJjZTk2MTllYWM5NjQxMjJkYjA0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NyBAQAorMjAxNC0wOS0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzYW1iaWd1YXRlIGludGVn
cmFsIGFuZCByZWFsIG51bWJlciBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIHByb3RvY29sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2xpZW50
cyBvZiBJbnNwZWN0b3JWYWx1ZSB0byBkaXNhbWJpZ3VhdGUgaW50ZWdlciBhbmQgZG91YmxlIHBy
aW1pdGl2ZSB0eXBlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5n
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZv
clJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZFBhdGhDb21tYW5kQW5kUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OnJlcGxheVRvUG9zaXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZVJlY29yZEVu
dHJ5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tn
cm91bmRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVHQ0V2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0YWxsRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVhIUlJlYWR5
U3RhdGVDaGFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVj
ZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUxheW91dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVF1YWQpOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2Vi
U29ja2V0Q3JlYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdGlvbik6CisKIDIwMTQtMDktMDkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1iaXRyYXRlLmh0bWwgZmFpbGluZyBh
ZnRlciByMTczMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAppbmRleCAwMDRmZjI0NmI0NjcxYTYwYzZhZTZiYWZmNDg1OGY3MWM0ZjczZmJiLi5k
MDQ2YWIyYTVjYjJhYzE5Zjk4NTc2MzI1Zjg5MTJiNDkwZDQ4YWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTExNCw4ICsxMTQsMTAg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1YKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVl
OjpudWxsKCk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzQm9vbGVhbigpKTsKLSAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkKKyAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc0RvdWJs
ZSgpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFz
TnVtYmVyKCkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmIHZhbHVlLmlzTWFjaGluZUlu
dCgpKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHN0YXRpY19j
YXN0PGludD4odmFsdWUuYXNNYWNoaW5lSW50KCkpKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmco
KSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlLmdldFN0cmlu
ZyhzY3JpcHRTdGF0ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNTlhMGVkZWVhYTBjMjkw
ZTU5YzBjYjNlYWI0ZjVhZTViZDBkOTczNi4uYWRjY2NmYzY1MWVmNjBhYzgxMzU4OTM3OTg0NGZk
ZDBlMmU1M2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQo
Y29uc3QgU3RyaW5nJiBvYgogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkT2JqZWN0
SWQgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG9iamVjdElkKTsKICAgICBpZiAocGFyc2Vk
T2JqZWN0SWQgJiYgcGFyc2VkT2JqZWN0SWQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlw
ZTo6T2JqZWN0KSB7CiAgICAgICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0gICAgICAg
IGJvb2wgc3VjY2VzcyA9IHBhcnNlZE9iamVjdElkLT5hc09iamVjdCgpLT5nZXROdW1iZXIoQVND
SUlMaXRlcmFsKCJpbmplY3RlZFNjcmlwdElkIiksICZpbmplY3RlZFNjcmlwdElkKTsKKyAgICAg
ICAgYm9vbCBzdWNjZXNzID0gcGFyc2VkT2JqZWN0SWQtPmFzT2JqZWN0KCktPmdldEludGVnZXIo
QVNDSUlMaXRlcmFsKCJpbmplY3RlZFNjcmlwdElkIiksICZpbmplY3RlZFNjcmlwdElkKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3Jp
cHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAKaW5kZXggYmIzZWM4MjIxZGQzYmQwOWU4NTg3ZDE2YjA4NjdkNzI5NDBhYWY4YS4uYWYxYjhl
NTNkNTJkODI4MjcxZjNmNjdiZDY4OWIxMzM4YTljNjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIAogICAgIGxvbmcgY2Fs
bElkID0gMDsKLSAgICBpZiAoIWNhbGxJZFZhbHVlLT5hc051bWJlcigmY2FsbElkKSkgewotICAg
ICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIEludmFsaWRSZXF1ZXN0LCBBU0NJSUxp
dGVyYWwoIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBudW1iZXIiKSk7CisgICAg
aWYgKCFjYWxsSWRWYWx1ZS0+YXNJbnRlZ2VyKCZjYWxsSWQpKSB7CisgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IobnVsbHB0ciwgSW52YWxpZFJlcXVlc3QsIEFTQ0lJTGl0ZXJhbCgiVGhlIHR5
cGUgb2YgJ2lkJyBwcm9wZXJ0eSBtdXN0IGJlIGludGVnZXIiKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yTwogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVy
YWwoInJlc3VsdCIpLCByZXN1bHQpOwotICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCBjYWxsSWQpOwogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7CiB9CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQwog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlcnJvciA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXJyb3ItPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKKyAgICBlcnJvci0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKICAgICBlcnJv
ci0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWVzc2FnZSIpLCBlcnJvck1lc3NhZ2UpOwogICAg
IGlmIChkYXRhKQogICAgICAgICBlcnJvci0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJkYXRhIiks
IGRhdGEpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgbWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgZXJyb3Iu
cmVsZWFzZSgpKTsKICAgICBpZiAoY2FsbElkKQotICAgICAgICBtZXNzYWdlLT5zZXROdW1iZXIo
QVNDSUlMaXRlcmFsKCJpZCIpLCAqY2FsbElkKTsKKyAgICAgICAgbWVzc2FnZS0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImlkIiksICpjYWxsSWQpOwogICAgIGVsc2UKICAgICAgICAgbWVzc2Fn
ZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJpZCIpLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsK
IApAQCAtMjIxLDE3ICsyMjEsMTcgQEAgc3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0
eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG4KIH0KIAogc3Ry
dWN0IEFzTWV0aG9kQnJpZGdlcyB7Ci0gICAgc3RhdGljIGJvb2wgYXNJbnQoSW5zcGVjdG9yVmFs
dWUqIHZhbHVlLCBpbnQqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBhc0RvdWJsZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGRvdWJs
ZSogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNOdW1iZXIob3V0cHV0KTsgfQorICAgIHN0YXRp
YyBib29sIGFzSW50ZWdlcihJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGludCogb3V0cHV0KSB7IHJl
dHVybiB2YWx1ZS0+YXNJbnRlZ2VyKG91dHB1dCk7IH0KKyAgICBzdGF0aWMgYm9vbCBhc0RvdWJs
ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGRvdWJsZSogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+
YXNEb3VibGUob3V0cHV0KTsgfQogICAgIHN0YXRpYyBib29sIGFzU3RyaW5nKEluc3BlY3RvclZh
bHVlKiB2YWx1ZSwgU3RyaW5nKiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc1N0cmluZyhvdXRw
dXQpOyB9CiAgICAgc3RhdGljIGJvb2wgYXNCb29sZWFuKEluc3BlY3RvclZhbHVlKiB2YWx1ZSwg
Ym9vbCogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKG91dHB1dCk7IH0KICAgICBz
dGF0aWMgYm9vbCBhc09iamVjdChJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc09iamVjdChvdXRwdXQpOyB9CiAg
ICAgc3RhdGljIGJvb2wgYXNBcnJheShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzQXJyYXkob3V0cHV0KTsgfQog
fTsKIAotaW50IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnQoSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoraW50IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRJbnRlZ2VyKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKIHsKLSAg
ICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxpbnQsIGludCwgaW50PihvYmplY3QsIG5hbWUsIHZh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRnZXM6OmFzSW50LCAiTnVt
YmVyIik7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBpbnQsIGludD4ob2JqZWN0
LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjph
c0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKIGRvdWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAwYTU1YTFjOTZhZTQ1OTgxY2NmOGY0MzQxODAxZWZh
NzkzOWVmYjdlLi4yOTU4YTRkY2JhNmM4ZjZhNWE4M2ZkMzY4NzM0OWNlYmE4YzJhZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBjb25zdDsKICAgICB2b2lkIHJlcG9y
dFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBk
YXRhKSBjb25zdDsKIAotICAgIHN0YXRpYyBpbnQgZ2V0SW50KEluc3BlY3Rvck9iamVjdCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3Rv
Y29sRXJyb3JzKTsKKyAgICBzdGF0aWMgaW50IGdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJv
dG9jb2xFcnJvcnMpOwogICAgIHN0YXRpYyBkb3VibGUgZ2V0RG91YmxlKEluc3BlY3Rvck9iamVj
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkq
IHByb3RvY29sRXJyb3JzKTsKICAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZyhJbnNwZWN0b3JP
YmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFy
cmF5KiBwcm90b2NvbEVycm9ycyk7CiAgICAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbihJbnNwZWN0
b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rv
ckFycmF5KiBwcm90b2NvbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCmluZGV4IDBlOTJjZTZkOWZh
Y2Q4NGU5YTE4ZGJmNjVmNDA2NjA3MGQzZDkwNjcuLmFhMjBhNmFmMzY0YjE2MjNhNzA5MGVkZTgx
MTkzYWFiNTM3NDhjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgc3Ry
dWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKICAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKICAg
ICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOworICAgICAgICAgICAg
YXJyYXktPnB1c2hJbnRlZ2VyKHZhbHVlKTsKICAgICAgICAgfQogICAgIH07CiB9OwpAQCAtMTMw
LDcgKzEzMCw3IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8ZG91YmxlPiB7CiAgICAgc3RydWN0
IFRyYWl0cyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFy
cmF5LCBkb3VibGUgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoTnVt
YmVyKHZhbHVlKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoRG91YmxlKHZhbHVlKTsKICAgICAg
ICAgfQogICAgIH07CiB9OwpAQCAtMjQ4LDIxICsyNDgsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBC
aW5kaW5nVHJhaXRzPEluc3BlY3RvckFycmF5PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJh
aXRzPAogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JPYmplY3Q+IDog
cHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6Ok9iamVj
dD4geyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxTdHJpbmc+IDogcHVibGlj
IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OlN0cmluZz4geyB9
OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxib29sPiA6IHB1YmxpYyBQcmltaXRp
dmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpCb29sZWFuPiB7IH07Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJsZT4gOiBwdWJsaWMgUHJpbWl0aXZlQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6TnVtYmVyPiB7IH07Ci0KLS8vIEZJWE1F
OiBBZGQgYW4gSW5zcGVjdG9yOjpUeXBlIHRhZyBmb3IgaW50IHNvIHdlIGNhbiByZW1vdmUgdGhp
cyBzcGVjaWFsIGNhc2UuCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQmluZGluZ1RyYWl0czxpbnQ+IHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBl
Y3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgZG91YmxlIHY7
Ci0gICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc051bWJlcigmdik7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwotICAgIH0KLSNlbmRpZiAvLyAh
QVNTRVJUX0RJU0FCTEVECi19OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxkb3Vi
bGU+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6
OkRvdWJsZT4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxpbnQ+IDogcHVi
bGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OkludGVnZXI+
IHsgfTsKIAogfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4IGUyZDAzNWRjMDlh
MWJiZDg1ZjE3YWEwMTA4ZTIwMTg2MTVmOWEyZDUuLmIyMDM5NjE2YjU2M2MyMzFiZmU2ZmZiMWM4
OWY0YTUwZDU0NDQ5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTQ4NSw0MiArNDg1LDQyIEBAIGJvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzQm9vbGVhbihib29sKikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGRvdWJsZSopIGNvbnN0Citib29sIEluc3Bl
Y3RvclZhbHVlOjphc0RvdWJsZShkb3VibGUqKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIoZmxvYXQqKSBjb25zdAorYm9vbCBJ
bnNwZWN0b3JWYWx1ZTo6YXNEb3VibGUoZmxvYXQqKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIoaW50KikgY29uc3QKK2Jvb2wg
SW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcihpbnQqKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQqKSBjb25zdAor
Ym9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKHVuc2lnbmVkKikgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGxvbmcqKSBj
b25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKGxvbmcqKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyBs
b25nKikgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcihsb25nIGxvbmcqKSBj
b25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNO
dW1iZXIodW5zaWduZWQgbG9uZyopIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVn
ZXIodW5zaWduZWQgbG9uZyopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IEluc3BlY3RvclZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqKSBjb25zdAorYm9v
bCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgbG9uZyopIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTkxLDY1ICs1OTEsNjUgQEAgYm9vbCBJbnNwZWN0
b3JCYXNpY1ZhbHVlOjphc0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGRvdWJsZSogb3V0
cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0RvdWJsZShkb3VibGUqIG91
dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAo
dHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRw
dXQgPSBtX2RvdWJsZVZhbHVlOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3Rv
ckJhc2ljVmFsdWU6OmFzTnVtYmVyKGZsb2F0KiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3Rv
ckJhc2ljVmFsdWU6OmFzRG91YmxlKGZsb2F0KiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgaWYgKHR5
cGUoKSAhPSBUeXBlOjpOdW1iZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
ZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2lj
VmFsdWU6OmFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjphc0ludGVnZXIoaW50KiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgaWYgKHR5cGUoKSAhPSBU
eXBlOjpOdW1iZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAh
PSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0ID0gc3Rh
dGljX2Nhc3Q8aW50PihtX2RvdWJsZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCogb3V0cHV0KSBjb25zdAor
Ym9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIodW5zaWduZWQqIG91dHB1dCkgY29u
c3QKIHsKLSAgICBpZiAodHlwZSgpICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9
IFR5cGU6OkludGVnZXIgJiYgdHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9kb3VibGVWYWx1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNO
dW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0lu
dGVnZXIobG9uZyogb3V0cHV0KSBjb25zdAogewotICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6TnVt
YmVyKQorICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6SW50ZWdlciAmJiB0eXBlKCkgIT0gVHlwZTo6
RG91YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0
PGxvbmc+KG1fZG91YmxlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3Bl
Y3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdAorYm9vbCBJ
bnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0CiB7
Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpOdW1iZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBl
OjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX2RvdWJsZVZhbHVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJl
cih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6
OmFzSW50ZWdlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgaWYgKHR5cGUo
KSAhPSBUeXBlOjpOdW1iZXIpCisgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5
cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAqb3V0cHV0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9kb3VibGVWYWx1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQg
bG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50
ZWdlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3QKIHsKLSAgICBpZiAodHlwZSgp
ICE9IFR5cGU6Ok51bWJlcikKKyAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlw
ZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpvdXRwdXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fZG91YmxlVmFsdWUpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNjU3LDEzICs2NTcsMTMgQEAgYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVl
Ojphc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAog
ewotICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6Qm9vbGVhbiB8fCB0eXBlKCkgPT0gVHlwZTo6
TnVtYmVyKTsKKyAgICBBU1NFUlQodHlwZSgpID09IFR5cGU6OkJvb2xlYW4gfHwgdHlwZSgpID09
IFR5cGU6OkRvdWJsZSB8fCB0eXBlKCkgPT0gVHlwZTo6SW50ZWdlcik7CiAgICAgaWYgKHR5cGUo
KSA9PSBUeXBlOjpCb29sZWFuKSB7CiAgICAgICAgIGlmIChtX2Jvb2xWYWx1ZSkKICAgICAgICAg
ICAgIG91dHB1dC0+YXBwZW5kKHRydWVTdHJpbmcsIDQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdXRwdXQtPmFwcGVuZChmYWxzZVN0cmluZywgNSk7Ci0gICAgfSBlbHNlIGlmICh0eXBl
KCkgPT0gVHlwZTo6TnVtYmVyKSB7CisgICAgfSBlbHNlIGlmICh0eXBlKCkgPT0gVHlwZTo6RG91
YmxlIHx8IHR5cGUoKSA9PSBUeXBlOjpJbnRlZ2VyKSB7CiAgICAgICAgIE51bWJlclRvTFN0cmlu
Z0J1ZmZlciBidWZmZXI7CiAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShtX2RvdWJsZVZhbHVl
KSkgewogICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQobnVsbFN0cmluZywgNCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCA5
N2NiODhiZjFjYzM5ZTE2Y2M3NTkxOWUzYThmMmU4MGI1OTczNmYwLi5kMzBlOWIzZjNkNGZhZWFm
NTYxYjE1YWQ5YTM4MTg0MGFjMzgwODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTU4LDcgKzU4LDggQEAgcHVibGljOgog
ICAgIGVudW0gY2xhc3MgVHlwZSB7CiAgICAgICAgIE51bGwgPSAwLAogICAgICAgICBCb29sZWFu
LAotICAgICAgICBOdW1iZXIsCisgICAgICAgIERvdWJsZSwKKyAgICAgICAgSW50ZWdlciwKICAg
ICAgICAgU3RyaW5nLAogICAgICAgICBPYmplY3QsCiAgICAgICAgIEFycmF5CkBAIC02OSwxNCAr
NzAsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6Ok51bGw7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0
cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihmbG9hdCogb3V0cHV0KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoaW50KiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcih1bnNpZ25lZCogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIobG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIo
bG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNp
Z25lZCBsb25nKiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNp
Z25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdl
cihpbnQqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdlcih1bnNpZ25l
ZCogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKGxvbmcqIG91dHB1
dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdlcihsb25nIGxvbmcqIG91dHB1dCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nKiBv
dXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc0RvdWJsZShkb3VibGUqIG91dHB1dCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzRG91YmxlKGZsb2F0KiBvdXRwdXQpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiogb3V0cHV0KTsKICAgICB2
aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7CkBA
IC0xMDQsMTQgKzEwNSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQmFzaWNWYWx1ZT4gY3JlYXRlKGRvdWJsZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXNCb29s
ZWFuKGJvb2wqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFzTnVt
YmVyKGRvdWJsZSogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNO
dW1iZXIoZmxvYXQqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFz
TnVtYmVyKGludCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNO
dW1iZXIodW5zaWduZWQqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0
IG92ZXJyaWRlOworICAgIC8vIE51bWJlcnMgZnJvbSB0aGUgZnJvbnRlbmQgYXJlIGFsd2F5cyBw
YXJzZWQgYXMgZG91Ymxlcywgc28gd2UgYWxsb3cKKyAgICAvLyBjbGllbnRzIHRvIGNvbnZlcnQg
dG8gaW50ZWdyYWwgdmFsdWVzIHdpdGggdGhpcyBmdW5jdGlvbi4KKyAgICB2aXJ0dWFsIGJvb2wg
YXNJbnRlZ2VyKGludCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNJbnRlZ2VyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBhc0ludGVnZXIobG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgYXNJbnRlZ2VyKGxvbmcgbG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGFzSW50ZWdlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1
dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFzRG91YmxlKGRvdWJsZSogb3V0
cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNEb3VibGUoZmxvYXQqIG91
dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmlu
Z0J1aWxkZXIqIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEyMSwxMSArMTI0LDExIEBA
IHByaXZhdGU6CiAgICAgICAgICwgbV9ib29sVmFsdWUodmFsdWUpIHsgfQogCiAgICAgZXhwbGlj
aXQgSW5zcGVjdG9yQmFzaWNWYWx1ZShpbnQgdmFsdWUpCi0gICAgICAgIDogSW5zcGVjdG9yVmFs
dWUoVHlwZTo6TnVtYmVyKQorICAgICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGU6OkludGVnZXIp
CiAgICAgICAgICwgbV9kb3VibGVWYWx1ZShzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkgeyB9
CiAKICAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGRvdWJsZSB2YWx1ZSkKLSAgICAg
ICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpOdW1iZXIpCisgICAgICAgIDogSW5zcGVjdG9yVmFs
dWUoVHlwZTo6RG91YmxlKQogICAgICAgICAsIG1fZG91YmxlVmFsdWUodmFsdWUpIHsgfQogCiAg
ICAgdW5pb24gewpAQCAtMTcxLDggKzE3NCwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFs
IGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCkgb3ZlcnJpZGU7
CiAKKyAgICAvLyBGSVhNRTogdXNlIHRlbXBsYXRlcyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBk
dXBsaWNhdGVkIHNldCooKSBtZXRob2RzLgogICAgIHZvaWQgc2V0Qm9vbGVhbihjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wpOwotICAgIHZvaWQgc2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwg
ZG91YmxlKTsKKyAgICB2b2lkIHNldEludGVnZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQpOwor
ICAgIHZvaWQgc2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlKTsKICAgICB2b2lk
IHNldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7
CiAgICAgdm9pZCBzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdEJhc2U+KTsKQEAgLTE4MCwxNCArMTg1LDI0IEBAIHByb3RlY3RlZDoKIAogICAg
IGl0ZXJhdG9yIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBjb25zdF9pdGVyYXRvciBm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogdXNlIHRlbXBs
YXRlcyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBkdXBsaWNhdGVkIGdldCooKSBtZXRob2RzLgog
ICAgIGJvb2wgZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXROdW1iZXIoY29uc3QgU3RyaW5nJiBu
YW1lLCBUKiBvdXRwdXQpIGNvbnN0CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXREb3Vi
bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBUKiBvdXRwdXQpIGNvbnN0CisgICAgeworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOworICAgICAgICBpZiAoIXZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdmFsdWUtPmFz
RG91YmxlKG91dHB1dCk7CisgICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgZ2V0SW50
ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUsIFQqIG91dHB1dCkgY29uc3QKICAgICB7CiAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBnZXQobmFtZSk7CiAgICAgICAgIGlmICgh
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB2YWx1ZS0+
YXNOdW1iZXIob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5hc0ludGVnZXIob3V0cHV0
KTsKICAgICB9CisKICAgICBib29sIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
Zyogb3V0cHV0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZ2V0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gZ2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKQEAgLTIxOSw3ICsyMzQs
OCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3Q7CiAK
ICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuOwotICAgIHVzaW5nIElu
c3BlY3Rvck9iamVjdEJhc2U6OnNldE51bWJlcjsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpzZXRJbnRlZ2VyOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldERvdWJs
ZTsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRTdHJpbmc7CiAgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0VmFsdWU7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0T2JqZWN0OwpAQCAtMjI3LDcgKzI0Myw4IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IEluc3BlY3Rvck9iamVjdEJhc2U6OmZpbmQ7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6Z2V0Qm9vbGVhbjsKLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXROdW1iZXI7
CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcjsKKyAgICB1c2luZyBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpnZXREb3VibGU7CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6Z2V0U3RyaW5nOwogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldE9iamVj
dDsKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRBcnJheTsKQEAgLTI1Nyw4ICsy
NzQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3Bl
Y3RvckFycmF5Piogb3V0cHV0KSBvdmVycmlkZTsKIAogICAgIHZvaWQgcHVzaEJvb2xlYW4oYm9v
bCk7Ci0gICAgdm9pZCBwdXNoSW50KGludCk7Ci0gICAgdm9pZCBwdXNoTnVtYmVyKGRvdWJsZSk7
CisgICAgdm9pZCBwdXNoSW50ZWdlcihpbnQpOworICAgIHZvaWQgcHVzaERvdWJsZShkb3VibGUp
OwogICAgIHZvaWQgcHVzaFN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHB1c2hWYWx1
ZShQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7CiAgICAgdm9pZCBwdXNoT2JqZWN0KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CkBAIC0yODcsOCArMzA0LDggQEAgcHVibGljOgogICAg
IHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheTsKIAogICAgIHVzaW5nIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaEJvb2xlYW47Ci0gICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoSW50OwotICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaE51bWJlcjsKKyAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnRlZ2VyOworICAgIHVzaW5nIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaERvdWJsZTsKICAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1
c2hTdHJpbmc7CiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoVmFsdWU7CiAgICAg
dXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0OwpAQCAtMzE2LDcgKzMzMywxMiBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCB2YWx1ZSkKICAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVlKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dCB2YWx1ZSkKK3sKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVh
dGUodmFsdWUpKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0RG91
YmxlKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZhbHVlKQogewogICAgIHNldFZhbHVlKG5h
bWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQpAQCAtMzUyLDEyICsz
NzQsMTIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVhbihib29s
IHZhbHVlKQogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZh
bHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEludChpbnQg
dmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnRlZ2VyKGludCB2
YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2
YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hOdW1iZXIo
ZG91YmxlIHZhbHVlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoRG91Ymxl
KGRvdWJsZSB2YWx1ZSkKIHsKICAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZSh2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCAzYTUyOGFmYTJlNDUyMGIwZTQwNGQ4NzU2YjVkZDMwYWEyODgzYTNiLi4wYWRlMzRlNjAzMWZj
MjJjYzEyNDgxMjg0NjQ0ZTIyMTk5YTQ3ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtMTUyLDggKzE1Miw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYKIHsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50T2JqZWN0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBicmVha3BvaW50T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJ1cmwiKSwgdXJsKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJsaW5lTnVtYmVyIiksIGxpbmVOdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3Qt
PnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvbHVtbk51bWJlciIpLCBjb2x1bW5OdW1iZXIpOwor
ICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJsaW5lTnVtYmVy
IiksIGxpbmVOdW1iZXIpOworICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEludGVnZXIoQVNDSUlM
aXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgY29sdW1uTnVtYmVyKTsKICAgICBicmVha3BvaW50T2Jq
ZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb25kaXRpb24iKSwgY29uZGl0aW9uKTsKICAg
ICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiaXNSZWdleCIpLCBp
c1JlZ2V4KTsKICAgICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgi
YXV0b0NvbnRpbnVlIiksIGF1dG9Db250aW51ZSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJv
clN0cmluZyogZXJyb3JTdHIKICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBpZGVudGlmaWVyIGlz
IG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBzYW1wbGVzCiAgICAg
ICAgIC8vIGluIHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVsdGlwbGUgYmFja2VuZCBwcm9iZSBhY3Rp
b25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4KICAgICAgICAgaW50IGlkZW50aWZpZXIg
PSAwOwotICAgICAgICBvYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImlkIiksICZpZGVu
dGlmaWVyKTsKKyAgICAgICAgb2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwg
JmlkZW50aWZpZXIpOwogCiAgICAgICAgIFN0cmluZyBkYXRhOwogICAgICAgICBvYmplY3QtPmdl
dFN0cmluZyhBU0NJSUxpdGVyYWwoImRhdGEiKSwgJmRhdGEpOwpAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IGxpCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBsb2NhdGlvbiwgSlNDOjpTb3Vy
Y2VJRCogc291cmNlSUQsIHVuc2lnbmVkKiBsaW5lTnVtYmVyLCB1bnNpZ25lZCogY29sdW1uTnVt
YmVyKQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0cjsKLSAgICBpZiAoIWxvY2F0aW9uLT5nZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCIpLCAmc2NyaXB0SURTdHIpIHx8ICFsb2NhdGlv
bi0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBsaW5lTnVtYmVyKSkgewor
ICAgIGlmICghbG9jYXRpb24tPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmlwdElkIiksICZz
Y3JpcHRJRFN0cikgfHwgIWxvY2F0aW9uLT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibGluZU51
bWJlciIpLCBsaW5lTnVtYmVyKSkgewogICAgICAgICAqc291cmNlSUQgPSBKU0M6Om5vU291cmNl
SUQ7CiAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQgYW5kIGxp
bmVOdW1iZXIgYXJlIHJlcXVpcmVkLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTYs
NyArMjk2LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIEluc3BlY3Rvck9iamVjdCogbG9jYXRpb24sIEoKIAogICAgICpzb3VyY2VJRCA9IHNj
cmlwdElEU3RyLnRvSW50UHRyKCk7CiAgICAgKmNvbHVtbk51bWJlciA9IDA7Ci0gICAgbG9jYXRp
b24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImNvbHVtbk51bWJlciIpLCBjb2x1bW5OdW1iZXIp
OworICAgIGxvY2F0aW9uLT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uTnVtYmVyIiks
IGNvbHVtbk51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwMSw4ICs2MDEsOCBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNl
SUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdAogICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJM
LCB1cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFNjcmlwdEJy
ZWFrcG9pbnQgYnJlYWtwb2ludDsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVy
KEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCAmYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKLSAg
ICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uTnVt
YmVyIiksICZicmVha3BvaW50LmNvbHVtbk51bWJlcik7CisgICAgICAgIGJyZWFrcG9pbnRPYmpl
Y3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJsaW5lTnVtYmVyIiksICZicmVha3BvaW50Lmxp
bmVOdW1iZXIpOworICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTnVtYmVyIiksICZicmVha3BvaW50LmNvbHVtbk51bWJlcik7CiAgICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoImNvbmRpdGlvbiIpLCAm
YnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29s
ZWFuKEFTQ0lJTGl0ZXJhbCgiYXV0b0NvbnRpbnVlIiksICZicmVha3BvaW50LmF1dG9Db250aW51
ZSk7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAKaW5kZXggYjc2ZjYwZGVlMzhlNzUwZjBkNzlhMGY2ODJmYmQ0ZjNjMjlmNjcw
OS4uMzE4ZmMwOGFkMDhiOTU3NzJmY2VkMGFkMmVjOTEwOTFjNDVlYzU1NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0yMjEsOSArMjIxLDkgQEAgdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0
cmluZyogZXIKICAgICAgICAgaW50IGRlc2NyaXB0b3I7CiAgICAgICAgIFN0cmluZyBzb3VyY2VJ
REFzU3RyaW5nOwogICAgICAgICBpbnQgZGl2b3Q7Ci0gICAgICAgIGxvY2F0aW9uLT5nZXROdW1i
ZXIoQVNDSUlMaXRlcmFsKCJ0eXBlSW5mb3JtYXRpb25EZXNjcmlwdG9yIiksICZkZXNjcmlwdG9y
KTsKKyAgICAgICAgbG9jYXRpb24tPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ0eXBlSW5mb3Jt
YXRpb25EZXNjcmlwdG9yIiksICZkZXNjcmlwdG9yKTsKICAgICAgICAgbG9jYXRpb24tPmdldFN0
cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlEIiksICZzb3VyY2VJREFzU3RyaW5nKTsKLSAgICAg
ICAgbG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImRpdm90IiksICZkaXZvdCk7Cisg
ICAgICAgIGxvY2F0aW9uLT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGl2b3QiKSwgJmRpdm90
KTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURl
c2NyaXB0aW9uPiB0eXBlRGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpUeXBlRGVzY3JpcHRpb246OmNyZWF0ZSgpOwogICAgICAgICBib29sIG9rYXk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0b3IucHkKaW5kZXggNjI5ZjNhOGM3N2RhMzdiMWNhN2E1ZTU5OTQ0NTYyZjliMjFh
ZWU3OC4uMmE2ZWI2NzkyMzQ3Njg2YjE5NzBhYTQ5MzcxM2JjYWE3ZDU2Y2UzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRvci5weQpAQCAtMjMyLDcgKzIzMiw5IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAg
ICAgICAgICAgIHJldHVybiAnZ2V0QXJyYXknCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUs
IFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUoKSBpcyAnaW50
ZWdlcic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdnZXRJbnQnCisgICAgICAgICAgICAgICAg
cmV0dXJuICdnZXRJbnRlZ2VyJworICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGlz
ICdudW1iZXInOgorICAgICAgICAgICAgICAgIHJldHVybiAnZ2V0RG91YmxlJwogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJ2dldCcgKyB1Y2ZpcnN0KF90eXBlLnJh
d19uYW1lKCkpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBlKToKQEAg
LTI0Nyw5ICsyNDksMTEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICBpZiBpc2luc3RhbmNl
KF90eXBlLCBBcnJheVR5cGUpOgogICAgICAgICAgICAgcmV0dXJuICdzZXRBcnJheScKICAgICAg
ICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6Ci0gICAgICAgICAgICBpZiBf
dHlwZS5yYXdfbmFtZSgpIGluIFsnaW50ZWdlcicsICdudW1iZXInXToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJ3NldE51bWJlcicKLSAgICAgICAgICAgIGVsaWYgX3R5cGUucmF3X25hbWUoKSBp
biBbJ2FueSddOgorICAgICAgICAgICAgaWYgX3R5cGUucmF3X25hbWUoKSBpcyAnaW50ZWdlcic6
CisgICAgICAgICAgICAgICAgcmV0dXJuICdzZXRJbnRlZ2VyJworICAgICAgICAgICAgZWxpZiBf
dHlwZS5yYXdfbmFtZSgpIGlzICdudW1iZXInOgorICAgICAgICAgICAgICAgIHJldHVybiAnc2V0
RG91YmxlJworICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGlzICdhbnknOgogICAg
ICAgICAgICAgICAgIHJldHVybiAnc2V0VmFsdWUnCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHJldHVybiAnc2V0JyArIHVjZmlyc3QoX3R5cGUucmF3X25hbWUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCAyOTFiYjg2YzdjMjc3ZTEzN2Yw
OTEwMTRhNmM2YzE5NWY2ZTg3YmIwLi40ZTE5YWRiMWRhYjUzZTMyMTg2ZTYwNTZmYjk3YzY5ZmE3
M2EwNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0yMDYs
NyArMjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICBlbHNlIGlmIChtZXRob2Qg
PT0gImV4ZWN1dGVTUUxBc3luYyIpCiAgICAgICAgIGV4ZWN1dGVTUUxBc3luYyhjYWxsSWQsICpt
ZXNzYWdlLmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1l
dGhvZE5vdEZvdW5kLCBTdHJpbmcoIiciKSArICJEYXRhYmFzZSIgKyAnLicgKyBtZXRob2QgKyAi
JyB3YXMgbm90IGZvdW5kIik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMg
bm90IGZvdW5kIikpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMobG9uZwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5l
ciA9IG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIikpOwogICAgIEluc3Bl
Y3Rvck9iamVjdCogcGFyYW1zQ29udGFpbmVyUHRyID0gcGFyYW1zQ29udGFpbmVyLmdldCgpOwog
ICAgIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9yc1B0ciA9IHByb3RvY29sRXJyb3JzLmdl
dCgpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmdldEludChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXJQdHIsIEFT
Q0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAg
ICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
ZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnNQdHIpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAg
ICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50
cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNR
TFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwpAQCAtMjQyLDEzICsyNDIsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzKGxvbmcKICAgICAgICAgaWYgKG91dF9ub3Rlcy5pc0Fzc2lnbmVkKCkpCiAg
ICAgICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG91dF9u
b3Rlcy5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF90aW1lc3RhbXAuaXNBc3NpZ25lZCgp
KQotICAgICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSwgb3V0X3RpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0RG91
YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXAuZ2V0VmFsdWUoKSk7
CiAgICAgICAgIGlmIChvdXRfdmFsdWVzLmlzQXNzaWduZWQoKSkKICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMuZ2V0VmFsdWUo
KSk7CiAgICAgICAgIGlmIChvdXRfcGF5bG9hZC5pc0Fzc2lnbmVkKCkpCiAgICAgICAgICAgICBy
ZXN1bHQtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZC5nZXRW
YWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF9kYXRhYmFzZUlkLmlzQXNzaWduZWQoKSkKLSAgICAg
ICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRf
ZGF0YWJhc2VJZC5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdlcihB
U0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQuZ2V0VmFsdWUoKSk7CiAg
ICAgICAgIGlmIChvdXRfc3FsRXJyb3IpCiAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChB
U0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAgIGlmIChvdXRf
c2NyZWVuQ29sb3IuaXNBc3NpZ25lZCgpKQpAQCAtMjY5LDEzICsyNjksMTMgQEAgdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWwKICAgICBpZiAobm90ZXMuaXNBc3NpZ25lZCgpKQogICAgICAgICBqc29u
TWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMuZ2V0VmFsdWUo
KSk7CiAgICAgaWYgKHRpbWVzdGFtcC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgIGpzb25NZXNzYWdl
LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wLmdldFZhbHVl
KCkpOworICAgICAgICBqc29uTWVzc2FnZS0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0
YW1wIiksIHRpbWVzdGFtcC5nZXRWYWx1ZSgpKTsKICAgICBpZiAodmFsdWVzLmlzQXNzaWduZWQo
KSkKICAgICAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIp
LCB2YWx1ZXMuZ2V0VmFsdWUoKSk7CiAgICAgaWYgKHBheWxvYWQuaXNBc3NpZ25lZCgpKQogICAg
ICAgICBqc29uTWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxv
YWQuZ2V0VmFsdWUoKSk7CiAgICAgaWYgKGRhdGFiYXNlSWQuaXNBc3NpZ25lZCgpKQotICAgICAg
ICBqc29uTWVzc2FnZS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBkYXRh
YmFzZUlkLmdldFZhbHVlKCkpOworICAgICAgICBqc29uTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZC5nZXRWYWx1ZSgpKTsKICAgICBpZiAo
c3FsRXJyb3IpCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJz
cWxFcnJvciIpLCBzcWxFcnJvcik7CiAgICAgaWYgKHNjcmVlbkNvbG9yLmlzQXNzaWduZWQoKSkK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbgogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lciA9IG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgicGFyYW1zIikpOwogICAgIEluc3BlY3Rvck9iamVjdCogcGFyYW1zQ29udGFpbmVy
UHRyID0gcGFyYW1zQ29udGFpbmVyLmdldCgpOwogICAgIEluc3BlY3RvckFycmF5KiBwcm90b2Nv
bEVycm9yc1B0ciA9IHByb3RvY29sRXJyb3JzLmdldCgpOwotICAgIGludCBpbl9kYXRhYmFzZUlk
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXNDb250YWluZXJQdHIs
IEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7
CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
SW50ZWdlcihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIGlmIChw
cm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBw
cm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMi
KTsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lciA9IG1lc3NhZ2UuZ2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgicGFyYW1zIikpOwogICAgIEluc3BlY3Rvck9iamVjdCogcGFyYW1zQ29udGFp
bmVyUHRyID0gcGFyYW1zQ29udGFpbmVyLmdldCgpOwogICAgIEluc3BlY3RvckFycmF5KiBwcm90
b2NvbEVycm9yc1B0ciA9IHByb3RvY29sRXJyb3JzLmdldCgpOwotICAgIGludCBpbl9kYXRhYmFz
ZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXNDb250YWluZXJQ
dHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0
cik7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIp
LCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFT
Q0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIGlm
IChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBi
ZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmMiKTsKQEAgLTM0MSwxMCArMzQx
LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNR
TFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkg
ewogICAgICAgICByZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwg
b3V0X2NvbHVtbk5hbWVzKTsKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJub3RlcyIpLCBvdXRfbm90ZXMpOwotICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxp
dGVyYWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wKTsKKyAgICAgICAgcmVzdWx0LT5zZXRE
b3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFtcCk7CiAgICAgICAg
IHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG91dF92YWx1ZXMpOwog
ICAgICAgICByZXN1bHQtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5
bG9hZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJ
ZCIpLCBvdXRfZGF0YWJhc2VJZCk7CisgICAgICAgIHJlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxp
dGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNl
dE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7CiAgICAgICAg
IHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5Db2xvcikpOwog
ICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENvbG9y
KSk7CkBAIC0zNTksMTAgKzM1OSwxMCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1YwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1l
cyIpLCBjb2x1bW5OYW1lcyk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoIm5vdGVzIiksIG5vdGVzKTsKLSAgICBqc29uTWVzc2FnZS0+c2V0TnVtYmVyKEFTQ0lJTGl0
ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7CisgICAganNvbk1lc3NhZ2UtPnNldERvdWJs
ZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOwogICAgIGpzb25NZXNzYWdl
LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgdmFsdWVzKTsKICAgICBqc29uTWVz
c2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxvYWQpOwotICAgIGpz
b25NZXNzYWdlLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNl
SWQpOworICAgIGpzb25NZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJ
ZCIpLCBkYXRhYmFzZUlkKTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgic3FsRXJyb3IiKSwgc3FsRXJyb3IpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51
bUNvbnN0YW50VmFsdWUoc2NyZWVuQ29sb3IpKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0
RW51bUNvbnN0YW50VmFsdWUocHJpbnRDb2xvcikpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29u
dGFpbmVyID0gbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSk7CiAgICAg
SW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIgPSBwYXJhbXNDb250YWluZXIuZ2V0
KCk7CiAgICAgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzUHRyID0gcHJvdG9jb2xFcnJv
cnMuZ2V0KCk7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0SW50KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlk
IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lclB0
ciwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRy
KTsKICAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkg
ewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJn
dW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVj
dXRlU1FMQXN5bmMiKTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxk
ZXI8U1RBVEUgfCBDb2RlU2V0PiYgc2V0Q29kZShpbnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBDb2RlU2V0KSwgcHJvcGVydHlfY29kZV9h
bHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJh
bCgiY29kZSIpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxD
b2RlU2V0PigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGZjZmUyY2Q3ZGViOGMx
MjEyMWFhMWIxNDlhMjJlZGVmMGNlZDE1MzQuLjA1MTBhZWMwNDMxZmQ2MzhlZmQ5NmFhYTZiZmJm
ZjRjZGEyNmMwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0CiAgICAgZWxzZSBpZiAobWV0aG9kID09ICJleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoY2FsbElk
LCAqbWVzc2FnZS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiRGF0YWJhc2UiICsgJy4nICsgbWV0aG9k
ICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicg
d2FzIG5vdCBmb3VuZCIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCkBAIC0xOTksMTMgKzE5OSwxMyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBjYWxsSQogICAgIGJvb2wgbm90ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwogICAgIFN0
cmluZyBpbl9ub3RlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFy
YW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksICZub3Rlc192YWx1ZUZvdW5k
LCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA9IGZh
bHNlOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IGluX3RpbWVz
dGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXROdW1iZXIocGFyYW1zQ29udGFp
bmVyUHRyLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGltZXN0YW1wX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91
YmxlKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJnRpbWVz
dGFtcF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCB2YWx1ZXNfdmFs
dWVGb3VuZCA9IGZhbHNlOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
aW5fdmFsdWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXND
b250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICZ2YWx1ZXNfdmFsdWVGb3VuZCwg
cHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIGJvb2wgcGF5bG9hZF92YWx1ZUZvdW5kID0gZmFsc2U7
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGluX3BheWxvYWQgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QW55KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlM
aXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRy
KTsKICAgICBib29sIGRhdGFiYXNlSWRfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIGludCBpbl9k
YXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChwYXJhbXNDb250
YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAmZGF0YWJhc2VJZF92YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAmZGF0YWJhc2VJZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVy
cm9yc1B0cik7CiAgICAgYm9vbCBzcWxFcnJvcl92YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJvciA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVy
YWwoInNxbEVycm9yIiksICZzcWxFcnJvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9yc1B0cik7
CiAgICAgYm9vbCBzY3JlZW5Db2xvcl92YWx1ZUZvdW5kID0gZmFsc2U7CkBAIC0yMzcsMTMgKzIz
NywxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgICAgICBpZiAob3V0X25vdGVzLmlz
QXNzaWduZWQoKSkKICAgICAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
bm90ZXMiKSwgb3V0X25vdGVzLmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X3RpbWVzdGFt
cC5pc0Fzc2lnbmVkKCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoInRpbWVzdGFtcCIpLCBvdXRfdGltZXN0YW1wLmdldFZhbHVlKCkpOworICAgICAgICAgICAg
cmVzdWx0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgb3V0X3RpbWVzdGFt
cC5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF92YWx1ZXMuaXNBc3NpZ25lZCgpKQogICAg
ICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgb3V0X3Zh
bHVlcy5nZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF9wYXlsb2FkLmlzQXNzaWduZWQoKSkK
ICAgICAgICAgICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91
dF9wYXlsb2FkLmdldFZhbHVlKCkpOwogICAgICAgICBpZiAob3V0X2RhdGFiYXNlSWQuaXNBc3Np
Z25lZCgpKQotICAgICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRh
YmFzZUlkIiksIG91dF9kYXRhYmFzZUlkLmdldFZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0
LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZC5n
ZXRWYWx1ZSgpKTsKICAgICAgICAgaWYgKG91dF9zcWxFcnJvcikKICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsKICAg
ICAgICAgaWYgKG91dF9zY3JlZW5Db2xvci5pc0Fzc2lnbmVkKCkpCkBAIC0yNjIsMTAgKzI2Miwx
MCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZAogICAgIEluc3BlY3RvckFycmF5KiBwcm90b2Nv
bEVycm9yc1B0ciA9IHByb3RvY29sRXJyb3JzLmdldCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFt
ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIFN0cmluZyBpbl9ub3RlcyA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyUHRy
LCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKLSAg
ICBkb3VibGUgaW5fdGltZXN0YW1wID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE51
bWJlcihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzUHRyKTsKKyAgICBkb3VibGUgaW5fdGltZXN0YW1wID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgidGltZXN0YW1wIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVlcyA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVy
YWwoInZhbHVlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGluX3BheWxvYWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0QW55KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJwYXlsb2Fk
IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzUHRyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnQocGFyYW1zQ29udGFpbmVyUHRyLCBB
U0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwor
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVs
bHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gaW5fc3FsRXJyb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2Jq
ZWN0KHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9yc1B0cik7CiAgICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAg
IFN0cmluZyBpbl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0
cmluZyhwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9yc1B0cik7CkBAIC0yOTEsMTAgKzI5MSwxMCBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgcmVzdWx0
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7
CiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgb3V0X25v
dGVzKTsKLSAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSwgb3V0X3RpbWVzdGFtcCk7CisgICAgICAgIHJlc3VsdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIiksIG91dF90aW1lc3RhbXApOwogICAgICAgICByZXN1bHQtPnNldE9iamVj
dChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBvdXRfdmFsdWVzKTsKICAgICAgICAgcmVzdWx0LT5z
ZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgb3V0X3BheWxvYWQpOwotICAgICAgICBy
ZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNl
SWQpOworICAgICAgICByZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlk
IiksIG91dF9kYXRhYmFzZUlkKTsKICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwogICAgICAgICByZXN1bHQtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFRl
c3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfc2NyZWVuQ29sb3IpKTsKICAgICAgICAgcmVzdWx0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfcHJpbnRDb2xvcikpOwpAQCAtNTIxLDcgKzUy
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvZGVTZXQ+JiBzZXRDb2Rl
KGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFU
RSAmIENvZGVTZXQpLCBwcm9wZXJ0eV9jb2RlX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1f
cmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZhbHVlKTsKKyAgICAgICAg
ICAgIG1fcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENvZGVTZXQ+KCk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9t
YWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBhN2VhNzhi
NDIxYzFjMjhjMDRhZjJjOGUxYzFmMGVhNTM4MGNjOTY5Li41ZDI3M2Q1ZTQzZGEwYzY4MWRmYTAz
NDBiYzY4ZmVkODY2MDg0ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFu
ZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXpl
cy5qc29uLXJlc3VsdApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0
CiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlMSIpCiAgICAgICAgIGxvYWRSZXNvdXJj
ZTEoY2FsbElkLCAqbWVzc2FnZS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiTmV0d29yazEiICsgJy4n
ICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1l
dGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0
b3JPYmplY3QmKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNo
TWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIFN0cmluZygiJyIpICsg
Ik5ldHdvcmszIiArICcuJyArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKKyAgICAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5l
dHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5k
ZXggNWNlOWE1ZTA0YTdlNGMxNGNiZWZhZDliYmJmZjk5MTFkZTMxMzEyNy4uYzk4ODc2MWNlNTYy
NGQzZWVlZDNkNDVjZjZiMTMxYjM5ZDM2YjRlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlv
bmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NS
ZWZQdAogICAgIGlmIChub3RlcykKICAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJub3RlcyIpLCAqbm90ZXMpOwogICAgIGlmICh0aW1lc3RhbXApCi0gICAgICAg
IHBhcmFtc09iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICp0aW1l
c3RhbXApOworICAgICAgICBwYXJhbXNPYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRp
bWVzdGFtcCIpLCAqdGltZXN0YW1wKTsKICAgICBpZiAodmFsdWVzKQogICAgICAgICBwYXJhbXNP
YmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMpOwogICAgIGlm
IChwYXlsb2FkKQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmCiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29s
dW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMpOwotICAgIHBhcmFtc09iamVjdC0+c2V0TnVtYmVy
KEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7CisgICAgcGFyYW1zT2JqZWN0
LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wKTsKICAgICBw
YXJhbXNPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCB2YWx1ZXMpOwog
ICAgIHBhcmFtc09iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxv
YWQpOwogICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3Ii
KSwgc3FsRXJyb3IpOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRl
cjxTVEFURSB8IENvZGVTZXQ+JiBzZXRDb2RlKGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIENvZGVTZXQpLCBwcm9wZXJ0eV9jb2RlX2Fs
cmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJjb2RlIiksIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRJbnRlZ2VyKEFTQ0lJ
TGl0ZXJhbCgiY29kZSIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPENv
ZGVTZXQ+KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1m
ZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggZWFiZmNlMGUyYzA1Njk4MzMzZjgzZWVhNTFiMjhlNTkw
MWUwMWZlNi4uMDQzMmNmNDMyYzI0M2ZmYzhlNzk4NmY5MWY4NjcyNmNhOTgxMGZmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICBpZiAobWV0aG9kID09ICJs
b2FkUmVzb3VyY2UiKQogICAgICAgICBsb2FkUmVzb3VyY2UoY2FsbElkLCAqbWVzc2FnZS5nZXQo
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgU3RyaW5nKCInIikgKyAiTmV0d29yazEiICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBm
b3VuZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9y
KCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFr
ZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCkBAIC00MTksNyArNDE5
LDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29kZVNldD4mIHNldENvZGUo
aW50IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRF
ICYgQ29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAgbV9y
ZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOworICAgICAgICAg
ICAgbV9yZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZhbHVlKTsKICAg
ICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8Q29kZVNldD4oKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IGRmOTdjMjBlM2E4MzY3YjZjNDVh
YTU4MjhlYWQ1ODIzNDg4M2ZjNTcuLmNhOGZkMmE4MjliZjZiOTc0MDYzZGNiZWY5YTM3Njg2ZTMx
NjZmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0zNDEsNyAr
MzQxLDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29kZVNldD4mIHNldENv
ZGUoaW50IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNU
QVRFICYgQ29kZVNldCksIHByb3BlcnR5X2NvZGVfYWxyZWFkeV9zZXQpOwotICAgICAgICAgICAg
bV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgdmFsdWUpOworICAgICAg
ICAgICAgbV9yZXN1bHQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8Q29kZVNldD4oKTsKICAgICAgICAgfQogCkBA
IC00MzEsNyArNDMxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRUaW1lc3RhbXAoZG91Ymxl
IHZhbHVlKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHZhbHVlKTsKKyAgICAgICAgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHZhbHVlKTsKICAgICB9
CiAKICAgICB2b2lkIHNldFZhbHVlcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiB2YWx1ZSkKQEAgLTQ5OCw3ICs0OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8
U1RBVEUgfCBUaW1lc3RhbXBTZXQ+JiBzZXRUaW1lc3RhbXAoZG91YmxlIHZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgVGltZXN0YW1wU2V0KSwg
cHJvcGVydHlfdGltZXN0YW1wX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5z
ZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOworICAgICAgICAgICAg
bV9yZXN1bHQtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPFRpbWVzdGFtcFNldD4oKTsKICAgICAgICAgfQog
CkBAIC02OTksNyArNjk5LDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgVGlt
ZXN0YW1wU2V0PiYgc2V0VGltZXN0YW1wKGRvdWJsZSB2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIFRpbWVzdGFtcFNldCksIHByb3BlcnR5X3Rp
bWVzdGFtcF9hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcmVzdWx0LT5z
ZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuIGNhc3RTdGF0ZTxUaW1lc3RhbXBTZXQ+KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmct
cnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCAxZWYxM2M3MjA1NDU2YjAzYzhhYTFjM2Qy
NDZjZWQ1MTEzNGE0ZmU0Li5kMTMxOTA4M2I1MmZlN2U5ZWZiNjQxMTYzNGE2ZGEyZDhmZWE5ODNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMzUwLDcgKzM1MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQnVpbGRlcjxTVEFURSB8IE51bWJlclNldD4mIHNldE51bWJl
cihpbnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RB
VEUgJiBOdW1iZXJTZXQpLCBwcm9wZXJ0eV9udW1iZXJfYWxyZWFkeV9zZXQpOwotICAgICAgICAg
ICAgbV9yZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoIm51bWJlciIpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBtX3Jlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoIm51bWJlciIpLCB2
YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPE51bWJlclNldD4oKTsKICAgICAg
ICAgfQogCkBAIC0zNjQsNyArMzY0LDcgQEAgcHVibGljOgogICAgICAgICBCdWlsZGVyPFNUQVRF
IHwgSWRTZXQ+JiBzZXRJZChpbnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKCEoU1RBVEUgJiBJZFNldCksIHByb3BlcnR5X2lkX2FscmVhZHlfc2V0KTsKLSAg
ICAgICAgICAgIG1fcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCB2YWx1ZSk7
CisgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlkIiksIHZh
bHVlKTsKICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8SWRTZXQ+KCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCmluZGV4
IDczZjk4YTU2ZDI3ZDA5MWMxNjU1MDk2Y2NhNzMzYzA2ZGMwZjVlOTUuLjg2M2Y1YjQxYzUxYTIz
MTJiZmQ5ZjMyNGUwYzQyOGFlNDJkNmY0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+IGJv
b2wgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88Ym9vbD4oKQogdGVtcGxhdGU8PiBkb3VibGUgRW5j
b2RlZFZhbHVlOjpjb252ZXJ0VG88ZG91YmxlPigpCiB7CiAgICAgZG91YmxlIHJlc3VsdDsKLSAg
ICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBi
b29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5hc0RvdWJsZSgmcmVzdWx0KTsKICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTEyMSw3ICsxMjEsNyBAQCB0ZW1wbGF0ZTw+IGRvdWJsZSBFbmNvZGVkVmFsdWU6
OmNvbnZlcnRUbzxkb3VibGU+KCkKIHRlbXBsYXRlPD4gZmxvYXQgRW5jb2RlZFZhbHVlOjpjb252
ZXJ0VG88ZmxvYXQ+KCkKIHsKICAgICBmbG9hdCByZXN1bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2Vl
ZGVkID0gbV92YWx1ZS0+YXNOdW1iZXIoJnJlc3VsdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVk
ID0gbV92YWx1ZS0+YXNEb3VibGUoJnJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3Vj
Y2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzAsNyAr
MTMwLDcgQEAgdGVtcGxhdGU8PiBmbG9hdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxmbG9hdD4o
KQogdGVtcGxhdGU8PiBpbnQzMl90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDMyX3Q+KCkK
IHsKICAgICBpbnQzMl90IHJlc3VsdDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVl
LT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSBtX3ZhbHVlLT5h
c0ludGVnZXIoJnJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0
U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzksNyArMTM5LDcgQEAgdGVt
cGxhdGU8PiBpbnQzMl90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPGludDMyX3Q+KCkKIHRlbXBs
YXRlPD4gaW50NjRfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQ2NF90PigpCiB7CiAgICAg
aW50NjRfdCByZXN1bHQ7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNOdW1i
ZXIoJnJlc3VsdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gbV92YWx1ZS0+YXNJbnRlZ2Vy
KCZyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRl
ZCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHRlbXBsYXRlPD4g
aW50NjRfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQ2NF90PigpCiB0ZW1wbGF0ZTw+IHVp
bnQzMl90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQzMl90PigpCiB7CiAgICAgdWludDMy
X3QgcmVzdWx0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZy
ZXN1bHQpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzSW50ZWdlcigmcmVz
dWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB0ZW1wbGF0ZTw+IHVpbnQz
Ml90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQzMl90PigpCiB0ZW1wbGF0ZTw+IHVpbnQ2
NF90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQ2NF90PigpCiB7CiAgICAgdWludDY0X3Qg
cmVzdWx0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzTnVtYmVyKCZyZXN1
bHQpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IG1fdmFsdWUtPmFzSW50ZWdlcigmcmVzdWx0
KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDRiMjk3OTMyODBkOTU5ZDUzMTUwYWE2MTA2ODJjNzg5NWEzNmVl
Y2MuLmZkN2U5MjM4ODQ0ZGI4YTdmYmU0ODc1ODE4NGFjNmQ1MWYwMjdjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTE5LDE0ICsx
MTksMTQgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGNvbG9yT2JqZWN0KQogICAgIGludCByOwogICAgIGludCBnOwogICAgIGludCBiOwot
ICAgIGJvb2wgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoInIiLCAmcik7Ci0g
ICAgc3VjY2VzcyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJnIiwgJmcpOwotICAgIHN1
Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiYiIsICZiKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0SW50ZWdlcigiciIsICZyKTsKKyAgICBzdWNjZXNz
IHw9ICgqY29sb3JPYmplY3QpLT5nZXRJbnRlZ2VyKCJnIiwgJmcpOworICAgIHN1Y2Nlc3MgfD0g
KCpjb2xvck9iamVjdCktPmdldEludGVnZXIoImIiLCAmYik7CiAgICAgaWYgKCFzdWNjZXNzKQog
ICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwogCiAgICAgZG91YmxlIGE7Ci0gICAg
c3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImEiLCAmYSk7CisgICAgc3VjY2Vz
cyA9ICgqY29sb3JPYmplY3QpLT5nZXREb3VibGUoImEiLCAmYSk7CiAgICAgaWYgKCFzdWNjZXNz
KQogICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBz
dGF0aWMgYm9vbCBwYXJzZVF1YWQoY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcXVhZEFy
cmF5LCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgaWYgKHF1YWRBcnJheS0+bGVuZ3RoKCkgIT0gY29v
cmRpbmF0ZXNJblF1YWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvb3JkaW5hdGVzSW5RdWFkOyArK2kpIHsKLSAgICAgICAgaWYgKCFxdWFkQXJy
YXktPmdldChpKS0+YXNOdW1iZXIoY29vcmRpbmF0ZXMgKyBpKSkKKyAgICAgICAgaWYgKCFxdWFk
QXJyYXktPmdldChpKS0+YXNEb3VibGUoY29vcmRpbmF0ZXMgKyBpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcXVhZC0+c2V0UDEoRmxvYXRQb2ludChjb29yZGluYXRl
c1swXSwgY29vcmRpbmF0ZXNbMV0pKTsKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB3aAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGludCBub2RlSWQgPSAwOwotICAgICAgICAgICAgaWYgKCFub2RlVmFsdWUtPmFzTnVt
YmVyKCZub2RlSWQpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNJbnRlZ2VyKCZu
b2RlSWQpKSB7CiAgICAgICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlk
cyBpdGVtIHR5cGUuIEV4cGVjdGluZyBpbnRlZ2VyIHR5cGVzLiI7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGM1NTk3MTFkMDI1MzMyYzMy
NzAxZmVmNTkzMDRkMjNhODI2YTkxYjkuLjRjMGZkZDkxMjVhYmZmMGI5MzBlNjFkODVlYWZlMTk3
OGMzMjk3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBp
bnQgYnJlYWtwbwogCiAgICAgaW50IGJyZWFrcG9pbnRPd25lck5vZGVJZCA9IG1fZG9tQWdlbnQt
PmJvdW5kTm9kZUlkKGJyZWFrcG9pbnRPd25lcik7CiAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25l
ck5vZGVJZCk7Ci0gICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigibm9kZUlkIiwgYnJlYWtwb2lu
dE93bmVyTm9kZUlkKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0SW50ZWdlcigibm9kZUlkIiwgYnJl
YWtwb2ludE93bmVyTm9kZUlkKTsKICAgICBkZXNjcmlwdGlvbi0+c2V0U3RyaW5nKCJ0eXBlIiwg
ZG9tVHlwZU5hbWUoYnJlYWtwb2ludFR5cGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNzNjZDA2YjY2
YTYzZTU5MGNmN2FiMjI1N2Y0MmM0YzJiMDM5ZDZhNC4uMGFlNmJlZWEzZmFmMzYyYWJhNWZiNWI0
NTk0OWU4ZWU4NWFlOTg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVj
dCoga2V5KQogCiAgICAgaWYgKHR5cGUgPT0gbnVtYmVyKSB7CiAgICAgICAgIGRvdWJsZSBudW1i
ZXI7Ci0gICAgICAgIGlmICgha2V5LT5nZXROdW1iZXIoIm51bWJlciIsICZudW1iZXIpKQorICAg
ICAgICBpZiAoIWtleS0+Z2V0RG91YmxlKCJudW1iZXIiLCAmbnVtYmVyKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0ZU51bWJlcihu
dW1iZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBzdHJpbmcpIHsKQEAgLTM0Niw3ICszNDYs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3Qo
SW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlU3Ry
aW5nKHN0cmluZyk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IGRhdGUpIHsKICAgICAgICAgZG91
YmxlIGRhdGU7Ci0gICAgICAgIGlmICgha2V5LT5nZXROdW1iZXIoImRhdGUiLCAmZGF0ZSkpCisg
ICAgICAgIGlmICgha2V5LT5nZXREb3VibGUoImRhdGUiLCAmZGF0ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVEYXRlKGRhdGUp
OwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBhcnJheSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDI4YzBhMTIxZjZhNjdmM2RhNjIxZmQ2
NmRhOWUzODgxZWNlMmU5YWQuLmM0MWIwNGM0NmEzNDUxZTVlODU4ZTIyZTk3MmQ4YzRkMmE0N2I0
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
QEAgLTMzMywxOCArMzMzLDE4IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JQb2ludChjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmpl
Y3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgieCIpLCBwb2ludC54KCkpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJ
TGl0ZXJhbCgieSIpLCBwb2ludC55KCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0
ZXJhbCgieCIpLCBwb2ludC54KCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJh
bCgieSIpLCBwb2ludC55KCkpOwogICAgIHJldHVybiBvYmplY3QucmVsZWFzZSgpOwogfQogCiBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBvYmplY3QtPnNldE51bWJlcihBU0NJ
SUxpdGVyYWwoIngiKSwgcmVjdC54KCkpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0
ZXJhbCgieSIpLCByZWN0LnkoKSk7Ci0gICAgb2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJ3aWR0aCIpLCByZWN0LndpZHRoKCkpOwotICAgIG9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0
ZXJhbCgiaGVpZ2h0IiksIHJlY3QuaGVpZ2h0KCkpOworICAgIG9iamVjdC0+c2V0RG91YmxlKEFT
Q0lJTGl0ZXJhbCgieCIpLCByZWN0LngoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJ5IiksIHJlY3QueSgpKTsKKyAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVy
YWwoIndpZHRoIiksIHJlY3Qud2lkdGgoKSk7CisgICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJoZWlnaHQiKSwgcmVjdC5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIG9iamVjdC5yZWxl
YXNlKCk7CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYnVpbGRPYmplY3RGb3JDU1NSZWdpb25zSGlnaGxpZ2h0KFJlbmRlclJlZ2lvbgog
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJ3aWR0
aCIsIHNpemUud2lkdGgoKSk7Ci0gICAgcmVzdWx0LT5zZXROdW1iZXIoImhlaWdodCIsIHNpemUu
aGVpZ2h0KCkpOworICAgIHJlc3VsdC0+c2V0SW50ZWdlcigid2lkdGgiLCBzaXplLndpZHRoKCkp
OworICAgIHJlc3VsdC0+c2V0SW50ZWdlcigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU5OSw4ICs1OTksOCBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRQYXRoQ29tbWFuZEFuZFBvaW50cyhQYXRoQXBwbHlJbmZvKiBpbmZvLCBjb25z
dCBTdHJpbmcmIGNvbW1hbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewogICAgICAgICBwb2ludCA9IGluZm8tPnNoYXBlT3V0c2lkZUluZm8tPnNoYXBlVG9SZW5k
ZXJlclBvaW50KHBvaW50c1tpXSk7CiAgICAgICAgIHBvaW50ID0gbG9jYWxQb2ludFRvUm9vdChp
bmZvLT5yZW5kZXJlciwgaW5mby0+cm9vdFZpZXcsIGluZm8tPnZpZXcsIHBvaW50KTsKLSAgICAg
ICAgaW5mby0+YXJyYXktPnB1c2hOdW1iZXIocG9pbnQueCgpKTsKLSAgICAgICAgaW5mby0+YXJy
YXktPnB1c2hOdW1iZXIocG9pbnQueSgpKTsKKyAgICAgICAgaW5mby0+YXJyYXktPnB1c2hEb3Vi
bGUocG9pbnQueCgpKTsKKyAgICAgICAgaW5mby0+YXJyYXktPnB1c2hEb3VibGUocG9pbnQueSgp
KTsKICAgICB9CiB9CiAKQEAgLTg1OSw3ICs4NTksNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6
OmZvcmNlUGFpbnQoKQogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpyZXNldChjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGZyYW1lVmlld0Z1bGxTaXplKQogewogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc2V0RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgcmVzZXREYXRhLT5zZXROdW1iZXIoImRldmljZVNjYWxlRmFjdG9yIiwgbV9w
YWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHJlc2V0RGF0YS0+c2V0RG91YmxlKCJkZXZp
Y2VTY2FsZUZhY3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICByZXNldERh
dGEtPnNldE9iamVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0
U2l6ZSkpOwogICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1
aWxkT2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwogICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJyZXNldCIsIHJlc2V0RGF0YS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggYzE0ODdhMDk3MTMyNjc2
MTAyYzI2NGJkZDMxYTc3MGNkYmY2NzE4My4uZWM0YTRiYTI0YjY4N2NmNGY2OTA1NTNiNGJkMzAz
NGE2NzM2OTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCB2b2lkIEluc3BlY3RvclJlcGxh
eUFnZW50OjpzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHZvaWQgSW5z
cGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvUG9zaXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcG9zaXRpb25PYmplY3QsIGJvb2wg
ZmFzdFJlcGxheSkKIHsKICAgICBSZXBsYXlQb3NpdGlvbiBwb3NpdGlvbjsKLSAgICBpZiAoIXBv
c2l0aW9uT2JqZWN0LT5nZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJzZWdtZW50T2Zmc2V0IiksICZw
b3NpdGlvbi5zZWdtZW50T2Zmc2V0KSkgeworICAgIGlmICghcG9zaXRpb25PYmplY3QtPmdldElu
dGVnZXIoQVNDSUlMaXRlcmFsKCJzZWdtZW50T2Zmc2V0IiksICZwb3NpdGlvbi5zZWdtZW50T2Zm
c2V0KSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGRl
Y29kZSBSZXBsYXlQb3NpdGlvbiBzZWdtZW50IG9mZnNldCBwcm92aWRlZCB0byBSZXBsYXlBZ2Vu
dC5yZXBsYXlUb1Bvc2l0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFwb3NpdGlvbk9iamVjdC0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiaW5wdXRPZmZzZXQiKSwg
JnBvc2l0aW9uLmlucHV0T2Zmc2V0KSkgeworICAgIGlmICghcG9zaXRpb25PYmplY3QtPmdldElu
dGVnZXIoQVNDSUlMaXRlcmFsKCJpbnB1dE9mZnNldCIpLCAmcG9zaXRpb24uaW5wdXRPZmZzZXQp
KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZGVjb2Rl
IFJlcGxheVBvc2l0aW9uIGlucHV0IG9mZnNldCBwcm92aWRlZCB0byBSZXBsYXlBZ2VudC5yZXBs
YXlUb1Bvc2l0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggNDE4M2I5NDFmYTAwNDZm
MGM1YjBkMjcyN2ZlYTk2ZGE0M2YxY2Y4MS4uNDViNGNkMmQ2NDgxMGY2NmQwOTYxMzQxNzQxYTcy
MTA1ODMzMDIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvcmRp
bmFsVmFsdWUgPSB2YWx1ZS0+Z2V0KCJvcmRpbmFsIik7Ci0gICAgICAgIGlmICghb3JkaW5hbFZh
bHVlIHx8ICFvcmRpbmFsVmFsdWUtPmFzTnVtYmVyKCZtX29yZGluYWwpKQorICAgICAgICBpZiAo
IW9yZGluYWxWYWx1ZSB8fCAhb3JkaW5hbFZhbHVlLT5hc0ludGVnZXIoJm1fb3JkaW5hbCkpCiAg
ICAgICAgICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGJjNDk2
ZDAzMWFhMTI3N2M0MTdlNzMxZjE3MDVkYmI4MGVlY2NmMjkuLjAxNmQ2NzhlZDUwYzg0NTkxOWE4
NTcxZjAwNmE1NzE5YTYyZDNkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCh1bnNpZ25lZCBlbmRMaW5lKQogewog
ICAgIGlmICghbV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgVGltZWxp
bmVSZWNvcmRFbnRyeSYgZW50cnkgPSBtX3JlY29yZFN0YWNrLmxhc3QoKTsKLSAgICAgICAgZW50
cnkuZGF0YS0+c2V0TnVtYmVyKCJlbmRMaW5lIiwgZW5kTGluZSk7CisgICAgICAgIGVudHJ5LmRh
dGEtPnNldEludGVnZXIoImVuZExpbmUiLCBlbmRMaW5lKTsKICAgICAgICAgZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFyc2VIVE1MKTsKICAgICB9CiB9CkBA
IC02NzAsNyArNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0
ZVJlY29yZEVudHJ5KGNvbnN0IFRpbWVsaW5lUmVjb3JkRW50cnkmIGUKIHsKICAgICBlbnRyeS5y
ZWNvcmQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImRhdGEiKSwgZW50cnkuZGF0YSk7CiAgICAg
ZW50cnkucmVjb3JkLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNoaWxkcmVuIiksIGVudHJ5LmNo
aWxkcmVuKTsKLSAgICBlbnRyeS5yZWNvcmQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImVuZFRp
bWUiKSwgdGltZXN0YW1wKCkpOworICAgIGVudHJ5LnJlY29yZC0+c2V0RG91YmxlKEFTQ0lJTGl0
ZXJhbCgiZW5kVGltZSIpLCB0aW1lc3RhbXAoKSk7CiAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShl
bnRyeS5yZWNvcmQsIGVudHJ5LnR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IGQ0NTlkZmM5NDFhZTAxNjdk
ODgxZDM1ODZhZDlmOWFhMGEwZjY1YzcuLjQ5YTBlY2Q1NjgwOTRmNWZkNmNjYjJmMzI4MzczMjJi
N2QwNWUyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdl
bmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFja0RlcHRoKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInN0YXJ0VGltZSIsIHN0YXJ0VGltZSk7Cisg
ICAgcmVjb3JkLT5zZXREb3VibGUoInN0YXJ0VGltZSIsIHN0YXJ0VGltZSk7CiAKICAgICBpZiAo
bWF4Q2FsbFN0YWNrRGVwdGgpIHsKICAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3Rh
Y2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1
cnJlbnRTdGF0ZSgpLCBtYXhDYWxsU3RhY2tEZXB0aCk7CkBAIC02OSw3ICs2OSw3IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNSZWNvcmQoZG91YmxlIHN0CiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNv
bnN0IFN0cmluZyYgdGhyZWFkTmFtZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZWNvcmQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlY29yZC0+c2V0TnVtYmVy
KCJzdGFydFRpbWUiLCBzdGFydFRpbWUpOworICAgIHJlY29yZC0+c2V0RG91YmxlKCJzdGFydFRp
bWUiLCBzdGFydFRpbWUpOwogICAgIHJlY29yZC0+c2V0U3RyaW5nKCJ0aHJlYWQiLCB0aHJlYWRO
YW1lKTsKICAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKIH0KQEAgLTc3LDcgKzc3LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
QmFja2dyb3VuZFJlY29yZChkb3VibGUKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVh
cFNpemVEZWx0YSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInVzZWRIZWFwU2l6ZURl
bHRhIiwgdXNlZEhlYXBTaXplRGVsdGEpOworICAgIGRhdGEtPnNldEludGVnZXIoInVzZWRIZWFw
U2l6ZURlbHRhIiwgdXNlZEhlYXBTaXplRGVsdGEpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2Uo
KTsKIH0KIApAQCAtODUsNyArODUsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0CiB7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJzY3JpcHROYW1lIiwgc2NyaXB0TmFtZSk7Ci0gICAgZGF0
YS0+c2V0TnVtYmVyKCJzY3JpcHRMaW5lIiwgc2NyaXB0TGluZSk7CisgICAgZGF0YS0+c2V0SW50
ZWdlcigic2NyaXB0TGluZSIsIHNjcmlwdExpbmUpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2Uo
KTsKIH0KIApAQCAtOTksOCArOTksOCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29ucwogUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVT
YW1wbGVEYXRhKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgaW50IGhpdENv
dW50KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInByb2JlSWQi
KSwgYWN0aW9uLmlkZW50aWZpZXIpOwotICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwo
ImhpdENvdW50IiksIGhpdENvdW50KTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJh
bCgicHJvYmVJZCIpLCBhY3Rpb24uaWRlbnRpZmllcik7CisgICAgZGF0YS0+c2V0SW50ZWdlcihB
U0NJSUxpdGVyYWwoImhpdENvdW50IiksIGhpdENvdW50KTsKICAgICByZXR1cm4gZGF0YS5yZWxl
YXNlKCk7CiB9CiAKQEAgLTExNCwxNSArMTE0LDE1IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2ZW50RGlzcGF0Y2hEYXRhKGNvbnN0
CiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVHZW5lcmljVGltZXJEYXRhKGludCB0aW1lcklkKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldE51
bWJlcigidGltZXJJZCIsIHRpbWVySWQpOworICAgIGRhdGEtPnNldEludGVnZXIoInRpbWVySWQi
LCB0aW1lcklkKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFs
bERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ0aW1lcklkIiwgdGltZXJJZCk7Ci0gICAgZGF0YS0+c2V0
TnVtYmVyKCJ0aW1lb3V0IiwgdGltZW91dCk7CisgICAgZGF0YS0+c2V0SW50ZWdlcigidGltZXJJ
ZCIsIHRpbWVySWQpOworICAgIGRhdGEtPnNldEludGVnZXIoInRpbWVvdXQiLCB0aW1lb3V0KTsK
ICAgICBkYXRhLT5zZXRCb29sZWFuKCJzaW5nbGVTaG90Iiwgc2luZ2xlU2hvdCk7CiAgICAgcmV0
dXJuIGRhdGEucmVsZWFzZSgpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVhIUlJlYWR5U3RhdGVD
aGFuZ2VEYXRhCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAg
IGRhdGEtPnNldE51bWJlcigicmVhZHlTdGF0ZSIsIHJlYWR5U3RhdGUpOworICAgIGRhdGEtPnNl
dEludGVnZXIoInJlYWR5U3RhdGUiLCByZWFkeVN0YXRlKTsKICAgICByZXR1cm4gZGF0YS5yZWxl
YXNlKCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29ucwog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBkYXRhLT5zZXRO
dW1iZXIoImxpbmVOdW1iZXIiLCBsaW5lTnVtYmVyKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJs
aW5lTnVtYmVyIiwgbGluZU51bWJlcik7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQog
CkBAIC0xNzcsNyArMTc3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBkYXRhLT5zZXRTdHJpbmcoInJlcXVlc3RJZCIsIHJlcXVlc3RJZCk7Ci0gICAgZGF0YS0+c2V0
TnVtYmVyKCJzdGF0dXNDb2RlIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgZGF0
YS0+c2V0SW50ZWdlcigic3RhdHVzQ29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwog
ICAgIGRhdGEtPnNldFN0cmluZygibWltZVR5cGUiLCByZXNwb25zZS5taW1lVHlwZSgpKTsKICAg
ICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0xODgsNyArMTg4LDcgQEAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VG
aW5pc2hEYXRhKGNvbnMKICAgICBkYXRhLT5zZXRTdHJpbmcoInJlcXVlc3RJZCIsIHJlcXVlc3RJ
ZCk7CiAgICAgZGF0YS0+c2V0Qm9vbGVhbigiZGlkRmFpbCIsIGRpZEZhaWwpOwogICAgIGlmIChm
aW5pc2hUaW1lKQotICAgICAgICBkYXRhLT5zZXROdW1iZXIoIm5ldHdvcmtUaW1lIiwgZmluaXNo
VGltZSk7CisgICAgICAgIGRhdGEtPnNldERvdWJsZSgibmV0d29ya1RpbWUiLCBmaW5pc2hUaW1l
KTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKQEAgLTE5NiwxNSArMTk2LDE1IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVJlY2VpdmVSZXNvdXJjZURhdGEoY29uCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJy
ZXF1ZXN0SWQiLCByZXF1ZXN0SWQpOwotICAgIGRhdGEtPnNldE51bWJlcigiZW5jb2RlZERhdGFM
ZW5ndGgiLCBsZW5ndGgpOworICAgIGRhdGEtPnNldEludGVnZXIoImVuY29kZWREYXRhTGVuZ3Ro
IiwgbGVuZ3RoKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUxheW91dERhdGEo
dW5zaWduZWQgZGlydHlPYmplY3RzLCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlh
bExheW91dCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoImRpcnR5T2JqZWN0cyIsIGRp
cnR5T2JqZWN0cyk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ0b3RhbE9iamVjdHMiLCB0b3RhbE9i
amVjdHMpOworICAgIGRhdGEtPnNldEludGVnZXIoImRpcnR5T2JqZWN0cyIsIGRpcnR5T2JqZWN0
cyk7CisgICAgZGF0YS0+c2V0SW50ZWdlcigidG90YWxPYmplY3RzIiwgdG90YWxPYmplY3RzKTsK
ICAgICBkYXRhLT5zZXRCb29sZWFuKCJwYXJ0aWFsTGF5b3V0IiwgcGFydGlhbExheW91dCk7CiAg
ICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQpAQCAtMjMzLDI4ICsyMzMsMjggQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlTWFya0Rh
dGEoYm9vbCBpc01haW5GcmEKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQgc3RhcnRMaW5lKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcigic3RhcnRMaW5lIiwgc3RhcnRMaW5lKTsKKyAgICBk
YXRhLT5zZXRJbnRlZ2VyKCJzdGFydExpbmUiLCBzdGFydExpbmUpOwogICAgIHJldHVybiBkYXRh
LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcigiaWQiLCBjYWxsYmFja0lkKTsKKyAgICBkYXRhLT5z
ZXRJbnRlZ2VyKCJpZCIsIGNhbGxiYWNrSWQpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsK
IH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZVF1YWQoY29uc3Qg
RmxvYXRRdWFkJiBxdWFkKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVhZC5wMSgp
LngoKSk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVhZC5wMSgpLnkoKSk7Ci0gICAgYXJyYXkt
PnB1c2hOdW1iZXIocXVhZC5wMigpLngoKSk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVhZC5w
MigpLnkoKSk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVhZC5wMygpLngoKSk7Ci0gICAgYXJy
YXktPnB1c2hOdW1iZXIocXVhZC5wMygpLnkoKSk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVh
ZC5wNCgpLngoKSk7Ci0gICAgYXJyYXktPnB1c2hOdW1iZXIocXVhZC5wNCgpLnkoKSk7CisgICAg
YXJyYXktPnB1c2hEb3VibGUocXVhZC5wMSgpLngoKSk7CisgICAgYXJyYXktPnB1c2hEb3VibGUo
cXVhZC5wMSgpLnkoKSk7CisgICAgYXJyYXktPnB1c2hEb3VibGUocXVhZC5wMigpLngoKSk7Cisg
ICAgYXJyYXktPnB1c2hEb3VibGUocXVhZC5wMigpLnkoKSk7CisgICAgYXJyYXktPnB1c2hEb3Vi
bGUocXVhZC5wMygpLngoKSk7CisgICAgYXJyYXktPnB1c2hEb3VibGUocXVhZC5wMygpLnkoKSk7
CisgICAgYXJyYXktPnB1c2hEb3VibGUocXVhZC5wNCgpLngoKSk7CisgICAgYXJyYXktPnB1c2hE
b3VibGUocXVhZC5wNCgpLnkoKSk7CiAgICAgcmV0dXJuIGFycmF5LnJlbGVhc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmlu
ZGV4IDZlMWY2NTZhMGIwMzMzN2I2NWMxNDVkZWIyODliYjcxYTc1MzRiNWUuLjlmMTEzMTEwZDk0
ZTYzN2E0NWIwZjYwYTQ1NDUzZDE0ZTQ0MTU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQog
ICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAg
ICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IGRhdGEtPnNldEludGVnZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAg
IGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGlmICgh
cHJvdG9jb2wuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJ3ZWJT
b2NrZXRQcm90b2NvbCIsIHByb3RvY29sKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsK
KyAgICAgICAgICAgIGRhdGEtPnNldEludGVnZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTRi
OGE2MzMxNDAwNzM2Nzg5ZjEzODA3YmNlODZjNTgxNGMyNmMxOC4uZjljNWM5ODAxMTk0NmM4Njk0
NWMzYjU5NDFhNjk3MTY3OTZlODk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTY2MSw3ICsxNjYxLDcgQEAgdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQs
IGNvbnN0IFMKICAgICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZS0+bGluZU51bWJlcigpKSB7
CiAgICAgICAgIFVSTCBzb3VyY2UgPSBVUkwoVVJMKCksIGNhbGxGcmFtZS0+c291cmNlVVJMKCkp
OwogICAgICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZS1maWxl
IiksIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSkpOwotICAgICAgICBj
c3BSZXBvcnQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImxpbmUtbnVtYmVyIiksIGNhbGxGcmFt
ZS0+bGluZU51bWJlcigpKTsKKyAgICAgICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgibGluZS1udW1iZXIiKSwgY2FsbEZyYW1lLT5saW5lTnVtYmVyKCkpOwogICAgIH0KIAog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlcG9ydE9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Cg==
</data>
<flag name="review"
          id="262776"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>