<?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>238552</bug_id>
          
          <creation_ts>2022-03-30 07:09:21 -0700</creation_ts>
          <short_desc>Optimize the construction of a JSC::Identifier from an ASCIILiteral</short_desc>
          <delta_ts>2022-03-30 14:02:58 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>238574</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856380</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 07:09:21 -0700</bug_when>
    <thetext>Optimize the constructor of a JSC::Identifier from an ASCIILiteral, and adopt more broadly in our code base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856384</commentid>
    <comment_count>1</comment_count>
      <attachid>456120</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 07:30:33 -0700</bug_when>
    <thetext>Created attachment 456120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856388</commentid>
    <comment_count>2</comment_count>
      <attachid>456122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 07:48:48 -0700</bug_when>
    <thetext>Created attachment 456122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856545</commentid>
    <comment_count>3</comment_count>
      <attachid>456122</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-30 13:30:11 -0700</bug_when>
    <thetext>Comment on attachment 456122
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856550</commentid>
    <comment_count>4</comment_count>
      <attachid>456122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 13:42:08 -0700</bug_when>
    <thetext>Comment on attachment 456122
Patch

Clearing flags on attachment: 456122

Committed r292118 (249031@trunk): &lt;https://commits.webkit.org/249031@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856551</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 13:42:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856552</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-30 13:43:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/91064259&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456120</attachid>
            <date>2022-03-30 07:30:33 -0700</date>
            <delta_ts>2022-03-30 07:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238552-20220330073031.patch</filename>
            <type>text/plain</type>
            <size>366355</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzRkYWQ3MzVjYTJhYjQwNjE0ZDgwNmRlODhlNGJkOTlhNWZkYjdmLi44MDczNjY3ZDMyY2JkZWRm
NDliOTAyZDdjOTY2MTc1YzRjMTZlZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0b3Igb2YgYSBKU0M6OklkZW50aWZpZXIg
ZnJvbSBhbiBBU0NJSUxpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODU1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXJlIGFyZSB0d28gd2F5cyB0byBjb25zdHJ1Y3QgYSBKU0M6OklkZW50
aWZpZXIgZnJvbSBhIHN0cmluZyBsaXRlcmFsIGFuZCBib3RoCisgICAgICAgIHdlcmUgc3ViLW9w
dGltYWw6CisgICAgICAgIC0gdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PiBzdGF0
aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlcnNDb3VudF0pOgorICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IGtub3dzIHRoZSBjaGFy
YWN0ZXJzQ291bnQgYXQgY29tcGlsZSB0aW1lLCBpdCBkb2Vzbid0IGxldmVyYWdlIHRoaXMgaW5m
b3JtYXRpb24KKyAgICAgICAgICBhdCBhbGwuIEFsc28sIGl0IGVuZHMgdXAgY2FsbGluZyBBdG9t
U3RyaW5nSW1wbDo6YWRkKCkgaW5zdGVhZCBvZiBBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbCgp
CisgICAgICAgICAgd2hpY2ggbWVhbnMgd2UgbG9zZSB0aGUga25vd2xlZGdlIHRoYXQgaXQgd2Fz
IGEgc3RyaW5nIGxpdGVyYWwgYW5kIHRoZSBvcHRpbWl6YXRpb24gdGhhdCBjb21lCisgICAgICAg
ICAgd2l0aCBpdCAoZS5nLiBub3QgY29weWluZyB0aGUgY2hhcmFjdGVycyBvdmVyKS4gSW4gdGhp
cyBwYXRjaCwgSSBhbSBkZXByZWNhdGluZyB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgaW4gZmF2
b3Igb2YgZnJvbVN0cmluZyhBU0NJSUxpdGVyYWwpIHdoaWNoIGlzIG5vdyBtb3JlIGVmZmljaWVu
dC4gSSdsbCByZW1vdmUgaXQgaW4gYSBmb2xsb3cgdXAuCisgICAgICAgIC0gc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbCk6CisgICAgICAgICAgSXQgZW5kZWQg
dXAgY2FsbGluZyB0aGUgSWRlbnRpZmllcihWTSYsIFN0cmluZykgY29uc3RydWN0b3Igd2hpY2gg
bWVhbnQgdGhhdCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGNvbnN0cnVjdGluZworICAgICAgICAgIGEg
U3RyaW5nL1N0cmluZ0ltcGwgdW5uZWNlc3NhcmlseSBiZWZvcmUgYXRvbWl6aW5nIGl0IHNpbmNl
IHRoZSBzdHJpbmcgbWF5IGFscmVhZHkgYmUgaW4gdGhlCisgICAgICAgICAgQXRvbVN0cmluZyB0
YWJsZS4gV2UgYWxzbyBmYWlsZWQgdG8gdXNlIHRoZSBzbWFsbFN0cmluZ3MgY2FjaGUgZm9yIGxp
dGVyYWxzIHdob3NlIGxlbmd0aCBpcyAxLAorICAgICAgICAgIHdoaWNoIHdvdWxkIGhhcHBlbiB3
aGVuIGNhbGxpbmcgYGZyb21TdHJpbmcoVk0mLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hh
cmFjdGVyc0NvdW50XSlgLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIEkgb3B0aW1pemVkIGBm
cm9tU3RyaW5nKFZNJiwgQVNDSUlMaXRlcmFsKWAgdG8gbGV2ZXJhZ2UgdGhlIHNtYWxsU3RyaW5n
cyBjYWNoZQorICAgICAgICB3aGVuIG5lY2Vzc2FyeSBhbmQgY2FsbCBBdG9tU3RyaW5nSW1wbDo6
YWRkTGl0ZXJhbCgpIGluc3RlYWQgb2YgQXRvbVN0cmluZ0ltcGw6OmFkZCgpLiBJIGFsc28KKyAg
ICAgICAgbWFkZSBzdXJlIHRvIG1hcmsgYGZyb21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpYCBh
bmQgYElkZW50aWZpZXIoVk0mLCBBU0NJSUxpdGVyYWwpYCBhcworICAgICAgICBBTFdBWVNfSU5M
SU5FIHRvIG1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgY2FuIG9wdGltaXplIG91dCB0aGUgc3RybGVu
KCkgY2FsbHMuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIEEvQiBib3RzLCB0aGlzIGlzIGEgMS0x
LjUlIHByb2dyZXNzaW9uIG9uIFNwZWVkb21ldGVyIGFuZCBhbmQgYSAxLjMlIHByb2dyZXNzaW9u
IG9uCisgICAgICAgIEpldFN0cmVhbSBvbiBpTWFjIDIwLDEgKEludGVsKS4gU2FkbHksIHRoaXMg
aXMgcGVyZi1uZXV0cmFsIG9uIHRob3NlIHR3byBiZW5jaG1hcmtzIG9uIEFwcGxlCisgICAgICAg
IFNpbGljb24uCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAg
IChKU0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJv
cGVydGllcyk6CisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgIChKU0dldE1lbW9y
eVVzYWdlU3RhdGlzdGljcyk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAg
ICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFt
ZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpblV0aWxzLmg6CisgICAgICAgICogZHluYmVuY2guY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtTZXRFbnRyaWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAg
ICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OnZhbHVlRm9yU2NvcGVMb2NhdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2
YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVEZXNjcmlwdGlvbnMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFj
dFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXVkaXRBZ2VudDo6cG9wdWxhdGVBdWRpdE9iamVjdCk6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3Bl
cnRpZXMpOgorICAgICAgICAoSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKGR1
bXBFeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
OgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRl
ZE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6QXRvbWljc09iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6
Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZExpdGVyYWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToK
KyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6
CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OnRleHRJbmZvKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6d2Vla0luZm8pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJu
YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpleHBvc2VEb2xsYXJWTSk6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5R2xvYmFsOjp0eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TWVtb3J5Ojp0eXBlKToKKyAg
ICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlUYWJsZTo6dHlwZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUds
b2JhbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRh
YmxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorCiAyMDIyLTAzLTMwICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2Jzb2xldGUgLS11
c2VQcm9iZU9TUkV4aXQgb3B0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFhMjA2NDMzZjZlNjQ0OGM1MTM4
ZjFjZDA0ODE2NDY1NDVlNDU0YjkuLjQ1YzNkNjRkMTk2MTA2MWVjNWYxOGUyYmM4ZWFlOWJkYTBk
Njk2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAKKzIwMjItMDMtMzAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0
b3Igb2YgYSBKU0M6OklkZW50aWZpZXIgZnJvbSBhbiBBU0NJSUxpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRoZSBKU0M6OklkZW50
aWZpZXIgY29uc3RydWN0b3IgZnJvbSBhbiBBU0NJSUxpdGVyYWwgbW9yZSB3aWRlbHkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyOjpm
aW5pc2hTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkNsZWFyS2V5Ojp1cGRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldE9wZW5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvdzo6c2V0T3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1v
ZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEaWN0aW9u
YXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKGFkZFVuc2NvcGFibGVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJh
dGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZURlZmF1
bHRUb0pTT05PcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBl
ck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRT
dGFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnk8RXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjpEaWN0Pik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDRVJl
YWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZU5vdE5lZWRlZFNldHRlcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RDYWxsYmFj
a0ludGVyZmFjZTo6RGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aE5vUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZVBhcmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1dpdGhCb29sZWFuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoQVJl
dHVyblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpj
YWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWZhdWx0
VG9KU09OUHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9keSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFBy
b3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvbl90
b0pTT05Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVy
aXZlZERpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8
VGVzdERlcml2ZWREaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeTIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8
VGVzdERlcml2ZWREaWN0aW9uYXJ5Mj4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rp
b25hcnlUb0pTKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJp
dmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnk+KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeT4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycz4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6SW5pdD4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnkyPik6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lc3BhY2VPYmplY3RET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbl90b0pTT05Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1l
Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpQYXJlbnRE
aWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2Jq
OjpDaGlsZERpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUE+KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUI+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlv
bmFyeUM+KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9wdXRGb3J3
YXJkc0F0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpfcHV0
Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0
Pik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVE
aWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PERpY3Rp
b25hcnlJbXBsTmFtZT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pT
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udHJvbGxlckpTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQ
cmVzZW50YXRpb25Nb2RlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmdldEN1cnJlbnRNZWRpYUNvbnRyb2xzU3RhdHVzKToKKwogMjAyMi0wMy0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VX
b3JrZXIgV2luZG93Q2xpZW50LmFuY2VzdG9yT3JpZ2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZTA1NWFmMjk0M2UwZjNiZTk3NzM3
N2I2ZWQ5OWI0NDI2MTM4ZTYwZi4uYjkxMmI3MzRkMzg3MDFiMmE0MDYyNGI1OWEzOTZkNWFmMDY1
ODY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
Lm1tCkBAIC0yMzUsNyArMjM1LDcgQEAgSlNPYmplY3QqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamUKICAgICBKU09i
amVjdCogbWV0YVByb3BlcnRpZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2Jq
ZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgbWV0YVByb3BlcnRpZXMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbGVuYW1lIiksIGtleSk7CisgICAgbWV0
YVByb3BlcnRpZXMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZp
bGVuYW1lIl9zKSwga2V5KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKIAogICAgIHJldHVybiBtZXRhUHJvcGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNC
YXNlLmNwcAppbmRleCBhMzBiODE0MzZhOTZjODAwODZlZjk4NzIxODJiNDY5NjU4NTMzMGQwLi42
NjIwMWYyZDExMmJmYjJiZTc4NTEzNzMwMmQ5ODQ5ZDdhMjdmNTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMTAsMTQgKzIxMCwxNCBAQCBKU09iamVjdFJlZiBKU0dl
dE1lbW9yeVVzYWdlU3RhdGlzdGljcyhKU0NvbnRleHRSZWYgY3R4KQogICAgICAgICBvYmplY3RU
eXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGl0Lmtl
eSksIGpzTnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIiksIGpzTnVtYmVyKHZtLmhlYXAu
c2l6ZSgpKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJoZWFwQ2FwYWNpdHkiKSwganNOdW1iZXIodm0uaGVhcC5jYXBhY2l0eSgpKSk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJleHRy
YU1lbW9yeVNpemUiKSwganNOdW1iZXIodm0uaGVhcC5leHRyYU1lbW9yeVNpemUoKSkpOwotICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib2JqZWN0
Q291bnQiKSwganNOdW1iZXIodm0uaGVhcC5vYmplY3RDb3VudCgpKSk7Ci0gICAgb2JqZWN0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0ZWRPYmplY3RD
b3VudCIpLCBqc051bWJlcih2bS5oZWFwLnByb3RlY3RlZE9iamVjdENvdW50KCkpKTsKLSAgICBv
YmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbE9i
amVjdENvdW50IiksIGpzTnVtYmVyKHZtLmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKSkpOwotICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVj
dGVkR2xvYmFsT2JqZWN0Q291bnQiKSwganNOdW1iZXIodm0uaGVhcC5wcm90ZWN0ZWRHbG9iYWxP
YmplY3RDb3VudCgpKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJvYmplY3RUeXBlQ291bnRzIiksIG9iamVjdFR5cGVDb3VudHMpOworICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGVhcFNp
emUiX3MpLCBqc051bWJlcih2bS5oZWFwLnNpemUoKSkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGVhcENhcGFjaXR5Il9zKSwganNOdW1i
ZXIodm0uaGVhcC5jYXBhY2l0eSgpKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJleHRyYU1lbW9yeVNpemUiX3MpLCBqc051bWJlcih2bS5o
ZWFwLmV4dHJhTWVtb3J5U2l6ZSgpKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYmplY3RDb3VudCJfcyksIGpzTnVtYmVyKHZtLmhlYXAu
b2JqZWN0Q291bnQoKSkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicHJvdGVjdGVkT2JqZWN0Q291bnQiX3MpLCBqc051bWJlcih2bS5oZWFw
LnByb3RlY3RlZE9iamVjdENvdW50KCkpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbE9iamVjdENvdW50Il9zKSwganNOdW1iZXIo
dm0uaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCJf
cyksIGpzTnVtYmVyKHZtLmhlYXAucHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKSkpOworICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib2JqZWN0
VHlwZUNvdW50cyJfcyksIG9iamVjdFR5cGVDb3VudHMpOwogCiAgICAgcmV0dXJuIHRvUmVmKG9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4
IDQ1ZGNkMjM2NGJhNGVjYmE3NTg2MDY4ZWI1YTQ3NjcwZWJmNTIyNzAuLmNjOTJkMTFhZDVjMTg3
MjE3Nzg4MGZjYTMxMzI2ZjBmNTExN2JiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQg
cGEKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBzdGFy
dGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwotICAgIElk
ZW50aWZpZXIgbmFtZUlEID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJnZtKSA6IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJhbm9ueW1vdXMiKTsKKyAgICBJZGVudGlmaWVyIG5hbWVJRCA9
IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZ2bSkgOiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYW5vbnltb3VzIl9zKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsgaSsrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAppbmRleCA3Zjhh
ZTRmMTQwZWU3NDNkMGZlNWYzOTU0Mzg3YmUzY2ZkNmQ1ZjBjLi5iOGI0ZmQyOTA5YTA2NjY3ZTBm
ODFlM2I1MzE4YmYyMDFmYjk4YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmNwcApAQCAtNTMsMTAgKzUzLDEwIEBAIFN5bWJvbEltcGw6OlN0
YXRpY1N5bWJvbEltcGwgcG9seVByb3RvUHJpdmF0ZU5hbWUgeyAiUG9seVByb3RvIiwgU3ltYm9s
SW1wbDo6c19mCiAKIH0gLy8gbmFtZXNwYWNlIFN5bWJvbHMKIAotI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fTkFNRVNfSU5fSlNDKG5hbWUpICwgbV8jI25hbWUoSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FU19J
Tl9KU0MobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNu
YW1lICIiX3MpKQogI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU1lNQk9MU19JTl9KU0MobmFt
ZSkgXAogICAgICwgbV8jI25hbWUjI1N5bWJvbChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQodm0s
ICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oSlNDOjpTeW1ib2xzOjpuYW1lIyNTeW1ib2wpKSkg
XAotICAgICwgbV8jI25hbWUjI1N5bWJvbFByaXZhdGVJZGVudGlmaWVyKEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQorICAgICwgbV8jI25hbWUjI1N5bWJvbFByaXZhdGVJ
ZGVudGlmaWVyKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUgIiJfcykpCiAK
ICNkZWZpbmUgSU5JVElBTElaRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWShuYW1lKSBcCiAgICAg
ZG8geyBcCkBAIC03OSw3ICs3OSw3IEBAIEJ1aWx0aW5OYW1lczo6QnVpbHRpbk5hbWVzKFZNJiB2
bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklkZW50aWZpZXJzKQogICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElO
X05BTUVTX0lOX0pTQykKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX0JVSUxUSU5fU1lNQk9MU19JTl9KU0MpCiAgICAg
LCBtX2ludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQo
dm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oU3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVj
dGVkU3ltYm9sKSkpCi0gICAgLCBtX2RvbGxhclZNTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiJHZtIikpCisgICAgLCBtX2RvbGxhclZNTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiJHZtIl9zKSkKICAgICAsIG1fZG9sbGFyVk1Qcml2YXRlTmFtZShJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCAmc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KFN5bWJvbHM6OmRvbGxhclZNUHJp
dmF0ZU5hbWUpKSkKICAgICAsIG1fcG9seVByb3RvUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihTeW1ib2xzOjpwb2x5UHJvdG9Qcml2
YXRlTmFtZSkpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5VdGlscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5V
dGlscy5oCmluZGV4IDQwMWMyZjkzN2ViNTRhMTIzMjAwYjMyMDc3MDMyMzQxZjY3NTE1N2UuLjZk
ZGYxODRkMTZlODhiODEwYTk3Mjg2MmExOTlhOGU3OTdlNzQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX05BTUVTKG5hbWUp
ICwgbV8jI25hbWUoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpLCBtXyMj
bmFtZSMjUHJpdmF0ZU5hbWUoSlNDOjpJZGVudGlmaWVyOjpmcm9tVWlkKEpTQzo6UHJpdmF0ZU5h
bWUoSlNDOjpQcml2YXRlTmFtZTo6UHJpdmF0ZVN5bWJvbCwgI25hbWUgIiJfcykpKQorI2RlZmlu
ZSBJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICNuYW1lICIiX3MpKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpTQzo6UHJpdmF0ZU5hbWU6
OlByaXZhdGVTeW1ib2wsICNuYW1lICIiX3MpKSkKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX05B
TUVTKG5hbWUpIGNvbnN0IEpTQzo6SWRlbnRpZmllciBtXyMjbmFtZTsgY29uc3QgSlNDOjpJZGVu
dGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lE
RU5USUZJRVJfQUNDRVNTT1IobmFtZSkgXAogICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFt
ZSMjUHVibGljTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lOyB9IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9keW5iZW5jaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZHluYmVuY2guY3BwCmluZGV4IGU5NmRiMWM4YjI4NTU3YTE1ODhmNzczNDhkM2M0OTI2Yzk4
ODMwMjAuLjdkMDk5NDBiYzRlNjEyNzZlYTFiOTFkZGIyODkyNTA1MGYwNTViNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9keW5iZW5jaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2R5bmJlbmNoLmNwcApAQCAtOTgsOCArOTgsOCBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9CiAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlKHZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSkpOwogCi0gICAgICAgIElkZW50aWZpZXIgaWRlbnRGID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImYiKTsKLSAgICAgICAgSWRlbnRpZmllciBpZGVudEcgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZyIpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50RiA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJmIl9zKTsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudEcgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZyJfcyk7CiAKICAgICAgICAgU3RydWN0dXJlKiBv
YmplY3RTdHJ1Y3R1cmUgPQogICAgICAgICAgICAgSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIDIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAzMGEyYjAxZWE4MGIzZWU0OWFlYzM5ZDczMWQ2YzQ0OTAz
NzA5ZTA5Li5mMzQxNTQ2YTQ4ZDdkMmJiODIwOWFiY2UzMmZkZDc1MDU0YWFlOGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtMjY2LDIwICsyNjYsMjAgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0
SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwK
IAogICAgIFN0cmluZyBzY3JpcHRJRCA9IFN0cmluZzo6bnVtYmVyKHNvdXJjZUNvZGUtPnByb3Zp
ZGVyKCktPmFzSUQoKSk7CiAgICAgSlNPYmplY3QqIGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic2NyaXB0SWQiKSwganNTdHJpbmcodm0sIHNjcmlwdElEKSk7
Ci0gICAgbG9jYXRpb24tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOwotICAgIGxvY2F0aW9uLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb2x1bW5OdW1iZXIiKSwganNO
dW1iZXIoY29sdW1uTnVtYmVyKSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInNjcmlwdElkIl9zKSwganNTdHJpbmcodm0sIHNjcmlwdElE
KSk7CisgICAgbG9jYXRpb24tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImxpbmVOdW1iZXIiX3MpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7CisgICAgbG9jYXRpb24t
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbHVtbk51bWJlciJf
cyksIGpzTnVtYmVyKGNvbHVtbk51bWJlcikpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2NhdGlvbiIpLCBsb2NhdGlvbik7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2Nh
dGlvbiJfcyksIGxvY2F0aW9uKTsKIAogICAgIFN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUo
dm0pOwogICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBqc1N0cmluZyh2bSwgbmFt
ZSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5hbWUiX3MpLCBqc1N0cmluZyh2bSwgbmFtZSkpOwogCiAgICAgU3RyaW5nIGRpc3Bs
YXlOYW1lID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKHZtKTsKICAgICBpZiAoIWRpc3BsYXlOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJkaXNwbGF5TmFtZSIpLCBqc1N0cmluZyh2bSwgZGlzcGxheU5hbWUpKTsK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkaXNwbGF5TmFtZSJfcyksIGpzU3RyaW5nKHZtLCBkaXNwbGF5TmFtZSkpOwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTI4OCw4ICsyODgsOCBAQCBzdGF0aWMgSlNPYmplY3QqIGNvbnN0
cnVjdEludGVybmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
UwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiKSwganNTdHJpbmco
dm0sIG5hbWUpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInZhbHVlIiksIHZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBqc1N0cmluZyh2bSwgbmFtZSkpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFs
dWUiX3MpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDg4LDggKzQ4OCw4
IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OndlYWtNYXBFbnRyaWVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBidWZmZXIuc2l6ZSgpOyBpbmRleCArPSAyKSB7CiAgICAgICAgIEpTT2JqZWN0
KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGVu
dHJ5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJrZXkiKSwgYnVm
ZmVyLmF0KGluZGV4KSk7Ci0gICAgICAgIGVudHJ5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ2YWx1ZSIpLCBidWZmZXIuYXQoaW5kZXggKyAxKSk7CisgICAgICAg
IGVudHJ5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJrZXkiX3Mp
LCBidWZmZXIuYXQoaW5kZXgpKTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIl9zKSwgYnVmZmVyLmF0KGluZGV4ICsgMSkpOwog
ICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCAvIDIsIGVu
dHJ5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAg
ICB9CkBAIC01MzIsNyArNTMyLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6d2Vh
a1NldEVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKIAogICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJ1ZmZlci5zaXplKCk7ICsraW5kZXgpIHsK
ICAgICAgICAgSlNPYmplY3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInZhbHVlIiksIGJ1ZmZlci5hdChpbmRleCkpOworICAgICAgICBlbnRyeS0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpLCBidWZmZXIuYXQo
aW5kZXgpKTsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgsIGVudHJ5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKICAgICB9CkBAIC02MTgsNyArNjE4LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6aXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBKU09iamVj
dCogZW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgICAgICBl
bnRyeS0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiKSwg
bmV4dFZhbHVlKTsKKyAgICAgICAgZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInZhbHVlIl9zKSwgbmV4dFZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSwgZW50cnkpOwogICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAKaW5kZXggOTU1NjllMGJjYmQ0MjU5NTNmNWI2MmNkY2QxOTJhYTJkZDcxMGM5
Yi4uNDgwNjM2MTczMzdlY2NkYjljMGEwMTQ3YjRlNmEyOTU2MzAwNjcwYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcApAQCAtMTE5LDkgKzExOSw5IEBAIHN0YXRpYyBKU1ZhbHVlIHZhbHVlRm9yU2NvcGVM
b2NhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBEZWJ1Z2dlCiAgICAg
Ly8gRGVidWdnZXIuTG9jYXRpb24gcHJvdG9jb2wgb2JqZWN0LgogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNjcmlwdElkIiksIGpzU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcihs
b2NhdGlvbi5zb3VyY2VJRCkpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobG9jYXRpb24ubGluZSkp
OwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y29sdW1uTnVtYmVyIiksIGpzTnVtYmVyKGxvY2F0aW9uLmNvbHVtbikpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2NyaXB0SWQiX3MpLCBq
c1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIobG9jYXRpb24uc291cmNlSUQpKSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsaW5lTnVtYmVy
Il9zKSwganNOdW1iZXIobG9jYXRpb24ubGluZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29sdW1uTnVtYmVyIl9zKSwganNOdW1iZXIo
bG9jYXRpb24uY29sdW1uKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQxLDkgKzE0
MSw5IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZURlc2NyaXB0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGZvciAoRGVidWdnZXJTY29wZTo6aXRl
cmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBpdGVyLmdldCgpOwogICAgICAgICBKU09i
amVjdCogZGVzY3JpcHRpb24gPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwot
ICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidHlwZSIpLCB2YWx1ZUZvclNjb3BlVHlwZShzY29wZSkpOwotICAgICAgICBkZXNjcmlw
dGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBq
c1N0cmluZyh2bSwgc2NvcGUtPm5hbWUoKSkpOwotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9jYXRpb24iKSwgdmFsdWVGb3JT
Y29wZUxvY2F0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUtPmxvY2F0aW9uKCkpKTsKKyAgICAgICAg
ZGVzY3JpcHRpb24tPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5
cGUiX3MpLCB2YWx1ZUZvclNjb3BlVHlwZShzY29wZSkpOworICAgICAgICBkZXNjcmlwdGlvbi0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyksIGpzU3Ry
aW5nKHZtLCBzY29wZS0+bmFtZSgpKSk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2NhdGlvbiJfcyksIHZhbHVlRm9yU2Nv
cGVMb2NhdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLT5sb2NhdGlvbigpKSk7CiAgICAgICAgIGFy
cmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGRlc2NyaXB0aW9uKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDQxYWNjODU3YzY3NjhjOWY2YmE5ODMwYTcxYWEw
MmZhOTM0NzZmOWEuLjYwNzg2ODhlMWIzZWU5NjZlZTE0MDIyZjBmM2MxMWRlNDBjYzRkNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMTI0LDkgKzEyNCw5IEBAIHN0YXRpYyBib29sIGV4dHJh
Y3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAg
Ly8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogU2hv
dWxkIG5vdCBuZWVkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwot
ICAgIEpTVmFsdWUgbGluZVZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsaW5lIikpOwotICAgIEpTVmFsdWUgY29sdW1uVmFs
dWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNvbHVtbiIpKTsKLSAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9u
T2JqZWN0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzb3VyY2VV
UkwiKSk7CisgICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxpbmUiX3MpKTsKKyAgICBKU1ZhbHVl
IGNvbHVtblZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjb2x1bW4iX3MpKTsKKyAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVl
ID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJzb3VyY2VVUkwiX3MpKTsKICAgICAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAg
IGlmIChsaW5lVmFsdWUgJiYgbGluZVZhbHVlLmlzTnVtYmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHAKaW5kZXggMzBhY2FmMzM0NTgwNTM3NGQ4MWRiYjBiMWM1ZDQ5ZmY3YWYwYTZlMS4u
ODJjYzZhMGUzNjhjMjViODA4YTg0NTEyNmEzZDYzZTMxMDVmNGMyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdl
bnQ6OnBvcHVsYXRlQXVkaXRPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogCi0gICAgYXVkaXRPYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiVmVyc2lvbiIpLCBKU0M6OkpTVmFsdWUoUHJvdG9j
b2w6OkF1ZGl0OjpWRVJTSU9OKSk7CisgICAgYXVkaXRPYmplY3QtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiVmVyc2lvbiJfcyksIEpTQzo6SlNWYWx1ZShQ
cm90b2NvbDo6QXVkaXQ6OlZFUlNJT04pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDEyNjM2OWNhYjA3MGRhMjFlNjQ4YjhiNWVlZDlhZDY3
MTIxZWJlZDkuLjE5MjUxMDdjODg4YTVkZGJmN2MwNDQxY2UyNmIzZWRkNDhiOTFlNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBwcml2YXRlOgogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImNsZWFyU2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uQ2xlYXJTYW1wbGlu
Z0ZsYWdzLCAxKTsKICNlbmRpZgogCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlv
blVuZGVmaW5lZDEsIE9TUkV4aXRJbnRyaW5zaWMsIERvbnRFbnVtKTsKLSAgICAgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJp
c0ZpbmFsVGllciIpLCAwLCBmdW5jdGlvbkZhbHNlLCBJc0ZpbmFsVGllckludHJpbnNpYywgRG9u
dEVudW0pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInByZWRpY3RJbnQzMiIpLCAwLCBmdW5jdGlvblVuZGVmaW5l
ZDIsIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsIERvbnRFbnVtKTsKLSAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJpc0ludDMyIiksIDAsIGZ1bmN0aW9uSXNJbnQzMiwgQ2hlY2tJbnQzMkludHJpbnNpYywg
RG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlzUHVyZU5hTiIpLCAwLCBmdW5jdGlvbklzUHVyZU5h
TiwgQ2hlY2tJbnQzMkludHJpbnNpYywgRG9udEVudW0pOwotICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpYXRJbnQ1
MiIpLCAwLCBmdW5jdGlvbklkZW50aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIERvbnRFbnVtKTsK
KyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJPU1JFeGl0Il9zKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0
SW50cmluc2ljLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaXNGaW5hbFRpZXIiX3MpLCAwLCBm
dW5jdGlvbkZhbHNlLCBJc0ZpbmFsVGllckludHJpbnNpYywgRG9udEVudW0pOworICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInByZWRpY3RJbnQzMiJfcyksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMiwgU2V0SW50MzJIZWFw
UHJlZGljdGlvbkludHJpbnNpYywgRG9udEVudW0pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlzSW50MzIiX3Mp
LCAwLCBmdW5jdGlvbklzSW50MzIsIENoZWNrSW50MzJJbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAg
ICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJpc1B1cmVOYU4iX3MpLCAwLCBmdW5jdGlvbklzUHVyZU5hTiwgQ2hlY2tJbnQz
MkludHJpbnNpYywgRG9udEVudW0pOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpYXRJbnQ1MiJfcyksIDAsIGZ1
bmN0aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNpYywgRG9udEVudW0pOwogICAgICAgICAK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1bmN0aW9uRWZmZWN0ZnVs
NDIsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNxdWVyYWRlciIsIGZ1bmN0
aW9uTWFrZU1hc3F1ZXJhZGVyLCAwKTsKQEAgLTYzNCwxNiArNjM0LDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkodGhpcywgbnVs
bHB0cik7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXpl
KCk7ICsraSkKICAgICAgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgodGhpcywgaSwg
anNTdHJpbmcodm0sIGFyZ3VtZW50c1tpXSkpOwotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXJndW1lbnRzIiksIGFycmF5LCBEb250RW51bSk7
CisgICAgICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
cmd1bWVudHMiX3MpLCBhcnJheSwgRG9udEVudW0pOwogICAgICAgICB9CiAKLSAgICAgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29uc29sZSIpLCBqc1VuZGVm
aW5lZCgpLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbnNvbGUiX3MpLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSk7CiAgICAg
ICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHBsYWluT2JqZWN0U3RydWN0dXJlID0gSlNGaW5hbE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBvYmplY3RQcm90b3R5cGUoKSwgMCk7CiAg
ICAgICAgIAogICAgICAgICBKU09iamVjdCogZG9sbGFyID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KHZtLCBwbGFpbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIiQiKSwgZG9sbGFyLCBEb250RW51bSk7Ci0gICAgICAgIHB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiQyNjIiKSwgZG9sbGFyLCBE
b250RW51bSk7CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIiQiX3MpLCBkb2xsYXIsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJDI2MiJfcyksIGRvbGxhciwgRG9udEVudW0pOwogICAg
ICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNyZWF0ZVJlYWxtIiwgZnVu
Y3Rpb25Eb2xsYXJDcmVhdGVSZWFsbSwgMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJkZXRh
Y2hBcnJheUJ1ZmZlciIsIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlciwgMSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CkBAIC02NTMsMTQgKzY1Mywx
NCBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2xvYmFsT2Jq
ZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIDEsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2
bSwgZG9sbGFyLCAiaXNSZW1vdGVGdW5jdGlvbiIsIGZ1bmN0aW9uRG9sbGFySXNSZW1vdGVGdW5j
dGlvbiwgMSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7
CiAgICAgICAgIAotICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImdsb2JhbCIpLCBnbG9iYWxUaGlzKCkpOwotICAgICAgICBkb2xsYXItPnB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSXNI
VE1MRERBIiksCisgICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZ2xvYmFsIl9zKSwgZ2xvYmFsVGhpcygpKTsKKyAgICAgICAgZG9sbGFyLT5w
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklz
SFRNTEREQSJfcyksCiAgICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
YWNjZXNzb3JNYWtlTWFzcXVlcmFkZXIsIG51bGxwdHIpLAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkKICAgICAgICAgKTsK
IAogICAgICAgICBKU09iamVjdCogYWdlbnQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUodm0sIHBs
YWluT2JqZWN0U3RydWN0dXJlKTsKLSAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJhZ2VudCIpLCBhZ2VudCk7CisgICAgICAgIGRvbGxhci0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWdlbnQiX3MpLCBhZ2Vu
dCk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgdGVzdDI2MiBJTlRFUlBSRVRJTkcubWQgZG9j
dW1lbnQgc2F5cyB0aGF0IHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBqdXN0IGluIHRoZSBt
YWluCiAgICAgICAgIC8vIHRocmVhZCBhbmQgc29tZSBhcmUgaW4gdGhlIG90aGVyIHRocmVhZHMu
IFdlIGp1c3QgcHV0IHRoZW0gaW4gYWxsIHRocmVhZHMuCkBAIC02OTEsMTMgKzY5MSwxMyBAQCBw
cml2YXRlOgogICAgICAgICBpZiAoT3B0aW9uczo6ZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFs
T2JqZWN0Rm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ3Vz
dG9tR2V0dGVyU2V0dGVyKiBjdXN0b20gPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
bnVsbHB0ciwgdGVzdEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKLSAgICAgICAgICAgICAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEN1c3Rv
bUFjY2Vzc29yU2V0dGVyIik7CisgICAgICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlc3RDdXN0b21BY2Nlc3NvclNldHRlciJf
cyk7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIGlk
ZW50aWZpZXIsIGN1c3RvbSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ip
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyKiBjdXN0b20gPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgbnVs
bHB0ciwgdGVzdEN1c3RvbVZhbHVlU2V0dGVyKTsKLSAgICAgICAgICAgICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEN1c3RvbVZhbHVl
U2V0dGVyIik7CisgICAgICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInRlc3RDdXN0b21WYWx1ZVNldHRlciJfcyk7CiAgICAgICAg
ICAgICAgICAgdGhpcy0+cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIGlkZW50aWZpZXIsIGN1
c3RvbSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCBKU09iamVjdCogR2xvYmFsT2JqZWN0
Ojptb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCog
ZwogICAgIEpTT2JqZWN0KiBtZXRhUHJvcGVydGllcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZt
LCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBtZXRhUHJvcGVydGllcy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlsZW5hbWUiKSwga2V5
KTsKKyAgICBtZXRhUHJvcGVydGllcy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZmlsZW5hbWUiX3MpLCBrZXkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIG1ldGFQcm9wZXJ0aWVzOwpAQCAtMjAzMCw3ICsy
MDMwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVh
bG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgR2xvYmFsT2JqZWN0KiByZXN1bHQgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVj
dG9yPFN0cmluZz4oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQtPmdldERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiQiKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICIkIl9zKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25E
b2xsYXJFdmFsU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QKICAgICBTdHJpbmcgc291cmNlQ29kZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAKLSAgICBKU1ZhbHVlIGdsb2JhbCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImds
b2JhbCIpKTsKKyAgICBKU1ZhbHVlIGdsb2JhbCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0
KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdsb2JhbCJfcykpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHdo
aWxlIChnbG9iYWwuaW5oZXJpdHM8SlNQcm94eT4odm0pKQogICAgICAgICBnbG9iYWwgPSBqc0Nh
c3Q8SlNQcm94eSo+KGdsb2JhbCktPnRhcmdldCgpOwpAQCAtMjM3MSw3ICsyMzcxLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSlNDT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNPYmplY3QqIG9wdGlvbnNPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwogI2RlZmluZSBSRUFEX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8s
IGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIGFkZE9wdGlvbih2bSwgb3B0aW9u
c09iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWVfKSwgT3B0aW9uczo6bmFt
ZV8oKSk7CisgICAgYWRkT3B0aW9uKHZtLCBvcHRpb25zT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAjbmFtZV8gIiJfcyksIE9wdGlvbnM6Om5hbWVfKCkpOwogICAgIEZPUl9FQUNI
X0pTQ19PUFRJT04oUkVBRF9PUFRJT04pCiAjdW5kZWYgUkVBRF9PUFRJT04KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnNPYmplY3QpOwpAQCAtMzA1MCwxMyArMzA1MCwxMyBAQCBz
dGF0aWMgdm9pZCBkdW1wRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGV4Y2VwdGlvbikKICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiRXhjZXB0aW9uOiA8b3V0
IG9mIG1lbW9yeSB3aGlsZSBleHRyYWN0aW5nIGV4Y2VwdGlvbiBzdHJpbmc+XG4iKTsKIAotICAg
IElkZW50aWZpZXIgbmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiKTsK
KyAgICBJZGVudGlmaWVyIG5hbWVJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1l
Il9zKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBJZGVudGlmaWVyIGZpbGVOYW1lSUQg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic291cmNlVVJMIik7CisgICAgSWRlbnRpZmll
ciBmaWxlTmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNvdXJjZVVSTCJfcyk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSWRlbnRpZmllciBsaW5lTnVtYmVySUQgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGluZSIpOworICAgIElkZW50aWZpZXIgbGluZU51
bWJlcklEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxpbmUiX3MpOwogICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzdGFjayIpOworICAgIElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdGFjayJfcyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKICAg
ICBKU1ZhbHVlIG5hbWVWYWx1ZSA9IGV4Y2VwdGlvbi5nZXQoZ2xvYmFsT2JqZWN0LCBuYW1lSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwCmluZGV4IGU5MzgyZDQ5NDMyYzkyZWM4NWUzMzFkZDViZTMzMTUwYTM2Y2Yx
OWIuLmE4ODE2MWIyZjUyMGY4MzZkNGU0ZmVhZDY5YWVjMjhkYjQ1Yzk2YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5j
cHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBBYnN0cmFjdE1vZHVsZVJlY29yZCogQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoSlNHbG9iYWxPYgogICAgIEpTVmFs
dWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlTmFtZSk7
CiAgICAgSlNWYWx1ZSBlbnRyeSA9IG1fZGVwZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGdsb2Jh
bE9iamVjdCwgbW9kdWxlTmFtZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGVudHJ5LmdldEFzPEFi
c3RyYWN0TW9kdWxlUmVjb3JkKj4oZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibW9kdWxlIikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGVudHJ5Lmdl
dEFzPEFic3RyYWN0TW9kdWxlUmVjb3JkKj4oZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibW9kdWxlIl9zKSkpOwogfQogCiBhdXRvIEFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpyZXNvbHZlSW1wb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50
aWZpZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCBlMmY4MTc1ODFjYzE4MDZlODc4NDNk
NWQ4Zjk5NTQzMTBmNjkyZjdjLi4yZDVhYTI2NzE2MWJmMWIyNTY1MTVhNDcxZTRiMDM4NzY0NDRh
MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0
LmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEF0b21pY3NPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBBU1NFUlQoaW5oZXJp
dHModm0sIGluZm8oKSkpOwogICAgIAogI2RlZmluZSBQVVRfRElSRUNUX05BVElWRV9GVU5DKGxv
d2VyTmFtZSwgdXBwZXJOYW1lLCBjb3VudCkgXAotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgI2xvd2VyTmFtZSksIGNvdW50LCBhdG9taWNzRnVuYyAjIyB1cHBlck5hbWUsIEF0b21p
Y3MgIyMgdXBwZXJOYW1lICMjIEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgI2xvd2VyTmFtZSAiIl9zKSwgY291bnQsIGF0b21pY3NGdW5jICMjIHVwcGVyTmFtZSwgQXRv
bWljcyAjIyB1cHBlck5hbWUgIyMgSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgRk9SX0VBQ0hfQVRPTUlDU19GVU5DKFBV
VF9ESVJFQ1RfTkFUSVZFX0ZVTkMpCiAjdW5kZWYgUFVUX0RJUkVDVF9OQVRJVkVfRlVOQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAKaW5kZXggMTY5NTEyZmM0MDZkYzFmMGYxNjdjMjgyNmI5MDdkY2VhMTU4ZDliOS4uNjRiNjc3
ZWIwMGFmNzIyYmJiYzllMjY5YWM5YTk4NGM0ZWEyZDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjYsMTggKzI2
LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlf
TkFNRShuYW1lKSAsIG5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQotI2Rl
ZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICNuYW1lKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1F
KG5hbWUpICwgbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSAiIl9zKSkKKyNk
ZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAjbmFtZSAiIl9zKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRF
X05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJp
dmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1i
b2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQotI2RlZmluZSBJTklUSUFMSVpFX1BS
SVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVGaWVsZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklF
TERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVGaWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiIyIgI25hbWUgIiJfcykpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlm
aWVycyhWTSYgdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCiAgICAgLCBlbXB0eUlkZW50aWZp
ZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKQotICAgICwgdW5kZXJzY29yZVByb3RvKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iKSkKLSAgICAsIHVzZVN0cmljdElk
ZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3QiKSkKLSAgICAs
IHRpbWVzSWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiKiIpKQorICAgICwg
dW5kZXJzY29yZVByb3RvKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3Byb3RvX18iX3Mp
KQorICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlIHN0cmljdCJfcykpCisgICAgLCB0aW1lc0lkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIioiX3MpKQogICAgICwgbV9idWlsdGluTmFtZXMobWFrZVVuaXF1ZTxCdWlsdGlu
TmFtZXM+KHZtLCB0aGlzKSkKICAgICBKU0NfUEFSU0VSX1BSSVZBVEVfTkFNRVMoSU5JVElBTEla
RV9QUklWQVRFX05BTUUpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQo
SU5JVElBTElaRV9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCmluZGV4IDhh
MGMxMTgxOTY2MjJlMTY2ZmM4MWFhYmNkOThlYTc4OGExZWNkNWUuLjc3MmM5NDczNDhkMGY2NDcw
ZDkyMjRiYWNlNDc3YjI1OWEzZmViOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAK
QEAgLTQzLDggKzQzLDggQEAgdm9pZCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOwogCiAgICAgLy8gV2UgY2FuJ3QgbWFrZSB0aGlzIGEgcHJvcGVy
dHkgbmFtZSBiZWNhdXNlIGl0J3MgYSByZXNldmVyZWQgd29yZCBpbiBDKysuLi4KLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicmVnaXN0ZXIiKSwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bnJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5
VW5yZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWdpc3RlciJfcyksIHByb3RvRnVuY0ZpbmFsaXph
dGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciJfcyksIHByb3Rv
RnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDNjZjhhZWMxNWQ2MjgwN2ZiNzUxYjAyZWNkNzI4OGE5
MTRiZTJmOWEuLmQ4NWZhMDYyMGI0YWQyYzAzNDdmZDdiNTFjMDRlN2NhNjE1ODUxYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC0zNyw2ICsz
NywxNSBAQCBSZWY8QXRvbVN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSYgdm0sIGNvbnN0
IGNoYXIqIGMpCiAgICAgcmV0dXJuICpBdG9tU3RyaW5nSW1wbDo6YWRkKGMpOwogfQogCisKK1Jl
ZjxBdG9tU3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkTGl0ZXJhbChWTSYgdm0sIGNvbnN0IGNo
YXIqIGxpdGVyYWwsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAg
ICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChsaXRl
cmFsWzBdKTsKKworICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFs
LCBsZW5ndGgpOworfQorCiBSZWY8QXRvbVN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0m
IHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoID09IDEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCAxYzlm
ZTU1NjUwMWYwYTJhN2NmMGQwOGUxMTgyYjY1OTdjMDFjMGZmLi44ZDQ4MGJiZjMyYzdjZTY5Mjg5
N2Y0MWYyMjdhNzZiODM3NzdkZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oCkBAIC0xMDksOSArMTA5LDYgQEAgcHVibGljOgogICAgIC8vIGZyb21VaWQg
a2VlcHMgc3ltYm9sLW5lc3Mgb2YgcHJvdmlkZWQgU3RyaW5nSW1wbCogd2hpbGUgZnJvbVN0cmlu
ZyBkaXNjYXJkcyBpdC4KICAgICAvLyBVc2UgZnJvbVVpZCB3aGVuIGNvbnN0cnVjdGluZyBJZGVu
dGlmaWVyIGZyb20gU3RyaW5nSW1wbCogd2hpY2ggbWF5IHJlcHJlc2VudCBzeW1ib2xzLgogCi0g
ICAgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3Ry
aW5nKFZNJiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOwogICAg
IHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpOwogICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBMQ2hhciosIGludCBsZW5ndGgp
OwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgpOwpAQCAtMTIzLDYgKzEyMCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhWTSYsIGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykgeyBy
ZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3RlcnMuc2l6ZSgp
KTsgfQogCisgICAgLy8gRklYTUU6IFBvcnQgY2FsbCBzaXRlcyB0byBmcm9tU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCkgYW5kIHJlbW92ZSB0aGlzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
cnNDb3VudD4KKyAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hh
ciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOworCiAgICAgc3RhdGljIElkZW50aWZp
ZXIgZnJvbVVpZChWTSYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmKTsKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tVWlkKFN5bWJvbEltcGwmKTsKQEAgLTE3Myw2ICsxNzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3Ry
aW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b20o
KSk7IH0KICAgICBJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgp
IDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCkt
PmlzQXRvbSgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllcihWTSYgdm0sIEFTQ0lJ
TGl0ZXJhbCBsaXRlcmFsKSA6IG1fc3RyaW5nKGFkZExpdGVyYWwodm0sIGxpdGVyYWwuY2hhcmFj
dGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0
b20oKSk7IH0KICAgICBJZGVudGlmaWVyKFZNJiwgQXRvbVN0cmluZ0ltcGwqKTsKICAgICBJZGVu
dGlmaWVyKFZNJiwgY29uc3QgQXRvbVN0cmluZyYpOwogICAgIElkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBTdHJpbmcmIHN0cmluZykgOiBtX3N0cmluZyhhZGQodm0sIHN0cmluZy5pbXBsKCkpKSB7
IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbSgpKTsgfQpAQCAtMTk3LDYgKzE5OSw3IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhUKTsKIAogICAgIHN0
YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZChWTSYsIFN0cmluZ0ltcGwqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEF0b21TdHJpbmdJbXBsPiBhZGRMaXRlcmFsKFZNJiwg
Y29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudEF0b21TdHJpbmdUYWJsZShWTSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKaW5kZXggYTU3MmY1N2E1YzljZjM4NTE4ZTBmYjJlYTVjMjgyNTVlODYwYjQ2ZC4uNzVjYmQ2
MDJlNWI4ODdhZTQ5YTQ5NjcyYTMyNzA0OTcyMGY4NjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC04Niw5ICs4Niw5IEBA
IGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjCiAgICAgcmV0dXJuIElkZW50aWZpZXIoJnZtLCBjaGFy
YWN0ZXJzKTsKIH0KIAotaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhW
TSYgdm0sIEFTQ0lJTGl0ZXJhbCBzKQorQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykKIHsKLSAgICByZXR1cm4gSWRl
bnRpZmllcih2bSwgU3RyaW5nKHMpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcyk7CiB9
CiAKIGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25z
dCBMQ2hhciogcywgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZS5jcHAKaW5kZXggZWIzYmY5MmZjYzQ3NjQwNzRiZmUzMjQ1YTc1ODE5N2QyNjY4
OTA4Mi4uZTE5NmQ2YmMyYTNhZWQxYjlkMWJlYTAyZTUzODVmYmZkZDQ2ZjFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTc1Nyw3ICs3NTcs
NyBAQCBKU09iamVjdCogSW50bExvY2FsZTo6dGV4dEluZm8oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICB9CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImRpcmVjdGlvbiIpLCBsYXlvdXRTdHJpbmcpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlyZWN0aW9uIl9z
KSwgbGF5b3V0U3RyaW5nKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NDAsOSArODQw
LDkgQEAgSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3RE
YXkiKSwganNOdW1iZXIoY29udmVydFVDYWxlbmRhckRheXNPZldlZWtUb01vbmRheUJhc2VkRGF5
KGZpcnN0RGF5T2ZXZWVrKSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAid2Vla2VuZCIpLCB3ZWVrZW5kQXJyYXkpOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW1hbERheXMiKSwg
anNOdW1iZXIobWluaW1hbERheXMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImZpcnN0RGF5Il9zKSwganNOdW1iZXIoY29udmVydFVDYWxl
bmRhckRheXNPZldlZWtUb01vbmRheUJhc2VkRGF5KGZpcnN0RGF5T2ZXZWVrKSkpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAid2Vla2VuZCJf
cyksIHdlZWtlbmRBcnJheSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtaW5pbWFsRGF5cyJfcyksIGpzTnVtYmVyKG1pbmltYWxEYXlzKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBjYTA0MjQ5ODUwMWYyNjgwODdmNDQ1
MWViZmVlNzI5Y2FlZDkxMzhjLi45ZDdhYTVlYjhjNTJmNWI2OWI1NDdmNWEzMjk5MjljNGIwNmQ3
N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgbV9zdHlsZSA9IGludGxPcHRpb248U3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgeyAiZGVjaW1hbCJfcywgU3R5bGU6OkRlY2ltYWwgfSwg
eyAicGVyY2VudCJfcywgU3R5bGU6OlBlcmNlbnQgfSwgeyAiY3VycmVuY3kiX3MsIFN0eWxlOjpD
dXJyZW5jeSB9LCB7ICJ1bml0Il9zLCBTdHlsZTo6VW5pdCB9IH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIFwiY3VycmVuY3lcIiwgb3IgXCJ1bml0XCIi
X3MsIFN0eWxlOjpEZWNpbWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCi0gICAgU3RyaW5nIGN1cnJlbmN5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCB7IH0s
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpLCBBU0NJSUxpdGVyYWw6Om51bGwoKSk7CisgICAgU3RyaW5n
IGN1cnJlbmN5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSJfcyksIHsgfSwgQVNDSUlMaXRlcmFsOjpu
dWxsKCksIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYg
KCFpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY3VycmVuY3kpKSB7CkBAIC0zNDksMTMgKzM0OSwx
MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjdXJyZW5jeURpZ2l0cyA9IGNv
bXB1dGVDdXJyZW5jeURpZ2l0cyhjdXJyZW5jeSk7CiAgICAgfQogCi0gICAgbV9jdXJyZW5jeURp
c3BsYXkgPSBpbnRsT3B0aW9uPEN1cnJlbmN5RGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgeyAiY29k
ZSJfcywgQ3VycmVuY3lEaXNwbGF5OjpDb2RlIH0sIHsgInN5bWJvbCJfcywgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2wgfSwgeyAibmFycm93U3ltYm9sIl9zLCBDdXJyZW5jeURpc3BsYXk6Ok5hcnJv
d1N5bWJvbCB9LCB7ICJuYW1lIl9zLCBDdXJyZW5jeURpc3BsYXk6Ok5hbWUgfSB9LCAiY3VycmVu
Y3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBvciBcIm5hbWVc
IiJfcywgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2wpOworICAgIG1fY3VycmVuY3lEaXNwbGF5ID0g
aW50bE9wdGlvbjxDdXJyZW5jeURpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSJfcyksIHsgeyAiY29kZSJfcywg
Q3VycmVuY3lEaXNwbGF5OjpDb2RlIH0sIHsgInN5bWJvbCJfcywgQ3VycmVuY3lEaXNwbGF5OjpT
eW1ib2wgfSwgeyAibmFycm93U3ltYm9sIl9zLCBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJv
bCB9LCB7ICJuYW1lIl9zLCBDdXJyZW5jeURpc3BsYXk6Ok5hbWUgfSB9LCAiY3VycmVuY3lEaXNw
bGF5IG11c3QgYmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBvciBcIm5hbWVcIiJfcywg
Q3VycmVuY3lEaXNwbGF5OjpTeW1ib2wpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICBtX2N1cnJlbmN5U2lnbiA9IGludGxPcHRpb248Q3VycmVuY3lTaWdu
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJy
ZW5jeVNpZ24iKSwgeyB7ICJzdGFuZGFyZCJfcywgQ3VycmVuY3lTaWduOjpTdGFuZGFyZCB9LCB7
ICJhY2NvdW50aW5nIl9zLCBDdXJyZW5jeVNpZ246OkFjY291bnRpbmcgfSB9LCAiY3VycmVuY3lT
aWduIG11c3QgYmUgZWl0aGVyIFwic3RhbmRhcmRcIiBvciBcImFjY291bnRpbmdcIiJfcywgQ3Vy
cmVuY3lTaWduOjpTdGFuZGFyZCk7CisgICAgbV9jdXJyZW5jeVNpZ24gPSBpbnRsT3B0aW9uPEN1
cnJlbmN5U2lnbj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VycmVuY3lTaWduIl9zKSwgeyB7ICJzdGFuZGFyZCJfcywgQ3VycmVuY3lTaWduOjpT
dGFuZGFyZCB9LCB7ICJhY2NvdW50aW5nIl9zLCBDdXJyZW5jeVNpZ246OkFjY291bnRpbmcgfSB9
LCAiY3VycmVuY3lTaWduIG11c3QgYmUgZWl0aGVyIFwic3RhbmRhcmRcIiBvciBcImFjY291bnRp
bmdcIiJfcywgQ3VycmVuY3lTaWduOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAotICAgIFN0cmluZyB1bml0ID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0Iiks
IHsgfSwgQVNDSUlMaXRlcmFsOjpudWxsKCksIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpKTsKKyAgICBT
dHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCJfcyksIHsgfSwgQVNDSUlMaXRlcmFsOjpudWxs
KCksIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRV
bml0OwogICAgIGlmICghdW5pdC5pc051bGwoKSkgewpAQCAtMzcwLDEzICszNzAsMTMgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdW5p
dERpc3BsYXkgPSBpbnRsT3B0aW9uPFVuaXREaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7IHsgInNob3J0Il9z
LCBVbml0RGlzcGxheTo6U2hvcnQgfSwgeyAibmFycm93Il9zLCBVbml0RGlzcGxheTo6TmFycm93
IH0sIHsgImxvbmciX3MsIFVuaXREaXNwbGF5OjpMb25nIH0gfSwgInVuaXREaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiX3MsIFVuaXREaXNw
bGF5OjpTaG9ydCk7CisgICAgbV91bml0RGlzcGxheSA9IGludGxPcHRpb248VW5pdERpc3BsYXk+
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXRE
aXNwbGF5Il9zKSwgeyB7ICJzaG9ydCJfcywgVW5pdERpc3BsYXk6OlNob3J0IH0sIHsgIm5hcnJv
dyJfcywgVW5pdERpc3BsYXk6Ok5hcnJvdyB9LCB7ICJsb25nIl9zLCBVbml0RGlzcGxheTo6TG9u
ZyB9IH0sICJ1bml0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0XCIsIFwibmFycm93XCIs
IG9yIFwibG9uZ1wiIl9zLCBVbml0RGlzcGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRz
IDogMDsKICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogKG1fc3R5bGUgPT0gU3R5
bGU6OlBlcmNlbnQpID8gMCA6IDM7CiAKLSAgICBtX25vdGF0aW9uID0gaW50bE9wdGlvbjxJbnRs
Tm90YXRpb24+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm5vdGF0aW9uIiksIHsgeyAic3RhbmRhcmQiX3MsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQg
fSwgeyAic2NpZW50aWZpYyJfcywgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljIH0sIHsgImVuZ2lu
ZWVyaW5nIl9zLCBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nIH0sIHsgImNvbXBhY3QiX3MsIElu
dGxOb3RhdGlvbjo6Q29tcGFjdCB9IH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5k
YXJkXCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIl9z
LCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKKyAgICBtX25vdGF0aW9uID0gaW50bE9wdGlvbjxJ
bnRsTm90YXRpb24+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5vdGF0aW9uIl9zKSwgeyB7ICJzdGFuZGFyZCJfcywgSW50bE5vdGF0aW9uOjpTdGFu
ZGFyZCB9LCB7ICJzY2llbnRpZmljIl9zLCBJbnRsTm90YXRpb246OlNjaWVudGlmaWMgfSwgeyAi
ZW5naW5lZXJpbmciX3MsIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmcgfSwgeyAiY29tcGFjdCJf
cywgSW50bE5vdGF0aW9uOjpDb21wYWN0IH0gfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwi
c3RhbmRhcmRcIiwgXCJzY2llbnRpZmljXCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0
XCIiX3MsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFs
T2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKQEAgLTQwMiwxNyArNDAyLDE3
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgbV90cmFpbGluZ1plcm9EaXNwbGF5ID0g
aW50bE9wdGlvbjxUcmFpbGluZ1plcm9EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZt
LnByb3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIHsgeyAiYXV0byJfcywgVHJhaWxp
bmdaZXJvRGlzcGxheTo6QXV0byB9LCB7ICJzdHJpcElmSW50ZWdlciJfcywgVHJhaWxpbmdaZXJv
RGlzcGxheTo6U3RyaXBJZkludGVnZXIgfSB9LCAidHJhaWxpbmdaZXJvRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiBvciBcInN0cmlwSWZJbnRlZ2VyXCIiX3MsIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OkF1dG8pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBtX2NvbXBhY3REaXNwbGF5ID0gaW50bE9wdGlvbjxDb21wYWN0RGlzcGxheT4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3Bs
YXkiKSwgeyB7ICJzaG9ydCJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0IH0sIHsgImxvbmciX3Ms
IENvbXBhY3REaXNwbGF5OjpMb25nIH0gfSwgImNvbXBhY3REaXNwbGF5IG11c3QgYmUgZWl0aGVy
IFwic2hvcnRcIiBvciBcImxvbmdcIiJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0KTsKKyAgICBt
X2NvbXBhY3REaXNwbGF5ID0gaW50bE9wdGlvbjxDb21wYWN0RGlzcGxheT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiX3Mp
LCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9uZyJfcywgQ29t
cGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJz
aG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBVc2VHcm91cGluZyBkZWZhdWx0
VXNlR3JvdXBpbmcgPSBVc2VHcm91cGluZzo6QXV0bzsKICAgICBpZiAobV9ub3RhdGlvbiA9PSBJ
bnRsTm90YXRpb246OkNvbXBhY3QpCiAgICAgICAgIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdy
b3VwaW5nOjpNaW4yOwogCi0gICAgbV91c2VHcm91cGluZyA9IGludGxTdHJpbmdPckJvb2xlYW5P
cHRpb248VXNlR3JvdXBpbmc+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIFVzZUdyb3VwaW5nOjpBbHdheXMsIFVzZUdyb3Vw
aW5nOjpGYWxzZSwgeyB7ICJtaW4yIl9zLCBVc2VHcm91cGluZzo6TWluMiB9LCB7ICJhdXRvIl9z
LCBVc2VHcm91cGluZzo6QXV0byB9LCB7ICJhbHdheXMiX3MsIFVzZUdyb3VwaW5nOjpBbHdheXMg
fSB9LCAidXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsIFwibWluMlwiLCBc
ImF1dG9cIiwgb3IgXCJhbHdheXNcIiJfcywgZGVmYXVsdFVzZUdyb3VwaW5nKTsKKyAgICBtX3Vz
ZUdyb3VwaW5nID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmci
X3MpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91cGluZzo6RmFsc2UsIHsgeyAibWluMiJf
cywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJfcywgVXNlR3JvdXBpbmc6OkF1dG8gfSwg
eyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlzIH0gfSwgInVzZUdyb3VwaW5nIG11c3Qg
YmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwgXCJhdXRvXCIsIG9yIFwiYWx3YXlzXCIi
X3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAotICAgIG1fc2lnbkRpc3BsYXkgPSBpbnRsT3B0aW9uPFNpZ25EaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlz
cGxheSIpLCB7IHsgImF1dG8iX3MsIFNpZ25EaXNwbGF5OjpBdXRvIH0sIHsgIm5ldmVyIl9zLCBT
aWduRGlzcGxheTo6TmV2ZXIgfSwgeyAiYWx3YXlzIl9zLCBTaWduRGlzcGxheTo6QWx3YXlzIH0s
IHsgImV4Y2VwdFplcm8iX3MsIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvIH0sIHsgIm5lZ2F0aXZl
Il9zLCBTaWduRGlzcGxheTo6TmVnYXRpdmUgfSB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRo
ZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgXCJleGNlcHRaZXJvXCIsIG9yIFwi
bmVnYXRpdmVcIiJfcywgU2lnbkRpc3BsYXk6OkF1dG8pOworICAgIG1fc2lnbkRpc3BsYXkgPSBp
bnRsT3B0aW9uPFNpZ25EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSJfcyksIHsgeyAiYXV0byJfcywgU2lnbkRpc3Bs
YXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMi
X3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6
OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0s
ICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5
c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0
byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIG1fcm91
bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCB7CkBAIC0xNDMwLDEzICsxNDMwLDEz
IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBjYXNlIFN0eWxlOjpQZXJjZW50OgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKLSAgICAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5RGlz
cGxheSkpKTsKLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVu
Y3lTaWduU3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSJfcyksIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbV9jdXJyZW5jeSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiX3MpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5RGlzcGxh
eSkpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY3VycmVuY3lTaWduIl9zKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5j
eVNpZ25TdHJpbmcobV9jdXJyZW5jeVNpZ24pKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3R5bGU6OlVuaXQ6Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3VuaXQpKTsK
LSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidW5pdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCB1bml0RGlzcGxheVN0cmlu
ZyhtX3VuaXREaXNwbGF5KSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0Il9zKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBt
X3VuaXQpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5pdERpc3BsYXkiX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHVuaXRE
aXNwbGF5U3RyaW5nKG1fdW5pdERpc3BsYXkpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1JbnRlZ2Vy
RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7CkBAIC0xNDU3LDExICsx
NDU3LDExIEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVt
YmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
c2VHcm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7Ci0gICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRp
b24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InVzZUdyb3VwaW5nIl9zKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91cGluZykpOwor
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5v
dGF0aW9uIl9zKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0
aW9uKSkpOwogICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKLSAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0
cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3Bs
YXkiX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29t
cGFjdERpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNp
Z25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOwogICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIGpzTnVtYmVy
KG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpKSk7CkBAIC0x
NTAzLDcgKzE1MDMsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZQogICAgIGF1dG8gbGl0ZXJh
bFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwogICAgIElkZW50
aWZpZXIgdW5pdE5hbWU7CiAgICAgaWYgKHVuaXQpCi0gICAgICAgIHVuaXROYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKTsKKyAgICAgICAgdW5pdE5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCJfcyk7CiAKICAgICBmb3IgKGF1dG8mIGZpZWxkIDog
ZmxhdHRlbikgewogICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxkLm1fZmllbGQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRl
eCA2OGVkZjE2M2JkNDc5ZmExODYxZTAyM2IyZDc3MjQ3ODNjNmRmZGViLi4wZWE2ZTQ4ZTkzYTA0
ZmRkMGQ1MTFlNjA1YjI2YzRjY2UzNGFlZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCBKU09i
amVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgY2F0ZWdvcmllcy0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpbmRleCsrLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQs
IHJlc3VsdExlbmd0aCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGx1cmFsQ2F0ZWdvcmllcyIpLCBjYXRlZ29yaWVzKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwbHVyYWxDYXRlZ29yaWVz
Il9zKSwgY2F0ZWdvcmllcyk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZv
cm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAogICAgIHJl
dHVybiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IDAxMmYxOTFjZDlhYWVmNzI4ODNiMDUyYjU0YjBiMzQ3ODNlOGM5
N2YuLmU2MjE2NGI5YzkyODdjNTVjYzdkOWVmZTJiMzgxNjU4ODBhYjBlM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Njks
MTYgKzE1NjksMTYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIGlmIChPcHRpb25z
OjpleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCgpKSB7CiAjaWYgRU5BQkxFKFNBTVBMSU5H
X1BST0ZJTEVSKQotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fZW5hYmxlU2FtcGxpbmdQcm9maWxlciIpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlbmFibGVTYW1wbGluZ1Byb2ZpbGVy
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fZGlzYWJs
ZVNhbXBsaW5nUHJvZmlsZXIiKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgZGlzYWJsZVNhbXBsaW5nUHJvZmlsZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiX19lbmFibGVTYW1wbGluZ1Byb2ZpbGVyIl9zKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZW5hYmxlU2FtcGxpbmdQcm9maWxl
ciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX2Rpc2Fi
bGVTYW1wbGluZ1Byb2ZpbGVyIl9zKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBT
dHJpbmcoKSwgZGlzYWJsZVNhbXBsaW5nUHJvZmlsZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiAjZW5kaWYKLSAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX2VuYWJsZVN1cGVyU2FtcGxlciIpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlbmFibGVTdXBlclNhbXBs
ZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19kaXNh
YmxlU3VwZXJTYW1wbGVyIiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5n
KCksIGRpc2FibGVTdXBlclNhbXBsZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiX19lbmFibGVTdXBlclNhbXBsZXIiX3MpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlbmFibGVTdXBlclNhbXBsZXIpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19kaXNhYmxlU3VwZXJTYW1wbGVy
Il9zKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZGlzYWJsZVN1
cGVyU2FtcGxlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAotICAgICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIl9fdHJhY2VQb2ludFN0YXJ0IiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNCwg
U3RyaW5nKCksIHRyYWNlUG9pbnRTdGFydCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKLSAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJfX3RyYWNlUG9pbnRTdG9wIiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgNCwgU3RyaW5nKCksIHRyYWNlUG9pbnRTdG9wKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fc2lnbnBvc3RTdGFydCIpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBzaWducG9zdFN0YXJ0KSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fc2lnbnBvc3RTdG9wIiksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHNpZ25wb3N0U3RvcCksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3RyYWNlUG9pbnRT
dGFydCJfcyksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNCwgU3RyaW5nKCksIHRyYWNl
UG9pbnRTdGFydCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJfX3RyYWNlUG9pbnRTdG9wIl9zKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA0LCBT
dHJpbmcoKSwgdHJhY2VQb2ludFN0b3ApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiX19zaWducG9zdFN0YXJ0Il9zKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgc2lnbnBvc3RTdGFydCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX3NpZ25wb3N0U3RvcCJfcyksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHNpZ25wb3N0U3RvcCksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICB9CiAKICAgICBpbml0U3RhdGljR2xvYmFscyh2
bSk7CkBAIC0xNjA1LDcgKzE2MDUsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93
ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAg
ICAgICAgICAgIGluaXQuc2V0KFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwgaW5pdC5vd25lci0+bV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIGF1dG8qIHdlYkFzc2VtYmx5ID0g
SlNXZWJBc3NlbWJseTo6Y3JlYXRlKHZtLCB0aGlzLCBKU1dlYkFzc2VtYmx5OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7Ci0gICAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiV2Vi
QXNzZW1ibHkiKSwgd2ViQXNzZW1ibHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJXZWJBc3NlbWJseSJfcyksIHdlYkFzc2Vt
Ymx5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAKICNkZWZpbmUgQ1JFQVRFX1dFQkFTU0VNQkxZX1BST1RPVFlQRShjYXBpdGFsTmFtZSwgbG93
ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwg
ZmVhdHVyZUZsYWcpIFwKICAgICBpZiAoZmVhdHVyZUZsYWcpIHtcCkBAIC0yMzY1LDcgKzIzNjUs
NyBAQCBTVVBQUkVTU19BU0FOIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmV4cG9zZURvbGxhclZNKFZN
JiB2bSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoZXh0cmFTdGF0aWNHbG9iYWxzLCBX
VEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykpOwogCi0gICAgcHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIiksIGRvbGxhclZNLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIl9zKSwgZG9sbGFyVk0sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogdm9p
ZCBKU0dsb2JhbE9iamVjdDo6YWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qIGds
b2JhbHMsIGludCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcAppbmRleCBlZWQ0NjM1MDEzMTZlM2EzZDQwNGYxZDY2ZGQ4ZjU2MTFh
YWYzNWU1Li5lM2YwM2E0YzA4Zjg0NjkzYjE2NDQwZjgxYTdjZWE3ZDY4OGVkYWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBKU01vZHVsZUxvYWRlcjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtKQogICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CiAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2
bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVsZWFzZUFzc2Vy
dE5vRXhjZXB0aW9uKCk7Ci0gICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicmVnaXN0cnkiKSwgbWFwKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJyZWdpc3RyeSJfcyksIG1hcCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXgg
ZGU2OGFhOTc0NDZlNzA5YThmNDExMTAwYmNkMmZiMGI0YmFlYzE5Ni4uNTg2Y2ZmNmQ1MTg2MzQ5
MmFlZTYwYjgzMWJmOTNlMjQzMGY2NzYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTc1LDUxICs3NSw1MSBAQCB2b2lkIE1hdGhPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiRSIpLCBqc051bWJlcihNYXRoOjpleHAoMS4wKSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkxOMiIpLCBqc051bWJlcihNYXRoOjpsb2co
Mi4wKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkxOMTAiKSwg
anNOdW1iZXIoTWF0aDo6bG9nKDEwLjApKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiTE9HMkUiKSwganNOdW1iZXIoMS4wIC8gTWF0aDo6bG9nKDIuMCkpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJMT0cxMEUiKSwganNOdW1iZXIo
MC40MzQyOTQ0ODE5MDMyNTE4KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiUEkiKSwganNOdW1iZXIocGlEb3VibGUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJTUVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQo
Mi4wKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkUiX3MpLCBq
c051bWJlcihNYXRoOjpleHAoMS4wKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIkxOMiJfcyksIGpzTnVtYmVyKE1hdGg6OmxvZygyLjApKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTE4xMCJfcyksIGpzTnVtYmVyKE1hdGg6Omxv
ZygxMC4wKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkxPRzJF
Il9zKSwganNOdW1iZXIoMS4wIC8gTWF0aDo6bG9nKDIuMCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJMT0cxMEUiX3MpLCBqc051bWJlcigwLjQzNDI5NDQ4MTkw
MzI1MTgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJQSSJfcyks
IGpzTnVtYmVyKHBpRG91YmxlKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiU1FSVDFfMiJfcyksIGpzTnVtYmVyKHNxcnQoMC41KSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIlNRUlQyIl9zKSwganNOdW1iZXIoc3FydCgyLjApKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYWJzIiksIDEsIG1hdGhQcm90b0Z1bmNBYnMsIEFic0ludHJpbnNpYywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImFjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0FDb3MsIEFDb3NJbnRy
aW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhc2luIiksIDEsIG1hdGhQcm90
b0Z1bmNBU2luLCBBU2luSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
YXRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbiwgQVRhbkludHJpbnNpYywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImFjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwgQUNvc2hJ
bnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhc2luaCIpLCAxLCBtYXRo
UHJvdG9GdW5jQVNpbmgsIEFTaW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYXRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY0FUYW5oLCBBVGFuaEludHJpbnNpYywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImF0YW4yIiksIDIsIG1hdGhQcm90b0Z1bmNBVGFu
MiwgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYnJ0IiksIDEs
IG1hdGhQcm90b0Z1bmNDYnJ0LCBDYnJ0SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2VpbCIpLCAxLCBtYXRoUHJvdG9GdW5jQ2VpbCwgQ2VpbEludHJpbnNpYywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNsejMyIiksIDEsIG1hdGhQcm90b0Z1bmNDbHoz
MiwgQ2x6MzJJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb3MiKSwg
MSwgbWF0aFByb3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY29zaCIpLCAxLCBtYXRoUHJvdG9GdW5jQ29zaCwgQ29zaEludHJpbnNpYywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImV4cCIpLCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBF
eHBJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJleHBtMSIpLCAxLCBt
YXRoUHJvdG9GdW5jRXhwbTEsIEV4cG0xSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZmxvb3IiKSwgMSwgbWF0aFByb3RvRnVuY0Zsb29yLCBGbG9vckludHJpbnNpYywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZyb3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5j
RnJvdW5kLCBGUm91bmRJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJo
eXBvdCIpLCAyLCBtYXRoUHJvdG9GdW5jSHlwb3QsIE5vSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibG9nIiksIDEsIG1hdGhQcm90b0Z1bmNMb2csIExvZ0ludHJpbnNp
Yywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvZzEwIiksIDEsIG1hdGhQcm90b0Z1
bmNMb2cxMCwgTG9nMTBJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJs
b2cxcCIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMXAsIExvZzFwSW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibG9nMiIpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMiwgTG9nMklu
dHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heCIpLCAyLCBtYXRoUHJv
dG9GdW5jTWF4LCBNYXhJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW4iKSwgMiwgbWF0aFByb3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicG93IiksIDIsIG1hdGhQcm90b0Z1bmNQb3csIFBvd0ludHJpbnNpYywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJhbmRvbSIpLCAwLCBtYXRoUHJvdG9GdW5j
UmFuZG9tLCBSYW5kb21JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
b3VuZCIpLCAxLCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2lnbiwgTm9JbnRy
aW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaW4iKSwgMSwgbWF0aFByb3Rv
RnVuY1NpbiwgU2luSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lu
aCIpLCAxLCBtYXRoUHJvdG9GdW5jU2luaCwgU2luaEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5z
aWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
LSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0YW4iKSwgMSwgbWF0aFByb3RvRnVu
Y1RhbiwgVGFuSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGFuaCIp
LCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgVGFuaEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5z
aWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
LSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbXVsIiksIDIsIG1hdGhQcm90b0Z1
bmNJTXVsLCBJTXVsSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWJz
Il9zKSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiYWNvcyJfcyksIDEsIG1hdGhQcm90b0Z1bmNBQ29zLCBBQ29zSW50cmlu
c2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXNpbiJfcyksIDEsIG1hdGhQcm90
b0Z1bmNBU2luLCBBU2luSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
YXRhbiJfcyksIDEsIG1hdGhQcm90b0Z1bmNBVGFuLCBBVGFuSW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYWNvc2giX3MpLCAxLCBtYXRoUHJvdG9GdW5jQUNvc2gsIEFD
b3NoSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXNpbmgiX3MpLCAx
LCBtYXRoUHJvdG9GdW5jQVNpbmgsIEFTaW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiYXRhbmgiX3MpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIEFUYW5oSW50cmlu
c2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXRhbjIiX3MpLCAyLCBtYXRoUHJv
dG9GdW5jQVRhbjIsIE5vSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2JydCJfcyksIDEsIG1hdGhQcm90b0Z1bmNDYnJ0LCBDYnJ0SW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2VpbCJfcyksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWls
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2x6MzIiX3MpLCAxLCBt
YXRoUHJvdG9GdW5jQ2x6MzIsIENsejMySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY29zIl9zKSwgMSwgbWF0aFByb3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29zaCJfcyksIDEsIG1hdGhQcm90b0Z1bmNDb3No
LCBDb3NoSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZXhwIl9zKSwg
MSwgbWF0aFByb3RvRnVuY0V4cCwgRXhwSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZXhwbTEiX3MpLCAxLCBtYXRoUHJvdG9GdW5jRXhwbTEsIEV4cG0xSW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmxvb3IiX3MpLCAxLCBtYXRoUHJvdG9G
dW5jRmxvb3IsIEZsb29ySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZnJvdW5kIl9zKSwgMSwgbWF0aFByb3RvRnVuY0Zyb3VuZCwgRlJvdW5kSW50cmluc2ljLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaHlwb3QiX3MpLCAyLCBtYXRoUHJvdG9GdW5jSHlw
b3QsIE5vSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9nIl9zKSwg
MSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibG9nMTAiX3MpLCAxLCBtYXRoUHJvdG9GdW5jTG9nMTAsIExvZzEwSW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9nMXAiX3MpLCAxLCBtYXRoUHJvdG9G
dW5jTG9nMXAsIExvZzFwSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bG9nMiJfcyksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBMb2cySW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4Il9zKSwgMiwgbWF0aFByb3RvRnVuY01heCwgTWF4SW50
cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluIl9zKSwgMiwgbWF0aFBy
b3RvRnVuY01pbiwgTWluSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cG93Il9zKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicmFuZG9tIl9zKSwgMCwgbWF0aFByb3RvRnVuY1JhbmRvbSwgUmFu
ZG9tSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicm91bmQiX3MpLCAx
LCBtYXRoUHJvdG9GdW5jUm91bmQsIFJvdW5kSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAic2lnbiJfcyksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0ludHJpbnNpYywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpbiJfcyksIDEsIG1hdGhQcm90b0Z1bmNT
aW4sIFNpbkludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpbmgiX3Mp
LCAxLCBtYXRoUHJvdG9GdW5jU2luaCwgU2luaEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInNxcnQiX3MpLCAxLCBtYXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJpbnNp
Yywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRhbiJfcyksIDEsIG1hdGhQcm90b0Z1
bmNUYW4sIFRhbkludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRhbmgi
X3MpLCAxLCBtYXRoUHJvdG9GdW5jVGFuaCwgVGFuaEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInRydW5jIl9zKSwgMSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVuY0lu
dHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImltdWwiX3MpLCAyLCBtYXRo
UHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggZDJhMDUwNWZkNzI0MWYxN2U2M2M5MzBhMGNiMDc4NjYzN2MwMGY2OS4uMzY4YTQwODdi
M2Q4MzFlMzFjOWJmZjlkOGM3NzQ1Y2YxM2VkNDE4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNjYsMTkgKzY2LDE5
IEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTnVtYmVy
UHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJQcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiRVBTSUxPTiIpLCBqc0Rv
dWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1BWF9WQUxVRSIpLCBqc0RvdWJs
ZU51bWJlcigxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIk1JTl9WQUxVRSIpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJNQVhfU0FGRV9JTlRFR0VS
IiksIGpzRG91YmxlTnVtYmVyKG1heFNhZmVJbnRlZ2VyKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJNSU5fU0FGRV9JTlRFR0VSIiksIGpzRG91YmxlTnVtYmVy
KG1pblNhZmVJbnRlZ2VyKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJORUdBVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiUE9TSVRJVkVfSU5GSU5JVFkiKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiRVBTSUxPTiJfcyksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiTUFYX1ZBTFVFIl9zKSwganNEb3VibGVOdW1iZXIoMS43OTc2OTMxMzQ4
NjIzMTU3RSszMDgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJN
SU5fVkFMVUUiX3MpLCBqc0RvdWJsZU51bWJlcig1RS0zMjQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJNQVhfU0FGRV9JTlRFR0VSIl9zKSwganNEb3VibGVOdW1i
ZXIobWF4U2FmZUludGVnZXIoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIk1JTl9TQUZFX0lOVEVHRVIiX3MpLCBqc0RvdWJsZU51bWJlcihtaW5TYWZlSW50ZWdl
cigpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTkVHQVRJVkVf
SU5GSU5JVFkiX3MpLCBqc0RvdWJsZU51bWJlcigtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
UE9TSVRJVkVfSU5GSU5JVFkiX3MpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk5h
TiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBhcnNlSW50LCBu
dW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSktPnBhcnNlSW50RnVuY3Rpb24oKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wYXJzZUZsb2F0
LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSktPnBhcnNlRmxvYXRGdW5jdGlvbigp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
LSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlzSW50ZWdlciIpLCBudW1iZXJDb25zdHJ1Y3RvckZ1
bmNJc0ludGVnZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxLCBOdW1iZXJJc0ludGVnZXJJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiaXNJbnRlZ2VyIl9zKSwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgTnVtYmVy
SXNJbnRlZ2VySW50cmluc2ljKTsKIH0KIAogLy8gRUNNQSAxNS43LjEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDI0ZjFlMTY1
MzkzMjhkOGY5YTg5MmJkZDYwOTU0ZmY1MTQwZmFmY2IuLjQ1MGY4ZmE2YzE1MWZhYjg3M2E2ODY4
YzRkM2YyNmNlNjQzNzc1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTU2LDEwICsxNTYsMTAgQEAgdm9pZCBTdHJpbmdQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHRyaW1TdGFydEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJ0cmltU3RhcnQiX3MsIHN0cmluZ1Byb3RvRnVu
Y1RyaW1TdGFydCwgTm9JbnRyaW5zaWMpOwogICAgIEpTRnVuY3Rpb24qIHRyaW1FbmRGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAidHJpbUVuZCJfcywg
c3RyaW5nUHJvdG9GdW5jVHJpbUVuZCwgTm9JbnRyaW5zaWMpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHJpbVN0YXJ0Iiks
IHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltTGVmdCIpLCB0cmltU3RhcnRGdW5jdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dHJpbUVuZCIpLCB0cmltRW5kRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRyaW1SaWdodCIpLCB0cmltRW5kRnVuY3Rp
b24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInRyaW1TdGFydCJfcyksIHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltTGVmdCJfcyks
IHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltRW5kIl9zKSwgdHJpbUVuZEZ1bmN0aW9uLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0
cmltUmlnaHQiX3MpLCB0cmltRW5kRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgIltTeW1ib2wu
aXRlcmF0b3JdIl9zLCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvciwgTm9JbnRyaW5zaWMpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgaXRlcmF0b3JGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4IDA2YmY5ZDRhNjViNWU1NGFlOTNhNWFk
YzZhZWVhYWMxMmEyMWRmZGQuLjI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4OTQ4NjIy
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU3ltYm9sQ29uc3RydWN0b3I6OlN5bWJvbENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB9CiAKICNkZWZpbmUgSU5J
VElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTFMobmFtZSkgXAotcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSwgU3ltYm9sOjpjcmVh
dGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqdm0ucHJvcGVydHlOYW1lcy0+bmFtZSMj
U3ltYm9sLmltcGwoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CitwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25h
bWUgIiJfcyksIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKnZt
LnByb3BlcnR5TmFtZXMtPm5hbWUjI1N5bWJvbC5pbXBsKCkpKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogCiB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGQxOWIwMTc3OWU4MGMwYjhlMjlhMTQz
NTEyZjJhYTc0NjY5ZGZlOGMuLjVjYjUwNDA5M2NiYTJiMjMxMjNkN2E0MWExMmExMmYzMDRlOWE3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTUy
NywxMiArNTI3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBD
dXN0b21HZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyKj4ob2JqZWN0KTsK
LSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImN1c3RvbUdldHRlciIpKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1l
ID09IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0dGVy
Il9zKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3Qs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjdXN0b21HZXR0ZXJWYWx1ZUdldHRl
cik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImN1c3RvbUdldHRlckFjY2Vzc29yIikpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21HZXR0
ZXJBY2Nlc3NvciJfcykpKSB7CiAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciwgY3VzdG9tR2V0dGVyQWNlc3NvckdldHRlcik7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNTUwLDcgKzU1MCw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXR0ZXJWYWx1ZUdldHRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxDdXN0b21HZXR0ZXIqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdl
dChnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c2hvdWxkVGhyb3ciKSkpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIGJvb2wgc2hvdWxk
VGhyb3cgPSB0aGlzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInNob3VsZFRocm93Il9zKSkpLnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSk7CkBAIC01NjYsNyArNTY2LDcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGN1c3RvbUdldHRlckFjZXNzb3JHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
Ci0gICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hvdWxkVGhyb3ciKSkpLnRv
Qm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2JqZWN0
LT5nZXQoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNob3VsZFRocm93Il9zKSkpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChzaG91bGRU
aHJvdykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSk7CkBAIC03MTMsNyArNzEzLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlc3RTdGF0
aWNBY2Nlc3NvckdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUpOwogCi0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlc3RGaWVs
ZCIpKSkpCisgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0KHZt
LCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlc3RGaWVsZCJfcykp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC03MjksNyArNzI5LDcgQEAgSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHRlc3RTdGF0aWNBY2Nlc3NvclB1dHRlciwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc09iamVjdCk7CiAKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+cHV0RGlyZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInRlc3RGaWVsZCIpKSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CisgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ0ZXN0RmllbGQiX3MpKSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWNDdXN0b21BY2Nlc3NvclRh
YmxlSW5kZXhbOV0gPSB7CkBAIC04MTYsNyArODE2LDcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHRlc3RTdGF0aWNWYWx1ZVB1dHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEUKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dERpcmVj
dCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0U3RhdGlj
VmFsdWUiKSksIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworICAgIHJldHVybiB0aGlzT2JqZWN0
LT5wdXREaXJlY3Qodm0sIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dGVzdFN0YXRpY1ZhbHVlIl9zKSksIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCiBKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIodGVzdFN0YXRpY1ZhbHVlUHV0dGVyU2V0RmxhZywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC04MjksNyArODI5LDcgQEAgSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHRlc3RTdGF0aWNWYWx1ZVB1dHRlclNldEZsYWcsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0
ZXN0U3RhdGljVmFsdWVTZXR0ZXJDYWxsZWQiKSksIGpzQm9vbGVhbih0cnVlKSk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0ZXN0U3RhdGljVmFsdWVTZXR0ZXJDYWxsZWQiX3MpKSwganNCb29sZWFu
KHRydWUpKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IHN0YXRp
Y0N1c3RvbVZhbHVlVGFibGVJbmRleFs4XSA9IHsKQEAgLTEwNjUsMTEgKzEwNjUsMTEgQEAgdm9p
ZCBET01KSVRHZXR0ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGNv
bnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSAmRE9NSklUR2V0dGVyRE9NSklUOwog
ICAgICAgICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIoKSwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5u
b3RhdGlvbiB7IERPTUpJVE5vZGU6OmluZm8oKSwgZG9tSklUIH0pOwotICAgICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUdl
dHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisgICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0dGVy
Il9zKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOwogICAgIH0KICAgICB7CiAgICAgICAg
IGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBkb21KSVRHZXR0ZXJDdXN0b21HZXR0ZXIsIG51bGxwdHIsIERPTUF0dHJpYnV0ZUFu
bm90YXRpb24geyBET01KSVROb2RlOjppbmZvKCksIG51bGxwdHIgfSk7Ci0gICAgICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9t
R2V0dGVyMiIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisgICAgICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0
dGVyMiJfcyksIGN1c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKICAgICB9CiB9CiAKQEAgLTEz
MTUsOCArMTMxNSw4IEBAIHZvaWQgRE9NSklUR2V0dGVyQ29tcGxleDo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gJkRP
TUpJVEdldHRlckNvbXBsZXhET01KSVQ7CiAgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0g
RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIG51
bGxwdHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBET01KSVRHZXR0ZXJDb21wbGV4OjppbmZv
KCksIGRvbUpJVCB9KTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3Nvcik7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZUV4Y2VwdGlvbiIpLCAwLCBmdW5jdGlvbkRP
TUpJVEdldHRlckNvbXBsZXhFbmFibGVFeGNlcHRpb24sIE5vSW50cmluc2ljLCAwKTsKKyAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
c3RvbUdldHRlciJfcyksIGN1c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZW5hYmxlRXhjZXB0aW9uIl9zKSwgMCwgZnVuY3Rpb25ET01KSVRHZXR0ZXJDb21wbGV4
RW5hYmxlRXhjZXB0aW9uLCBOb0ludHJpbnNpYywgMCk7CiB9CiAKIGV4dGVybiAiQyIgeyBzdGF0
aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTl9XSVRIT1VUX1dURl9JTlRFUk5BTChmdW5jdGlv
bkRPTUpJVEZ1bmN0aW9uT2JqZWN0V2l0aG91dFR5cGVDaGVjaywgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01KSVROb2RlKikpOyB9CkBAIC0xMzk3LDcg
KzEzOTcsNyBAQCB2b2lkIERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZ1bmMiKSwgMCwgZnVuY3Rpb25ET01KSVRGdW5jdGlvbk9iamVjdFdpdGhUeXBl
Q2hlY2ssIE5vSW50cmluc2ljLCAmRE9NSklURnVuY3Rpb25PYmplY3RTaWduYXR1cmUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZnVuYyJfcyksIDAsIGZ1bmN0aW9uRE9NSklURnVuY3Rpb25PYmplY3RXaXRoVHlw
ZUNoZWNrLCBOb0ludHJpbnNpYywgJkRPTUpJVEZ1bmN0aW9uT2JqZWN0U2lnbmF0dXJlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiB9CiAKIGV4
dGVybiAiQyIgeyBzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTl9XSVRIT1VUX1dURl9J
TlRFUk5BTChmdW5jdGlvbkRPTUpJVENoZWNrSlNDYXN0T2JqZWN0V2l0aG91dFR5cGVDaGVjaywg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01KSVROb2Rl
KiBub2RlKSk7IH0KQEAgLTE0NTksNyArMTQ1OSw3IEBAIHZvaWQgRE9NSklUQ2hlY2tKU0Nhc3RP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZ1bmMiKSwgMCwgZnVuY3Rpb25ET01K
SVRDaGVja0pTQ2FzdE9iamVjdFdpdGhUeXBlQ2hlY2ssIE5vSW50cmluc2ljLCAmRE9NSklUQ2hl
Y2tKU0Nhc3RPYmplY3RTaWduYXR1cmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZnVuYyJfcyksIDAsIGZ1bmN0
aW9uRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3RXaXRoVHlwZUNoZWNrLCBOb0ludHJpbnNpYywgJkRP
TUpJVENoZWNrSlNDYXN0T2JqZWN0U2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiB9CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGRvbUpJVEdldHRlckJhc2VKU09iamVjdEN1c3RvbUdldHRlcik7CkBAIC0xNTM3
LDcgKzE1MzcsNyBAQCB2b2lkIERPTUpJVEdldHRlckJhc2VKU09iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBjb25zdCBET01K
SVQ6OkdldHRlclNldHRlciogZG9tSklUID0gJkRPTUpJVEdldHRlckJhc2VKU09iamVjdERPTUpJ
VDsKICAgICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIoKSwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5u
b3RhdGlvbiB7IEpTT2JqZWN0OjppbmZvKCksIGRvbUpJVCB9KTsKLSAgICBwdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUdldHRlciIp
LCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21HZXR0ZXIiX3MpLCBjdXN0
b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihk
b21KSVRHZXR0ZXJCYXNlSlNPYmplY3RDdXN0b21HZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCkBAIC0x
NjQ0LDcgKzE2NDQsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoY3VzdG9tR2V0VmFsdWUy
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZAogICAgIFJFTEVBU0VfQVNT
RVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzPEpTVGVzdEN1c3RvbUdldHRl
clNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CiAKICAgICBhdXRvKiB0YXJnZXQgPSBqc0Nh
c3Q8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkp
OwotICAgIEpTVmFsdWUgdmFsdWUgPSB0YXJnZXQtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInZhbHVlMiIpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gdGFyZ2V0LT5n
ZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZTIiX3MpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlID8gdmFsdWUgOiBqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTY2OSw3ICsxNjY5LDcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3Rv
bVNldEFjY2Vzc29yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QKIAogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc09i
amVjdCksIHNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0Il9zKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNP
YmplY3QpLCBzbG90KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTY4NSw3ICsxNjg1LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2Vzc29yR2xvYmFsT2JqZWN0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdCh2YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBvYmpl
Y3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJlc3VsdCIpLCBnbG9iYWxPYmplY3QsIHNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0Il9zKSwgZ2xv
YmFsT2JqZWN0LCBzbG90KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTcwMyw3ICsxNzAz
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBv
YmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKSwgc2xvdCk7CisgICAgb2Jq
ZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXN1bHQiX3MpLCBKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKSwgc2xvdCk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3MjEsNyArMTcyMSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihjdXN0b21TZXRWYWx1ZUdsb2JhbE9iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Ci0gICAgb2JqZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN1bHQiKSwgZ2xvYmFsT2JqZWN0
LCBzbG90KTsKKyAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCJfcyksIGdsb2JhbE9iamVjdCwgc2xvdCk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3MzQsNyArMTczNCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihjdXN0b21TZXRWYWx1ZTIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkCiAgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5o
ZXJpdHM8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPih2bSkpOwogICAgIGF1dG8qIHRhcmdldCA9
IGpzQ2FzdDxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUoc2xvdFZh
bHVlKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGFyZ2V0KTsKLSAgICB0YXJnZXQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlMiIpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgdGFyZ2V0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZTIiX3MpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3NjAsMjIgKzE3NjAsMjIgQEAg
dm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKIAotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWUiKSwKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZhbHVlIl9zKSwKICAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZhbHVlLCBjdXN0b21T
ZXRWYWx1ZSksIDApOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWUyIiksCisgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZTIiX3MpLAog
ICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUyLCBj
dXN0b21TZXRWYWx1ZTIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbVZhbHVlKSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvciIpLAorICAgIHB1dERpcmVjdEN1c3Rv
bUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3Ii
X3MpLAogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0QWNj
ZXNzb3IsIGN1c3RvbVNldEFjY2Vzc29yKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3Qi
KSwKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImN1c3RvbVZhbHVlR2xvYmFsT2JqZWN0Il9zKSwKICAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRW
YWx1ZUdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWUpKTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0IiksCisgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCJfcyksCiAgICAgICAgIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2JhbE9iamVjdCwgY3VzdG9tU2V0QWNj
ZXNzb3JHbG9iYWxPYmplY3QpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yKSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZU5vU2V0dGVyIiksCisgICAgcHV0
RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0
b21WYWx1ZU5vU2V0dGVyIl9zKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGN1c3RvbUdldFZhbHVlLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSIp
LAorICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VzdG9tQWNjZXNzb3JSZWFkT25seSJfcyksCiAgICAgICAgIEN1c3RvbUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgbnVsbHB0ciksIFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAK
LSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImN1c3RvbUZ1bmN0aW9uIiksCisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21GdW5jdGlvbiJfcyksCiAgICAgICAgIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3VzdG9tRnVu
Y3Rpb25TZXR0ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yKSk7CiAKIH0KQEAgLTE4ODQsOCArMTg4NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qodm0pOwotICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYWRkQnl0ZXMiKSwgMCwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMsIE5v
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaW5hbGl6ZSIpLCAwLCBmdW5jdGlvbldhc21T
dHJlYW1pbmdQYXJzZXJGaW5hbGl6ZSwgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFk
ZEJ5dGVzIl9zKSwgMCwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMsIE5vSW50
cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaW5hbGl6ZSJfcyksIDAsIGZ1bmN0aW9uV2FzbVN0
cmVhbWluZ1BhcnNlckZpbmFsaXplLCBOb0ludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5G
TzsKQEAgLTE5NzMsNyArMTk3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlz
LT5nbG9iYWxPYmplY3Qodm0pOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWRkQnl0ZXMiKSwgMCwg
ZnVuY3Rpb25XYXNtU3RyZWFtaW5nQ29tcGlsZXJBZGRCeXRlcywgTm9JbnRyaW5zaWMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImFkZEJ5dGVzIl9zKSwgMCwgZnVuY3Rpb25XYXNtU3RyZWFtaW5nQ29tcGls
ZXJBZGRCeXRlcywgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVO
OwpAQCAtMzE1MSw3ICszMTUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
Q3JlYXRlQnVpbHRpbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFNvdXJjZUNv
ZGUgc291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRleHQsIHsgfSk7Ci0gICAgSlNGdW5jdGlv
biogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
dm0sIHNvdXJjZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvbyIpLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCktPmxpbmsodm0s
IG51bGxwdHIsIHNvdXJjZSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHNvdXJj
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvbyJfcyksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgbnVsbHB0
ciwgc291cmNlKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZnVuYyk7CiB9CkBAIC0zODcxLDEzICszODcxLDEzIEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3Jhc2giLCBmdW5jdGlvbkNy
YXNoLCAwKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImJyZWFrcG9pbnQiLCBmdW5jdGlvbkJyZWFr
cG9pbnQsIDApOwogCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRmZ1RydWUiKSwgMCwgZnVuY3Rpb25ERkdU
cnVlLCBERkdUcnVlSW50cmluc2ljLCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVzKTsKLSAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZnRsVHJ1ZSIpLCAwLCBmdW5jdGlvbkZUTFRydWUsIEZUTFRydWVJbnRy
aW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOworICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
ZmdUcnVlIl9zKSwgMCwgZnVuY3Rpb25ERkdUcnVlLCBERkdUcnVlSW50cmluc2ljLCBqc0RvbGxh
clZNUHJvcGVydHlBdHRyaWJ1dGVzKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZnRsVHJ1ZSJfcyksIDAs
IGZ1bmN0aW9uRlRMVHJ1ZSwgRlRMVHJ1ZUludHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0
cmlidXRlcyk7CiAKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3B1TWZlbmNlIiksIDAsIGZ1bmN0aW9uQ3B1
TWZlbmNlLCBDUFVNZmVuY2VJbnRyaW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMp
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjcHVSZHRzYyIpLCAwLCBmdW5jdGlvbkNwdVJkdHNjLCBDUFVS
ZHRzY0ludHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyk7Ci0gICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNwdUNwdWlkIiksIDAsIGZ1bmN0aW9uQ3B1Q3B1aWQsIENQVUNwdWlkSW50cmluc2lj
LCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVzKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3B1UGF1
c2UiKSwgMCwgZnVuY3Rpb25DcHVQYXVzZSwgQ1BVUGF1c2VJbnRyaW5zaWMsIGpzRG9sbGFyVk1Q
cm9wZXJ0eUF0dHJpYnV0ZXMpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcHVNZmVuY2UiX3MpLCAwLCBm
dW5jdGlvbkNwdU1mZW5jZSwgQ1BVTWZlbmNlSW50cmluc2ljLCBqc0RvbGxhclZNUHJvcGVydHlB
dHRyaWJ1dGVzKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3B1UmR0c2MiX3MpLCAwLCBmdW5jdGlvbkNw
dVJkdHNjLCBDUFVSZHRzY0ludHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyk7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNwdUNwdWlkIl9zKSwgMCwgZnVuY3Rpb25DcHVDcHVpZCwgQ1BV
Q3B1aWRJbnRyaW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjcHVQYXVzZSJfcyksIDAsIGZ1bmN0aW9uQ3B1UGF1c2UsIENQVVBhdXNlSW50cmlu
c2ljLCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVzKTsKICAgICBhZGRGdW5jdGlvbih2bSwg
ImNwdUNsZmx1c2giLCBmdW5jdGlvbkNwdUNsZmx1c2gsIDIpOwogCiAgICAgYWRkRnVuY3Rpb24o
dm0sICJsbGludFRydWUiLCBmdW5jdGlvbkxMaW50VHJ1ZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCmluZGV4IGIz
M2Q4ODUxMWUzYjFiMDhlMjI4MzFhNGYwMDIyYjdhMTUzYmUyOTUuLmI4NTJiNzFjY2JmZGY1ZGVm
YmVjYjFlZjJhYmZlMDYwMzRkOTU3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIEpT
T2JqZWN0KiBKU1dlYkFzc2VtYmx5R2xvYmFsOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCAyKTsKIAotICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibXV0YWJsZSIp
LCBqc0Jvb2xlYW4obV9nbG9iYWwtPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1h
dGlvbjo6TXV0YWJsZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibXV0YWJsZSJfcyksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0YWJpbGl0
eSgpID09IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmxlKSk7CiAKICAgICBXYXNtOjpU
eXBlIHZhbHVlVHlwZSA9IG1fZ2xvYmFsLT50eXBlKCk7CiAgICAgSlNTdHJpbmcqIHZhbHVlU3Ry
aW5nID0gbnVsbHB0cjsKQEAgLTExNCw3ICsxMTQsNyBAQCBKU09iamVjdCogSlNXZWJBc3NlbWJs
eUdsb2JhbDo6dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgfQotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiKSwgdmFsdWVT
dHJpbmcpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidmFsdWUiX3MpLCB2YWx1ZVN0cmluZyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcAppbmRleCBmNGE0MDIzNjg2NzdjMDcyOThkMjdlOTU4NzQ4MDU1NThhNGYwM2MxLi5l
YjlkNjhkNTliNjUwMzY2OGZiN2Q2NjVlMGU4NGM3MWVlMTBmMjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcApAQCAt
MTQxLDEyICsxNDEsMTIgQEAgSlNPYmplY3QqIEpTV2ViQXNzZW1ibHlNZW1vcnk6OnR5cGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU09iamVjdCogcmVzdWx0OwogICAgIGlm
IChtYXhpbXVtLmlzVmFsaWQoKSkgewogICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIDMpOwot
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW0iKSwganNOdW1iZXIobWF4aW11bS5wYWdlQ291bnQoKSkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iX3Mp
LCBqc051bWJlcihtYXhpbXVtLnBhZ2VDb3VudCgpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSwgMik7CiAKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW0iKSwganNOdW1iZXIobWluaW11bS5wYWdlQ291
bnQoKSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2hhcmVkIiksIGpzQm9vbGVhbihtX21lbW9yeS0+c2hhcmluZ01vZGUoKSA9PSBXYXNt
OjpNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtIl9zKSwganNOdW1iZXIobWluaW11
bS5wYWdlQ291bnQoKSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic2hhcmVkIl9zKSwganNCb29sZWFuKG1fbWVtb3J5LT5zaGFyaW5nTW9k
ZSgpID09IFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpKTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseVRhYmxlLmNwcAppbmRleCAyMmQ1MjBkYTIwNTM4N2Y3ZGQ0NWEwMzRlY2I3MjUwMzNi
ZjdlMWYxLi5lZDA0N2E5NGNhODIxMGY1NWFmZTExMWUwZDE2NTZkOTc0YWIzMzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5j
cHAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIEpTT2JqZWN0KiBKU1dlYkFzc2VtYmx5VGFibGU6OnR5
cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBhdXRvIG1heGltdW0gPSBtX3Rh
YmxlLT5tYXhpbXVtKCk7CiAgICAgaWYgKG1heGltdW0pIHsKICAgICAgICAgcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpLCAzKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtIiksIGpzTnVtYmVyKCptYXhpbXVtKSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSJf
cyksIGpzTnVtYmVyKCptYXhpbXVtKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSwgMik7CiAKICAgICB1aW50MzJfdCBtaW5pbXVtID0gbV90YWJsZS0+bGVuZ3RoKCk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtIiksIGpzTnVtYmVyKG1pbmltdW0pKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVsZW1lbnQiKSwgZWxlbWVudFN0cmluZyk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5p
bXVtIl9zKSwganNOdW1iZXIobWluaW11bSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxlbWVudCJfcyksIGVsZW1lbnRTdHJpbmcpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NDllZThiNDYxMDcwNzNiOGFjM2VkOGU2MGNhYzUyZjZhYTFlZTNmYi4uMGVlNjg3YTNiMWNlYjFh
NWI2NDQxZGM0Mjk2YzhiNjQxNmQxMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIAogICAgIFdhc206Okds
b2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFiaWxpdHk7CiAgICAgewotICAgICAgICBJ
ZGVudGlmaWVyIG11dGFibGVJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRh
YmxlIik7CisgICAgICAgIElkZW50aWZpZXIgbXV0YWJsZUlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm11dGFibGUiX3MpOwogICAgICAgICBKU1ZhbHVlIG11dGFibGVWYWx1ZSA9
IGdsb2JhbERlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIG11dGFibGVJZGVudCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIGJvb2wgbXV0YWJsZUJvb2xlYW4gPSBtdXRhYmxlVmFsdWUudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CkBAIC04MSw3ICs4MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKICAg
ICBXYXNtOjpUeXBlIHR5cGU7CiAgICAgewotICAgICAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiKTsKKyAgICAgICAgSWRlbnRpZmll
ciB2YWx1ZUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIl9zKTsKICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZVZhbHVlID0gZ2xvYmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9i
amVjdCwgdmFsdWVJZGVudCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZVN0cmluZyA9IHZhbHVl
VmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNmU5NDdiNjRhNDEzNmQzNmE0ZDE1MzkxZmQyODE4NDAzNjhiZjRmMS4uZGUwNDJh
N2E1NDk0YmNmY2U1ODI4OWRhNGZkYWUzNjhhM2Y0YWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5jcHAKQEAgLTcxLDEwICs3MSwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29u
c3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAg
ICAgV2FzbTo6UGFnZUNvdW50IGluaXRpYWxQYWdlQ291bnQ7CiAgICAgewotICAgICAgICBJZGVu
dGlmaWVyIGluaXRpYWwgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwor
ICAgICAgICBJZGVudGlmaWVyIGluaXRpYWwgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
aW5pdGlhbCJfcyk7CiAgICAgICAgIEpTVmFsdWUgaW5pdFNpemVWYWx1ZSA9IG1lbW9yeURlc2Ny
aXB0b3ItPmdldChnbG9iYWxPYmplY3QsIGluaXRpYWwpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBJZGVudGlmaWVy
IG1pbmltdW0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bSIpOworICAgICAg
ICBJZGVudGlmaWVyIG1pbmltdW0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bSJfcyk7CiAgICAgICAgIEpTVmFsdWUgbWluU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+
Z2V0KGdsb2JhbE9iamVjdCwgbWluaW11bSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghbWluU2l6ZVZhbHVl
LmlzVW5kZWZpbmVkKCkgJiYgIWluaXRTaXplVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtOTcs
NyArOTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJs
eU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHsKICAgICAgICAgLy8gSW4g
V2ViSURMLCAicHJlc2VudCIgbWVhbnMgdGhhdCBbW0dldF1dIHJlc3VsdCBpcyB1bmRlZmluZWQs
IG5vdCBbW0hhc1Byb3BlcnR5XV0gcmVzdWx0LgogICAgICAgICAvLyBodHRwczovL3dlYmlkbC5z
cGVjLndoYXR3Zy5vcmcvI2lkbC1kaWN0aW9uYXJpZXMKLSAgICAgICAgSWRlbnRpZmllciBtYXhp
bXVtID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iKTsKKyAgICAgICAgSWRl
bnRpZmllciBtYXhpbXVtID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iX3Mp
OwogICAgICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChn
bG9iYWxPYmplY3QsIG1heGltdW0pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIW1heFNpemVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CkBAIC0xMTYsNyArMTE2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IAogICAgIFdhc206Ok1lbW9yeVNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gV2FzbTo6TWVtb3J5
U2hhcmluZ01vZGU6OkRlZmF1bHQ7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZEFycmF5QnVm
ZmVyKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBzaGFyZWRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3It
PmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaGFyZWQiKSk7
CisgICAgICAgIEpTVmFsdWUgc2hhcmVkVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hhcmVkIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIGJvb2wgc2hhcmVkID0gc2hhcmVkVmFsdWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDExYWMxNmE3MTkwNGM3NTNkOTI0
OGNhZGE5YjgzZGNjNTBkYTM1ZmIuLjAzNmQyYmVkM2FkNzllYjMwZWJiODFjYzEzNjdhNTIyMWVl
MWUyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC0xMTEsOSArMTExLDkgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIGNvbnN0IGF1dG8mIGltcG9ydHMgPSBtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0czsKICAgICBpZiAoaW1wb3J0cy5zaXplKCkp
IHsKLSAgICAgICAgSWRlbnRpZmllciBtb2R1bGUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibW9kdWxlIik7Ci0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJuYW1lIik7Ci0gICAgICAgIElkZW50aWZpZXIga2luZCA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJraW5kIik7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1vZHVsZSJfcyk7CisgICAgICAgIElkZW50aWZpZXIg
bmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKTsKKyAgICAgICAgSWRl
bnRpZmllciBraW5kID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtpbmQiX3MpOwogICAg
ICAgICBmb3IgKGNvbnN0IFdhc206OkltcG9ydCYgaW1wIDogaW1wb3J0cykgewogICAgICAgICAg
ICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CkBAIC0xNDIs
OCArMTQyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TW9kdWxlRXhw
b3J0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIGNvbnN0IGF1dG8mIGV4
cG9ydHMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0czsKICAgICBpZiAoZXhw
b3J0cy5zaXplKCkpIHsKLSAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5hbWUiKTsKLSAgICAgICAgSWRlbnRpZmllciBraW5kID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImtpbmQiKTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpOworICAgICAgICBJZGVudGlmaWVyIGtp
bmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAia2luZCJfcyk7CiAgICAgICAgIGZvciAo
Y29uc3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBvcnRzKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IuY3BwCmluZGV4IGRhYWYwZmYwMTY4ZjEzNjM4ZTA4ZTIyZTdkZmM1NjYxZjRjYmQ0NTEuLmFm
ZjFhZTk4MTYwMzBmMDdkYzQ0Yzc4MWUzN2ZlMWIwNmU3Y2JiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0
cnVjdG9yLmNwcApAQCAtNjksNyArNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29u
c3RydWN0SlNXZWJBc3NlbWJseVRhYmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAg
ICAgV2FzbTo6VGFibGVFbGVtZW50VHlwZSB0eXBlOwogICAgIHsKLSAgICAgICAgSWRlbnRpZmll
ciBlbGVtZW50SWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxlbWVudCIpOwor
ICAgICAgICBJZGVudGlmaWVyIGVsZW1lbnRJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJlbGVtZW50Il9zKTsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50VmFsdWUgPSBtZW1vcnlE
ZXNjcmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBlbGVtZW50SWRlbnQpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBT
dHJpbmcgZWxlbWVudFN0cmluZyA9IGVsZW1lbnRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOwpAQCAtODIsMTAgKzgyLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJX
ZWJBc3NlbWJseS5UYWJsZSBleHBlY3RzIGl0cyAnZWxlbWVudCcgZmllbGQgdG8gYmUgdGhlIHN0
cmluZyAnZnVuY3JlZicgb3IgJ2V4dGVybnJlZiciX3MpOwogICAgIH0KIAotICAgIElkZW50aWZp
ZXIgaW5pdGlhbElkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImluaXRpYWwiKTsK
KyAgICBJZGVudGlmaWVyIGluaXRpYWxJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJpbml0aWFsIl9zKTsKICAgICBKU1ZhbHVlIGluaXRpYWxTaXplVmFsdWUgPSBtZW1vcnlEZXNj
cmlwdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBpbml0aWFsSWRlbnQpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSWRlbnRpZmllciBt
aW5pbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bSIpOworICAg
IElkZW50aWZpZXIgbWluaW11bUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW0iX3MpOwogICAgIEpTVmFsdWUgbWluU2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+
Z2V0KGdsb2JhbE9iamVjdCwgbWluaW11bUlkZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmICghaW5pdGlhbFNpemVWYWx1
ZS5pc1VuZGVmaW5lZCgpICYmICFtaW5TaXplVmFsdWUuaXNVbmRlZmluZWQoKSkKQEAgLTEwMCw3
ICsxMDAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJs
eVRhYmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIC8vIEluIFdlYklETCwgInBy
ZXNlbnQiIG1lYW5zIHRoYXQgW1tHZXRdXSByZXN1bHQgaXMgdW5kZWZpbmVkLCBub3QgW1tIYXNQ
cm9wZXJ0eV1dIHJlc3VsdC4KICAgICAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcv
I2lkbC1kaWN0aW9uYXJpZXMKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOwot
ICAgIElkZW50aWZpZXIgbWF4aW11bUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW0iKTsKKyAgICBJZGVudGlmaWVyIG1heGltdW1JZGVudCA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtIl9zKTsKICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1l
bW9yeURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIG1heGltdW1JZGVudCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAo
IW1heFNpemVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5jcHAKaW5kZXggMjli
NWYyZGRiZDMzNDRkZWY2ZGY5N2QwYTQwOTRiNzBjZDYwZjQyZS4uYjIxMDJlZmM1MTkxOWQ4Nzdi
OWE3ZjlmOGY4ZDFlODhlNDZiMzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcApAQCAtMTEzLDcgKzEx
Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhZ1Byb3RvRnVuY1R5
cGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBKU0FycmF5KiBwYXJhbWV0ZXJz
ID0gY29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRp
b25Qcm9maWxlKj4obnVsbHB0ciksIGFyZ0xpc3QpOwogICAgIEpTT2JqZWN0KiB0eXBlID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpLCAxKTsKLSAgICB0eXBlLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJhbWV0ZXJzIiksIHBhcmFtZXRlcnMpOworICAgIHR5cGUtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmFtZXRlcnMiX3MpLCBwYXJhbWV0ZXJz
KTsKIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
eXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5LWFtcy11
aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS1hbXMtdWkvQXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCA0
YTMyMjVjZTljYTQwNmMwMGZlMTY4NDYwYTVkNmQwMzAwNDI4NTU5Li5mMTQzNTA4NzI1MDZiNzkz
MDg0YTg3OWYwNmUxOTBhNzgyOTViZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXlt
ZW50SGFuZGxlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBcHBsZVBheUFNU1VJUGF5bWVu
dEhhbmRsZXI6OmZpbmlzaFNlc3Npb24oc3RkOjpvcHRpb25hbDxib29sPiYmIHJlc3VsdCkKICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAg
ICAgYXV0byogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAic3VjY2VzcyIpLCBKU0M6OmpzQm9vbGVhbihzdWNjZXNzKSk7CisgICAgICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dWNjZXNzIl9zKSwgSlNDOjpqc0Jvb2xlYW4oc3VjY2VzcykpOwogCiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVNlc3Npb25DbGVhcktleS5jcHAKaW5kZXggY2UyMWNiODI3MGVjZmZhN2IwNWQ3NDBiOTY3
MzZkZDIzY2JmNDExNS4uYTM1ZjJhOWFmMjk0YjAzNDUzZmExNWUyYzRhNTFkYjgxNjQ3MTYyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCkBAIC0x
MDksNyArMTA5LDcgQEAgYm9vbCBDRE1TZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZShVaW50OEFycmF5
KiByYXdLZXlzRGF0YSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXgKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBrZXlzQXJyYXlWYWx1ZSA9IGFzT2JqZWN0KGtl
eXNEYXRhVmFsdWUpLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJrZXlzIikpOworICAgICAgICBhdXRvIGtleXNBcnJheVZhbHVlID0gYXNPYmpl
Y3Qoa2V5c0RhdGFWYWx1ZSktPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImtleXMiX3MpKTsKICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigp
IHx8ICFpc0pTQXJyYXkoa2V5c0FycmF5VmFsdWUpKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEs
ICJDRE1TZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZSglcCkgLSBmYWlsZWQ6IGtleXMgYXJyYXkgbWlz
c2luZyBvciBlbXB0eSIsIHRoaXMpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGZmOTM3MTBmMjA5NzQ2YmFhZWY5YTY2YzU3Y2QwMjRjMDk1M2NiMDguLjRh
NDRiNzJjZWViOGI2YzZlOWI1YjM1NjM3Nzk1ZGViNDJkODc0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8CiAgICAgaWYg
KCFwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIkNsYXNzIGRlZmluaXRpb24gcGFzc2VkIHRvIHJlZ2lzdGVyUHJvY2Vzc29yKCkgaGFz
IGludmFsaWQgcHJvdG90eXBlIl9zIH07CiAKLSAgICBhdXRvIHBhcmFtZXRlckRlc2NyaXB0b3Jz
VmFsdWUgPSBqc0NvbnN0cnVjdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJhbWV0ZXJEZXNjcmlwdG9ycyIpKTsKKyAgICBhdXRvIHBhcmFt
ZXRlckRlc2NyaXB0b3JzVmFsdWUgPSBqc0NvbnN0cnVjdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJhbWV0ZXJEZXNjcmlwdG9ycyJfcykp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7CiAKICAgICBWZWN0b3I8QXVkaW9QYXJhbURlc2NyaXB0b3I+IHBhcmFt
ZXRlckRlc2NyaXB0b3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCmluZGV4IGM4YzQ4NmE2ZTlhNmM1NDE3
MTE4NDljYzVjMzE5OTgxODZlYTBhOTguLmNlYmI0ODQzOTI5ZjEyZmM1ODZmZDVkZDM4MTUwYTlm
ZjdjOGQzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCBib29sIEF1
ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVz
Pj4mIGlucHV0cywgVmVjdAogICAgIGJ1aWxkSlNBcmd1bWVudHModm0sIGdsb2JhbE9iamVjdCwg
YXJncywgaW5wdXRzLCBvdXRwdXRzLCBwYXJhbVZhbHVlc01hcCk7CiAKICAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byByZXN1bHQgPSBKU0Nh
bGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sodm0sIHdyYXBwZXIoKSwganNVbmRlZmluZWQoKSwg
YXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicHJvY2VzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBy
ZXN1bHQgPSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sodm0sIHdyYXBwZXIoKSwganNV
bmRlZmluZWQoKSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvY2VzcyJfcyksIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZnbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCmluZGV4IGI2OWFiYTQ5OTMxZjcxYWNk
NmFiZGM4YjhlNWEyZjBmZGFmM2IwOGUuLmQwNTM1YzViNTQwZTYwZDg3MDVlMjQwMzVlNTc1YzA0
MzM4ZDVlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKQEAgLTEyOSwyNSArMTI5LDI1IEBA
IEpTVmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZShKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsCiAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9t
KCksIGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CiAgICAgYXV0byBl
bGVtZW50SW50ZXJmYWNlID0gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjcmVhdGUobmFtZSwg
Y29uc3RydWN0b3IsIGdsb2JhbE9iamVjdCgpKTsKIAotICAgIGF1dG8qIGNvbm5lY3RlZENhbGxi
YWNrID0gZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Rv
dHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbm5lY3RlZENhbGxiYWNr
IikpOworICAgIGF1dG8qIGNvbm5lY3RlZENhbGxiYWNrID0gZ2V0Q3VzdG9tRWxlbWVudENhbGxi
YWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbm5lY3RlZENhbGxiYWNrIl9zKSk7CiAgICAgaWYgKGNvbm5lY3RlZENh
bGxiYWNrKQogICAgICAgICBlbGVtZW50SW50ZXJmYWNlLT5zZXRDb25uZWN0ZWRDYWxsYmFjayhj
b25uZWN0ZWRDYWxsYmFjayk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKIAotICAgIGF1dG8qIGRpc2Nvbm5lY3RlZENhbGxiYWNrID0gZ2V0Q3VzdG9tRWxlbWVu
dENhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImRpc2Nvbm5lY3RlZENhbGxiYWNrIikpOworICAgIGF1dG8qIGRp
c2Nvbm5lY3RlZENhbGxiYWNrID0gZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRp
c2Nvbm5lY3RlZENhbGxiYWNrIl9zKSk7CiAgICAgaWYgKGRpc2Nvbm5lY3RlZENhbGxiYWNrKQog
ICAgICAgICBlbGVtZW50SW50ZXJmYWNlLT5zZXREaXNjb25uZWN0ZWRDYWxsYmFjayhkaXNjb25u
ZWN0ZWRDYWxsYmFjayk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKIAotICAgIGF1dG8qIGFkb3B0ZWRDYWxsYmFjayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJhZG9wdGVkQ2FsbGJhY2siKSk7CisgICAgYXV0byogYWRvcHRlZENhbGxiYWNr
ID0gZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3RvdHlw
ZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFkb3B0ZWRDYWxsYmFjayJfcykp
OwogICAgIGlmIChhZG9wdGVkQ2FsbGJhY2spCiAgICAgICAgIGVsZW1lbnRJbnRlcmZhY2UtPnNl
dEFkb3B0ZWRDYWxsYmFjayhhZG9wdGVkQ2FsbGJhY2spOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKLSAgICBhdXRvKiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvdG90
eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXR0cmlidXRlQ2hhbmdlZENh
bGxiYWNrIikpOworICAgIGF1dG8qIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayA9IGdldEN1c3Rv
bUVsZW1lbnRDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm90b3R5cGVPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siX3MpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgIGlmIChhdHRy
aWJ1dGVDaGFuZ2VkQ2FsbGJhY2spIHsKLSAgICAgICAgYXV0byBvYnNlcnZlZEF0dHJpYnV0ZXNW
YWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJvYnNlcnZlZEF0dHJpYnV0ZXMiKSk7CisgICAgICAgIGF1dG8gb2Jz
ZXJ2ZWRBdHRyaWJ1dGVzVmFsdWUgPSBjb25zdHJ1Y3Rvci0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib2JzZXJ2ZWRBdHRyaWJ1dGVzIl9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAg
IGlmICghb2JzZXJ2ZWRBdHRyaWJ1dGVzVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAg
ICAgYXV0byBvYnNlcnZlZEF0dHJpYnV0ZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIG9ic2VydmVkQXR0cmlidXRlc1ZhbHVlKTsKQEAg
LTE1Niw3ICsxNTYsNyBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbAogICAgICAgICB9CiAgICAg
fQogCi0gICAgYXV0byBkaXNhYmxlZEZlYXR1cmVzVmFsdWUgPSBjb25zdHJ1Y3Rvci0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlzYWJsZWRG
ZWF0dXJlcyIpKTsKKyAgICBhdXRvIGRpc2FibGVkRmVhdHVyZXNWYWx1ZSA9IGNvbnN0cnVjdG9y
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
aXNhYmxlZEZlYXR1cmVzIl9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoIWRpc2FibGVkRmVhdHVyZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgIGF1dG8gZGlzYWJsZWRGZWF0dXJlcyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGlzYWJsZWRGZWF0dXJlc1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAx
MDZmZjUyZWFmMjAwODdhZWE3Mjc4NWFjNGNjOThkMjExNzg4MTQxLi44Y2U3ODk1OWVlZDMwM2My
YmQxYWI3NjI1YjhiMTk1Y2EzMWRiNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgaW5saW5lIHZv
aWQgRGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZChET01XaW5kb3cmIGRpYWxvZykKICAgICAv
LyAgICAgICAgd29ybGQgaWYgZGlhbG9nQXJndW1lbnRzIGNvbWVzIGZyb20gYW4gaXNvbGF0ZWQg
d29ybGQuCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3cobV9m
cmFtZS5nZXQoKSwgbm9ybWFsV29ybGQodm0pKTsKICAgICBpZiAoSlNWYWx1ZSBkaWFsb2dBcmd1
bWVudHMgPSBtX2NhbGxGcmFtZS5hcmd1bWVudCgxKSkKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkaWFsb2dBcmd1bWVudHMi
KSwgZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkaWFsb2dBcmd1bWVudHMiX3MpLCBkaWFsb2dB
cmd1bWVudHMpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1
ZSgpIGNvbnN0CkBAIC00ODEsNyArNDgxLDcgQEAgaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxl
cjo6cmV0dXJuVmFsdWUoKSBjb25zdAogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSB0
b0pTRE9NV2luZG93KG1fZnJhbWUuZ2V0KCksIG5vcm1hbFdvcmxkKHZtKSk7CiAgICAgaWYgKCFn
bG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXR1cm5WYWx1ZSIp
OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJyZXR1cm5WYWx1ZSJfcyk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBpZiAoIUpTR2xvYmFs
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCAmbV9nbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIsIHNsb3QpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRPcGVuZXIoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbAogICAgIH0KIAogICAgIGJvb2wg
c2hvdWxkVGhyb3cgPSB0cnVlOwotICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCks
ICJvcGVuZXIiKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBjcmVhdGVEYXRhUHJvcGVydHko
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLCAib3BlbmVyIl9zKSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6c2VsZihKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3QKQEAgLTY1
Nyw3ICs2NTcsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRPcGVuRGF0YWJhc2UoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOgogICAgICAgICByZXR1cm47CiAK
ICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICBjcmVhdGVEYXRhUHJvcGVydHkoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCAib3BlbkRhdGFiYXNlIiksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgY3Jl
YXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgIm9wZW5EYXRhYmFzZSJfcyksIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiB9CiAKIEpTRE9NV2luZG93JiBtYWluV29ybGRHbG9iYWxPYmplY3QoRnJh
bWUmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAKaW5kZXggZTUyYjVkOWU1NDkzNmI5NDVhNDM2N2JlOGRiMzlhZDcxMmVmNDYxOC4uYzcw
Zjg0ZDI1YzU3MmFjNDQyMDgyZTNjZjg5MjgxNzBkODc3ZDMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKG1faXNBdHRyaWJ1dGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rp
b24tPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
aGFuZGxlRXZlbnQiKSk7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9u
LT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImhh
bmRsZUV2ZW50Il9zKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
IHsKICAgICAgICAgICAgIGF1dG8qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCA0M2M5ODcxZDZkMDY3ODdjOWI4
ODgyMzQwMDAxYzZjY2UwY2VmMTdmLi41NTE1MjNmMWZiOGM2ZTZiYzk2ODZmODQyMmFmOGY4Yjcx
NGM4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFD
dXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqCiAgICAg
Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvJiBkYXRhID0gaW1h
Z2VEYXRhLT5kYXRhKCk7CiAgICAgYXV0byogd3JhcHBlciA9IGNyZWF0ZVdyYXBwZXI8SW1hZ2VE
YXRhPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1hZ2VEYXRhKSk7Ci0gICAgSWRlbnRpZmllciBk
YXRhTmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkYXRhIik7CisgICAgSWRlbnRp
ZmllciBkYXRhTmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkYXRhIl9zKTsKICAg
ICB3cmFwcGVyLT5wdXREaXJlY3Qodm0sIGRhdGFOYW1lLCB0b0pTKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgZGF0YSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICAvLyBGSVhNRTogQWRvcHQgcmVwb3J0
RXh0cmFNZW1vcnlWaXNpdGVkLCBhbmQgc3dpdGNoIHRvIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1
OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwCmluZGV4IDcwMWQzOWMwOGIwYjc5Y2JhMzIyMmIzMjU3ZDU1NDkzYWI0NzE4MTguLjU5MWU4
NDk2ZTJlYjdlNmIzNTZjYWUyOGFmNjU1YTI3YjFkNDMwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMzcxLDcgKzM3MSw3
IEBAIEpTQzo6SlNPYmplY3QqIFNjcmlwdE1vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXMoSlNDOjpKU0dsb2JhbE9iamVjCiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2VVUkxGcm9tUmVxdWVzdFVSTCgqanNHbG9iYWxPYmplY3QsIG1vZHVsZUtleVZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIG1ldGFQcm9wZXJ0
aWVzLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVybCIp
LCBKU0M6OmpzU3RyaW5nKHZtLCByZXNwb25zZVVSTC5zdHJpbmcoKSkpOworICAgIG1ldGFQcm9w
ZXJ0aWVzLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVy
bCJfcyksIEpTQzo6anNTdHJpbmcodm0sIHJlc3BvbnNlVVJMLnN0cmluZygpKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4gbWV0YVByb3Bl
cnRpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGI0NWNiZDlmZTM4YWQ3NTdiNGRhNjIwNzJjN2QxN2RhMmRjNDMwZjEu
LmJjNWM2MDQxZjc0YmQ2NmYzYjBjOTgwMWM2YjJjZWFlM2E5Y2Q1YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNjY5
LDcgKzI2NjksNyBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50
CiAgICAgICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0gICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKVxuIjsKICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAgJHtrZXl9
VmFsdWUgPSBqc1VuZGVmaW5lZCgpO1xuIjsKICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5k
ZW50fSAgICBlbHNlIHtcbiI7Ci0gICAgICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0gICAg
ICAgICR7a2V5fVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtrZXl9XCIpKTtcbiI7CisgICAgICAgICAgICAkcmVz
dWx0IC49ICIke2luZGVudH0gICAgICAgICR7a2V5fVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtrZXl9XCJfcykp
O1xuIjsKICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIjsKICAgICAgICAgICAgICRyZXN1bHQgLj0g
IiR7aW5kZW50fSAgICB9XG4iOwogCkBAIC0yNzY1LDE0ICsyNzY1LDE0IEBAIHN1YiBHZW5lcmF0
ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgJHJl
c3VsdCAuPSAiJHtpbmRlbnR9ICAgIGlmICghJHtJRExUeXBlfTo6aXNOdWxsVmFsdWUoJHt2YWx1
ZUV4cHJlc3Npb259KSkge1xuIjsKICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtp
bmRlbnR9ICAgICAgICBhdXRvICR7a2V5fVZhbHVlID0gJHtjb252ZXJzaW9uRXhwcmVzc2lvbn07
XG4iOwogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTtcbiI7Ci0gICAgICAgICAgICAgICAg
ICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tleX1cIiksICR7a2V5fVZhbHVlKTtc
biI7CisgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tl
eX1cIl9zKSwgJHtrZXl9VmFsdWUpO1xuIjsKICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAu
PSAiJHtpbmRlbnR9ICAgIH1cbiI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgbXkgJGNvbnZlcnNpb25FeHByZXNzaW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNp
bmdSZWZlcmVuY2VzKCRtZW1iZXIsICR0eXBlU2NvcGUsICR2YWx1ZUV4cHJlc3Npb24sICJnbG9i
YWxPYmplY3QiKTsKIAogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0g
ICAgYXV0byAke2tleX1WYWx1ZSA9ICR7Y29udmVyc2lvbkV4cHJlc3Npb259O1xuIjsKICAgICAg
ICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTtcbiI7Ci0gICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0g
IiR7aW5kZW50fSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBcIiR7a2V5fVwiKSwgJHtrZXl9VmFsdWUpO1xuIjsKKyAgICAgICAgICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtrZXl9XCJfcyksICR7a2V5fVZhbHVlKTtc
biI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgkbmVlZHNSdW50aW1l
Q2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CkBAIC00
MTc2LDcgKzQxNzYsNyBAQCBzdWIgYWRkVW5zY29wYWJsZVByb3BlcnRpZXMKICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+Iik7CiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNPYmplY3QmIHVuc2NvcGFibGVzID0gKmNvbnN0cnVj
dEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9iYWxPYmplY3QoKS0+bnVsbFBy
b3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTtcbiIpOwogICAgIGZvcmVhY2ggbXkgJHVuc2NvcGFi
bGUgKEB1bnNjb3BhYmxlcykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bnNj
b3BhYmxlcy5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHVuc2Nv
cGFibGVcIiksIGpzQm9vbGVhbih0cnVlKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgdW5zY29wYWJsZXMucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCBcIiR1bnNjb3BhYmxlXCJfcyksIGpzQm9vbGVhbih0cnVlKSk7XG4iKTsKICAgICB9CiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnVuc2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpO1xuIik7CiB9CkBAIC00NTc5LDcgKzQ1NzksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPm5h
bWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7cnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIFwiJG5hbWVcIl9zKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
O1xuIik7CkBAIC01NDc5LDcgKzU0NzksNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJC
b2R5RGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgIyAzLjUuOS4xLiBMZXQgUSBiZSA/IEdl
dChPLCBpZCkuCiAgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJHtpZH1cIiksIHN0cmxlbihcIiR7
aWR9XCIpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBpZCA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtpZH1cIl9zKTtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVj
dC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4i
KTsKICAgICAgICAgCkBAIC01NDkxLDcgKzU0OTEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVT
ZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgIyAzLjUuOS4zLiBMZXQgZm9y
d2FyZElkIGJlIHRoZSBpZGVudGlmaWVyIGFyZ3VtZW50IG9mIHRoZSBbUHV0Rm9yd2FyZHNdIGV4
dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAgICAgbXkgJGZvcndhcmRJZCA9ICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1B1dEZvcndhcmRzfTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8gZm9yd2FyZElkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJHtmb3J3YXJkSWR9XCIpLCBzdHJsZW4oXCIk
e2ZvcndhcmRJZH1cIikpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBh
dXRvIGZvcndhcmRJZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtmb3J3YXJkSWR9
XCJfcyk7XG4iKTsKICAgICAgICAgCiAgICAgICAgICMgMy41LjkuNC4gUGVyZm9ybSA/IFNldChR
LCBmb3J3YXJkSWQsIFYsIGZhbHNlKS4KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHZhbHVlVG9Gb3J3YXJkVG8sIGZhbHNlKTtcbiIpOwpAQCAt
NTg5OCwxMiArNTg5OCwxMiBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VG9KU09OT3BlcmF0aW9uRGVm
aW5pdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byAke2F0dHJpYnV0ZU5hbWV9
VmFsdWUgPSAke3RvSlNFeHByZXNzaW9ufTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgXCIke2F0dHJpYnV0ZU5hbWV9XCIpLCAke2F0dHJpYnV0ZU5hbWV9
VmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwi
JHthdHRyaWJ1dGVOYW1lfVwiX3MpLCAke2F0dHJpYnV0ZU5hbWV9VmFsdWUpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byAke2F0dHJpYnV0ZU5hbWV9VmFsdWUgPSAke3RvSlNFeHByZXNzaW9ufTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOwot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHthdHRyaWJ1dGVOYW1lfVwi
KSwgJHthdHRyaWJ1dGVOYW1lfVZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIFwiJHthdHRyaWJ1dGVOYW1lfVwiX3MpLCAke2F0dHJpYnV0ZU5hbWV9VmFs
dWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRjb25k
aXRpb25hbCkgewpAQCAtNjYyMyw3ICs2NjIzLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0g
Im1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRp
b24pIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJGNhbGxiYWNr
VHlwZSA9ICRudW1PcGVyYXRpb25zID4gMSA/ICJPYmplY3QiIDogIkZ1bmN0aW9uT3JPYmplY3Qi
OwotICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VD
YWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBl
Ojoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtmdW5jdGlv
bk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxsYmFj
a0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIFwiJHtmdW5jdGlvbk5hbWV9XCJfcyksIHJldHVybmVkRXhjZXB0
aW9uKSI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT50eXBl
LT5uYW1lIGVxICJ1bmRlZmluZWQiKSB7CkBAIC03OTA2LDcgKzc5MDYsNyBAQCBzdWIgR2VuZXJh
dGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRp
bnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSwgIiZnbG9iYWxPYmplY3QiKTsKICAgICAg
ICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
fSkge1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBcIiRuYW1lXCJfcyk7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkU3Rhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNFeHBvc2VkU3Rhci5jcHAKaW5kZXggNDY5YTEyMWYyNDk1ZTZiNDI4YWVlZjYyMDg4YWQwNWZl
NTRjYTcwOC4uMDJhNGQ4NzA0Y2NhNzRlYzE5MDhjNjdlN2EwZTZjOGQyYmU3OWZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0
YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRTdGFyLmNwcApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgdm9pZCBKU0V4cG9zZWRTdGFyUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIiks
IHN0cmxlbigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIikpOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvcGVyYXRpb25KdXN0
Rm9yV2luZG93Q29udGV4dHMiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpLCBzdHJsZW4o
Im9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3BlcmF0aW9uSnVzdEZvcldvcmtl
ckNvbnRleHRzIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKaW5kZXggZmYxMTQ4NWM1ZTY4ZGM1N2Jh
YmYyYWVhNGM2NTY1NTkwNDMxN2FiZC4uMzg5Y2FhMTllOGVlZGYyNDRmMGJlNTM5YTMxZDc4NjJm
NzM2OTU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHRlbXBsYXRlPD4gRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjpEaWN0
IGNvbnZlcnREaWN0aW9uYXJ5PEV4cG9zZWRUb1dvcmtlckFuZFdpCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBvYmpWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIG9ialZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYmoiKSk7CisgICAgICAgIG9ialZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJvYmoiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIW9ialZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTg1LDcgKzg1
LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBpZiAoIUlETEludGVyZmFjZTxUZXN0
T2JqPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5vYmopKSB7CiAgICAgICAgIGF1dG8gb2JqVmFs
dWUgPSB0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExJbnRlcmZhY2U8VGVzdE9iaj46OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5Lm9iaikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYmoiKSwgb2JqVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib2Jq
Il9zKSwgb2JqVmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9ucy5jcHAKaW5kZXggZDY0OWYxZDMzMDJmMmE4NGYzODQwYTI2Mjg0NWI3ZjVkN2Ey
MWExYi4uMTE1YzlkMWU2ZWYyZjY3N2NkZWIxOTNjOWU2Y2FlMjVlMDdmYTMxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0yODAsMTQgKzI4MCwxNCBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNfc3RyaW5naWZpZXJBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9i
YWxPYmplYwogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigic3RyaW5naWZpZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJzdHJpbmdpZmllckF0
dHJpYnV0ZSIpKTsKKyAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ2lmaWVyQXR0cmlidXRlIl9zKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlz
T2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVUb0Zvcndh
cmRUby5pc09iamVjdCgpKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
YXV0byBmb3J3YXJkSWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oInZhbHVlIiksIHN0cmxlbigidmFsdWUiKSk7CisgICAgYXV0byBm
b3J3YXJkSWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHZhbHVlVG9Gb3J3YXJkVG8sIGZhbHNlKTsKICAgICBhc09iamVj
dCh2YWx1ZVRvRm9yd2FyZFRvKS0+bWV0aG9kVGFibGUodm0pLT5wdXQoYXNPYmplY3QodmFsdWVU
b0ZvcndhcmRUbyksICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmb3J3YXJkSWQsIHZhbHVlLCBzbG90
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKQEAgLTM4MCwx
NCArMzgwLDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc19zdHJp
bmdpZmllckF0dHJpYnV0ZU5vdE5lZWRlZFNldHRlcihKU0dsCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzdHJpbmdpZmllckF0dHJp
YnV0ZU5vdE5lZWRlZCIpLCBzdHJsZW4oInN0cmluZ2lmaWVyQXR0cmlidXRlTm90TmVlZGVkIikp
OworICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5naWZpZXJB
dHRyaWJ1dGVOb3ROZWVkZWQiX3MpOwogICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRoaXNP
YmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZVRvRm9yd2Fy
ZFRvLmlzT2JqZWN0KCkpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBh
dXRvIGZvcndhcmRJZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigidmFsdWVXaXRob3V0UmVhY3Rpb25zIiksIHN0cmxlbigidmFsdWVX
aXRob3V0UmVhY3Rpb25zIikpOworICAgIGF1dG8gZm9yd2FyZElkID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInZhbHVlV2l0aG91dFJlYWN0aW9ucyJfcyk7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodmFsdWVUb0ZvcndhcmRUbywgZmFsc2UpOwogICAgIGFzT2JqZWN0KHZhbHVlVG9G
b3J3YXJkVG8pLT5tZXRob2RUYWJsZSh2bSktPnB1dChhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRv
KSwgJmxleGljYWxHbG9iYWxPYmplY3QsIGZvcndhcmRJZCwgdmFsdWUsIHNsb3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0ludGVyZmFjZS5jcHAKaW5kZXggNDhiNGMyZjc4MTdhNzQ3M2MwY2EzNTU0YWQ2YzQ4ZWY4
ZjZmMjNlYi4uZTk5MTRjN2FkZmI5NzYxYTQ1YzRiNzVmNmNhOWRjMmY5ZDg5OTE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHRlbXBs
YXRlPD4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RDYWxsYmFja0ludGVyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBv
cHRpb25hbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
b3B0aW9uYWxNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3B0aW9uYWxNZW1iZXIiKSk7CisgICAgICAgIG9w
dGlvbmFsTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9wdGlvbmFsTWVtYmVyIl9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFvcHRp
b25hbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwNyw3ICsxMDcsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0Q2FsbGJhY2tJbnRlcgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
cmVxdWlyZWRNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHJlcXVpcmVkTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkTWVtYmVyIikpOworICAgICAgICBy
ZXF1aXJlZE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZE1lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVx
dWlyZWRNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpT
VGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsK
IAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aE5vUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoTm9QYXJh
bSJfcyksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsK
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4
Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRo
cm93bjsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRl
ZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIl9zKSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRp
b24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0
dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjQ4LDcgKzI0OCw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25U
eXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSIpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBK
U0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSJfcyksIHJldHVy
bmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAg
ICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTI3
NSw3ICsyNzUsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxl
bWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3RyaW5nTGlzdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0Il9zKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxH
bG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNr
UmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMzAyLDcgKzMwMiw3IEBAIENhbGxiYWNr
UmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RD
YWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRh
LT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dp
dGhCb29sZWFuIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEJvb2xlYW4iX3Mp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkBAIC0zMzAsNyArMzMwLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVk
OjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQo
IWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBy
ZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFs
dWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzIiksIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzIl9zKSwgcmV0dXJuZWRFeGNl
cHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNl
cHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAg
cmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRp
b25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJm
bG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNW
YWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2
bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUiX3Mp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkBAIC0zODYsNyArMzg2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5n
OjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQo
IWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBy
ZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxs
YmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1RoYXRSZXRocm93c0V4
Y2VwdGlvbnMiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNr
VGhhdFJldGhyb3dzRXhjZXB0aW9ucyJfcyksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBAIC00MTcsNyArNDE3LDcgQEAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+
IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAg
ICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0Il9zKSwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRF
eGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCmluZGV4IGRhYjVjZTIxMjllYjJjZjhkMDdm
YTQ1OTBlZTIzMmUzOWM5NTlkODkuLmMxZmNhYmZhMjYyNTJjNjFkOWMxMzk3NWE2MmM1MTJjOTdj
OTc1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKQEAgLTE5
Niw3ICsxOTYsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTQogICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6aW5mbygpLCBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0gICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJNSVhJTl9DT05TVEFOVCIpLCBzdHJsZW4oIk1JWElOX0NPTlNUQU5U
IikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJNSVhJTl9DT05TVEFOVCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpA
QCAtMjA0LDcgKzIwNCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIiksIHN0cmxlbigi
TUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiX3Mp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTIxMiw3ICsyMTIsNyBAQCB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
Z2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygp
LnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlBB
UlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiksIHN0cmxlbigiUEFSVElBTF9NSVhJ
Tl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9Q
QVJUSUFMIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMTMsNyArMzEz
LDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlv
bjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRp
bmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1p
eGluT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5PcGVyYXRpb24iKSk7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGluT3BlcmF0aW9u
Il9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzIyLDcgKzMyMiw3IEBA
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1Zh
bHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkNv
bXBsZXhPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkNvbXBsZXhPcGVyYXRpb24iKSk7CisgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGlu
Q29tcGxleE9wZXJhdGlvbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
ICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAg
LTMzMSw3ICszMzEsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigibWl4aW5DdXN0b21PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkN1c3RvbU9wZXJh
dGlvbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWl4aW5DdXN0b21PcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgKEVOQUJMRShDb25kaXRp
b24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMo
KS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Db25kaXRp
b25hbE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iKSk7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
eGluQ29uZGl0aW9uYWxPcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikg
JiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICgh
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCAmJiBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpLCBzdHJsZW4o
Im1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpKTsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5TZXR0aW5nc0NvbmRp
dGlvbmFsT3BlcmF0aW9uIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwog
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAt
MzU4LDcgKzM1OCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5SZXN1bHRG
aWVsZE9wZXJhdGlvbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiAo
RU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25k
aXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIpLCBzdHJsZW4oInBhcnRpYWxNaXhp
bk9wZXJhdGlvbkZyb21QYXJ0aWFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlh
bCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM3Niw3ICszNzYsNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
ICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJs
ZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiksIHN0cmxl
bigibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSJfcyk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluQXR0cmli
dXRlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaXhpbkF0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVl
cygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkN1c3Rv
bUF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluQ3VzdG9tQXR0cmlidXRlIikpOworICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaXhpbkN1c3Rv
bUF0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTQwMyw3
ICs0MDMsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0
aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbk5vZGVBdHRyaWJ1dGUiKSwg
c3RybGVuKCJtaXhpbk5vZGVBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGluTm9kZUF0dHJpYnV0ZSJfcyk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJs
ZW4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIikpOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5BdHRy
aWJ1dGVGcm9tUGFydGlhbCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
ICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRl
c3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJNSVhJTl9DT05TVEFOVCIp
LCBzdHJsZW4oIk1JWElOX0NPTlNUQU5UIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJNSVhJTl9DT05TVEFOVCJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiKSwgc3RybGVuKCJNSVhJTl9SRUZM
RUNURURfQ09OU1RBTlQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCIpLCBzdHJsZW4o
IlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIikpOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJQQVJUSUFMX01JWElOX0NP
TlNUQU5UX0ZST01fUEFSVElBTCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAppbmRleCBkYTYx
ZDY5MzY3OTM5Nzg0MWEwMzA1MmQxMjRkZTExMTUyNzA4MjYwLi43ODE0MmJmNzYyNjkxNmNiZWIw
YzY3MjU5OGVhMWI1MTY2OWNlZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGUuY3BwCkBAIC0xOTAsMjggKzE5MCwyOCBAQCB2b2lkIEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBib29s
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKICAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0
ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIikpOwor
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
dW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlIiksIHN0
cmxlbigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlIikpOwor
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
dW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiX3MpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1l
bnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJzZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1
dGUiKSwgc3RybGVuKCJzZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4o
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCkgewogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVBy
b21pc2UiKSwgc3RybGVuKCJzZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm9taXNlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNl
Il9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT04uY3BwCmluZGV4IDNkM2M0M2M4NTg5NjBjOWQ3ZmY4NDJjOTRjY2RhZjI2ZDVjYjZiM2Uu
LmZkYzk0YTg1NzNiNDhhYmMyMWZkMGRjZjk3Y2YzMjI2YTA5OWU4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTi5jcHAKQEAgLTE5OSwxNCArMTk5LDE0IEBAIHZvaWQgSlNUZXN0RGVmYXVs
dFRvSlNPTlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGJvb2wgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0UnVudGltZUVuYWJsZWRFbmFibGVkKCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJsb25nQXR0cmlidXRlIiksIHN0cmxlbigibG9uZ0F0dHJpYnV0
ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibG9uZ0F0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGlu
Z0VuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0
ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIikpOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlTZXR0
aW5nc0F0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTc0
NCw1NSArNzQ0LDU1IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVs
dFRvSlNPTlByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkoSlNHCiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdFJ1bnRpbWVFbmFibGVkRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGF1dG8gbG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9uZ0F0dHJp
YnV0ZSIpLCBsb25nQXR0cmlidXRlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvbmdBdHRyaWJ1dGUiX3MpLCBsb25nQXR0
cmlidXRlVmFsdWUpOwogICAgIH0KICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGF1dG8gZW5hYmxl
ZEJ5U2V0dGluZ3NBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRTaG9ydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1
dGUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJl
bmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSIpLCBlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZVZh
bHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSJfcyksIGVuYWJsZWRCeVNldHRpbmdz
QXR0cmlidXRlVmFsdWUpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAg
ICBhdXRvIGVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETEVudW1l
cmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmli
dXRlIiksIGVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5Q29uZGl0
aW9uYWxBdHRyaWJ1dGUiX3MpLCBlbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZVZhbHVlKTsK
ICNlbmRpZgogCiAgICAgYXV0byBmaXJzdFN0cmluZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpcnN0U3Ry
aW5nQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImZpcnN0U3RyaW5nQXR0cmlidXRlIiksIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3RT
dHJpbmdBdHRyaWJ1dGUiX3MpLCBmaXJzdFN0cmluZ0F0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRv
IHNlY29uZExvbmdBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuc2Vjb25kTG9uZ0F0dHJpYnV0ZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZWNvbmRMb25nQXR0cmlidXRlIiksIHNl
Y29uZExvbmdBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZWNvbmRMb25nQXR0cmlidXRlIl9zKSwgc2Vjb25kTG9u
Z0F0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIGZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJp
YnV0ZVZhbHVlID0gdG9KUzxJRExVbnJlc3RyaWN0ZWREb3VibGU+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb3VydGhVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyaWJ1dGUiKSwgZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRl
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlIl9zKSwgZm91cnRoVW5yZXN0
cmljdGVkRG91YmxlQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gZmlmdGhMb25nQ2xhbXBlZEF0
dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlmdGhMb25nQ2xhbXBl
ZEF0dHJpYnV0ZSIpLCBmaWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlmdGhMb25nQ2xh
bXBlZEF0dHJpYnV0ZSJfcyksIGZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
YXV0byBzaXh0aFR5cGVkZWZBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRG91YmxlPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaXh0aFR5cGVkZWZBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2l4dGhUeXBlZGVmQXR0
cmlidXRlIiksIHNpeHRoVHlwZWRlZkF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpeHRoVHlwZWRlZkF0dHJpYnV0
ZSJfcyksIHNpeHRoVHlwZWRlZkF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHNldmVudGhEaXJl
Y3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zZXZlbnRoRGlyZWN0bHlUb0pTT05h
YmxlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUiKSwgc2V2ZW50aERpcmVjdGx5VG9K
U09OYWJsZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUi
X3MpLCBzZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8g
ZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5laWdodGhJbmRpcmVj
dGx5QXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUiKSwgZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUiX3MpLCBlaWdodGhJbmRpcmVjdGx5QXR0cmli
dXRlVmFsdWUpOwogICAgIGF1dG8gbmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJp
YnV0ZVZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWw+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5uaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05h
YmxlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUiKSwgbmludGhPcHRpb25h
bERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVRv
SlNPTmFibGVBdHRyaWJ1dGUiX3MpLCBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0
cmlidXRlVmFsdWUpOwogICAgIGF1dG8gdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlID0g
dG9KUzxJRExGcm96ZW5BcnJheTxJRExCb29sZWFuPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZW50aEZyb3plbkFy
cmF5QXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUiKSwgdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUiX3MpLCB0ZW50aEZyb3plbkFycmF5QXR0cmli
dXRlVmFsdWUpOwogICAgIGF1dG8gZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlID0gdG9K
UzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmVsZXZlbnRoU2VxdWVuY2VB
dHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxl
dmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIpLCBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlVmFsdWUp
OworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSJfcyksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVW
YWx1ZSk7CiAgICAgYXV0byB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSA9
IHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwudHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR3ZWxmdGhJbnRlcmZhY2VT
ZXF1ZW5jZUF0dHJpYnV0ZSIpLCB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVWYWx1
ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiX3MpLCB0d2VsZnRoSW50ZXJmYWNl
U2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byB0aGlydGVlbnRoUmVjb3JkQXR0cmli
dXRlVmFsdWUgPSB0b0pTPElETFJlY29yZDxJRExET01TdHJpbmcsIElETFVuc2lnbmVkU2hvcnQ+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLnRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSIpLCB0
aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSJf
cyksIHRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCmluZGV4IGNkMzY3NWM2Yzc5YjE5NzM0ZTlmOGZh
OTMwMDQyYmZhZGFhODMyZjQuLmNiN2U0NDFhZGRkZjcwNDlhYTI3YzgwNzg0NmE3MzEwYWU4YjFm
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQuY3BwCkBAIC0xMzIsMTQgKzEzMiwxNCBAQCB2b2lkIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
IGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZpbHRlcmVkQnlF
eHBvc2VkV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dB
dHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlIl9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmaWx0ZXJlZEJ5RXhw
b3NlZFdvcmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0
cmlidXRlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI0NCwxNiArMjQ0LDE2IEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJv
dG90eXBlRnVuY3RpCiAgICAgYXV0byogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3Rv
dHlwZSgpKTsKICAgICBhdXRvIG5vcm1hbEF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3JtYWxBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm9ybWFsQXR0cmlidXRl
IiksIG5vcm1hbEF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vcm1hbEF0dHJpYnV0ZSJfcyksIG5vcm1hbEF0dHJp
YnV0ZVZhbHVlKTsKICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQo
KSkgewogICAgICAgICBhdXRvIGZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlVmFsdWUg
PSB0b0pTPElETERvdWJsZT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
ZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJp
YnV0ZSIpLCBmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWx0ZXJl
ZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSJfcyksIGZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0
cmlidXRlVmFsdWUpOwogICAgIH0KICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBhdXRvIGZpbHRlcmVkQnlFeHBvc2VkV29y
a2VyQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUoKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWx0ZXJl
ZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIpLCBmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJp
YnV0ZVZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSJfcyksIGZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlVmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0LmNwcAppbmRleCAzNDk0NjU4ODY1ZDQxMzRhNjVkYTBkZGY1ZTNlYjdmYTUwNDAxNjlh
Li5iZTJmZDIxMDRhZGY1MDk0NjcyZjI5YmM1ODliNjYxMmFmMWEyMzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKQEAgLTIyNSw1OCArMjI1LDU4IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90
b3R5cGVGdW5jdGlvbl90b0pTT05CCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkudGVzdFJ1bnRpbWVFbmFibGVkRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1
dG8gbG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9uZ0F0dHJpYnV0ZSIpLCBsb25nQXR0cmli
dXRlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImxvbmdBdHRyaWJ1dGUiX3MpLCBsb25nQXR0cmlidXRlVmFsdWUpOwogICAg
IH0KICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVz
dFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGF1dG8gZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1
dGVWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRTaG9ydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUoKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlTZXR0aW5nc0F0
dHJpYnV0ZSIpLCBlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlT
ZXR0aW5nc0F0dHJpYnV0ZSJfcyksIGVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlVmFsdWUpOwog
ICAgIH0KICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICBhdXRvIGVuYWJsZWRCeUNv
bmRpdGlvbmFsQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETEVudW1lcmF0aW9uPFRlc3REZWZhdWx0
VG9KU09ORW51bT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmVuYWJs
ZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlIiksIGVuYWJsZWRCeUNv
bmRpdGlvbmFsQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGUiX3Mp
LCBlbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZVZhbHVlKTsKICNlbmRpZgogCiAgICAgYXV0
byBmaXJzdFN0cmluZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpcnN0U3RyaW5nQXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpcnN0U3RyaW5nQXR0cmli
dXRlIiksIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3RTdHJpbmdBdHRyaWJ1dGUiX3Mp
LCBmaXJzdFN0cmluZ0F0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHNlY29uZExvbmdBdHRyaWJ1
dGVWYWx1ZSA9IHRvSlM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuc2Vjb25kTG9uZ0F0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzZWNvbmRMb25nQXR0cmlidXRlIiksIHNlY29uZExvbmdBdHRyaWJ1dGVW
YWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJzZWNvbmRMb25nQXR0cmlidXRlIl9zKSwgc2Vjb25kTG9uZ0F0dHJpYnV0ZVZhbHVlKTsK
ICAgICBhdXRvIGZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJ
RExVbnJlc3RyaWN0ZWREb3VibGU+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1
dGUiKSwgZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm91cnRoVW5yZXN0
cmljdGVkRG91YmxlQXR0cmlidXRlIl9zKSwgZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmli
dXRlVmFsdWUpOwogICAgIGF1dG8gZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZVZhbHVlID0gdG9K
UzxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZSIpLCBmaWZ0
aExvbmdDbGFtcGVkQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZSJfcyks
IGZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBzaXh0aFR5cGVkZWZB
dHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRG91YmxlPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5zaXh0aFR5cGVkZWZBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2l4dGhUeXBlZGVmQXR0cmlidXRlIiksIHNpeHRoVHlw
ZWRlZkF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInNpeHRoVHlwZWRlZkF0dHJpYnV0ZSJfcyksIHNpeHRoVHlwZWRl
ZkF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRy
aWJ1dGVWYWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5zZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNldmVudGhEaXJlY3RseVRv
SlNPTmFibGVBdHRyaWJ1dGUiKSwgc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUiX3MpLCBzZXZlbnRoRGlyZWN0
bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gZWlnaHRoSW5kaXJlY3RseUF0
dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5laWdodGhJbmRpcmVjdGx5QXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVpZ2h0aEluZGlyZWN0bHlB
dHRyaWJ1dGUiKSwgZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVpZ2h0aEluZGlyZWN0
bHlBdHRyaWJ1dGUiX3MpLCBlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlVmFsdWUpOwogICAgIGF1
dG8gbmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJ
RExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+Pj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgaW1wbC5uaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5pbnRoT3B0aW9uYWxEaXJl
Y3RseVRvSlNPTmFibGVBdHRyaWJ1dGUiKSwgbmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJs
ZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUi
X3MpLCBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOwogICAg
IGF1dG8gdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExGcm96ZW5BcnJh
eTxJRExCb29sZWFuPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZW50aEZyb3plbkFycmF5QXR0cmlidXRlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGUiKSwgdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlbnRoRnJvemVuQXJy
YXlBdHRyaWJ1dGUiX3MpLCB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUpOwogICAgIGF1
dG8gZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLmVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxldmVudGhTZXF1ZW5jZUF0dHJp
YnV0ZSIpLCBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxldmVudGhTZXF1ZW5jZUF0
dHJpYnV0ZSJfcyksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byB0
d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMU2VxdWVuY2U8
SURMSW50ZXJmYWNlPFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwu
dHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSIp
LCB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0d2VsZnRoSW50ZXJmYWNl
U2VxdWVuY2VBdHRyaWJ1dGUiX3MpLCB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVW
YWx1ZSk7CiAgICAgYXV0byB0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlVmFsdWUgPSB0b0pTPElE
TFJlY29yZDxJRExET01TdHJpbmcsIElETFVuc2lnbmVkU2hvcnQ+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRoaXJ0
ZWVudGhSZWNvcmRBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSIpLCB0aGlydGVlbnRoUmVjb3JkQXR0
cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSJfcyksIHRoaXJ0ZWVudGhSZWNv
cmRBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBpbmhlcml0TG9uZ0F0dHJpYnV0ZVZhbHVlID0g
dG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pbmhl
cml0TG9uZ0F0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJpbmhlcml0TG9uZ0F0dHJpYnV0ZSIpLCBpbmhlcml0TG9uZ0F0dHJpYnV0ZVZhbHVlKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlu
aGVyaXRMb25nQXR0cmlidXRlIl9zKSwgaW5oZXJpdExvbmdBdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKaW5kZXggNTg0MzE3Y2Y3ZGEyNjFmNDM2
NTliZTA1Y2EyYWYyYTRiZWY5ZWIxNC4uZGZhNWVmZGUwNjlmODA4MDUzMjlmNDg0MDRhYTkwYmUx
ZjNkYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsLmNwcApAQCAtMjU5LDY0ICsyNTksNjQgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25fdG8KICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0UnVudGlt
ZUVuYWJsZWRFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBsb25nQXR0cmlidXRlVmFsdWUgPSB0
b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdB
dHRyaWJ1dGUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJsb25nQXR0cmlidXRlIiksIGxvbmdBdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9uZ0F0dHJpYnV0
ZSJfcyksIGxvbmdBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAg
ICAgYXV0byBlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExVbnNpZ25l
ZFNob3J0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlT
ZXR0aW5nc0F0dHJpYnV0ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIiksIGVuYWJsZWRCeVNldHRp
bmdzQXR0cmlidXRlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIl9zKSwgZW5h
YmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0NP
TkRJVElPTkFMKQogICAgIGF1dG8gZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSA9
IHRvSlM8SURMRW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnVtPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGUo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5Q29u
ZGl0aW9uYWxBdHRyaWJ1dGUiKSwgZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJl
bmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZSJfcyksIGVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0
cmlidXRlVmFsdWUpOwogI2VuZGlmCiAKICAgICBhdXRvIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZmlyc3RTdHJpbmdBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZmlyc3RTdHJpbmdBdHRyaWJ1dGUiKSwgZmlyc3RTdHJpbmdBdHRyaWJ1
dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJmaXJzdFN0cmluZ0F0dHJpYnV0ZSJfcyksIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFs
dWUpOwogICAgIGF1dG8gc2Vjb25kTG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zZWNvbmRMb25nQXR0cmlidXRl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlY29uZExvbmdB
dHRyaWJ1dGUiKSwgc2Vjb25kTG9uZ0F0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlY29uZExvbmdBdHRyaWJ1dGUi
X3MpLCBzZWNvbmRMb25nQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gZm91cnRoVW5yZXN0cmlj
dGVkRG91YmxlQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETFVucmVzdHJpY3RlZERvdWJsZT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZm91cnRoVW5yZXN0cmljdGVkRG91
YmxlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSIpLCBmb3VydGhVbnJlc3RyaWN0ZWRE
b3VibGVBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUiX3Mp
LCBmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBmaWZ0
aExvbmdDbGFtcGVkQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETENsYW1wQWRhcHRvcjxJRExMb25n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlmdGhMb25nQ2xhbXBl
ZEF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJm
aWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlIiksIGZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1
ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJmaWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlIl9zKSwgZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0
ZVZhbHVlKTsKICAgICBhdXRvIHNpeHRoVHlwZWRlZkF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExE
b3VibGU+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNpeHRoVHlwZWRl
ZkF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
aXh0aFR5cGVkZWZBdHRyaWJ1dGUiKSwgc2l4dGhUeXBlZGVmQXR0cmlidXRlVmFsdWUpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2l4dGhU
eXBlZGVmQXR0cmlidXRlIl9zKSwgc2l4dGhUeXBlZGVmQXR0cmlidXRlVmFsdWUpOwogICAgIGF1
dG8gc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExJbnRl
cmZhY2U8VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnNldmVudGhE
aXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSIpLCBzZXZl
bnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2V2ZW50aERpcmVjdGx5VG9KU09O
YWJsZUF0dHJpYnV0ZSJfcyksIHNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1
ZSk7CiAgICAgYXV0byBlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETElu
dGVyZmFjZTxUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LmVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSIpLCBlaWdodGhJbmRpcmVj
dGx5QXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSJfcyksIGVpZ2h0aElu
ZGlyZWN0bHlBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBuaW50aE9wdGlvbmFsRGlyZWN0bHlU
b0pTT05hYmxlQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm5pbnRoT3B0aW9uYWxE
aXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSIp
LCBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmludGhPcHRp
b25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSJfcyksIG5pbnRoT3B0aW9uYWxEaXJlY3Rs
eVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byB0ZW50aEZyb3plbkFycmF5QXR0
cmlidXRlVmFsdWUgPSB0b0pTPElETEZyb3plbkFycmF5PElETEJvb2xlYW4+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LnRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIpLCB0ZW50aEZyb3plbkFy
cmF5QXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSJfcyksIHRlbnRoRnJv
emVuQXJyYXlBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBlbGV2ZW50aFNlcXVlbmNlQXR0cmli
dXRlVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZWxl
dmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIiksIGVsZXZlbnRoU2VxdWVuY2VB
dHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIl9zKSwgZWxldmVudGhTZXF1
ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0
dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWw+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VB
dHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHdl
bGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlIiksIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5j
ZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSJfcyksIHR3
ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHRoaXJ0ZWVu
dGhSZWNvcmRBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMUmVjb3JkPElETERPTVN0cmluZywgSURM
VW5zaWduZWRTaG9ydD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlydGVlbnRoUmVjb3Jk
QXR0cmlidXRlIiksIHRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlydGVlbnRoUmVj
b3JkQXR0cmlidXRlIl9zKSwgdGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZVZhbHVlKTsKICAgICBh
dXRvIGluaGVyaXRMb25nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluaGVyaXRMb25nQXR0cmlidXRlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImluaGVyaXRMb25nQXR0cmlidXRl
IiksIGluaGVyaXRMb25nQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5oZXJpdExvbmdBdHRyaWJ1dGUiX3MpLCBp
bmhlcml0TG9uZ0F0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIGZpbmFsTG9uZ0F0dHJpYnV0ZUZv
b1ZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5maW5hbExvbmdBdHRyaWJ1dGVGb28oKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZmluYWxMb25nQXR0cmlidXRlRm9vIiksIGZpbmFsTG9uZ0F0dHJpYnV0
ZUZvb1ZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyJfcyksIGZpbmFsTG9uZ0F0dHJpYnV0ZUZv
b1ZhbHVlKTsKICAgICBhdXRvIGZpbmFsTG9uZ0F0dHJpYnV0ZUJhclZhbHVlID0gdG9KUzxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maW5hbExvbmdBdHRy
aWJ1dGVCYXIoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlu
YWxMb25nQXR0cmlidXRlQmFyIiksIGZpbmFsTG9uZ0F0dHJpYnV0ZUJhclZhbHVlKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbmFsTG9u
Z0F0dHJpYnV0ZUJhciJfcyksIGZpbmFsTG9uZ0F0dHJpYnV0ZUJhclZhbHVlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERp
Y3Rpb25hcnkuY3BwCmluZGV4IGM0MTY3ZWYzNTAzNWZmOTEzZDRiNTQxMzM0YmM5NmI4MjdjM2Mz
NmMuLjhjNTkwNDA5NDQzM2NiNzFjMzFmODBlNjg2NjJjZjA2NDkyYmJlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGlj
dGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCB0ZW1wbGF0ZTw+
IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rp
b25hcnk+KEpTR2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYm9vbE1l
bWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbE1lbWJl
clZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJib29sTWVtYmVyIikpOworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CkBAIC02MSw3ICs2MSw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNv
bnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tNZW1iZXIiKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29u
dmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0dsb2IKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5N
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRp
YWxCb29sZWFuTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtODQsNyArODQsNyBAQCB0
ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVy
aXZlZERpY3Rpb25hcnk+KEpTR2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlv
bmFsVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIikpOwor
ICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05Niw3
ICs5Niw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9u
YXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxs
YmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwNyw3ICsxMDcsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZl
ZERpY3Rpb25hcnk+KEpTR2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
cGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMjEsNyArMTIx
LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8
VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0dsb2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0
cmluZ01lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtMTMzLDcgKzEzMyw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2
ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4oSlNH
bG9iCiAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgICAgIHBhcnRpYWxT
dHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nIikpOworICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJf
cykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTQ1LDcgKzE0NSw3IEBAIHRlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGlj
dGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0
aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1w
bGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxl
bWVudGVkQXMiKSk7CisgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVu
dGVkQXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50
ZWRBc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCB0ZW1wbGF0ZTw+
IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rp
b25hcnk+KEpTR2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5n
TWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdN
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIikpOworICAgICAgICBzdHJpbmdNZW1iZXJW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzdHJpbmdNZW1iZXJWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CkBAIC0xNjcsNyArMTY3LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZl
ZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0ds
b2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGRlcml2ZWRCb29sTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBkZXJpdmVkQm9vbE1l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciIpKTsKKyAgICAgICAgZGVyaXZlZEJv
b2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWRlcml2
ZWRCb29sTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTg3LDU5ICsxODcsNTkgQEAg
SlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKICAgICAgICAgYXV0byBib29sTWVtYmVyVmFsdWUg
PSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEJv
b2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9v
bE1lbWJlciIpLCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciJfcyksIGJvb2xN
ZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKSB7CiAgICAg
ICAgIGF1dG8gY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIiksIGNh
bGxiYWNrTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiX3MpLCBjYWxsYmFja01l
bWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5
LnBhcnRpYWxCb29sZWFuTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIiksIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiX3MpLCBwYXJ0aWFs
Qm9vbGVhbk1lbWJlclZhbHVlKTsKICAgICB9CiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTUpCiAg
ICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFu
TWVtYmVyV2l0aENvbmRpdGlvbmFsKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVt
YmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShk
aWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29s
ZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIiksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwi
X3MpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlKTsKICAgICB9CiAj
ZW5kaWYKICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxDYWxsYmFja01lbWJlcikpIHsKICAgICAgICAgYXV0
byBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxDYWxsYmFja01lbWJlcikpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJh
Y2tNZW1iZXIiKSwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENh
bGxiYWNrTWVtYmVyIl9zKSwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgIH0KICAg
ICBhdXRvIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5wYXJ0aWFsUmVxdWlyZWRM
b25nTWVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0g
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcyksIHBhcnRpYWxSZXF1aXJlZExv
bmdNZW1iZXJWYWx1ZSk7CiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rp
b25hcnkucGFydGlhbFN0cmluZ01lbWJlcikpIHsKICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5n
TWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSwgcGFydGlhbFN0cmlu
Z01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpLCBwYXJ0aWFsU3Ry
aW5nTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1
ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgaWYgKCFJRExET01TdHJpbmc6Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nKSkgewogICAgICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmdWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZykpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVy
V2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVk
QnlTZXR0aW5nVmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghSURMVW5zaWduZWRM
b25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKSB7
CiAgICAgICAgIGF1dG8gcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFz
VmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMVW5zaWduZWRMb25nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRo
SW1wbGVtZW50ZWRBcyIpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXMiX3MpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7
CiAgICAgfQogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0
cmluZ01lbWJlcikpIHsKICAgICAgICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdN
ZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSwgc3Ry
aW5nTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkuZGVyaXZlZEJvb2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gZGVyaXZlZEJv
b2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
ZGVyaXZlZEJvb2xNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSwgZGVyaXZlZEJvb2xNZW1iZXJW
YWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciJfcyksIGRlcml2ZWRCb29sTWVtYmVyVmFs
dWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyLmNwcAppbmRleCBmMjdiYWNlZGI5YzAxYWUwYzgyNzdjODY2NWZiYjFmMzgz
MDBhNDA1Li45MjFjZmJmZjM2NzMyNzUxZmQ3MDk0YWQzYmNjNzZkMWYxODNjODI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcApAQCAtNTAsNyArNTAsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTIgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2
ZWREaWN0aW9uYXJ5Mj4oSlNHbAogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
Ym9vbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9v
bE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIikpOworICAgICAgICBib29sTWVtYmVyVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC02MSw3ICs2MSw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9u
YXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyPihKU0dsCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25h
cnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KEpTR2wKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ01lbWJlciIpKTsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01l
bWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfQogICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
ODMsNyArODMsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTIgY29udmVydERp
Y3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mj4oSlNHbAogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVy
aXZlZEJvb2xNZW1iZXIyIikpOworICAgICAgICBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZGVyaXZlZEJvb2xNZW1iZXIyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFkZXJpdmVkQm9vbE1lbWJlcjJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMDMsMjIgKzEwMywyMiBAQCBKU0M6OkpTT2JqZWN0KiBj
b252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSgogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5ib29s
TWVtYmVyKSkgewogICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVh
bj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xN
ZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSwgYm9vbE1lbWJlclZhbHVlKTsKICAg
ICB9CiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKICAgICAgICAgYXV0byBjYWxsYmFj
a01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1
ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcyksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAg
IH0KICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJpbmdN
ZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gc3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVy
IiksIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciJfcyksIHN0cmluZ01l
bWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LmRlcml2ZWRCb29sTWVtYmVyMikpIHsKICAgICAgICAgYXV0byBkZXJpdmVkQm9vbE1l
bWJlcjJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuZGVy
aXZlZEJvb2xNZW1iZXIyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyMiIpLCBkZXJpdmVkQm9vbE1lbWJlcjJW
YWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlcjIiX3MpLCBkZXJpdmVkQm9vbE1lbWJlcjJW
YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzgsNyArMTM4LDcgQEAg
dGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpKTsKKyAgICAgICAgYm9vbE1lbWJl
clZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFib29sTWVtYmVyVmFsdWUuaXNV
bmRlZmluZWQoKSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWRE
aWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rp
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjYWxsYmFja01lbWJlclZhbHVl
ID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTE2MCw3ICsxNjAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVk
RGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0
aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1i
ZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIikpOworICAgICAgICBw
YXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQog
ICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0x
NzIsNyArMTcyLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9u
YXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQm9vbGVhbk1l
bWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhD
b25kaXRpb25hbCIpKTsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9u
YWxWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIXBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9u
YXJ5Mjo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3RpCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxsYmFja01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIHBhcnRp
YWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE5
NSw3ICsxOTUsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25h
cnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIXBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CkBAIC0yMDksNyArMjA5LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnky
OjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbFN0cmluZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMjIxLDcgKzIyMSw3IEBAIHRl
bXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlv
bmFyeTxUZXN0RGVyaXZlZERpY3RpCiAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAg
ICAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJ0aWFsU3RyaW5n
TWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nIikpOworICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZyJfcykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMjMzLDcg
KzIzMyw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3RpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRM
b25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSk7CisgICAgICAgIHBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25n
TWVtYmVyV2l0aEltcGxlbWVudGVkQXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxVbnNpZ25lZExvbmdN
ZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTI0NCw3ICsy
NDQsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29u
dmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIikpOworICAg
ICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFz
dHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0yNTUsNyArMjU1LDcgQEAgdGVt
cGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9u
YXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAg
ICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciIpKTsK
KyAgICAgICAgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIWRlcml2ZWRCb29sTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
Mjc1LDU5ICsyNzUsNTkgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBpZiAoIUlETEJv
b2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKICAgICAgICAgYXV0
byBib29sTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LmJvb2xNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpLCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9v
bE1lbWJlciJfcyksIGJvb2xNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuY2FsbGJh
Y2tNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNh
bGxiYWNrTWVtYmVyIiksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1i
ZXIiX3MpLCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExCb29sZWFu
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSkgewogICAgICAg
ICBhdXRvIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVt
YmVyIiksIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5N
ZW1iZXIiX3MpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlKTsKICAgICB9CiAjaWYgRU5BQkxF
KENvbmRpdGlvbmFsMTUpCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9u
YXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsKSkgewogICAgICAgICBhdXRv
IHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSB0b0pTPElETEJvb2xl
YW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIiksIHBhcnRpYWxCb29s
ZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1i
ZXJXaXRoQ29uZGl0aW9uYWwiX3MpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25h
bFZhbHVlKTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNW
b2lkQ2FsbGJhY2s+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxDYWxsYmFja01lbWJl
cikpIHsKICAgICAgICAgYXV0byBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxDYWxsYmFja01l
bWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0g
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUp
OworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIl9zKSwgcGFydGlhbENhbGxiYWNrTWVtYmVy
VmFsdWUpOwogICAgIH0KICAgICBhdXRvIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9
IHRvSlM8SURMTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFy
eS5wYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSwgcGFydGlhbFJl
cXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcyks
IHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSk7CiAgICAgaWYgKCFJRExET01TdHJpbmc6
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcikpIHsKICAgICAgICAg
YXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1i
ZXIiKSwgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1i
ZXIiX3MpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgaWYg
KCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nKSkgewogICAgICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5n
TWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0
dGluZykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpLCBw
YXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7CisgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSwgcGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghSURMVW5zaWduZWRMb25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJl
cldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5zaWduZWRMb25nOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyV2l0aEltcGxlbWVudGVkQXMiX3MpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aElt
cGxlbWVudGVkQXNWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpIHsKICAgICAgICAgYXV0byBzdHJpbmdNZW1i
ZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0
cmluZ01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3Ry
aW5nTWVtYmVyIl9zKSwgc3RyaW5nTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJv
b2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuZGVyaXZlZEJvb2xNZW1iZXIpKSB7CiAgICAg
ICAgIGF1dG8gZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuZGVyaXZlZEJvb2xNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSwg
ZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciJfcyksIGRl
cml2ZWRCb29sTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERp
Y3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERpY3Rpb25hcnkuY3BwCmluZGV4IDg5NzYwMzcwNjU1ZmYzNTQyMWNiYjEzMzkxYzY5ODgw
MThjODEwYWMuLmEyNDU0MjVmYjczYmZmMGExNDg4MGY2MGNkNDUzMGQ5YWJkMWJiNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0
aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGljdGlvbmFyeS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeT4oSlNHbG9iYWxPYmplY3Qm
IGxleGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG1lbWJlclZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1l
bWJlciIpKTsKKyAgICAgICAgbWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1lbWJlciJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
bWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlv
bmFsTWVtYmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcAppbmRleCA2MDUw
OTg2ZWVlMTc3NzgzOTI3MzMwM2ZjMTYyMDJhNGRjN2UzZGU0Li5hOTA2NTA3MTdmMDNhNTczODc1
MzVkYjE4ODVjNDQ2NDhkMTZkNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1i
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcApAQCAtNDksNyArNDks
NyBAQCB0ZW1wbGF0ZTw+IFRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMg
Y29udmVydERpY3Rpb25hcnk8VGVzdERpY3RpbwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
ICAgICAgICAgY29uZGl0aW9uYWxNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGNvbmRpdGlvbmFsTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsTWVt
YmVyIikpOworICAgICAgICBjb25kaXRpb25hbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25h
bE1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghY29uZGl0aW9uYWxNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CkBAIC03MSw3ICs3MSw3IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgaWYgKCFJ
RExEaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5Pjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jb25k
aXRpb25hbE1lbWJlcikpIHsKICAgICAgICAgYXV0byBjb25kaXRpb25hbE1lbWJlclZhbHVlID0g
dG9KUzxJRExEaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExEaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5Pjo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY29uZGl0aW9uYWxNZW1iZXIpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29u
ZGl0aW9uYWxNZW1iZXIiKSwgY29uZGl0aW9uYWxNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRp
b25hbE1lbWJlciJfcyksIGNvbmRpdGlvbmFsTWVtYmVyVmFsdWUpOwogICAgIH0KICNlbmRpZgog
ICAgIFVOVVNFRF9QQVJBTShkaWN0aW9uYXJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcAppbmRleCAwNWNhMjk4YmI2NDllZTZkNTVkMDIxYjU0ZWU3NGJlN2MwMzMyOWU3Li4z
YzdkMGJmYmQ1MGNlN2RhZWFmNDczMmU5NjdmYTJmYWM3NmNhYzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHYKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CiAgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjppbmZvKCksIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewotICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50IiksIHN0
cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50IikpOworICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlTZXR0aW5nQ29uc3Rh
bnQiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTE5Myw3ICsxOTMsNyBA
QCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb24iKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0
aW5nRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1
dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlTZXR0
aW5nQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjEx
LDcgKzIxMSw3IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLm90aGVyVGVzdFNldHRpbmdFbmFibGVkKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRCeVR3b1NldHRpbmdzQXR0cmlidXRlIiksIHN0cmxlbigiZW5h
YmxlZEJ5VHdvU2V0dGluZ3NBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVR3b1NldHRpbmdzQXR0cmli
dXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjE5LDE0ICsyMTks
MTQgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAjZW5kaWYKICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMo
KS50ZXN0U2V0dGluZ0Zyb21QYXJ0aWFsSW50ZXJmYWNlQXR0cmlidXRlRW5hYmxlZCAmJiBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0Zyb21QYXJ0aWFsSW50ZXJmYWNl
RW5hYmxlZCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzdXBwbGVtZW50YWxBdHRyaWJ1dGUiKSwg
c3RybGVuKCJzdXBwbGVtZW50YWxBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN1cHBsZW1lbnRhbEF0dHJpYnV0ZSJf
cyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSwgc3RybGVuKCJlbmFibGVkQnlT
ZXR0aW5nQ29uc3RhbnQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCBkZTg3YzkxOTg1YzdjZGViMTAyOWJlMzkzNTAyMzJmOTg5ZjkwNDlmLi5lNzlhYzE3
ODIyNTU1OGEwY2YxYTlkYzI4MzhlMzI1YzRlNGIxMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlPD4gVGVzdEV2ZW50Q29u
c3RydWN0b3I6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdEV2ZW50Q29uc3RydWN0b3I6Oklu
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBidWJibGVzVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBidWJibGVzVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJ1YmJs
ZXMiKSk7CisgICAgICAgIGJ1YmJsZXNWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYnViYmxlcyJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
YnViYmxlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTc1LDcgKzc1LDcgQEAgdGVtcGxhdGU8
PiBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6SW4KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbmNl
bGFibGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbmNlbGFi
bGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY2FuY2VsYWJsZSIpKTsKKyAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjYW5jZWxhYmxlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYW5jZWxhYmxlVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtODcsNyArODcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RFdmVudENvbnN0cnVjdG9yOjpJ
bml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbgogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY29tcG9zZWRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbXBvc2VkVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBvc2VkIikpOwor
ICAgICAgICBjb21wb3NlZFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wb3NlZCJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY29tcG9z
ZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05OSw3ICs5OSw3IEBAIHRlbXBsYXRlPD4gVGVz
dEV2ZW50Q29uc3RydWN0b3I6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OkluCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhdHRyMlZhbHVl
ID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXR0cjJWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
YXR0cjIiKSk7CisgICAgICAgIGF0dHIyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImF0dHIyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFh
dHRyMlZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTExMiw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+
IFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RFdmVudENv
bnN0cnVjdG9yOjpJbgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYXR0cjNW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF0dHIzVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImF0dHIzIikpOworICAgICAgICBhdHRyM1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhdHRyMyJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlm
ICghYXR0cjNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAKaW5kZXggYzg0OTU0YThjMDY4YjQ5OTg5YTcyMWVlYjZiNDc2ZTIyNzdk
NTdhZC4uNjBlNzg5MWYxNDk3YTg5ZDYzY2I1NDgyOTJiMTRjZmJmZDNiZTg2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogICAg
IGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFTZWNyZXRBdHRyaWJ1dGUiKSk7CisgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFTZWNy
ZXRBdHRyaWJ1dGUiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJp
dGVkRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAKaW5kZXggNWJmZDdkZjMwMDA2M2EwYzFl
OWYxMWVkZmZkNWNkODU5YzAxNzZiYi4uYzBmM2U2NWNiODgzNzAyMTdkYmQyMTc4ODAwNDM4NTE2
NDZkMTRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcApAQCAt
NTAsNyArNTAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgYm9vbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIikpOworICAg
ICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xN
ZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02MSw3ICs2MSw3IEBAIHRlbXBsYXRlPD4g
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERp
Y3Rpb25hcnk+KEpTCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjYWxsYmFj
a01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FsbGJh
Y2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIGNhbGxiYWNr
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01l
bWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8PiBU
ZXN0SW5oZXJpdGVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeT4oSlMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxC
b29sZWFuTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBw
YXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciIpKTsK
KyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5N
ZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0
aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxC
b29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVt
YmVyV2l0aENvbmRpdGlvbmFsIikpOworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhD
b25kaXRpb25hbFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25h
bCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CkBAIC05Niw3ICs5Niw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpT
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxs
YmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAg
IHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
QEAgLTEwNyw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNv
bnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIikpOworICAgICAgICBw
YXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdN
ZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC0xMjEsNyArMTIxLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4oSlMKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxTdHJpbmdNZW1i
ZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbFN0
cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFw
YXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTMzLDcgKzEzMyw3
IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8
VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1Zh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJ0aWFs
U3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIikpOworICAgICAgICAgICAgcGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1i
ZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGFydGlhbFN0
cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVy
dERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVu
dGVkQXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxV
bnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5z
aWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSk7CisgICAgICAgIHBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWdu
ZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1
Niw3ICsxNTYsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIikp
OworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFzdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xNzYsNTQgKzE3Niw1
NCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSkgewogICAgICAgICBhdXRvIGJvb2xNZW1iZXJW
YWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
SURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJl
cikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJib29sTWVtYmVyIiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSwg
Ym9vbE1lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpT
Vm9pZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsK
ICAgICAgICAgYXV0byBjYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIi
KSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcyksIGNhbGxi
YWNrTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcyksIHBh
cnRpYWxCb29sZWFuTWVtYmVyVmFsdWUpOwogICAgIH0KICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwx
NSkKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbEJvb2xl
YW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRo
Q29uZGl0aW9uYWxWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRp
b25hbCJfcyksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUpOwogICAg
IH0KICNlbmRpZgogICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSkgewogICAgICAg
ICBhdXRvIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxD
YWxsYmFja01lbWJlciIpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0
aWFsQ2FsbGJhY2tNZW1iZXIiX3MpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAg
fQogICAgIGF1dG8gcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gdG9KUzxJRExMb25n
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LnBhcnRpYWxSZXF1
aXJlZExvbmdNZW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFsUmVxdWlyZWRMb25nTWVt
YmVyVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIl9zKSwgcGFydGlhbFJlcXVp
cmVkTG9uZ01lbWJlclZhbHVlKTsKICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxT
dHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpLCBwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciJfcyksIHBhcnRp
YWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5n
c1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBpZiAoIUlETERPTVN0cmlu
Zzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5h
YmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRpYWxTdHJpbmdN
ZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5n
TWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciX3MpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVu
YWJsZWRCeVNldHRpbmdWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFJRExVbnNp
Z25lZExvbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJl
cikpIHsKICAgICAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVu
dGVkQXNWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJl
cldpdGhJbXBsZW1lbnRlZEFzIiksIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBc1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBcyJfcyksIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1Zh
bHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25h
cnkuc3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHN0cmluZ01lbWJlclZhbHVlID0gdG9K
UzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETERPTVN0
cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3Mp
LCBzdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcAppbmRleCAzZTg1NDRmZmZjMDU3
ZDc1YTU1Y2ExZDYxMGExNjVlMDVjM2U5M2E3Li43ZmFjOWI0NjMxNjVmY2ExNmVlMzY0MmQzNjNh
M2RiYWQxNDMxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIg
Y29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnkyPigKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIp
KTsKKyAgICAgICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFib29sTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNTksNyArNTksNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTI+KAogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIikpOworICAgICAgICBj
YWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2Fs
bGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03MCw3ICs3MCw3IEBAIHRlbXBs
YXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5Mj4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBz
dHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0
cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSk7CisgICAgICAgIHN0cmluZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ01lbWJlclZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTkwLDE3ICs5MCwxNyBAQCBKU0M6OkpTT2JqZWN0KiBj
b252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSgogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5ib29s
TWVtYmVyKSkgewogICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVh
bj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xN
ZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSwgYm9vbE1lbWJlclZhbHVlKTsKICAg
ICB9CiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKICAgICAgICAgYXV0byBjYWxsYmFj
a01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1
ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcyksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAg
IH0KICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJpbmdN
ZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gc3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVy
IiksIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciJfcyksIHN0cmluZ01l
bWJlclZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggZGZkMWQ0ZmM3NmZkNmMzM2U0YTEzNzkyOTFlYWQ1YmY5NzQxOTRmOC4uNmY3
MmY0NDYzODRiMDdjN2EwMjU4MmRmODVkZGM2NjRmNWE1MGUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVz
dFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5TZXR0aW5nc0NvbmRp
dGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0
aW9uIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iX3MpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCmlu
ZGV4IGRlOTBlOWEwNjYyODMwZGYxY2M2MjI5MzZiNTY4MTFjMGQ3Mzg3ODUuLjBjZTJmNzA1M2Qy
ZjM0OGM1OGJlMTRmYzA2MjJlZWE0YjhjOTRmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VP
YmplY3QuY3BwCkBAIC0xMDksMjEgKzEwOSwyMSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bQog
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjppbmZv
KCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFs
dWVzKCkudGVzdFNldHRpbmcxRW5hYmxlZCkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigibmFtZXNwYWNlQXR0cmlidXRlRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJuYW1lc3BhY2VBdHRy
aWJ1dGVGcm9tUGFydGlhbCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZXNwYWNlQXR0cmlidXRlRnJvbVBhcnRpYWwiX3MpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlv
biIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdOYW1lc3BhY2VPcGVyYXRpb24iKSk7CisgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJs
ZWRCeVNldHRpbmdOYW1lc3BhY2VPcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMUVuYWJsZWQpIHsKLSAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIm5hbWVzcGFjZU9wZXJhdGlvbkZyb21QYXJ0aWFsIiksIHN0cmxl
bigibmFtZXNwYWNlT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWVzcGFjZU9wZXJhdGlvbkZy
b21QYXJ0aWFsIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAK
aW5kZXggYjkwNGRmNmIzMDc3YWIyZGRhNzdkMjlmZjQ1ZjVjZDRmZTFmNjI1Yi4uN2I2NTc1ZDc1
NTBjN2M0ZjM1ZDg0NmExMTQ0OWJlMzI0NTFiYzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTgwLDE0
ICsxODAsMTQgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAg
aWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQi
KSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0
Qm9vbGVhbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZ2V0U2VjcmV0Qm9vbGVhbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEpTVGVzdE5vZGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICgh
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJl
R2V0U2VjcmV0Qm9vbGVhbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIl9zKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjAzLDI4ICsyMDMsMjggQEAgdm9pZCBK
U1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjZW5kaWYKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JF
bmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmll
cyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZW50cmllcyJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0
ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigia2V5cyIpLCBzdHJsZW4oImtl
eXMiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImtleXMiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVy
YXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIpLCBzdHJsZW4oInZh
bHVlcyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidmFsdWVzIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwog
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9t
SXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmb3JFYWNoIiksIHN0cmxl
bigiZm9yRWFjaCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZm9yRWFjaCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvbl90b0pTT05Cb2R5KEpTR2xvYmFsT2JqZQogICAgIGF1dG8q
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgYXV0byBuYW1l
VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwubmFtZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJuYW1lIiksIG5hbWVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwgbmFtZVZhbHVlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNTk2NWM5YjY0ZWFlZmVi
Y2QxYTc2ODVmOTk0OTI2NjA3ZmFiZTRmNS4uYzIxZWYxYWQ0NmFkYTdmZDYyM2MwNDI5NjEyM2M1
NWM4NmQwMDQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4o
SlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYW5ub3RhdGVk
VHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFubm90YXRl
ZFR5cGVJblNlcXVlbmNlTWVtYmVyIikpOworICAgICAgICBhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5j
ZU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlciJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CkBAIC00ODcsNyArNDg3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZl
cnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBhbm5vdGF0ZWRUeXBlSW5Vbmlv
bk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlciIpKTsKKyAgICAg
ICAgYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW5ub3RhdGVkVHlwZUlu
VW5pb25NZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIWFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtNDk4LDcgKzQ5OCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6
RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2Jh
bE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhbnlUeXBlZGVmVmFsdWVW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFueVR5cGVkZWZWYWx1
ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJhbnlUeXBlZGVmVmFsdWUiKSk7CisgICAgICAgIGFueVR5cGVkZWZWYWx1
ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJhbnlUeXBlZGVmVmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWFueVR5cGVkZWZWYWx1
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTUxMCw3ICs1MTAsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4o
SlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYW55VmFsdWVW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFueVZhbHVlVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImFueVZhbHVlIikpOworICAgICAgICBhbnlWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbnlWYWx1
ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghYW55VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC01MjIsNyAr
NTIyLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdCIpKTsKKyAgICAgICAgYW55VmFsdWVXaXRoTnVsbERl
ZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiYW55VmFsdWVXaXRoTnVsbERlZmF1bHQiX3MpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWFu
eVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNTM0LDcgKzUz
NCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxU
ZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBib29sZWFuV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0
aERlZmF1bHQiKSk7CisgICAgICAgIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29s
ZWFuV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTU0Niw3ICs1NDYsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rp
b25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgog
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBib29sZWFuV2l0aG91
dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0IikpOworICAgICAgICBi
b29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0Il9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgaWYgKCFib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBA
IC01NTcsNyArNTU3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICBidWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJi
dWZmZXJTb3VyY2VWYWx1ZSIpKTsKKyAgICAgICAgYnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYnVmZmVyU291cmNlVmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtNTY4LDcgKzU2OCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6
RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2Jh
bE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBkaWN0aW9uYXJ5TWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBkaWN0aW9uYXJ5TWVt
YmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRpY3Rpb25hcnlNZW1iZXIiKSk7CisgICAgICAgIGRpY3Rpb25hcnlN
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZGljdGlvbmFyeU1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghZGljdGlvbmFy
eU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTU3OSw3ICs1NzksNyBAQCB0ZW1wbGF0
ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgZW51
bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVy
YXRpb25WYWx1ZVdpdGhEZWZhdWx0IikpOworICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aERl
ZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0Il9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC01
OTEsNyArNTkxLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBlbnVtZXJhdGlvblZh
bHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0
aEVtcHR5U3RyaW5nRGVmYXVsdCIpKTsKKyAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0
eVN0cmluZ0RlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmlu
Z0RlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZh
dWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNjAzLDcgKzYwMyw3IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBlbnVtZXJh
dGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVt
ZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAgIGVudW1lcmF0aW9uVmFsdWVX
aXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKQEAgLTYxNCw3ICs2MTQsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25h
cnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAg
IGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgZm9vQWxpYXNWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvb0FsaWFzVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb0FsaWFz
IikpOworICAgICAgICBmb29BbGlhc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29BbGlhcyJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
Zm9vQWxpYXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02MjYsNyArNjI2LDcgQEAgdGVtcGxh
dGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rp
b25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGZv
b1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vV2l0aERlZmF1bHRBbGlhcyIp
KTsKKyAgICAgICAgZm9vV2l0aERlZmF1bHRBbGlhc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29XaXRoRGVmYXVs
dEFsaWFzIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgaWYgKCFmb29XaXRoRGVmYXVsdEFsaWFzVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtNjM4LDcgKzYzOCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBpbnRlZ2VyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBpbnRlZ2VyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImludGVnZXIiKSk7Cisg
ICAgICAgIGludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlciJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghaW50ZWdlclZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTY0OSw3ICs2NDksNyBAQCB0ZW1wbGF0ZTw+IFRlc3RP
Ymo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNH
bG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgaW50ZWdlcldpdGhE
ZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBpbnRlZ2Vy
V2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlcldpdGhEZWZhdWx0IikpOworICAgICAgICBp
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFpbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02NjEsNyAr
NjYxLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIGxhcmdlSW50ZWdlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgbGFyZ2VJbnRlZ2VyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxhcmdlSW50ZWdlciIpKTsKKyAg
ICAgICAgbGFyZ2VJbnRlZ2VyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxhcmdlSW50ZWdlciJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
bGFyZ2VJbnRlZ2VyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNjcyLDcgKzY3Miw3IEBAIHRl
bXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpE
aWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGFyZ2VJbnRl
Z2VyV2l0aERlZmF1bHQiKSk7CisgICAgICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImxhcmdlSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFsYXJnZUludGVnZXJX
aXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTY4NCw3ICs2ODQsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
bnVsbGFibGVFbnVtVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBu
dWxsYWJsZUVudW1WYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVFbnVtIikpOworICAgICAgICBudWxsYWJs
ZUVudW1WYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVFbnVtIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFudWxsYWJsZUVudW1W
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02OTYsNyArNjk2LDcgQEAgdGVtcGxhdGU8PiBUZXN0
T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpT
R2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxlSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZUludGVnZXJX
aXRoRGVmYXVsdCIpKTsKKyAgICAgICAgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxlSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzA4LDcgKzcwOCw3IEBA
IHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2Jq
OjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBudWxsYWJsZU5vZGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIG51bGxhYmxlTm9kZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZU5vZGUiKSk7CisgICAgICAgIG51
bGxhYmxlTm9kZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZU5vZGUiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxl
Tm9kZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTcyMCw3ICs3MjAsNyBAQCB0ZW1wbGF0ZTw+
IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFy
eT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbnVsbGFi
bGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVN0cmlu
Z1dpdGhEZWZhdWx0IikpOworICAgICAgICBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm51bGxhYmxlU3RyaW5nV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxlU3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03MzIsNyArNzMyLDcgQEAg
dGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIG51bGxhYmxlVW5pb25NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIG51bGxhYmxlVW5pb25NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbk1l
bWJlciIpKTsKKyAgICAgICAgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJs
ZVVuaW9uTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFudWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgewpAQCAtNzQ0LDcgKzc0NCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXF1aXJlZEJ1ZmZlclNvdXJjZVZh
bHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZXF1aXJlZEJ1
ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWUiKSk7
CisgICAgICAgIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVxdWlyZWRC
dWZmZXJTb3VyY2VWYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZVZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RP
Ymo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNH
bG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcmVzdHJpY3RlZERv
dWJsZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdHJpY3Rl
ZERvdWJsZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRG91YmxlIikpOworICAgICAgICByZXN0cmlj
dGVkRG91YmxlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGUiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXJlc3Ry
aWN0ZWREb3VibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03NjksNyArNzY5LDcgQEAgdGVt
cGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRp
Y3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJl
c3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgcmVzdHJpY3RlZERvdWJsZVdp
dGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpA
QCAtNzgxLDcgKzc4MSw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICByZXN0cmljdGVkRmxvYXRWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlc3RyaWN0ZWRGbG9hdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0
cmljdGVkRmxvYXQiKSk7CisgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0
cmljdGVkRmxvYXQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIXJlc3RyaWN0ZWRGbG9hdFZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTc5Miw3ICs3OTIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlc3RyaWN0ZWRGbG9h
dFdpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IikpOwor
ICAgICAgICByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVk
RmxvYXRXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC04MDQsNyArODA0LDcgQEAgdGVtcGxhdGU8PiBUZXN0
T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpT
R2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHNlcXVlbmNlT2ZT
dHJpbmdzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzZXF1ZW5j
ZU9mU3RyaW5nc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyIpKTsKKyAgICAgICAgc2Vx
dWVuY2VPZlN0cmluZ3NWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2VxdWVuY2VPZlN0cmluZ3MiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IXNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtODE1LDcgKzgxNSw3
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICBzbWFsbEludGVnZXJDbGFtcGVkVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBzbWFsbEludGVnZXJDbGFtcGVkVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdl
ckNsYW1wZWQiKSk7CisgICAgICAgIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21h
bGxJbnRlZ2VyQ2xhbXBlZCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTgyNiw3ICs4MjYsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRp
Y3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxP
YgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc21hbGxJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNtYWxsSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdlcldpdGhEZWZhdWx0IikpOwor
ICAgICAgICBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbEludGVnZXJX
aXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghc21hbGxJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CkBAIC04MzcsNyArODM3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0
aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHNtYWxsVW5zaWduZWRJbnRlZ2Vy
RW5mb3JjZWRSYW5nZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
c21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWdu
ZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZSIpKTsKKyAgICAgICAgc21hbGxVbnNpZ25lZEludGVnZXJF
bmZvcmNlZFJhbmdlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5n
ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUuaXNV
bmRlZmluZWQoKSkgewpAQCAtODQ4LDcgKzg0OCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9i
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzbWFsbFVuc2lnbmVkSW50ZWdl
cldpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBz
bWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJ
bnRlZ2VyV2l0aERlZmF1bHQiKSk7CisgICAgICAgIHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKQEAgLTg2MCw3ICs4NjAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29u
dmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1Zh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nVHJlYXROdWxs
QXNFbXB0eVN0cmluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nIikp
OworICAgICAgICBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmlu
Z1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ1RyZWF0TnVsbEFzRW1w
dHlTdHJpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC04NzEsNyArODcxLDcgQEAgdGVtcGxh
dGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rp
b25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0
cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRoRGVmYXVsdCIpKTsKKyAg
ICAgICAgc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aERlZmF1bHQiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0K
ICAgICBpZiAoIXN0cmluZ1dpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtODgz
LDcgKzg4Myw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlv
bmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQogICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInN0cmluZ1dpdGhvdXREZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzdHJpbmdXaXRob3V0
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTg5NCw3ICs4OTQsNyBAQCB0ZW1wbGF0
ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5p
b25NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuaW9u
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVuaW9uTWVtYmVyIikpOworICAgICAgICB1bmlvbk1lbWJlclZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ1bmlvbk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghdW5pb25NZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CkBAIC05MDUsNyArOTA1LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0
aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVucmVzdHJpY3RlZERvdWJsZVZh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5yZXN0cmljdGVkRG91
YmxlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJsZSIpKTsKKyAgICAgICAgdW5yZXN0cmlj
dGVkRG91YmxlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJsZSJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghdW5y
ZXN0cmljdGVkRG91YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtOTE2LDcgKzkxNiw3IEBA
IHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2Jq
OjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQiKSk7CisgICAgICAgIHVucmVzdHJp
Y3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJsZVdpdGhE
ZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgaWYgKCF1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTkyOCw3ICs5MjgsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRp
Y3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxP
YgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5yZXN0cmljdGVkRmxvYXRW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZEZs
b2F0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0IikpOworICAgICAgICB1bnJlc3RyaWN0
ZWRGbG9hdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRGbG9hdCJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghdW5yZXN0
cmljdGVkRmxvYXRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MzksNyArOTM5LDcgQEAgdGVt
cGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRp
Y3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgdW5yZXN0cmljdGVkRmxv
YXRXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0Il9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgaWYgKCF1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtOTUxLDcgKzk1MSw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1bnNpZ25lZEludGVnZXJWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkSW50ZWdlclZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1bnNpZ25lZEludGVnZXIiKSk7CisgICAgICAgIHVuc2lnbmVkSW50ZWdlclZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1bnNpZ25lZEludGVnZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXVuc2lnbmVkSW50ZWdlclZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTk2Miw3ICs5NjIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rp
b25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgog
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5zaWduZWRJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVk
SW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0
IikpOworICAgICAgICB1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNp
Z25lZEludGVnZXJXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghdW5zaWduZWRJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05NzQsNyArOTc0LDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuc2ln
bmVkTGFyZ2VJbnRlZ2VyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICB1bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlciIp
KTsKKyAgICAgICAgdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRMYXJn
ZUludGVnZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIXVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpAQCAtOTg1LDcgKzk4NSw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFy
eSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhE
ZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25l
ZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2Vy
V2l0aERlZmF1bHQiKSk7CisgICAgICAgIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
dW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTEwMDYsMTgwICsxMDA2LDE4MCBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICgh
SURMU2VxdWVuY2U8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pjo6aXNOdWxsVmFsdWUoZGljdGlv
bmFyeS5hbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlcikpIHsKICAgICAgICAgYXV0byBhbm5v
dGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlID0gdG9KUzxJRExTZXF1ZW5jZTxJRExDbGFt
cEFkYXB0b3I8SURMTG9uZz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIElETFNlcXVlbmNlPElETENsYW1wQWRhcHRvcjxJRExMb25nPj46OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVy
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyIiksIGFubm90YXRlZFR5cGVJblNlcXVlbmNl
TWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXIiX3MpLCBh
bm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExV
bmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj46OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkuYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXIpKSB7CiAgICAgICAgIGF1dG8g
YW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMVW5pb248SURMRE9NU3Ry
aW5nLCBJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIElETFVuaW9uPElETERPTVN0cmluZywgSURMQ2xhbXBBZGFw
dG9yPElETExvbmc+Pjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYW5ub3Rh
dGVkVHlwZUluVW5pb25NZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXIiKSwgYW5ub3Rh
dGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1l
bWJlciJfcyksIGFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBh
dXRvIGFueVR5cGVkZWZWYWx1ZVZhbHVlID0gdG9KUzxJRExBbnk+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkuYW55VHlwZWRlZlZhbHVlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVR5cGVkZWZWYWx1ZSIpLCBhbnlU
eXBlZGVmVmFsdWVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVR5cGVkZWZWYWx1ZSJfcyksIGFueVR5cGVkZWZWYWx1
ZVZhbHVlKTsKICAgICBhdXRvIGFueVZhbHVlVmFsdWUgPSB0b0pTPElETEFueT4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5hbnlWYWx1ZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbnlWYWx1ZSIpLCBhbnlWYWx1ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiYW55VmFsdWUiX3MpLCBhbnlWYWx1ZVZhbHVlKTsKICAgICBhdXRvIGFueVZhbHVl
V2l0aE51bGxEZWZhdWx0VmFsdWUgPSB0b0pTPElETEFueT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgZGljdGlvbmFyeS5hbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbnlWYWx1ZVdpdGhOdWxsRGVm
YXVsdCIpLCBhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW55VmFsdWVXaXRoTnVs
bERlZmF1bHQiX3MpLCBhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdFZhbHVlKTsKICAgICBhdXRvIGJv
b2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmJvb2xlYW5XaXRoRGVmYXVsdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aERlZmF1bHQi
KSwgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aERlZmF1bHQiX3MpLCBi
b29sZWFuV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LmJvb2xlYW5XaXRob3V0RGVmYXVsdCkpIHsKICAgICAgICAgYXV0byBib29s
ZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkuYm9vbGVhbldpdGhvdXREZWZhdWx0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCIpLCBi
b29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQi
X3MpLCBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMVW5p
b248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj46OmlzTnVsbFZhbHVlKGRpY3Rp
b25hcnkuYnVmZmVyU291cmNlVmFsdWUpKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyU291cmNlVmFs
dWVWYWx1ZSA9IHRvSlM8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZl
cj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5p
b248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj46OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LmJ1ZmZlclNvdXJjZVZhbHVlKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJ1ZmZlclNvdXJjZVZhbHVlIiks
IGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYnVmZmVyU291cmNlVmFsdWUiX3MpLCBi
dWZmZXJTb3VyY2VWYWx1ZVZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExEaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPjo6aXNOdWxsVmFsdWUoZGlj
dGlvbmFyeS5kaWN0aW9uYXJ5TWVtYmVyKSkgewogICAgICAgICBhdXRvIGRpY3Rpb25hcnlNZW1i
ZXJWYWx1ZSA9IHRvSlM8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3Vs
ZFRvbGVyYXRlTnVsbD4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRl
TnVsbD46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmRpY3Rpb25hcnlNZW1i
ZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZGljdGlvbmFyeU1lbWJlciIpLCBkaWN0aW9uYXJ5TWVtYmVyVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlj
dGlvbmFyeU1lbWJlciJfcyksIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGF1
dG8gZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETEVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1UeXBlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGlj
dGlvbmFyeS5lbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0Iiks
IGVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdp
dGhEZWZhdWx0Il9zKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0VmFsdWUpOwogICAgIGF1
dG8gZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHRWYWx1ZSA9IHRvSlM8SURM
RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBkaWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0
aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0IiksIGVudW1lcmF0aW9uVmFsdWVXaXRoRW1w
dHlTdHJpbmdEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5n
RGVmYXVsdCJfcyksIGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0VmFsdWUp
OwogICAgIGlmICghSURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Ojppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCkpIHsKICAgICAgICAg
YXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMRW51bWVy
YXRpb248VGVzdE9iajo6RW51bVR5cGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT46OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShkaWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlv
blZhbHVlV2l0aG91dERlZmF1bHQiKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFs
dWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0Il9zKSwgZW51bWVyYXRp
b25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICBhdXRvIGZvb0FsaWFzVmFs
dWUgPSB0b0pTPElETEFueT4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlv
bmFyeS5mb28pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Zm9vQWxpYXMiKSwgZm9vQWxpYXNWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb0FsaWFzIl9zKSwgZm9vQWxpYXNWYWx1
ZSk7CiAgICAgYXV0byBmb29XaXRoRGVmYXVsdEFsaWFzVmFsdWUgPSB0b0pTPElETEFueT4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5mb29XaXRoRGVmYXVsdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29XaXRoRGVm
YXVsdEFsaWFzIiksIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb1dpdGhEZWZhdWx0
QWxpYXMiX3MpLCBmb29XaXRoRGVmYXVsdEFsaWFzVmFsdWUpOwogICAgIGlmICghSURMTG9uZzo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5pbnRlZ2VyKSkgewogICAgICAgICBhdXRvIGludGVnZXJW
YWx1ZSA9IHRvSlM8SURMTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURM
TG9uZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuaW50ZWdlcikpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2Vy
IiksIGludGVnZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2VyIl9zKSwgaW50ZWdlclZhbHVlKTsKICAg
ICB9CiAgICAgYXV0byBpbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMTG9uZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5pbnRlZ2VyV2l0aERlZmF1
bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdl
cldpdGhEZWZhdWx0IiksIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlcldpdGhE
ZWZhdWx0Il9zKSwgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMTG9uZ0xv
bmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkubGFyZ2VJbnRlZ2VyKSkgewogICAgICAgICBhdXRv
IGxhcmdlSW50ZWdlclZhbHVlID0gdG9KUzxJRExMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgSURMTG9uZ0xvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LmxhcmdlSW50ZWdlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJsYXJnZUludGVnZXIiKSwgbGFyZ2VJbnRlZ2VyVmFsdWUpOwor
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibGFyZ2VJbnRlZ2VyIl9zKSwgbGFyZ2VJbnRlZ2VyVmFsdWUpOwogICAgIH0KICAgICBh
dXRvIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETExvbmdMb25nPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmxhcmdlSW50ZWdlcldpdGhE
ZWZhdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxh
cmdlSW50ZWdlcldpdGhEZWZhdWx0IiksIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJsYXJnZUludGVnZXJXaXRoRGVmYXVsdCJfcyksIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUpOwogICAgIGF1dG8gbnVsbGFibGVFbnVtVmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETEVu
dW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGRpY3Rpb25hcnkubnVsbGFibGVFbnVtKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlRW51bSIpLCBudWxsYWJsZUVudW1WYWx1ZSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm51bGxhYmxlRW51bSJfcyksIG51bGxhYmxlRW51bVZhbHVlKTsKICAgICBhdXRvIG51bGxh
YmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETExvbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5Lm51bGxhYmxlSW50ZWdl
cldpdGhEZWZhdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0IiksIG51bGxhYmxlSW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCJfcyksIG51bGxhYmxlSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgIGF1dG8gbnVsbGFibGVOb2RlVmFsdWUgPSB0b0pT
PElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5udWxsYWJsZU5vZGUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVOb2RlIiksIG51
bGxhYmxlTm9kZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVOb2RlIl9zKSwgbnVsbGFibGVOb2RlVmFsdWUp
OwogICAgIGF1dG8gbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0
aW9uYXJ5Lm51bGxhYmxlU3RyaW5nV2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdCIpLCBudWxs
YWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0
Il9zKSwgbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBhdXRvIG51bGxhYmxl
VW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5pb248SURMTG9uZywgSURM
SW50ZXJmYWNlPE5vZGU+Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgZGljdGlvbmFyeS5udWxsYWJsZVVuaW9uTWVtYmVyKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlVW5pb25NZW1iZXIiKSwgbnVs
bGFibGVVbmlvbk1lbWJlclZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbk1lbWJlciJfcyksIG51bGxh
YmxlVW5pb25NZW1iZXJWYWx1ZSk7CiAgICAgYXV0byByZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVl
VmFsdWUgPSB0b0pTPElETFVuaW9uPElETEFycmF5QnVmZmVyVmlldywgSURMQXJyYXlCdWZmZXI+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25h
cnkucmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlIiksIHJlcXVpcmVk
QnVmZmVyU291cmNlVmFsdWVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWUiX3Mp
LCByZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUpOwogICAgIGlmICghSURMRG91YmxlOjpp
c051bGxWYWx1ZShkaWN0aW9uYXJ5LnJlc3RyaWN0ZWREb3VibGUpKSB7CiAgICAgICAgIGF1dG8g
cmVzdHJpY3RlZERvdWJsZVZhbHVlID0gdG9KUzxJRExEb3VibGU+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIElETERvdWJsZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkucmVzdHJpY3RlZERvdWJsZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRG91YmxlIiksIHJlc3RyaWN0ZWREb3Vi
bGVWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRG91YmxlIl9zKSwgcmVzdHJpY3RlZERvdWJsZVZh
bHVlKTsKICAgICB9CiAgICAgYXV0byByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSA9
IHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9u
YXJ5LnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQiKSwgcmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRG91YmxlV2l0aERl
ZmF1bHQiX3MpLCByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJ
RExGbG9hdDo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5yZXN0cmljdGVkRmxvYXQpKSB7CiAgICAg
ICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSB0b0pTPElETEZsb2F0PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExGbG9hdDo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucmVzdHJpY3RlZEZsb2F0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWRGbG9hdCIpLCByZXN0cmljdGVk
RmxvYXRWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRmxvYXQiX3MpLCByZXN0cmljdGVkRmxvYXRW
YWx1ZSk7CiAgICAgfQogICAgIGF1dG8gcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9
IHRvSlM8SURMRmxvYXQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25h
cnkucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQiKSwgcmVzdHJp
Y3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0
Il9zKSwgcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnNlcXVlbmNlT2ZTdHJp
bmdzKSkgewogICAgICAgICBhdXRvIHNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUgPSB0b0pTPElETFNl
cXVlbmNlPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgSURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuc2VxdWVuY2VPZlN0cmluZ3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2VxdWVuY2VPZlN0cmluZ3MiKSwg
c2VxdWVuY2VPZlN0cmluZ3NWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyJfcyksIHNl
cXVlbmNlT2ZTdHJpbmdzVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETENsYW1wQWRhcHRvcjxJ
RExCeXRlPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zbWFsbEludGVnZXJDbGFtcGVkKSkgewog
ICAgICAgICBhdXRvIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSA9IHRvSlM8SURMQ2xhbXBBZGFw
dG9yPElETEJ5dGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDbGFtcEFk
YXB0b3I8SURMQnl0ZT46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnNtYWxs
SW50ZWdlckNsYW1wZWQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic21hbGxJbnRlZ2VyQ2xhbXBlZCIpLCBzbWFsbEludGVnZXJDbGFtcGVk
VmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic21hbGxJbnRlZ2VyQ2xhbXBlZCJfcyksIHNtYWxsSW50ZWdlckNsYW1w
ZWRWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQnl0ZTo6aXNOdWxsVmFsdWUoZGljdGlvbmFy
eS5zbWFsbEludGVnZXJXaXRoRGVmYXVsdCkpIHsKICAgICAgICAgYXV0byBzbWFsbEludGVnZXJX
aXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExCeXRlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExCeXRlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zbWFs
bEludGVnZXJXaXRoRGVmYXVsdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbEludGVnZXJXaXRoRGVmYXVsdCIpLCBzbWFsbEludGVn
ZXJXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdlcldpdGhEZWZhdWx0Il9zKSwg
c21hbGxJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMRW5mb3Jj
ZVJhbmdlQWRhcHRvcjxJRExPY3RldD46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc21hbGxVbnNp
Z25lZEludGVnZXJFbmZvcmNlZFJhbmdlKSkgewogICAgICAgICBhdXRvIHNtYWxsVW5zaWduZWRJ
bnRlZ2VyRW5mb3JjZWRSYW5nZVZhbHVlID0gdG9KUzxJRExFbmZvcmNlUmFuZ2VBZGFwdG9yPElE
TE9jdGV0Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRW5mb3JjZVJhbmdl
QWRhcHRvcjxJRExPY3RldD46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnNt
YWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9y
Y2VkUmFuZ2UiKSwgc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlIl9zKSwgc21hbGxVbnNpZ25lZElu
dGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHNtYWxsVW5zaWduZWRJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMT2N0ZXQ+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkuc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVs
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbFVu
c2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0IiksIHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1
bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiX3MpLCBzbWFsbFVu
c2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgIGlmICghSURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnku
c3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykpIHsKICAgICAgICAgYXV0byBzdHJpbmdUcmVh
dE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSB0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZykp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nIiksIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJp
bmdWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nIl9zKSwgc3RyaW5n
VHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlKTsKICAgICB9CiAgICAgYXV0byBzdHJpbmdXaXRo
RGVmYXVsdFZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGRpY3Rpb25hcnkuc3RyaW5nV2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aERlZmF1bHQiKSwgc3RyaW5n
V2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhEZWZhdWx0Il9zKSwgc3RyaW5nV2l0aERl
ZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25h
cnkuc3RyaW5nV2l0aG91dERlZmF1bHQpKSB7CiAgICAgICAgIGF1dG8gc3RyaW5nV2l0aG91dERl
ZmF1bHRWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5
LnN0cmluZ1dpdGhvdXREZWZhdWx0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhvdXREZWZhdWx0IiksIHN0cmluZ1dpdGhv
dXREZWZhdWx0VmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpLCBzdHJpbmdX
aXRob3V0RGVmYXVsdFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExVbmlvbjxJRExMb25nLCBJ
RExJbnRlcmZhY2U8Tm9kZT4+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnVuaW9uTWVtYmVyKSkg
ewogICAgICAgICBhdXRvIHVuaW9uTWVtYmVyVmFsdWUgPSB0b0pTPElETFVuaW9uPElETExvbmcs
IElETEludGVyZmFjZTxOb2RlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgSURMVW5pb248SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+Pjo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkudW5pb25NZW1iZXIpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXIiKSwg
dW5pb25NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlciJfcyksIHVuaW9uTWVtYmVyVmFs
dWUpOwogICAgIH0KICAgICBpZiAoIUlETFVucmVzdHJpY3RlZERvdWJsZTo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS51bnJlc3RyaWN0ZWREb3VibGUpKSB7CiAgICAgICAgIGF1dG8gdW5yZXN0cmlj
dGVkRG91YmxlVmFsdWUgPSB0b0pTPElETFVucmVzdHJpY3RlZERvdWJsZT4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5yZXN0cmljdGVkRG91YmxlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS51bnJlc3RyaWN0ZWREb3VibGUpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91
YmxlIiksIHVucmVzdHJpY3RlZERvdWJsZVZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJs
ZSJfcyksIHVucmVzdHJpY3RlZERvdWJsZVZhbHVlKTsKICAgICB9CiAgICAgYXV0byB1bnJlc3Ry
aWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnJlc3RyaWN0ZWREb3VibGU+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkudW5yZXN0cmljdGVk
RG91YmxlV2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQiKSwgdW5yZXN0cmljdGVkRG91
YmxlV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Il9z
KSwgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExVbnJl
c3RyaWN0ZWRGbG9hdDo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS51bnJlc3RyaWN0ZWRGbG9hdCkp
IHsKICAgICAgICAgYXV0byB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlID0gdG9KUzxJRExVbnJlc3Ry
aWN0ZWRGbG9hdD4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5yZXN0cmlj
dGVkRmxvYXQ6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnVucmVzdHJpY3Rl
ZEZsb2F0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVucmVzdHJpY3RlZEZsb2F0IiksIHVucmVzdHJpY3RlZEZsb2F0VmFsdWUpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidW5yZXN0cmljdGVkRmxvYXQiX3MpLCB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlKTsKICAgICB9
CiAgICAgYXV0byB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETFVu
cmVzdHJpY3RlZEZsb2F0PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9u
YXJ5LnVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIpLCB1
bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRGbG9hdFdp
dGhEZWZhdWx0Il9zKSwgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBp
ZiAoIUlETFVuc2lnbmVkTG9uZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS51bnNpZ25lZEludGVn
ZXIpKSB7CiAgICAgICAgIGF1dG8gdW5zaWduZWRJbnRlZ2VyVmFsdWUgPSB0b0pTPElETFVuc2ln
bmVkTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5zaWduZWRMb25n
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS51bnNpZ25lZEludGVnZXIpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5z
aWduZWRJbnRlZ2VyIiksIHVuc2lnbmVkSW50ZWdlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkSW50
ZWdlciJfcyksIHVuc2lnbmVkSW50ZWdlclZhbHVlKTsKICAgICB9CiAgICAgYXV0byB1bnNpZ25l
ZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkudW5zaWduZWRJbnRlZ2VyV2l0aERl
ZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5z
aWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiKSwgdW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1
ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0Il9zKSwgdW5zaWduZWRJbnRlZ2VyV2l0
aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExVbnNpZ25lZExvbmdMb25nOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyKSkgewogICAgICAgICBhdXRvIHVuc2ln
bmVkTGFyZ2VJbnRlZ2VyVmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZ0xvbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETFVuc2lnbmVkTG9uZ0xvbmc6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnVuc2lnbmVkTGFyZ2VJbnRlZ2VyKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFy
Z2VJbnRlZ2VyIiksIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUpOworICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRM
YXJnZUludGVnZXIiX3MpLCB1bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlKTsKICAgICB9CiAgICAg
YXV0byB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETFVuc2ln
bmVkTG9uZ0xvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnku
dW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0Iiks
IHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFyZ2VJ
bnRlZ2VyV2l0aERlZmF1bHQiX3MpLCB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTExOTgsNyArMTE5OCw3IEBAIHRlbXBs
YXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29udmVy
dERpY3Rpb25hcnk8VGVzdE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBi
b29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aG91dERl
ZmF1bHQiKSk7CisgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29s
ZWFuV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyMDksNyArMTIwOSw3IEBAIHRlbXBsYXRlPD4gVGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29udmVydERpY3Rpb25hcnk8
VGVzdE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBub25OdWxsYWJsZU5v
ZGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG5vbk51bGxhYmxl
Tm9kZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJub25OdWxsYWJsZU5vZGUiKSk7CisgICAgICAgIG5vbk51bGxhYmxl
Tm9kZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJub25OdWxsYWJsZU5vZGUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW5vbk51bGxhYmxl
Tm9kZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyMjMsNyArMTIyMyw3IEBAIHRlbXBsYXRl
PD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29udmVydERp
Y3Rpb25hcnk8VGVzdE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXF1
aXJlZERpY3Rpb25hcnlNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZERpY3Rp
b25hcnlNZW1iZXIiKSk7CisgICAgICAgIHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJyZXF1aXJlZERpY3Rpb25hcnlNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXJlcXVpcmVkRGljdGlv
bmFyeU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyMzcsNyArMTIzNyw3IEBAIHRl
bXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29u
dmVydERpY3Rpb25hcnk8VGVzdE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJl
ZEVudW1lcmF0aW9uVmFsdWUiKSk7CisgICAgICAgIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJyZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXJlcXVpcmVk
RW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyNjUsNyArMTI2NSw3
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGwg
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFu
V2l0aG91dERlZmF1bHQiKSk7CisgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJib29sZWFuV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVm
YXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyNzYsNyArMTI3Niw3IEBAIHRlbXBsYXRl
PD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGwgY29udmVydERpY3Rp
b25hcnk8VGVzdE9iajo6CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBlbnVt
ZXJhdGlvblZhbHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBl
bnVtZXJhdGlvblZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWUiKSk7CisgICAgICAg
IGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZSJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlm
ICghZW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzMDEsNyArMTMw
MSw3IEBAIHRlbXBsYXRlPD4gQWx0ZXJuYXRlRGljdGlvbmFyeU5hbWUgY29udmVydERpY3Rpb25h
cnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+KEpTCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29s
ZWFuV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xlYW5XaXRob3V0
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzMTIsNyArMTMxMiw3IEBAIHRlbXBs
YXRlPD4gQWx0ZXJuYXRlRGljdGlvbmFyeU5hbWUgY29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRl
RGljdGlvbmFyeU5hbWU+KEpTCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBl
bnVtZXJhdGlvblZhbHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBlbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWUiKSk7CisgICAg
ICAgIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZSJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghZW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzMzcsNyAr
MTMzNyw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6UGFyZW50RGljdGlvbmFyeSBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBwYXJlbnRNZW1iZXIxVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBwYXJlbnRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjEiKSk7
CisgICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghcGFyZW50TWVtYmVyMVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzNDgsNyArMTM0
OCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6UGFyZW50RGljdGlvbmFyeSBjb252ZXJ0RGljdGlv
bmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBwYXJlbnRNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBwYXJlbnRNZW1iZXIyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjIiKSk7Cisg
ICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlm
ICghcGFyZW50TWVtYmVyMlZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzNzMsNyArMTM3Myw3
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkNoaWxkRGljdGlvbmFyeT4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICBwYXJlbnRNZW1iZXIxVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ugewot
ICAgICAgICBwYXJlbnRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjEiKSk7CisgICAg
ICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
cGFyZW50TWVtYmVyMVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzODQsNyArMTM4NCw3IEBA
IHRlbXBsYXRlPD4gVGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkNoaWxkRGljdGlvbmFyeT4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBwYXJlbnRNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAg
ICAgICBwYXJlbnRNZW1iZXIyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjIiKSk7CisgICAgICAg
IHBhcmVudE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFy
ZW50TWVtYmVyMlZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIHRl
bXBsYXRlPD4gVGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RP
Ymo6OkNoaWxkRGljdGlvbmFyeT4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBjaGlsZE1lbWJlcjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGNoaWxkTWVtYmVyMVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjaGlsZE1lbWJlcjEiKSk7CisgICAgICAgIGNoaWxk
TWVtYmVyMVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjaGlsZE1lbWJlcjEiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNoaWxkTWVtYmVy
MVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE0MDYsNyArMTQwNiw3IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNoaWxk
RGljdGlvbmFyeT4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjaGlsZE1l
bWJlcjJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoaWxkTWVt
YmVyMlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjaGlsZE1lbWJlcjIiKSk7CisgICAgICAgIGNoaWxkTWVtYmVyMlZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjaGlsZE1lbWJlcjIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNoaWxkTWVtYmVyMlZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6
Q29uZGl0aW9uYWxEaWN0aW9uYXJ5QSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDb25kaXRp
b25hCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdXaXRob3V0RGVm
YXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0
aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAg
IHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhvdXREZWZhdWx0Il9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgaWYgKCFzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTE0NjIsNyArMTQ2Miw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9u
YXJ5QiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDb25kaXRpb25hCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAgIHN0cmluZ1dpdGhvdXREZWZh
dWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhvdXREZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzdHJpbmdX
aXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE0OTEsNyArMTQ5MSw3IEBA
IHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9uYXJ5QyBjb252ZXJ0RGljdGlv
bmFyeTxUZXN0T2JqOjpDb25kaXRpb25hCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91
dERlZmF1bHQiKSk7CisgICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ1dpdGhvdXREZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTIwODEsNyArMjA4MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RPYmo6OmluZm8oKSwg
SlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVu
dGltZUF0dHJpYnV0ZVN0YXRpYyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyJf
cyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAm
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjA4OSw3ICsyMDg5LDcgQEAg
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmEKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyJfcyk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAgdm9pZCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwor
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJl
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwpAQCAtMjQ0NywyOCArMjQ0NywyOCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogI2VuZGlmCiAgICAgaWYgKCEod29ybGRGb3JET01PYmplY3Qo
KnRoaXMpLnNvbWVXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxl
ZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKSwgc3RybGVuKCJlbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpKTsKKyAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiX3MpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owog
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghd29ybGRGb3JET01PYmplY3QoKnRo
aXMpLnNvbWVXb3JsZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZpY01ldGhv
ZCIpLCBzdHJsZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIndvcmxkU3BlY2lmaWNNZXRob2Qi
X3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3Vs
YXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOworICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxj
dWxhdGVTZWNyZXRSZXN1bHQiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4i
KSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImdldFNlY3JldEJvb2xlYW4iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CkBAIC0yNDc2LDcgKzI0NzYsNyBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iX3MpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNDg0LDIxICsyNDg0LDIxIEBAIHZvaWQgSlNUZXN0
T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjZW5kaWYKICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93RnVuY3Rpb24iKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlv
biJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29y
a2VyRnVuY3Rpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
bGxvd3NNZWRpYURldmljZXMoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtZWRpYURldmljZXMi
KSwgc3RybGVuKCJtZWRpYURldmljZXMiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1lZGlhRGV2aWNlcyJfcyk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIHZvaWQgSlNUZXN0T2Jq
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKICAgICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRl
c3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
IikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwpAQCAtMjUxNCwxNCArMjUxNCwxNCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2VuZGlmCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
dHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiX3MpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyQXR0cmlidXRlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0
cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjUzMyw4ICsy
NTMzLDggQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9i
YWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgYWRkVmFsdWVJ
dGVyYWJsZU1ldGhvZHMoKmdsb2JhbE9iamVjdCgpLCAqdGhpcyk7CiAgICAgSlNPYmplY3QmIHVu
c2NvcGFibGVzID0gKmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCBn
bG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICB1bnNj
b3BhYmxlcy5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmRlZmlu
ZWRNZXRob2QiKSwganNCb29sZWFuKHRydWUpKTsKLSAgICB1bnNjb3BhYmxlcy5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaG9ydEF0dHIiKSwganNCb29sZWFuKHRy
dWUpKTsKKyAgICB1bnNjb3BhYmxlcy5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ1bmRlZmluZWRNZXRob2QiX3MpLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgIHVuc2Nv
cGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNob3J0QXR0
ciJfcyksIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuc2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
fQpAQCAtNTAzOSwxNCArNTAzOSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
X3B1dEZvcndhcmRzQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpYwogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byBpZCA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicHV0
Rm9yd2FyZHNBdHRyaWJ1dGUiKSwgc3RybGVuKCJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpKTsKKyAg
ICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInB1dEZvcndhcmRzQXR0cmli
dXRlIl9zKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlzT2JqZWN0LmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgaWQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVUb0ZvcndhcmRUby5pc09iamVjdCgp
KSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgYXV0byBmb3J3YXJkSWQg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIm5hbWUiKSwgc3RybGVuKCJuYW1lIikpOworICAgIGF1dG8gZm9yd2FyZElkID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KHZhbHVlVG9Gb3J3YXJkVG8sIGZhbHNlKTsKICAgICBhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRv
KS0+bWV0aG9kVGFibGUodm0pLT5wdXQoYXNPYmplY3QodmFsdWVUb0ZvcndhcmRUbyksICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBmb3J3YXJkSWQsIHZhbHVlLCBzbG90KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKQEAgLTUwNzUsMTQgKzUwNzUsMTQgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
U2V0dGVyKEpTR2xvYmFsT2JqZWMKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKSwg
c3RybGVuKCJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIikpOworICAgIGF1dG8gaWQgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSJf
cyk7CiAgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIGlkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlVG9Gb3J3YXJkVG8uaXNPYmplY3QoKSkpIHsK
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGF1dG8gZm9yd2FyZElkID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJu
YW1lIiksIHN0cmxlbigibmFtZSIpKTsKKyAgICBhdXRvIGZvcndhcmRJZCA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1
ZVRvRm9yd2FyZFRvLCBmYWxzZSk7CiAgICAgYXNPYmplY3QodmFsdWVUb0ZvcndhcmRUbyktPm1l
dGhvZFRhYmxlKHZtKS0+cHV0KGFzT2JqZWN0KHZhbHVlVG9Gb3J3YXJkVG8pLCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgZm9yd2FyZElkLCB2YWx1ZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQuY3BwCmluZGV4IDMwNjcyZDJkZDQxNTNhZDRiODNkYmQ1MWJlMzk5ZmU0YjRlYWQ3
MWUuLjA4ZDFiYjQ2MDkxMGJiZjk0YmFiMDg3N2I4YjdkZDI4MzljNDE2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHRl
bXBsYXRlPD4gVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0UHJvbWlzZVJlamVjdGlvCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBidWJibGVzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBidWJi
bGVzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImJ1YmJsZXMiKSk7CisgICAgICAgIGJ1YmJsZXNWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
YnViYmxlcyJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghYnViYmxlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTc5
LDcgKzc5LDcgQEAgdGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNv
bnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW8KICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIGNhbmNlbGFibGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGNhbmNlbGFibGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FuY2VsYWJsZSIpKTsKKyAgICAg
ICAgY2FuY2VsYWJsZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYW5jZWxhYmxlIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYW5jZWxh
YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtOTEsNyArOTEsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21p
c2VSZWplY3RpbwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY29tcG9zZWRW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbXBvc2VkVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNvbXBvc2VkIikpOworICAgICAgICBjb21wb3NlZFZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wb3Nl
ZCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghY29tcG9zZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMDMsNyAr
MTAzLDcgQEAgdGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZl
cnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW8KICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIHByb21pc2VWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHByb21pc2VWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvbWlzZSIpKTsKKyAgICAgICAgcHJvbWlzZVZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwcm9taXNlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwcm9taXNlVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPD4gVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZWFzb25WYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlYXNvblZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWFzb24iKSk7CisgICAg
ICAgIHJlYXNvblZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWFzb24iX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXJlYXNvblZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
CmluZGV4IGEyYWRiNDJlZTBjZmJjYmVjMTE4ZDQ0ODkzZjhjMTc3YjVkOTIxYWYuLjc1ZjI2OTlm
MmZkOTVlNDk0NDBjNGI2YjgxMGMxZWQxOGExMmExNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rp
b25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xv
YmFsT2JqZQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYm9vbE1lbWJlclZh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbE1lbWJlclZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJib29sTWVtYmVyIikpOworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBA
IC03MSw3ICs3MSw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0
aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tN
ZW1iZXIiKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVt
YmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTgyLDcgKzgyLDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rp
b25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIGVudW1NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGVudW1NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bU1lbWJlciIpKTsKKyAg
ICAgICAgZW51bU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtTWVtYmVyIl9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFlbnVt
TWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtOTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTw+
IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+
KEpTR2xvYmFsT2JqZQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbnVsbGFi
bGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlIikpOworICAgICAgICBudWxsYWJs
ZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbldpdGhO
dWxsRGVmYXVsdFZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0
VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdGVtcGxhdGU8
PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1l
PihKU0dsb2JhbE9iamUKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRp
YWxCb29sZWFuTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciIp
KTsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xl
YW5NZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpAQCAtMTE5LDcgKzExOSw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1l
IGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJ
Z25vcmVkQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9uYWwiKSk7CisgICAgICAg
IHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9uYWwiX3MpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBh
cnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbFZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBj
b252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFs
Q2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xNDUs
NyArMTQ1LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25h
cnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIHBhcnRpYWxFbnVtTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwog
ICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsRW51bU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
RW51bU1lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbEVudW1NZW1iZXJWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbEVudW1NZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxFbnVtTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgewpAQCAtMTU4LDcgKzE1OCw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxO
YW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVt
YmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsUmVx
dWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSk7
CisgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJl
cXVpcmVkTG9uZ01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE3NCw3ICsxNzQsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rp
b25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xv
YmFsT2JqZQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFN0cmlu
Z01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlh
bFN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAg
ICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0K
ICAgICBpZiAoIXBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0x
ODgsNyArMTg4LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rp
b25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVk
QnlTZXR0aW5nVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAgICAgICBw
YXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUg
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJX
aXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpKTsKKyAgICAgICAg
cGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFy
dGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNv
bnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJp
bmdNZW1iZXIiKSk7CisgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1i
ZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgIH0KICAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTIy
NSw3ICsyMjUsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlv
bmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFs
dWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlIikpOworICAgICAgICB1
bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXJXaXRoRGVm
YXVsdFZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgaWYgKCF1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CkBAIC0yNDYsNTkgKzI0Niw1OSBAQCBKU0M6OkpTT2JqZWN0KiBjb252
ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSgogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5ib29sTWVt
YmVyKSkgewogICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xNZW1i
ZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSwgYm9vbE1lbWJlclZhbHVlKTsKICAgICB9
CiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKICAgICAgICAgYXV0byBjYWxsYmFja01l
bWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1
bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkuY2FsbGJhY2tNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7
CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjYWxsYmFja01lbWJlciJfcyksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgIH0K
ICAgICBpZiAoIUlETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUlu
U3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5lbnVtTWVt
YmVyKSkgewogICAgICAgICBhdXRvIGVudW1NZW1iZXJWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRp
b248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZp
bGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExFbnVtZXJhdGlvbjxUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT46OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmVudW1NZW1iZXIpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bU1lbWJlciIp
LCBlbnVtTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bU1lbWJlciJfcyksIGVudW1NZW1iZXJWYWx1
ZSk7CiAgICAgfQogICAgIGF1dG8gbnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFs
dWUgPSB0b0pTPElETE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25h
cnkubnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRW
YWx1ZSIpLCBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxh
YmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZSJfcyksIG51bGxhYmxlVW5pb25XaXRoTnVsbERl
ZmF1bHRWYWx1ZVZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5BQkxFKENv
bmRpdGlvbmFsMTQpCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5
LnBhcnRpYWxCb29sZWFuTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVt
YmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRp
YWxCb29sZWFuTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIiksIHBhcnRpYWxCb29sZWFuTWVt
YmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiX3MpLCBwYXJ0aWFsQm9vbGVh
bk1lbWJlclZhbHVlKTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykg
fHwgRU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbCkp
IHsKICAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9u
YWxWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVy
V2l0aElnbm9yZWRDb25kaXRpb25hbCIpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVk
Q29uZGl0aW9uYWxWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVk
Q29uZGl0aW9uYWwiX3MpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9u
YWxWYWx1ZSk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTMpIHx8IEVO
QUJMRShDb25kaXRpb25hbDE0KQogICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSkg
ewogICAgICAgICBhdXRvIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVy
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxDYWxsYmFja01lbWJlciIpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTMpIHx8IEVOQUJMRShD
b25kaXRpb25hbDE0KQogICAgIGlmICghSURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+Ojppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LnBhcnRpYWxFbnVtTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxFbnVtTWVt
YmVyVmFsdWUgPSB0b0pTPElETEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6
RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgSURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGU+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5wYXJ0aWFsRW51bU1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsRW51bU1lbWJlciIpLCBwYXJ0aWFsRW51bU1l
bWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxFbnVtTWVtYmVyIl9zKSwgcGFydGlhbEVudW1NZW1i
ZXJWYWx1ZSk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTMpIHx8IEVO
QUJMRShDb25kaXRpb25hbDE0KQogICAgIGF1dG8gcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlID0gdG9KUzxJRExMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0
aW9uYXJ5LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0
aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
Il9zKSwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb25hbDEzKSB8fCBFTkFCTEUoQ29uZGl0aW9uYWwxNCkKICAgICBpZiAoIUlETERP
TVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSkgewog
ICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5n
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0
cmluZ01lbWJlciIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0
cmluZ01lbWJlciJfcyksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTMpIHx8IEVOQUJMRShDb25kaXRpb25hbDE0KQpAQCAt
MzA2LDcgKzMwNiw3IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgICAgIGlmICghSURM
RE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZykpIHsKICAgICAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSwgcGFydGlh
bFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOworICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcyksIHBhcnRpYWxTdHJpbmdNZW1i
ZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpA
QCAtMzE0LDE3ICszMTQsMTcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBpZiAoIUlE
TFVuc2lnbmVkTG9uZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25n
TWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1w
bGVtZW50ZWRBc1ZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIElETFVuc2lnbmVkTG9uZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25n
TWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJ
bXBsZW1lbnRlZEFzVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJ
bXBsZW1lbnRlZEFzIl9zKSwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRl
ZEFzVmFsdWUpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpIHsKICAgICAgICAgYXV0byBzdHJpbmdNZW1i
ZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0
cmluZ01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3Ry
aW5nTWVtYmVyIl9zKSwgc3RyaW5nTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHVuaW9u
TWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlID0gdG9KUzxJRExVbmlvbjxJRExFbnVtZXJhdGlv
bjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5Rmls
ZT4sIElETERvdWJsZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgZGljdGlvbmFyeS51bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXJXaXRoRGVmYXVs
dFZhbHVlIiksIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1i
ZXJXaXRoRGVmYXVsdFZhbHVlIl9zKSwgdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWUp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDUxMDQ3OTc4MzJhODJhMjQwNDMwOWExMmJiNzBhN2U0NjYzNzdlZWYu
LmZmYmJkYjhlZTcxZTM5YjAzMDRlNTMyMWEwYTE1NTdlZTE1NDFjZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDU5Miw3ICs0NTkyLDcgQEAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LAogICAgIGlmICghbWVkaWFKU1dyYXBwZXJPYmplY3QpCiAgICAgICAg
IHJldHVybiBKU0M6OmpzTnVsbCgpOwogCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9z
dCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbnRyb2xzSG9zdCIpOworICAg
IEpTQzo6SWRlbnRpZmllciBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb250cm9sc0hvc3QiX3MpOwogICAgIEpTQzo6SlNWYWx1ZSBjb250cm9sc0hvc3RK
U1dyYXBwZXIgPSBtZWRpYUpTV3JhcHBlck9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb250cm9sc0hvc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNO
dWxsKCkpOwogCkBAIC00NjAwLDcgKzQ2MDAsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRy
b2xsZXJKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAg
ICAgaWYgKCFjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybiBKU0M6
OmpzTnVsbCgpOwogCi0gICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xsZXJJRCA9IEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbnRyb2xsZXIiKTsKKyAgICBKU0M6OklkZW50aWZp
ZXIgY29udHJvbGxlcklEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29udHJv
bGxlciJfcyk7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1dyYXBwZXIgPSBjb250cm9s
c0hvc3RKU1dyYXBwZXJPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29udHJvbGxl
cklEKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmpzTnVsbCgpKTsKIApA
QCAtNDY3MSw3ICs0NjcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9u
Q29udGFpbmVyKCkKICAgICAgICAgLy8gICAgIE5vbmUKICAgICAgICAgLy8gUmV0dXJuIHZhbHVl
OgogICAgICAgICAvLyAgICAgTm9uZQotICAgICAgICBhdXRvIG1ldGhvZFZhbHVlID0gY29udHJv
bGxlck9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOworICAgICAgICBhdXRvIG1l
dGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIl9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlcG9ydEV4Y2VwdGlvbkFu
ZFJldHVybkZhbHNlKCkpOwogCiAgICAgICAgIGF1dG8qIG1ldGhvZE9iamVjdCA9IEpTQzo6anNE
eW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4odm0sIG1ldGhvZFZhbHVlKTsKQEAgLTc2MjEsNyAr
NzYyMSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlTWVkaWFDb250cm9sc0luamVj
dGVkU2NyaXB0KCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfTsKIAotICAg
ICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVDb250cm9scyIp
KTsKKyAgICAgICAgYXV0byBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3JlYXRlQ29u
dHJvbHMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVwb3J0RXhj
ZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7CiAgICAgICAgIGlmIChmdW5jdGlvblZhbHVlLmlzQ2Fs
bGFibGUodm0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03Njk5LDcgKzc2OTksNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93
Um9vdCYgcm9vdCkKICAgICAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgICAgICAvLyAgICAgQSBy
ZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgbWVkaWEgY29udHJvbGxlciBpbnN0YW5jZS4KIAotICAg
ICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVDb250cm9scyIp
KTsKKyAgICAgICAgYXV0byBmdW5jdGlvblZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3JlYXRlQ29u
dHJvbHMiX3MpKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzczOSw3ICs3NzM5LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qm
IHJvb3QpCiAgICAgICAgIC8vIENvbm5lY3QgdGhlIE1lZGlhLCBNZWRpYUNvbnRyb2xsZXJIb3N0
LCBhbmQgQ29udHJvbGxlciBzbyB0aGUgR0Mga25vd3MgYWJvdXQgdGhlaXIgcmVsYXRpb25zaGlw
CiAgICAgICAgIGF1dG8qIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0gbWVkaWFKU1dyYXBwZXIudG9P
YmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCByZXBvcnRFeGNlcHRpb25BbmRSZXR1cm5GYWxzZSgpKTsKLSAgICAgICAgYXV0byBj
b250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb250cm9sc0hv
c3QiKTsKKyAgICAgICAgYXV0byBjb250cm9sc0hvc3QgPSBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjb250cm9sc0hvc3QiX3MpOwogCiAgICAgICAgIEFTU0VSVCghbWVkaWFKU1dy
YXBwZXJPYmplY3QtPmhhc1Byb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb250cm9sc0hv
c3QpKTsKIApAQCAtNzc0OSw3ICs3NzQ5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgICAgIGlmICghbWVk
aWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgYXV0byBjb250cm9sbGVyID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY29udHJvbGxlciIpOworICAgICAgICBhdXRvIGNvbnRyb2xsZXIgPSBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb250cm9sbGVyIl9zKTsKIAogICAgICAgICBBU1NFUlQo
IWNvbnRyb2xsZXJPYmplY3QtPmhhc1Byb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb250
cm9sbGVyKSk7CiAKQEAgLTc3OTUsNyArNzc5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlTWVkaWFDb250cm9sc0FmdGVyUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpCiAgICAgICAg
IGF1dG8qIGNvbnRyb2xsZXJPYmplY3QgPSBjb250cm9sbGVyVmFsdWUudG9PYmplY3QoJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAKLSAgICAgICAgYXV0byBmdW5jdGlvblZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJo
YW5kbGVQcmVzZW50YXRpb25Nb2RlQ2hhbmdlIikpOworICAgICAgICBhdXRvIGZ1bmN0aW9uVmFs
dWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImhhbmRsZVByZXNlbnRhdGlvbk1vZGVDaGFuZ2UiX3Mp
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCBmdW5jdGlvblZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTc4MzksNyArNzgzOSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpnZXRDdXJyZW50TWVk
aWFDb250cm9sc1N0YXR1cygpCiAgICAgICAgIGF1dG8qIGNvbnRyb2xsZXJPYmplY3QgPSBjb250
cm9sbGVyVmFsdWUudG9PYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICAgICAgYXV0byBmdW5jdGlvblZh
bHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnZXRDdXJyZW50Q29udHJvbHNTdGF0dXMiKSk7Cisg
ICAgICAgIGF1dG8gZnVuY3Rpb25WYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2V0Q3VycmVu
dENvbnRyb2xzU3RhdHVzIl9zKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkgfHwgZnVuY3Rpb25WYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456122</attachid>
            <date>2022-03-30 07:48:48 -0700</date>
            <delta_ts>2022-03-30 13:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238552-20220330074847.patch</filename>
            <type>text/plain</type>
            <size>366357</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzRkYWQ3MzVjYTJhYjQwNjE0ZDgwNmRlODhlNGJkOTlhNWZkYjdmLi5lNDFmMjFlYzk5NzMxOWQ1
OTllODU5ZDNiMzg5ODlmNzM0NDk4YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMjItMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSB0aGUgY29uc3RydWN0aW9uIG9mIGEgSlNDOjpJZGVudGlmaWVy
IGZyb20gYW4gQVNDSUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg1NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gY29uc3RydWN0IGEgSlNDOjpJZGVu
dGlmaWVyIGZyb20gYSBzdHJpbmcgbGl0ZXJhbCBhbmQgYm90aAorICAgICAgICB3ZXJlIHN1Yi1v
cHRpbWFsOgorICAgICAgICAtIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4gc3Rh
dGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJzQ291bnRdKToKKyAgICAgICAgICBFdmVuIHRob3VnaCBpdCBrbm93cyB0aGUgY2hh
cmFjdGVyc0NvdW50IGF0IGNvbXBpbGUgdGltZSwgaXQgZG9lc24ndCBsZXZlcmFnZSB0aGlzIGlu
Zm9ybWF0aW9uCisgICAgICAgICAgYXQgYWxsLiBBbHNvLCBpdCBlbmRzIHVwIGNhbGxpbmcgQXRv
bVN0cmluZ0ltcGw6OmFkZCgpIGluc3RlYWQgb2YgQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwo
KQorICAgICAgICAgIHdoaWNoIG1lYW5zIHdlIGxvc2UgdGhlIGtub3dsZWRnZSB0aGF0IGl0IHdh
cyBhIHN0cmluZyBsaXRlcmFsIGFuZCB0aGUgb3B0aW1pemF0aW9uIHRoYXQgY29tZQorICAgICAg
ICAgIHdpdGggaXQgKGUuZy4gbm90IGNvcHlpbmcgdGhlIGNoYXJhY3RlcnMgb3ZlcikuIEluIHRo
aXMgcGF0Y2gsIEkgYW0gZGVwcmVjYXRpbmcgdGhpcyBmdW5jdGlvbgorICAgICAgICAgIGluIGZh
dm9yIG9mIGZyb21TdHJpbmcoQVNDSUlMaXRlcmFsKSB3aGljaCBpcyBub3cgbW9yZSBlZmZpY2ll
bnQuIEknbGwgcmVtb3ZlIGl0IGluIGEgZm9sbG93IHVwLgorICAgICAgICAtIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpOgorICAgICAgICAgIEl0IGVuZGVk
IHVwIGNhbGxpbmcgdGhlIElkZW50aWZpZXIoVk0mLCBTdHJpbmcpIGNvbnN0cnVjdG9yIHdoaWNo
IG1lYW50IHRoYXQgd2Ugd2VyZSBwb3RlbnRpYWxseSBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICBh
IFN0cmluZy9TdHJpbmdJbXBsIHVubmVjZXNzYXJpbHkgYmVmb3JlIGF0b21pemluZyBpdCBzaW5j
ZSB0aGUgc3RyaW5nIG1heSBhbHJlYWR5IGJlIGluIHRoZQorICAgICAgICAgIEF0b21TdHJpbmcg
dGFibGUuIFdlIGFsc28gZmFpbGVkIHRvIHVzZSB0aGUgc21hbGxTdHJpbmdzIGNhY2hlIGZvciBs
aXRlcmFscyB3aG9zZSBsZW5ndGggaXMgMSwKKyAgICAgICAgICB3aGljaCB3b3VsZCBoYXBwZW4g
d2hlbiBjYWxsaW5nIGBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlcnNDb3VudF0pYC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCBJIG9wdGltaXplZCBg
ZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbClgIHRvIGxldmVyYWdlIHRoZSBzbWFsbFN0cmlu
Z3MgY2FjaGUKKyAgICAgICAgd2hlbiBuZWNlc3NhcnkgYW5kIGNhbGwgQXRvbVN0cmluZ0ltcGw6
OmFkZExpdGVyYWwoKSBpbnN0ZWFkIG9mIEF0b21TdHJpbmdJbXBsOjphZGQoKS4gSSBhbHNvCisg
ICAgICAgIG1hZGUgc3VyZSB0byBtYXJrIGBmcm9tU3RyaW5nKFZNJiwgQVNDSUlMaXRlcmFsKWAg
YW5kIGBJZGVudGlmaWVyKFZNJiwgQVNDSUlMaXRlcmFsKWAgYXMKKyAgICAgICAgQUxXQVlTX0lO
TElORSB0byBtYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSBvdXQgdGhlIHN0cmxl
bigpIGNhbGxzLgorCisgICAgICAgIEFjY29yZGluZyB0byBBL0IgYm90cywgdGhpcyBpcyBhIDEt
MS41JSBwcm9ncmVzc2lvbiBvbiBTcGVlZG9tZXRlciBhbmQgYW5kIGEgMS4zJSBwcm9ncmVzc2lv
biBvbgorICAgICAgICBKZXRTdHJlYW0gb24gaU1hYyAyMCwxIChJbnRlbCkuIFNhZGx5LCB0aGlz
IGlzIHBlcmYtbmV1dHJhbCBvbiB0aG9zZSB0d28gYmVuY2htYXJrcyBvbiBBcHBsZQorICAgICAg
ICBTaWxpY29uLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAg
ICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXMpOgorICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNHZXRNZW1v
cnlVc2FnZVN0YXRpc3RpY3MpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAg
ICAgIChKU09iamVjdE1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbk5hbWVzOjpCdWlsdGluTmFtZXMpOgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oOgorICAgICAgICAqIGR5bmJlbmNoLmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrTWFwRW50cmllcyk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWFrU2V0RW50cmllcyk6CisgICAgICAg
IChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjp2YWx1ZUZvclNjb3BlTG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlRGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dHJh
Y3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckF1ZGl0QWdlbnQ6OnBvcHVsYXRlQXVkaXRPYmplY3QpOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChk
dW1wRXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0
ZWRNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkF0b21pY3NPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGRMaXRlcmFsKToKKyAgICAgICAgKiBydW50
aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6SWRlbnRpZmllcik6
CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjp0ZXh0SW5mbyk6CisgICAgICAgIChKU0M6Oklu
dGxMb2NhbGU6OndlZWtJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVy
bmFsKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChK
U0M6OkludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXhwb3NlRG9sbGFyVk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUxvYWRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVy
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUdsb2JhbDo6dHlwZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6dHlwZSk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5VGFibGU6OnR5cGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlH
bG9iYWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKwogMjAyMi0wMy0zMCAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9ic29sZXRlIC0t
dXNlUHJvYmVPU1JFeGl0IG9wdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYTIwNjQzM2Y2ZTY0NDhjNTEz
OGYxY2QwNDgxNjQ2NTQ1ZTQ1NGI5Li41YjI2M2VjZTg0YTc5OGQwMGY5MDM4OWFmMjYyMTcxOGFj
YWE0NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIyLTAzLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgdGhlIGNvbnN0cnVj
dGlvbiBvZiBhIEpTQzo6SWRlbnRpZmllciBmcm9tIGFuIEFTQ0lJTGl0ZXJhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTUyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdGhlIEpTQzo6SWRl
bnRpZmllciBjb25zdHJ1Y3RvciBmcm9tIGFuIEFTQ0lJTGl0ZXJhbCBtb3JlIHdpZGVseS4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXltZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXI6
OmZpbmlzaFNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQ2xlYXJLZXk6OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlZmluZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0T3BlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpzZXRPcGVuRGF0YWJhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
TW9kdWxlTG9hZGVyOjpjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZURpY3Rp
b25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoYWRkVW5zY29wYWJsZVByb3Bl
cnRpZXMpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlRGVm
YXVsdFRvSlNPTk9wZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFj
a0ltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFN0YXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeTxFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OkRpY3Q+KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENF
UmVhY3Rpb25zX3N0cmluZ2lmaWVyQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdENFUmVhY3Rpb25zX3N0cmluZ2lmaWVyQXR0cmlidXRlTm90TmVlZGVkU2V0dGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1dpdGhB
UmV0dXJuVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6
OmNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVjdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09OLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERlZmF1
bHRUb0pTT05Qcm90b3R5cGVGdW5jdGlvbl90b0pTT05Cb2R5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9keSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
UHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9keSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9u
X3RvSlNPTkJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZXJpdmVkRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0
aW9uYXJ5VG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
cml2ZWREaWN0aW9uYXJ5Mi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGlj
dGlvbmFyeVRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdERl
cml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnREaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5Pik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeVdpdGhP
bmx5Q29uZGl0aW9uYWxNZW1iZXJzPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRp
bmdET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RFdmVudENvbnN0cnVj
dG9yOjpJbml0Pik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Pik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTI+
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVzcGFjZU9iamVjdERPTUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uX3RvSlNPTkJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pT
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbD4pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5h
bWU+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OlBhcmVu
dERpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RP
Ymo6OkNoaWxkRGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9uYXJ5QT4pOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9uYXJ5Qj4pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0
aW9uYXJ5Qz4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqX3B1dEZv
cndhcmRzQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9w
dXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Oklu
aXQ+KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8RGlj
dGlvbmFyeUltcGxOYW1lPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRv
SlMpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250cm9sbGVySlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29udHJvbHNBZnRl
clByZXNlbnRhdGlvbk1vZGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Z2V0Q3VycmVudE1lZGlhQ29udHJvbHNTdGF0dXMpOgorCiAyMDIyLTAzLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlciBXaW5kb3dDbGllbnQuYW5jZXN0b3JPcmlnaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBlMDU1YWYyOTQzZTBmM2JlOTc3
Mzc3YjZlZDk5YjQ0MjYxMzhlNjBmLi5iOTEyYjczNGQzODcwMWIyYTQwNjI0YjU5YTM5NmQ1YWYw
NjU4NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0KQEAgLTIzNSw3ICsyMzUsNyBAQCBKU09iamVjdCogSlNBUElHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZQogICAgIEpT
T2JqZWN0KiBtZXRhUHJvcGVydGllcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxP
YmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBtZXRhUHJvcGVydGllcy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlsZW5hbWUiKSwga2V5KTsKKyAgICBt
ZXRhUHJvcGVydGllcy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZmlsZW5hbWUiX3MpLCBrZXkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogCiAgICAgcmV0dXJuIG1ldGFQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0Jhc2UuY3BwCmluZGV4IGEzMGI4MTQzNmE5NmM4MDA4NmVmOTg3MjE4MmI0Njk2NTg1MzMwZDAu
LjY2MjAxZjJkMTEyYmZiMmJlNzg1MTM3MzAyZDk4NDlkN2EyN2Y1NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQmFzZS5jcHAKQEAgLTIxMCwxNCArMjEwLDE0IEBAIEpTT2JqZWN0UmVmIEpT
R2V0TWVtb3J5VXNhZ2VTdGF0aXN0aWNzKEpTQ29udGV4dFJlZiBjdHgpCiAgICAgICAgIG9iamVj
dFR5cGVDb3VudHMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgaXQu
a2V5KSwganNOdW1iZXIoaXQudmFsdWUpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGVhcFNpemUiKSwganNOdW1iZXIodm0uaGVh
cC5zaXplKCkpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImhlYXBDYXBhY2l0eSIpLCBqc051bWJlcih2bS5oZWFwLmNhcGFjaXR5KCkpKTsK
LSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImV4
dHJhTWVtb3J5U2l6ZSIpLCBqc051bWJlcih2bS5oZWFwLmV4dHJhTWVtb3J5U2l6ZSgpKSk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYmpl
Y3RDb3VudCIpLCBqc051bWJlcih2bS5oZWFwLm9iamVjdENvdW50KCkpKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb3RlY3RlZE9iamVj
dENvdW50IiksIGpzTnVtYmVyKHZtLmhlYXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKSkpOwotICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFs
T2JqZWN0Q291bnQiKSwganNOdW1iZXIodm0uaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKSk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90
ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCIpLCBqc051bWJlcih2bS5oZWFwLnByb3RlY3RlZEdsb2Jh
bE9iamVjdENvdW50KCkpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm9iamVjdFR5cGVDb3VudHMiKSwgb2JqZWN0VHlwZUNvdW50cyk7Cisg
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJoZWFw
U2l6ZSJfcyksIGpzTnVtYmVyKHZtLmhlYXAuc2l6ZSgpKSk7CisgICAgb2JqZWN0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJoZWFwQ2FwYWNpdHkiX3MpLCBqc051
bWJlcih2bS5oZWFwLmNhcGFjaXR5KCkpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImV4dHJhTWVtb3J5U2l6ZSJfcyksIGpzTnVtYmVyKHZt
LmhlYXAuZXh0cmFNZW1vcnlTaXplKCkpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9iamVjdENvdW50Il9zKSwganNOdW1iZXIodm0uaGVh
cC5vYmplY3RDb3VudCgpKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwcm90ZWN0ZWRPYmplY3RDb3VudCJfcyksIGpzTnVtYmVyKHZtLmhl
YXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKSkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsT2JqZWN0Q291bnQiX3MpLCBqc051bWJl
cih2bS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50
Il9zKSwganNOdW1iZXIodm0uaGVhcC5wcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpKSk7Cisg
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYmpl
Y3RUeXBlQ291bnRzIl9zKSwgb2JqZWN0VHlwZUNvdW50cyk7CiAKICAgICByZXR1cm4gdG9SZWYo
b2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5k
ZXggNDVkY2QyMzY0YmE0ZWNiYTc1ODYwNjhlYjVhNDc2NzBlYmY1MjI3MC4uY2M5MmQxMWFkNWMx
ODcyMTc3ODgwZmNhMzEzMjZmMGY1MTE3YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1bnNpZ25l
ZCBwYQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIHN0
YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7Ci0gICAg
SWRlbnRpZmllciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmdm0pIDogSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImFub255bW91cyIpOworICAgIElkZW50aWZpZXIgbmFtZUlE
ID0gbmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJnZtKSA6IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJhbm9ueW1vdXMiX3MpOwogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlckNvdW50OyBpKyspCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuY3BwCmluZGV4IDdm
OGFlNGYxNDBlZTc0M2QwZmU1ZjM5NTQzODdiZTNjZmQ2ZDVmMGMuLmI4YjRmZDI5MDlhMDY2Njdl
MGY4MWUzYjUzMThiZjIwMWZiOThiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuY3BwCkBAIC01MywxMCArNTMsMTAgQEAgU3ltYm9sSW1wbDo6
U3RhdGljU3ltYm9sSW1wbCBwb2x5UHJvdG9Qcml2YXRlTmFtZSB7ICJQb2x5UHJvdG8iLCBTeW1i
b2xJbXBsOjpzX2YKIAogfSAvLyBuYW1lc3BhY2UgU3ltYm9scwogCi0jZGVmaW5lIElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FU19JTl9KU0MobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICNuYW1lKSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX05BTUVT
X0lOX0pTQyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
I25hbWUgIiJfcykpCiAjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TWU1CT0xTX0lOX0pTQyhu
YW1lKSBcCiAgICAgLCBtXyMjbmFtZSMjU3ltYm9sKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihKU0M6OlN5bWJvbHM6Om5hbWUjI1N5bWJvbCkp
KSBcCi0gICAgLCBtXyMjbmFtZSMjU3ltYm9sUHJpdmF0ZUlkZW50aWZpZXIoSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCisgICAgLCBtXyMjbmFtZSMjU3ltYm9sUHJpdmF0
ZUlkZW50aWZpZXIoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSAiIl9zKSkK
IAogI2RlZmluZSBJTklUSUFMSVpFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIFwKICAg
ICBkbyB7IFwKQEAgLTc5LDcgKzc5LDcgQEAgQnVpbHRpbk5hbWVzOjpCdWlsdGluTmFtZXMoVk0m
IHZtLCBDb21tb25JZGVudGlmaWVycyogY29tbW9uSWRlbnRpZmllcnMpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX0JVSUxU
SU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfQlVJTFRJTl9TWU1CT0xTX0lOX0pTQykKICAg
ICAsIG1faW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihTeW1ib2xzOjppbnRsTGVnYWN5Q29uc3Ry
dWN0ZWRTeW1ib2wpKSkKLSAgICAsIG1fZG9sbGFyVk1OYW1lKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICIkdm0iKSkKKyAgICAsIG1fZG9sbGFyVk1OYW1lKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICIkdm0iX3MpKQogICAgICwgbV9kb2xsYXJWTVByaXZhdGVOYW1lKElkZW50aWZpZXI6
OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oU3ltYm9sczo6ZG9sbGFyVk1Q
cml2YXRlTmFtZSkpKQogICAgICwgbV9wb2x5UHJvdG9Qcml2YXRlTmFtZShJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCAmc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KFN5bWJvbHM6OnBvbHlQcm90b1By
aXZhdGVOYW1lKSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpblV0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
blV0aWxzLmgKaW5kZXggNDAxYzJmOTM3ZWI1NGExMjMyMDBiMzIwNzcwMzIzNDFmNjc1MTU3ZS4u
NmRkZjE4NGQxNmU4OGI4MTBhOTcyODYyYTE5OWE4ZTc5N2U3NDQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5VdGlscy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaApAQCAtMzEsNyArMzEsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMobmFt
ZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSksIG1f
IyNuYW1lIyNQcml2YXRlTmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21VaWQoSlNDOjpQcml2YXRl
TmFtZShKU0M6OlByaXZhdGVOYW1lOjpQcml2YXRlU3ltYm9sLCAjbmFtZSAiIl9zKSkpCisjZGVm
aW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUgIiJfcykpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUo
SlNDOjpJZGVudGlmaWVyOjpmcm9tVWlkKEpTQzo6UHJpdmF0ZU5hbWUoSlNDOjpQcml2YXRlTmFt
ZTo6UHJpdmF0ZVN5bWJvbCwgI25hbWUgIiJfcykpKQogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
TkFNRVMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBKU0M6Oklk
ZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOwogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBu
YW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2R5bmJlbmNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9keW5iZW5jaC5jcHAKaW5kZXggZTk2ZGIxYzhiMjg1NTdhMTU4OGY3NzM0OGQzYzQ5MjZj
OTg4MzAyMC4uN2QwOTk0MGJjNGU2MTI3NmVhMWI5MWRkYjI4OTI1MDUwZjA1NWI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2R5bmJlbmNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZHluYmVuY2guY3BwCkBAIC05OCw4ICs5OCw4IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0KICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpz
TnVsbCgpKSk7CiAKLSAgICAgICAgSWRlbnRpZmllciBpZGVudEYgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZiIpOwotICAgICAgICBJZGVudGlmaWVyIGlkZW50RyA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJnIik7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRGID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImYiX3MpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50RyA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnIl9zKTsKIAogICAgICAgICBTdHJ1Y3R1cmUq
IG9iamVjdFN0cnVjdHVyZSA9CiAgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSwg
Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDMwYTJiMDFlYTgwYjNlZTQ5YWVjMzlkNzMxZDZjNDQ5
MDM3MDllMDkuLmYzNDE1NDZhNDhkN2QyYmI4MjA5YWJjZTMyZmRkNzUwNTRhYWU4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCkBAIC0yNjYsMjAgKzI2NiwyMCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bAogCiAgICAgU3RyaW5nIHNjcmlwdElEID0gU3RyaW5nOjpudW1iZXIoc291cmNlQ29kZS0+cHJv
dmlkZXIoKS0+YXNJRCgpKTsKICAgICBKU09iamVjdCogbG9jYXRpb24gPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgIGxvY2F0aW9uLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJzY3JpcHRJZCIpLCBqc1N0cmluZyh2bSwgc2NyaXB0SUQp
KTsKLSAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibGluZU51bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7Ci0gICAgbG9jYXRpb24tPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbHVtbk51bWJlciIpLCBq
c051bWJlcihjb2x1bW5OdW1iZXIpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2NyaXB0SWQiX3MpLCBqc1N0cmluZyh2bSwgc2NyaXB0
SUQpKTsKKyAgICBsb2NhdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibGluZU51bWJlciJfcyksIGpzTnVtYmVyKGxpbmVOdW1iZXIpKTsKKyAgICBsb2NhdGlv
bi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29sdW1uTnVtYmVy
Il9zKSwganNOdW1iZXIoY29sdW1uTnVtYmVyKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxv
Y2F0aW9uIl9zKSwgbG9jYXRpb24pOwogCiAgICAgU3RyaW5nIG5hbWUgPSBmdW5jdGlvbi0+bmFt
ZSh2bSk7CiAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiksIGpzU3RyaW5nKHZtLCBu
YW1lKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibmFtZSJfcyksIGpzU3RyaW5nKHZtLCBuYW1lKSk7CiAKICAgICBTdHJpbmcgZGlz
cGxheU5hbWUgPSBmdW5jdGlvbi0+ZGlzcGxheU5hbWUodm0pOwogICAgIGlmICghZGlzcGxheU5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRpc3BsYXlOYW1lIiksIGpzU3RyaW5nKHZtLCBkaXNwbGF5TmFtZSkp
OworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImRpc3BsYXlOYW1lIl9zKSwganNTdHJpbmcodm0sIGRpc3BsYXlOYW1lKSk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMjg4LDggKzI4OCw4IEBAIHN0YXRpYyBKU09iamVjdCogY29u
c3RydWN0SW50ZXJuYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBqc1N0cmlu
Zyh2bSwgbmFtZSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidmFsdWUiKSwgdmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyksIGpzU3RyaW5nKHZtLCBuYW1lKSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2
YWx1ZSJfcyksIHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00ODgsOCArNDg4
LDggQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6d2Vha01hcEVudHJpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKIAogICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGJ1ZmZlci5zaXplKCk7IGluZGV4ICs9IDIpIHsKICAgICAgICAgSlNPYmpl
Y3QqIGVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
ZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtleSIpLCBi
dWZmZXIuYXQoaW5kZXgpKTsKLSAgICAgICAgZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIiksIGJ1ZmZlci5hdChpbmRleCArIDEpKTsKKyAgICAg
ICAgZW50cnktPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImtleSJf
cyksIGJ1ZmZlci5hdChpbmRleCkpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpLCBidWZmZXIuYXQoaW5kZXggKyAxKSk7
CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4IC8gMiwg
ZW50cnkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwog
ICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp3
ZWFrU2V0RW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnVmZmVyLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBKU09iamVjdCogZW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwotICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidmFsdWUiKSwgYnVmZmVyLmF0KGluZGV4KSk7CisgICAgICAgIGVudHJ5LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSJfcyksIGJ1ZmZlci5h
dChpbmRleCkpOwogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
bmRleCwgZW50cnkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwogICAgIH0KQEAgLTYxOCw3ICs2MTgsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAg
IGVudHJ5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSIp
LCBuZXh0VmFsdWUpOworICAgICAgICBlbnRyeS0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpLCBuZXh0VmFsdWUpOwogICAgICAgICBhcnJheS0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCBlbnRyeSk7CiAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcAppbmRleCA5NTU2OWUwYmNiZDQyNTk1M2Y1YjYyY2RjZDE5MmFhMmRkNzEw
YzliLi40ODA2MzYxNzMzN2VjY2RiOWMwYTAxNDdiNGU2YTI5NTYzMDA2NzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwCkBAIC0xMTksOSArMTE5LDkgQEAgc3RhdGljIEpTVmFsdWUgdmFsdWVGb3JTY29w
ZUxvY2F0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IERlYnVnZ2UKICAg
ICAvLyBEZWJ1Z2dlci5Mb2NhdGlvbiBwcm90b2NvbCBvYmplY3QuCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic2NyaXB0SWQiKSwganNTdHJpbmcodm0sIFN0cmluZzo6bnVtYmVy
KGxvY2F0aW9uLnNvdXJjZUlEKSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibGluZU51bWJlciIpLCBqc051bWJlcihsb2NhdGlvbi5saW5l
KSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjb2x1bW5OdW1iZXIiKSwganNOdW1iZXIobG9jYXRpb24uY29sdW1uKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzY3JpcHRJZCJfcyks
IGpzU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcihsb2NhdGlvbi5zb3VyY2VJRCkpKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxpbmVOdW1i
ZXIiX3MpLCBqc051bWJlcihsb2NhdGlvbi5saW5lKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb2x1bW5OdW1iZXIiX3MpLCBqc051bWJl
cihsb2NhdGlvbi5jb2x1bW4pKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDEsOSAr
MTQxLDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlRGVzY3JpcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgZm9yIChEZWJ1Z2dlclNjb3BlOjpp
dGVyYXRvciBpdGVyID0gc2NvcGVDaGFpbi0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGl0ZXIuZ2V0KCk7CiAgICAgICAgIEpT
T2JqZWN0KiBkZXNjcmlwdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ0eXBlIiksIHZhbHVlRm9yU2NvcGVUeXBlKHNjb3BlKSk7Ci0gICAgICAgIGRlc2Ny
aXB0aW9uLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiks
IGpzU3RyaW5nKHZtLCBzY29wZS0+bmFtZSgpKSk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2NhdGlvbiIpLCB2YWx1ZUZv
clNjb3BlTG9jYXRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZS0+bG9jYXRpb24oKSkpOworICAgICAg
ICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dHlwZSJfcyksIHZhbHVlRm9yU2NvcGVUeXBlKHNjb3BlKSk7CisgICAgICAgIGRlc2NyaXB0aW9u
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwganNT
dHJpbmcodm0sIHNjb3BlLT5uYW1lKCkpKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvY2F0aW9uIl9zKSwgdmFsdWVGb3JT
Y29wZUxvY2F0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUtPmxvY2F0aW9uKCkpKTsKICAgICAgICAg
YXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgZGVzY3JpcHRpb24p
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNDFhY2M4NTdjNjc2OGM5ZjZiYTk4MzBhNzFh
YTAyZmE5MzQ3NmY5YS4uNjA3ODY4OGUxYjNlZTk2NmVlMTQwMjJmMGYzYzExZGU0MGNjNGQ0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgc3RhdGljIGJvb2wgZXh0
cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAg
ICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBT
aG91bGQgbm90IG5lZWQgdG8gZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25z
Ci0gICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxpbmUiKSk7Ci0gICAgSlNWYWx1ZSBjb2x1bW5W
YWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY29sdW1uIikpOwotICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRp
b25PYmplY3QtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNvdXJj
ZVVSTCIpKTsKKyAgICBKU1ZhbHVlIGxpbmVWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGluZSJfcykpOworICAgIEpTVmFs
dWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNvbHVtbiJfcykpOworICAgIEpTVmFsdWUgc291cmNlVVJMVmFs
dWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInNvdXJjZVVSTCJfcykpOwogICAgIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgaWYgKGxpbmVWYWx1ZSAmJiBsaW5lVmFsdWUuaXNOdW1iZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRp
dEFnZW50LmNwcAppbmRleCAzMGFjYWYzMzQ1ODA1Mzc0ZDgxZGJiMGIxYzVkNDlmZjdhZjBhNmUx
Li44MmNjNmEwZTM2OGMyNWI4MDhhODQ1MTI2YTNkNjNlMzEwNWY0YzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgSW5zcGVjdG9yQXVkaXRB
Z2VudDo6cG9wdWxhdGVBdWRpdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBhdWRpdE9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJWZXJzaW9uIiksIEpTQzo6SlNWYWx1ZShQcm90
b2NvbDo6QXVkaXQ6OlZFUlNJT04pKTsKKyAgICBhdWRpdE9iamVjdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJWZXJzaW9uIl9zKSwgSlNDOjpKU1ZhbHVl
KFByb3RvY29sOjpBdWRpdDo6VkVSU0lPTikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMTI2MzY5Y2FiMDcwZGEyMWU2NDhiOGI1ZWVkOWFk
NjcxMjFlYmVkOS4uMTkyNTEwN2M4ODhhNWRkYmY3YzA0NDFjZTI2YjNlZGQ0OGI5MWU3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU3MiwxMiArNTcyLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNhbXBs
aW5nRmxhZ3MsIDEpOwogI2VuZGlmCiAKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
dm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJPU1JFeGl0IiksIDAsIGZ1bmN0
aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0pOwotICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImlzRmluYWxUaWVyIiksIDAsIGZ1bmN0aW9uRmFsc2UsIElzRmluYWxUaWVySW50cmluc2ljLCBE
b250RW51bSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJlZGljdEludDMyIiksIDAsIGZ1bmN0aW9uVW5kZWZp
bmVkMiwgU2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywgRG9udEVudW0pOwotICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImlzSW50MzIiKSwgMCwgZnVuY3Rpb25Jc0ludDMyLCBDaGVja0ludDMySW50cmluc2lj
LCBEb250RW51bSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaXNQdXJlTmFOIiksIDAsIGZ1bmN0aW9uSXNQdXJl
TmFOLCBDaGVja0ludDMySW50cmluc2ljLCBEb250RW51bSk7Ci0gICAgICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlhdElu
dDUyIiksIDAsIGZ1bmN0aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNpYywgRG9udEVudW0p
OworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIk9TUkV4aXQiX3MpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9TUkV4
aXRJbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
dm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpc0ZpbmFsVGllciJfcyksIDAs
IGZ1bmN0aW9uRmFsc2UsIElzRmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSk7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicHJlZGljdEludDMyIl9zKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhl
YXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaXNJbnQzMiJf
cyksIDAsIGZ1bmN0aW9uSXNJbnQzMiwgQ2hlY2tJbnQzMkludHJpbnNpYywgRG9udEVudW0pOwor
ICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImlzUHVyZU5hTiJfcyksIDAsIGZ1bmN0aW9uSXNQdXJlTmFOLCBDaGVja0lu
dDMySW50cmluc2ljLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlhdEludDUyIl9zKSwgMCwg
ZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSk7CiAgICAgICAg
IAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImVmZmVjdGZ1bDQyIiwgZnVuY3Rpb25FZmZlY3Rm
dWw0MiwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVu
Y3Rpb25NYWtlTWFzcXVlcmFkZXIsIDApOwpAQCAtNjM0LDE2ICs2MzQsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheSh0aGlzLCBu
dWxscHRyKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNp
emUoKTsgKytpKQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleCh0aGlzLCBp
LCBqc1N0cmluZyh2bSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwgYXJyYXksIERvbnRFbnVt
KTsKKyAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImFyZ3VtZW50cyJfcyksIGFycmF5LCBEb250RW51bSk7CiAgICAgICAgIH0KIAotICAgICAgICBw
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25zb2xlIiksIGpzVW5k
ZWZpbmVkKCksIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY29uc29sZSJfcyksIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtKTsKICAg
ICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogcGxhaW5PYmplY3RTdHJ1Y3R1cmUgPSBKU0ZpbmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG9iamVjdFByb3RvdHlwZSgpLCAwKTsK
ICAgICAgICAgCiAgICAgICAgIEpTT2JqZWN0KiBkb2xsYXIgPSBKU0ZpbmFsT2JqZWN0OjpjcmVh
dGUodm0sIHBsYWluT2JqZWN0U3RydWN0dXJlKTsKLSAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJCIpLCBkb2xsYXIsIERvbnRFbnVtKTsKLSAgICAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJDI2MiIpLCBkb2xsYXIs
IERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiJCJfcyksIGRvbGxhciwgRG9udEVudW0pOworICAgICAgICBwdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkMjYyIl9zKSwgZG9sbGFyLCBEb250RW51bSk7CiAg
ICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiY3JlYXRlUmVhbG0iLCBm
dW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtLCAwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImRl
dGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyLCAxLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKQEAgLTY1MywxNCArNjUz
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCBkb2xsYXIsICJnbG9iYWxP
YmplY3RGb3IiLCBmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgMSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCBkb2xsYXIsICJpc1JlbW90ZUZ1bmN0aW9uIiwgZnVuY3Rpb25Eb2xsYXJJc1JlbW90ZUZ1
bmN0aW9uLCAxLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUp
KTsKICAgICAgICAgCi0gICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZ2xvYmFsIiksIGdsb2JhbFRoaXMoKSk7Ci0gICAgICAgIGRvbGxhci0+
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJ
c0hUTUxEREEiKSwKKyAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJnbG9iYWwiX3MpLCBnbG9iYWxUaGlzKCkpOworICAgICAgICBkb2xsYXIt
PnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
SXNIVE1MRERBIl9zKSwKICAgICAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBhY2Nlc3Nvck1ha2VNYXNxdWVyYWRlciwgbnVsbHB0ciksCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKQogICAgICAgICAp
OwogCiAgICAgICAgIEpTT2JqZWN0KiBhZ2VudCA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZSh2bSwg
cGxhaW5PYmplY3RTdHJ1Y3R1cmUpOwotICAgICAgICBkb2xsYXItPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFnZW50IiksIGFnZW50KTsKKyAgICAgICAgZG9sbGFy
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhZ2VudCJfcyksIGFn
ZW50KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSB0ZXN0MjYyIElOVEVSUFJFVElORy5tZCBk
b2N1bWVudCBzYXlzIHRoYXQgc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGp1c3QgaW4gdGhl
IG1haW4KICAgICAgICAgLy8gdGhyZWFkIGFuZCBzb21lIGFyZSBpbiB0aGUgb3RoZXIgdGhyZWFk
cy4gV2UganVzdCBwdXQgdGhlbSBpbiBhbGwgdGhyZWFkcy4KQEAgLTY5MSwxMyArNjkxLDEzIEBA
IHByaXZhdGU6CiAgICAgICAgIGlmIChPcHRpb25zOjpleHBvc2VDdXN0b21TZXR0ZXJzT25HbG9i
YWxPYmplY3RGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBD
dXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbSA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBudWxscHRyLCB0ZXN0Q3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgICAgICAgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0Q3Vz
dG9tQWNjZXNzb3JTZXR0ZXIiKTsKKyAgICAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEN1c3RvbUFjY2Vzc29yU2V0dGVy
Il9zKTsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
aWRlbnRpZmllciwgY3VzdG9tLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
cik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDdXN0
b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbSA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBu
dWxscHRyLCB0ZXN0Q3VzdG9tVmFsdWVTZXR0ZXIpOwotICAgICAgICAgICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0Q3VzdG9tVmFs
dWVTZXR0ZXIiKTsKKyAgICAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEN1c3RvbVZhbHVlU2V0dGVyIl9zKTsKICAgICAg
ICAgICAgICAgICB0aGlzLT5wdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgaWRlbnRpZmllciwg
Y3VzdG9tLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTEyNDIsNyArMTI0Miw3IEBAIEpTT2JqZWN0KiBHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0
KiBnCiAgICAgSlNPYmplY3QqIG1ldGFQcm9wZXJ0aWVzID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
dm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIG1ldGFQcm9wZXJ0aWVz
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWxlbmFtZSIpLCBr
ZXkpOworICAgIG1ldGFQcm9wZXJ0aWVzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmaWxlbmFtZSJfcyksIGtleSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4gbWV0YVByb3BlcnRpZXM7CkBAIC0yMDMwLDcg
KzIwMzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJDcmVhdGVS
ZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBHbG9iYWxPYmplY3QqIHJlc3VsdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBW
ZWN0b3I8U3RyaW5nPigpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdC0+Z2V0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJCIpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQtPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIiQiX3MpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bkRvbGxhckV2YWxTY3JpcHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC0yMDQxLDcgKzIwNDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdAogICAgIFN0cmluZyBzb3VyY2VDb2RlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIEpTVmFsdWUgZ2xvYmFsID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Z2xvYmFsIikpOworICAgIEpTVmFsdWUgZ2xvYmFsID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5n
ZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIl9zKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
d2hpbGUgKGdsb2JhbC5pbmhlcml0czxKU1Byb3h5Pih2bSkpCiAgICAgICAgIGdsb2JhbCA9IGpz
Q2FzdDxKU1Byb3h5Kj4oZ2xvYmFsKS0+dGFyZ2V0KCk7CkBAIC0yMzcxLDcgKzIzNzEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25KU0NPcHRpb25zLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU09iamVjdCogb3B0aW9uc09iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAjZGVmaW5lIFJFQURfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgYWRkT3B0aW9uKHZtLCBvcHRp
b25zT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZV8pLCBPcHRpb25zOjpu
YW1lXygpKTsKKyAgICBhZGRPcHRpb24odm0sIG9wdGlvbnNPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICNuYW1lXyAiIl9zKSwgT3B0aW9uczo6bmFtZV8oKSk7CiAgICAgRk9SX0VB
Q0hfSlNDX09QVElPTihSRUFEX09QVElPTikKICN1bmRlZiBSRUFEX09QVElPTgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob3B0aW9uc09iamVjdCk7CkBAIC0zMDUwLDEzICszMDUwLDEzIEBA
IHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgZXhjZXB0aW9uKQogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246IDxv
dXQgb2YgbWVtb3J5IHdoaWxlIGV4dHJhY3RpbmcgZXhjZXB0aW9uIHN0cmluZz5cbiIpOwogCi0g
ICAgSWRlbnRpZmllciBuYW1lSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIp
OworICAgIElkZW50aWZpZXIgbmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5h
bWUiX3MpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIElkZW50aWZpZXIgZmlsZU5hbWVJ
RCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzb3VyY2VVUkwiKTsKKyAgICBJZGVudGlm
aWVyIGZpbGVOYW1lSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic291cmNlVVJMIl9z
KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBJZGVudGlmaWVyIGxpbmVOdW1iZXJJRCA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsaW5lIik7CisgICAgSWRlbnRpZmllciBsaW5l
TnVtYmVySUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGluZSJfcyk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0YWNrIik7CisgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInN0YWNrIl9zKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKIAog
ICAgIEpTVmFsdWUgbmFtZVZhbHVlID0gZXhjZXB0aW9uLmdldChnbG9iYWxPYmplY3QsIG5hbWVJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAKaW5kZXggZTkzODJkNDk0MzJjOTJlYzg1ZTMzMWRkNWJlMzMxNTBhMzZj
ZjE5Yi4uYTg4MTYxYjJmNTIwZjgzNmQ0ZTRmZWFkNjlhZWMyOGRiNDVjOTZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShKU0dsb2JhbE9iCiAgICAgSlNW
YWx1ZSBtb2R1bGVOYW1lVmFsdWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVOYW1l
KTsKICAgICBKU1ZhbHVlIGVudHJ5ID0gbV9kZXBlbmRlbmNpZXNNYXAtPkpTTWFwOjpnZXQoZ2xv
YmFsT2JqZWN0LCBtb2R1bGVOYW1lVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZW50cnkuZ2V0QXM8
QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtb2R1bGUiKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZW50cnku
Z2V0QXM8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtb2R1bGUiX3MpKSk7CiB9CiAKIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNv
cmQ6OnJlc29sdmVJbXBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IGUyZjgxNzU4MWNjMTgwNmU4Nzg0
M2Q1ZDhmOTk1NDMxMGY2OTJmN2MuLjJkNWFhMjY3MTYxYmYxYjI1NjUxNWE0NzFlNGIwMzg3NjQ0
NGEzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQXRvbWljc09iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CiAgICAgCiAjZGVmaW5lIFBVVF9ESVJFQ1RfTkFUSVZFX0ZVTkMo
bG93ZXJOYW1lLCB1cHBlck5hbWUsIGNvdW50KSBcCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAjbG93ZXJOYW1lKSwgY291bnQsIGF0b21pY3NGdW5jICMjIHVwcGVyTmFtZSwgQXRv
bWljcyAjIyB1cHBlck5hbWUgIyMgSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAjbG93ZXJOYW1lICIiX3MpLCBjb3VudCwgYXRvbWljc0Z1bmMgIyMgdXBwZXJOYW1lLCBB
dG9taWNzICMjIHVwcGVyTmFtZSAjIyBJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBGT1JfRUFDSF9BVE9NSUNTX0ZVTkMo
UFVUX0RJUkVDVF9OQVRJVkVfRlVOQykKICN1bmRlZiBQVVRfRElSRUNUX05BVElWRV9GVU5DCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAppbmRleCAxNjk1MTJmYzQwNmRjMWYwZjE2N2MyODI2YjkwN2RjZWExNThkOWI5Li42NGI2
NzdlYjAwYWY3MjJiYmJjOWUyNjlhYzlhOTg0YzRlYTJkMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNiwxOCAr
MjYsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJU
WV9OQU1FKG5hbWUpICwgbmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCi0j
ZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQorI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05B
TUUobmFtZSkgLCBuYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lICIiX3MpKQor
I2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICNuYW1lICIiX3MpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZB
VEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQ
cml2YXRlTmFtZSgpKQogI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5
bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCi0jZGVmaW5lIElOSVRJQUxJWkVf
UFJJVkFURV9GSUVMRF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICIjIiAjbmFtZSkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9G
SUVMRF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICIjIiAjbmFtZSAiIl9zKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50
aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKICAgICAsIGVtcHR5SWRlbnRp
ZmllcihJZGVudGlmaWVyOjpFbXB0eUlkZW50aWZpZXIpCi0gICAgLCB1bmRlcnNjb3JlUHJvdG8o
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQotICAgICwgdXNlU3RyaWN0
SWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlIHN0cmljdCIpKQotICAg
ICwgdGltZXNJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIqIikpCisgICAg
LCB1bmRlcnNjb3JlUHJvdG8oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyJf
cykpCisgICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2Ugc3RyaWN0Il9zKSkKKyAgICAsIHRpbWVzSWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiKiJfcykpCiAgICAgLCBtX2J1aWx0aW5OYW1lcyhtYWtlVW5pcXVlPEJ1aWx0
aW5OYW1lcz4odm0sIHRoaXMpKQogICAgIEpTQ19QQVJTRVJfUFJJVkFURV9OQU1FUyhJTklUSUFM
SVpFX1BSSVZBVEVfTkFNRSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09S
RChJTklUSUFMSVpFX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAKaW5kZXgg
OGEwYzExODE5NjYyMmUxNjZmYzgxYWFiY2Q5OGVhNzg4YTFlY2Q1ZS4uNzcyYzk0NzM0OGQwZjY0
NzBkOTIyNGJhY2U0NzdiMjU5YTNmZWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNw
cApAQCAtNDMsOCArNDMsOCBAQCB2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CiAKICAgICAvLyBXZSBjYW4ndCBtYWtlIHRoaXMgYSBwcm9w
ZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBhIHJlc2V2ZXJlZCB3b3JkIGluIEMrKy4uLgotICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJyZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJlZ2lzdGVy
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0
cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIl9zKSwgcHJvdG9GdW5jRmluYWxp
emF0aW9uUmVnaXN0cnlSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlZ2lzdGVyIl9zKSwgcHJv
dG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX1RPX1NUUklOR19U
QUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggM2NmOGFlYzE1ZDYyODA3ZmI3NTFiMDJlY2Q3Mjg4
YTkxNGJlMmY5YS4uZDg1ZmEwNjIwYjRhZDJjMDM0N2ZkN2I1MWMwNGU3Y2E2MTU4NTFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTM3LDYg
KzM3LDE1IEBAIFJlZjxBdG9tU3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNJiB2bSwgY29u
c3QgY2hhciogYykKICAgICByZXR1cm4gKkF0b21TdHJpbmdJbXBsOjphZGQoYyk7CiB9CiAKKwor
UmVmPEF0b21TdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGRMaXRlcmFsKFZNJiB2bSwgY29uc3Qg
Y2hhciogbGl0ZXJhbCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoID09IDEpCisg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGxp
dGVyYWxbMF0pOworCisgICAgcmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGRMaXRlcmFsKGxpdGVy
YWwsIGxlbmd0aCk7Cit9CisKIFJlZjxBdG9tU3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChW
TSYgdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGggPT0g
MSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDFj
OWZlNTU2NTAxZjBhMmE3Y2YwZDA4ZTExODJiNjU5N2MwMWMwZmYuLjhkNDgwYmJmMzJjN2NlNjky
ODk3ZjQxZjIyN2E3NmI4Mzc3N2RmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmgKQEAgLTEwOSw5ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbVVp
ZCBrZWVwcyBzeW1ib2wtbmVzcyBvZiBwcm92aWRlZCBTdHJpbmdJbXBsKiB3aGlsZSBmcm9tU3Ry
aW5nIGRpc2NhcmRzIGl0LgogICAgIC8vIFVzZSBmcm9tVWlkIHdoZW4gY29uc3RydWN0aW5nIElk
ZW50aWZpZXIgZnJvbSBTdHJpbmdJbXBsKiB3aGljaCBtYXkgcmVwcmVzZW50IHN5bWJvbHMuCiAK
LSAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgdGVtcGxh
dGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7CiAg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbCk7CiAgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIGNvbnN0IExDaGFyKiwgaW50IGxlbmd0
aCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCk7CkBAIC0xMjMsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciopOwogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8TENoYXI+JiBjaGFyYWN0ZXJzKSB7
IHJldHVybiBmcm9tU3RyaW5nKHZtLCBjaGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXpl
KCkpOyB9CiAKKyAgICAvLyBGSVhNRTogUG9ydCBjYWxsIHNpdGVzIHRvIGZyb21TdHJpbmcoQVND
SUlMaXRlcmFsKSBhbmQgcmVtb3ZlIHRoaXMuCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50PgorICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7CisKICAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElk
ZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYpOwogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21VaWQoU3ltYm9sSW1wbCYpOwpAQCAtMTczLDYgKzE3NCw3IEBAIHByaXZhdGU6CiAK
ICAgICBJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9z
dHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRv
bSgpKTsgfQogICAgIElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0
aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwo
KS0+aXNBdG9tKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyKFZNJiB2bSwgQVND
SUlMaXRlcmFsIGxpdGVyYWwpIDogbV9zdHJpbmcoYWRkTGl0ZXJhbCh2bSwgbGl0ZXJhbC5jaGFy
YWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlz
QXRvbSgpKTsgfQogICAgIElkZW50aWZpZXIoVk0mLCBBdG9tU3RyaW5nSW1wbCopOwogICAgIElk
ZW50aWZpZXIoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgSWRlbnRpZmllcihWTSYgdm0s
IGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwoKSkp
IHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CkBAIC0xOTcsNiArMTk5LDcg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQUxXQVlTX0lOTElORSBzdGF0
aWMgY29uc3RleHByIGJvb2wgY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFQpOwogCiAgICAg
c3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkKFZNJiwgU3RyaW5nSW1wbCopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZExpdGVyYWwoVk0m
LCBjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50QXRvbVN0cmluZ1RhYmxlKFZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGlu
ZXMuaAppbmRleCBhNTcyZjU3YTVjOWNmMzg1MThlMGZiMmVhNWMyODI1NWU4NjBiNDZkLi43NWNi
ZDYwMmU1Yjg4N2FlNDlhNDk2NzJhMzI3MDQ5NzIwZjg2NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTg2LDkgKzg2LDkg
QEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWMKICAgICByZXR1cm4gSWRlbnRpZmllcigmdm0sIGNo
YXJhY3RlcnMpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KFZNJiB2bSwgQVNDSUlMaXRlcmFsIHMpCitBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIEFTQ0lJTGl0ZXJhbCBzKQogewotICAgIHJldHVybiBJ
ZGVudGlmaWVyKHZtLCBTdHJpbmcocykpOworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzKTsK
IH0KIAogaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNv
bnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcAppbmRleCBlYjNiZjkyZmNjNDc2NDA3NGJmZTMyNDVhNzU4MTk3ZDI2
Njg5MDgyLi5lMTk2ZDZiYzJhM2FlZDFiOWQxYmVhMDJlNTM4NWZiZmRkNDZmMWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtNzU3LDcgKzc1
Nyw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIH0KIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlyZWN0aW9uIiksIGxheW91dFN0cmluZyk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkaXJlY3Rpb24i
X3MpLCBsYXlvdXRTdHJpbmcpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg0MCw5ICs4
NDAsOSBAQCBKU09iamVjdCogSW50bExvY2FsZTo6d2Vla0luZm8oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
SlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0g
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaXJz
dERheSIpLCBqc051bWJlcihjb252ZXJ0VUNhbGVuZGFyRGF5c09mV2Vla1RvTW9uZGF5QmFzZWRE
YXkoZmlyc3REYXlPZldlZWspKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ3ZWVrZW5kIiksIHdlZWtlbmRBcnJheSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbWFsRGF5cyIp
LCBqc051bWJlcihtaW5pbWFsRGF5cykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3REYXkiX3MpLCBqc051bWJlcihjb252ZXJ0VUNh
bGVuZGFyRGF5c09mV2Vla1RvTW9uZGF5QmFzZWREYXkoZmlyc3REYXlPZldlZWspKSk7CisgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ3ZWVrZW5k
Il9zKSwgd2Vla2VuZEFycmF5KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltYWxEYXlzIl9zKSwganNOdW1iZXIobWluaW1hbERheXMp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGNhMDQyNDk4NTAxZjI2ODA4N2Y0
NDUxZWJmZWU3MjljYWVkOTEzOGMuLjlkN2FhNWViOGM1MmY1YjY5YjU0N2Y1YTMyOTkyOWM0YjA2
ZDc3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBtX3N0eWxlID0gaW50bE9wdGlvbjxTdHlsZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyB7ICJkZWNpbWFsIl9zLCBTdHlsZTo6RGVjaW1hbCB9
LCB7ICJwZXJjZW50Il9zLCBTdHlsZTo6UGVyY2VudCB9LCB7ICJjdXJyZW5jeSJfcywgU3R5bGU6
OkN1cnJlbmN5IH0sIHsgInVuaXQiX3MsIFN0eWxlOjpVbml0IH0gfSwgInN0eWxlIG11c3QgYmUg
ZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRc
IiJfcywgU3R5bGU6OkRlY2ltYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAKLSAgICBTdHJpbmcgY3VycmVuY3kgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIHsg
fSwgQVNDSUlMaXRlcmFsOjpudWxsKCksIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpKTsKKyAgICBTdHJp
bmcgY3VycmVuY3kgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5Il9zKSwgeyB9LCBBU0NJSUxpdGVyYWw6
Om51bGwoKSwgQVNDSUlMaXRlcmFsOjpudWxsKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICBp
ZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKQEAgLTM0OSwxMyArMzQ5
LDEzIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0g
Y29tcHV0ZUN1cnJlbmN5RGlnaXRzKGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBtX2N1cnJlbmN5
RGlzcGxheSA9IGludGxPcHRpb248Q3VycmVuY3lEaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyB7ICJj
b2RlIl9zLCBDdXJyZW5jeURpc3BsYXk6OkNvZGUgfSwgeyAic3ltYm9sIl9zLCBDdXJyZW5jeURp
c3BsYXk6OlN5bWJvbCB9LCB7ICJuYXJyb3dTeW1ib2wiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFy
cm93U3ltYm9sIH0sIHsgIm5hbWUiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFtZSB9IH0sICJjdXJy
ZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9yIFwibmFt
ZVwiIl9zLCBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbCk7CisgICAgbV9jdXJyZW5jeURpc3BsYXkg
PSBpbnRsT3B0aW9uPEN1cnJlbmN5RGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5Il9zKSwgeyB7ICJjb2RlIl9z
LCBDdXJyZW5jeURpc3BsYXk6OkNvZGUgfSwgeyAic3ltYm9sIl9zLCBDdXJyZW5jeURpc3BsYXk6
OlN5bWJvbCB9LCB7ICJuYXJyb3dTeW1ib2wiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3lt
Ym9sIH0sIHsgIm5hbWUiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFtZSB9IH0sICJjdXJyZW5jeURp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9yIFwibmFtZVwiIl9z
LCBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgIG1fY3VycmVuY3lTaWduID0gaW50bE9wdGlvbjxDdXJyZW5jeVNp
Z24+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
cnJlbmN5U2lnbiIpLCB7IHsgInN0YW5kYXJkIl9zLCBDdXJyZW5jeVNpZ246OlN0YW5kYXJkIH0s
IHsgImFjY291bnRpbmciX3MsIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZyB9IH0sICJjdXJyZW5j
eVNpZ24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNjb3VudGluZ1wiIl9zLCBD
dXJyZW5jeVNpZ246OlN0YW5kYXJkKTsKKyAgICBtX2N1cnJlbmN5U2lnbiA9IGludGxPcHRpb248
Q3VycmVuY3lTaWduPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjdXJyZW5jeVNpZ24iX3MpLCB7IHsgInN0YW5kYXJkIl9zLCBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkIH0sIHsgImFjY291bnRpbmciX3MsIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZyB9
IH0sICJjdXJyZW5jeVNpZ24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNjb3Vu
dGluZ1wiIl9zLCBDdXJyZW5jeVNpZ246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgU3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQi
KSwgeyB9LCBBU0NJSUxpdGVyYWw6Om51bGwoKSwgQVNDSUlMaXRlcmFsOjpudWxsKCkpOworICAg
IFN0cmluZyB1bml0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0Il9zKSwgeyB9LCBBU0NJSUxpdGVyYWw6Om51
bGwoKSwgQVNDSUlMaXRlcmFsOjpudWxsKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAgICAgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1l
ZFVuaXQ7CiAgICAgaWYgKCF1bml0LmlzTnVsbCgpKSB7CkBAIC0zNzAsMTMgKzM3MCwxMyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV91
bml0RGlzcGxheSA9IGludGxPcHRpb248VW5pdERpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXREaXNwbGF5IiksIHsgeyAic2hvcnQi
X3MsIFVuaXREaXNwbGF5OjpTaG9ydCB9LCB7ICJuYXJyb3ciX3MsIFVuaXREaXNwbGF5OjpOYXJy
b3cgfSwgeyAibG9uZyJfcywgVW5pdERpc3BsYXk6OkxvbmcgfSB9LCAidW5pdERpc3BsYXkgbXVz
dCBiZSBlaXRoZXIgXCJzaG9ydFwiLCBcIm5hcnJvd1wiLCBvciBcImxvbmdcIiJfcywgVW5pdERp
c3BsYXk6OlNob3J0KTsKKyAgICBtX3VuaXREaXNwbGF5ID0gaW50bE9wdGlvbjxVbml0RGlzcGxh
eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5p
dERpc3BsYXkiX3MpLCB7IHsgInNob3J0Il9zLCBVbml0RGlzcGxheTo6U2hvcnQgfSwgeyAibmFy
cm93Il9zLCBVbml0RGlzcGxheTo6TmFycm93IH0sIHsgImxvbmciX3MsIFVuaXREaXNwbGF5OjpM
b25nIH0gfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dc
Iiwgb3IgXCJsb25nXCIiX3MsIFVuaXREaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdp
dHMgOiAwOwogICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9z
dHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAobV9zdHlsZSA9PSBT
dHlsZTo6UGVyY2VudCkgPyAwIDogMzsKIAotICAgIG1fbm90YXRpb24gPSBpbnRsT3B0aW9uPElu
dGxOb3RhdGlvbj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibm90YXRpb24iKSwgeyB7ICJzdGFuZGFyZCJfcywgSW50bE5vdGF0aW9uOjpTdGFuZGFy
ZCB9LCB7ICJzY2llbnRpZmljIl9zLCBJbnRsTm90YXRpb246OlNjaWVudGlmaWMgfSwgeyAiZW5n
aW5lZXJpbmciX3MsIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmcgfSwgeyAiY29tcGFjdCJfcywg
SW50bE5vdGF0aW9uOjpDb21wYWN0IH0gfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwic3Rh
bmRhcmRcIiwgXCJzY2llbnRpZmljXCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0XCIi
X3MsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOworICAgIG1fbm90YXRpb24gPSBpbnRsT3B0aW9u
PEludGxOb3RhdGlvbj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibm90YXRpb24iX3MpLCB7IHsgInN0YW5kYXJkIl9zLCBJbnRsTm90YXRpb246OlN0
YW5kYXJkIH0sIHsgInNjaWVudGlmaWMiX3MsIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYyB9LCB7
ICJlbmdpbmVlcmluZyJfcywgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZyB9LCB7ICJjb21wYWN0
Il9zLCBJbnRsTm90YXRpb246OkNvbXBhY3QgfSB9LCAibm90YXRpb24gbXVzdCBiZSBlaXRoZXIg
XCJzdGFuZGFyZFwiLCBcInNjaWVudGlmaWNcIiwgXCJlbmdpbmVlcmluZ1wiLCBvciBcImNvbXBh
Y3RcIiJfcywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAogICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9i
YWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwpAQCAtNDAyLDE3ICs0MDIs
MTcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkg
PSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBUcmFp
bGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGluZ1pl
cm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmdaZXJv
RGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
IAotICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5PihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlz
cGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9uZyJf
cywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRo
ZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOworICAg
IG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5PihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSJf
cyksIHsgeyAic2hvcnQiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBD
b21wYWN0RGlzcGxheTo6TG9uZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
InNob3J0XCIgb3IgXCJsb25nXCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIFVzZUdyb3VwaW5nIGRlZmF1
bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwogICAgIGlmIChtX25vdGF0aW9uID09
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5nID0gVXNl
R3JvdXBpbmc6Ok1pbjI7CiAKLSAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09yQm9vbGVh
bk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywgVXNlR3Jv
dXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsgImF1dG8i
X3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6OkFsd2F5
cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJtaW4yXCIs
IFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOworICAgIG1f
dXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uPFVzZUdyb3VwaW5nPihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGlu
ZyJfcyksIFVzZUdyb3VwaW5nOjpBbHdheXMsIFVzZUdyb3VwaW5nOjpGYWxzZSwgeyB7ICJtaW4y
Il9zLCBVc2VHcm91cGluZzo6TWluMiB9LCB7ICJhdXRvIl9zLCBVc2VHcm91cGluZzo6QXV0byB9
LCB7ICJhbHdheXMiX3MsIFVzZUdyb3VwaW5nOjpBbHdheXMgfSB9LCAidXNlR3JvdXBpbmcgbXVz
dCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsIFwibWluMlwiLCBcImF1dG9cIiwgb3IgXCJhbHdheXNc
IiJfcywgZGVmYXVsdFVzZUdyb3VwaW5nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25E
aXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3Ms
IFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMg
fSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRp
dmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVp
dGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3Ig
XCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CisgICAgbV9zaWduRGlzcGxheSA9
IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5Il9zKSwgeyB7ICJhdXRvIl9zLCBTaWduRGlz
cGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVyIH0sIHsgImFsd2F5
cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9zLCBTaWduRGlzcGxh
eTo6RXhjZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlIH0g
fSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3
YXlzXCIsIFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNpZ25EaXNwbGF5OjpB
dXRvKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgbV9y
b3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIHsKQEAgLTE0MzAsMTMgKzE0MzAs
MTMgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgotICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3VycmVuY3kpKTsKLSAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5Iiks
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lE
aXNwbGF5KSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJy
ZW5jeVNpZ25TdHJpbmcobV9jdXJyZW5jeVNpZ24pKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5Il9zKSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSJfcyksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lEaXNw
bGF5KSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeVNpZ24iX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJl
bmN5U2lnblN0cmluZyhtX2N1cnJlbmN5U2lnbikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHlsZTo6VW5pdDoKLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdW5pdCkp
OwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1bml0RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHVuaXREaXNwbGF5U3Ry
aW5nKG1fdW5pdERpc3BsYXkpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
IG1fdW5pdCkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bml0RGlzcGxheSJfcyksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdW5p
dERpc3BsYXlTdHJpbmcobV91bml0RGlzcGxheSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUludGVn
ZXJEaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKQEAgLTE0NTcsMTEg
KzE0NTcsMTEgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNO
dW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InVzZUdyb3VwaW5nIiksIHVzZUdyb3VwaW5nVmFsdWUodm0sIG1fdXNlR3JvdXBpbmcpKTsKLSAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3Rh
dGlvbiIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24p
KSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidXNlR3JvdXBpbmciX3MpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bm90YXRpb24iX3MpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90
YXRpb24pKSk7CiAgICAgaWYgKG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQot
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjb21wYWN0RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5
U3RyaW5nKG1fY29tcGFjdERpc3BsYXkpKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBzaWduRGlzcGxheVN0cmluZyhtX3NpZ25EaXNwbGF5KSkpOworICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlz
cGxheSJfcyksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9j
b21wYWN0RGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSJfcyksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
c2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CiAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1i
ZXIobV9yb3VuZGluZ0luY3JlbWVudCkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZt
LCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKQEAg
LTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0lu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlCiAgICAgYXV0byBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CiAgICAgSWRl
bnRpZmllciB1bml0TmFtZTsKICAgICBpZiAodW5pdCkKLSAgICAgICAgdW5pdE5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpOworICAgICAgICB1bml0TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0Il9zKTsKIAogICAgIGZvciAoYXV0byYgZmllbGQg
OiBmbGF0dGVuKSB7CiAgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGQubV9maWVsZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmlu
ZGV4IDY4ZWRmMTYzYmQ0NzlmYTE4NjFlMDIzYjJkNzcyNDc4M2M2ZGZkZWIuLjBlYTZlNDhlOTNh
MDRmZGQwZDUxMWU2MDViMjZjNGNjZTM0YWVlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIEpT
T2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBjYXRlZ29yaWVzLT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nKHJlc3Vs
dCwgcmVzdWx0TGVuZ3RoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIH0KLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwbHVyYWxDYXRlZ29yaWVzIiksIGNhdGVnb3JpZXMpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3Jp
ZXMiX3MpLCBjYXRlZ29yaWVzKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBJbnRsTnVtYmVy
Rm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwogCiAgICAg
cmV0dXJuIG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMDEyZjE5MWNkOWFhZWY3Mjg4M2IwNTJiNTRiMGIzNDc4M2U4
Yzk3Zi4uZTYyMTY0YjljOTI4N2M1NWNjN2Q5ZWZlMmIzODE2NTg4MGFiMGUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTU2
OSwxNiArMTU2OSwxNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgaWYgKE9wdGlv
bnM6OmV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0KCkpIHsKICNpZiBFTkFCTEUoU0FNUExJ
TkdfUFJPRklMRVIpCi0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19lbmFibGVTYW1wbGluZ1Byb2ZpbGVyIiksIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVuYWJsZVNhbXBsaW5nUHJvZmls
ZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19kaXNh
YmxlU2FtcGxpbmdQcm9maWxlciIpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0
cmluZygpLCBkaXNhYmxlU2FtcGxpbmdQcm9maWxlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX2VuYWJsZVNhbXBsaW5nUHJvZmlsZXIiX3MpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlbmFibGVTYW1wbGluZ1Byb2Zp
bGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fZGlz
YWJsZVNhbXBsaW5nUHJvZmlsZXIiX3MpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCBkaXNhYmxlU2FtcGxpbmdQcm9maWxlciksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKICNlbmRpZgotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fZW5hYmxlU3VwZXJTYW1wbGVyIiks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVuYWJsZVN1cGVyU2Ft
cGxlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX2Rp
c2FibGVTdXBlclNhbXBsZXIiKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgZGlzYWJsZVN1cGVyU2FtcGxlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJfX2VuYWJsZVN1cGVyU2FtcGxlciJfcyksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVuYWJsZVN1cGVyU2FtcGxlciksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJfX2Rpc2FibGVTdXBlclNhbXBs
ZXIiX3MpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBkaXNhYmxl
U3VwZXJTYW1wbGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCi0gICAg
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiX190cmFjZVBvaW50U3RhcnQiKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA0
LCBTdHJpbmcoKSwgdHJhY2VQb2ludFN0YXJ0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIl9fdHJhY2VQb2ludFN0b3AiKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCA0LCBTdHJpbmcoKSwgdHJhY2VQb2ludFN0b3ApLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19zaWducG9zdFN0YXJ0IiksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHNpZ25wb3N0U3RhcnQpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiX19zaWducG9zdFN0b3AiKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgc2lnbnBvc3RTdG9wKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fdHJhY2VQb2lu
dFN0YXJ0Il9zKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA0LCBTdHJpbmcoKSwgdHJh
Y2VQb2ludFN0YXJ0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIl9fdHJhY2VQb2ludFN0b3AiX3MpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDQs
IFN0cmluZygpLCB0cmFjZVBvaW50U3RvcCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJfX3NpZ25wb3N0U3RhcnQiX3MpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIFN0cmluZygpLCBzaWducG9zdFN0YXJ0KSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fc2lnbnBvc3RTdG9wIl9zKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgc2lnbnBvc3RTdG9wKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIH0KIAogICAgIGluaXRTdGF0aWNHbG9iYWxz
KHZtKTsKQEAgLTE2MDUsNyArMTYwNSw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAg
ICAgICAgICAgICAgaW5pdC5zZXQoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBpbml0Lm93bmVyLT5tX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgYXV0byogd2ViQXNzZW1ibHkg
PSBKU1dlYkFzc2VtYmx5OjpjcmVhdGUodm0sIHRoaXMsIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJX
ZWJBc3NlbWJseSIpLCB3ZWJBc3NlbWJseSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIldlYkFzc2VtYmx5Il9zKSwgd2ViQXNz
ZW1ibHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKIAogI2RlZmluZSBDUkVBVEVfV0VCQVNTRU1CTFlfUFJPVE9UWVBFKGNhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNl
LCBmZWF0dXJlRmxhZykgXAogICAgIGlmIChmZWF0dXJlRmxhZykge1wKQEAgLTIzNjUsNyArMjM2
NSw3IEBAIFNVUFBSRVNTX0FTQU4gdm9pZCBKU0dsb2JhbE9iamVjdDo6ZXhwb3NlRG9sbGFyVk0o
Vk0mIHZtKQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhleHRyYVN0YXRpY0dsb2JhbHMs
IFdURl9BUlJBWV9MRU5HVEgoZXh0cmFTdGF0aWNHbG9iYWxzKSk7CiAKLSAgICBwdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkdm0iKSwgZG9sbGFyVk0sIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIkdm0iX3MpLCBkb2xsYXJWTSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyog
Z2xvYmFscywgaW50IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGVlZDQ2MzUwMTMxNmUzYTNkNDA0ZjFkNjZkZDhmNTYx
MWFhZjM1ZTUuLmUzZjAzYTRjMDhmODQ2OTNiMTY0NDBmODFhN2NlYTdkNjg4ZWRhY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAg
LTEwNiw3ICsxMDYsNyBAQCB2b2lkIEpTTW9kdWxlTG9hZGVyOjpmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKICAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IHZtLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKICAgICBzY29wZS5yZWxlYXNlQXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJyZWdpc3RyeSIpLCBtYXApOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInJlZ2lzdHJ5Il9zKSwgbWFwKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAppbmRl
eCBkZTY4YWE5NzQ0NmU3MDlhOGY0MTExMDBiY2QyZmIwYjRiYWVjMTk2Li41ODZjZmY2ZDUxODYz
NDkyYWVlNjBiODMxYmY5M2UyNDMwZjY3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoT2JqZWN0LmNwcApAQCAtNzUsNTEgKzc1LDUxIEBAIHZvaWQgTWF0aE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJFIiksIGpzTnVtYmVyKE1hdGg6OmV4cCgxLjApKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTE4yIiksIGpzTnVtYmVyKE1hdGg6Omxv
ZygyLjApKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTE4xMCIp
LCBqc051bWJlcihNYXRoOjpsb2coMTAuMCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBNYXRoOjpsb2coMi4wKSksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkxPRzEwRSIpLCBqc051bWJl
cigwLjQzNDI5NDQ4MTkwMzI1MTgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiU1FSVDIiKSwganNOdW1iZXIoc3Fy
dCgyLjApKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiRSJfcyks
IGpzTnVtYmVyKE1hdGg6OmV4cCgxLjApKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiTE4yIl9zKSwganNOdW1iZXIoTWF0aDo6bG9nKDIuMCkpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJMTjEwIl9zKSwganNOdW1iZXIoTWF0aDo6
bG9nKDEwLjApKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTE9H
MkUiX3MpLCBqc051bWJlcigxLjAgLyBNYXRoOjpsb2coMi4wKSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkxPRzEwRSJfcyksIGpzTnVtYmVyKDAuNDM0Mjk0NDgx
OTAzMjUxOCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIlBJIl9z
KSwganNOdW1iZXIocGlEb3VibGUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJTUVJUMV8yIl9zKSwganNOdW1iZXIoc3FydCgwLjUpKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiU1FSVDIiX3MpLCBqc051bWJlcihzcXJ0KDIuMCkp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX1RPX1NUUklOR19U
QUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiAKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJhYnMiKSwgMSwgbWF0aFByb3RvRnVuY0FicywgQWJzSW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYWNvcyIpLCAxLCBtYXRoUHJvdG9GdW5jQUNvcywgQUNvc0lu
dHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFzaW4iKSwgMSwgbWF0aFBy
b3RvRnVuY0FTaW4sIEFTaW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJhdGFuIiksIDEsIG1hdGhQcm90b0Z1bmNBVGFuLCBBVGFuSW50cmluc2ljLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiYWNvc2giKSwgMSwgbWF0aFByb3RvRnVuY0FDb3NoLCBBQ29z
aEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFzaW5oIiksIDEsIG1h
dGhQcm90b0Z1bmNBU2luaCwgQVNpbmhJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJhdGFuaCIpLCAxLCBtYXRoUHJvdG9GdW5jQVRhbmgsIEFUYW5oSW50cmluc2ljLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXRhbjIiKSwgMiwgbWF0aFByb3RvRnVuY0FU
YW4yLCBOb0ludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNicnQiKSwg
MSwgbWF0aFByb3RvRnVuY0NicnQsIENicnRJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjZWlsIiksIDEsIG1hdGhQcm90b0Z1bmNDZWlsLCBDZWlsSW50cmluc2ljLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2x6MzIiKSwgMSwgbWF0aFByb3RvRnVuY0Ns
ejMyLCBDbHozMkludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvcyIp
LCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjb3NoIiksIDEsIG1hdGhQcm90b0Z1bmNDb3NoLCBDb3NoSW50cmluc2ljLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAs
IEV4cEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImV4cG0xIiksIDEs
IG1hdGhQcm90b0Z1bmNFeHBtMSwgRXhwbTFJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmbG9vciIpLCAxLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZnJvdW5kIiksIDEsIG1hdGhQcm90b0Z1
bmNGcm91bmQsIEZSb3VuZEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Imh5cG90IiksIDIsIG1hdGhQcm90b0Z1bmNIeXBvdCwgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJsb2ciKSwgMSwgbWF0aFByb3RvRnVuY0xvZywgTG9nSW50cmlu
c2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9nMTAiKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZzEwLCBMb2cxMEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImxvZzFwIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cxcCwgTG9nMXBJbnRyaW5zaWMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2cyIiksIDEsIG1hdGhQcm90b0Z1bmNMb2cyLCBMb2cy
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4IiksIDIsIG1hdGhQ
cm90b0Z1bmNNYXgsIE1heEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbiIpLCAyLCBtYXRoUHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0g
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmFuZG9tIiksIDAsIG1hdGhQcm90b0Z1
bmNSYW5kb20sIFJhbmRvbUludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJvdW5kIiksIDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduIiksIDEsIG1hdGhQcm90b0Z1bmNTaWduLCBOb0lu
dHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpbiIpLCAxLCBtYXRoUHJv
dG9GdW5jU2luLCBTaW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
aW5oIiksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBTaW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3FydCIpLCAxLCBtYXRoUHJvdG9GdW5jU3FydCwgU3FydEludHJp
bnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9G
dW5jVGFuLCBUYW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0YW5o
IiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBUYW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVuY0ludHJp
bnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImltdWwiKSwgMiwgbWF0aFByb3Rv
RnVuY0lNdWwsIElNdWxJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
YnMiX3MpLCAxLCBtYXRoUHJvdG9GdW5jQWJzLCBBYnNJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJhY29zIl9zKSwgMSwgbWF0aFByb3RvRnVuY0FDb3MsIEFDb3NJbnRy
aW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhc2luIl9zKSwgMSwgbWF0aFBy
b3RvRnVuY0FTaW4sIEFTaW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJhdGFuIl9zKSwgMSwgbWF0aFByb3RvRnVuY0FUYW4sIEFUYW5JbnRyaW5zaWMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJhY29zaCJfcyksIDEsIG1hdGhQcm90b0Z1bmNBQ29zaCwg
QUNvc2hJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhc2luaCJfcyks
IDEsIG1hdGhQcm90b0Z1bmNBU2luaCwgQVNpbmhJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJhdGFuaCJfcyksIDEsIG1hdGhQcm90b0Z1bmNBVGFuaCwgQVRhbmhJbnRy
aW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhdGFuMiJfcyksIDIsIG1hdGhQ
cm90b0Z1bmNBVGFuMiwgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjYnJ0Il9zKSwgMSwgbWF0aFByb3RvRnVuY0NicnQsIENicnRJbnRyaW5zaWMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjZWlsIl9zKSwgMSwgbWF0aFByb3RvRnVuY0NlaWwsIENl
aWxJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjbHozMiJfcyksIDEs
IG1hdGhQcm90b0Z1bmNDbHozMiwgQ2x6MzJJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjb3MiX3MpLCAxLCBtYXRoUHJvdG9GdW5jQ29zLCBDb3NJbnRyaW5zaWMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb3NoIl9zKSwgMSwgbWF0aFByb3RvRnVuY0Nv
c2gsIENvc2hJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJleHAiX3Mp
LCAxLCBtYXRoUHJvdG9GdW5jRXhwLCBFeHBJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJleHBtMSJfcyksIDEsIG1hdGhQcm90b0Z1bmNFeHBtMSwgRXhwbTFJbnRyaW5z
aWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmbG9vciJfcyksIDEsIG1hdGhQcm90
b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJmcm91bmQiX3MpLCAxLCBtYXRoUHJvdG9GdW5jRnJvdW5kLCBGUm91bmRJbnRyaW5zaWMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJoeXBvdCJfcyksIDIsIG1hdGhQcm90b0Z1bmNI
eXBvdCwgTm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2ciX3Mp
LCAxLCBtYXRoUHJvdG9GdW5jTG9nLCBMb2dJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJsb2cxMCJfcyksIDEsIG1hdGhQcm90b0Z1bmNMb2cxMCwgTG9nMTBJbnRyaW5z
aWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb2cxcCJfcyksIDEsIG1hdGhQcm90
b0Z1bmNMb2cxcCwgTG9nMXBJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJsb2cyIl9zKSwgMSwgbWF0aFByb3RvRnVuY0xvZzIsIExvZzJJbnRyaW5zaWMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXgiX3MpLCAyLCBtYXRoUHJvdG9GdW5jTWF4LCBNYXhJ
bnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW4iX3MpLCAyLCBtYXRo
UHJvdG9GdW5jTWluLCBNaW5JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwb3ciX3MpLCAyLCBtYXRoUHJvdG9GdW5jUG93LCBQb3dJbnRyaW5zaWMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJyYW5kb20iX3MpLCAwLCBtYXRoUHJvdG9GdW5jUmFuZG9tLCBS
YW5kb21JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyb3VuZCJfcyks
IDEsIG1hdGhQcm90b0Z1bmNSb3VuZCwgUm91bmRJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzaWduIl9zKSwgMSwgbWF0aFByb3RvRnVuY1NpZ24sIE5vSW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2luIl9zKSwgMSwgbWF0aFByb3RvRnVu
Y1NpbiwgU2luSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2luaCJf
cyksIDEsIG1hdGhQcm90b0Z1bmNTaW5oLCBTaW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3FydCJfcyksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmlu
c2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGFuIl9zKSwgMSwgbWF0aFByb3Rv
RnVuY1RhbiwgVGFuSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGFu
aCJfcyksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBUYW5oSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidHJ1bmMiX3MpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIFRydW5j
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW11bCJfcyksIDIsIG1h
dGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cAppbmRleCBkMmEwNTA1ZmQ3MjQxZjE3ZTYzYzkzMGEwY2IwNzg2NjM3YzAwZjY5Li4zNjhhNDA4
N2IzZDgzMWUzMWM5YmZmOWQ4Yzc3NDVjZjEzZWQ0MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCkBAIC02NiwxOSArNjYs
MTkgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1i
ZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG51bWJlclByb3RvdHlwZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJFUFNJTE9OIiksIGpz
RG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiTUFYX1ZBTFVFIiksIGpzRG91
YmxlTnVtYmVyKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiTUlOX1ZBTFVFIiksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1BWF9TQUZFX0lOVEVH
RVIiKSwganNEb3VibGVOdW1iZXIobWF4U2FmZUludGVnZXIoKSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1JTl9TQUZFX0lOVEVHRVIiKSwganNEb3VibGVOdW1i
ZXIobWluU2FmZUludGVnZXIoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
LSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIk5FR0FUSVZFX0lORklOSVRZIiksIGpzRG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJFUFNJTE9OIl9zKSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJNQVhfVkFMVUUiX3MpLCBqc0RvdWJsZU51bWJlcigxLjc5NzY5MzEz
NDg2MjMxNTdFKzMwOCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Ik1JTl9WQUxVRSJfcyksIGpzRG91YmxlTnVtYmVyKDVFLTMyNCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1BWF9TQUZFX0lOVEVHRVIiX3MpLCBqc0RvdWJsZU51
bWJlcihtYXhTYWZlSW50ZWdlcigpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiTUlOX1NBRkVfSU5URUdFUiJfcyksIGpzRG91YmxlTnVtYmVyKG1pblNhZmVJbnRl
Z2VyKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJORUdBVElW
RV9JTkZJTklUWSJfcyksIGpzRG91YmxlTnVtYmVyKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJQT1NJVElWRV9JTkZJTklUWSJfcyksIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cGFyc2VJbnQs
IG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+cGFyc2VJbnRGdW5jdGlvbigpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBhcnNlRmxv
YXQsIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+cGFyc2VGbG9hdEZ1bmN0aW9u
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
IAotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaXNJbnRlZ2VyIiksIG51bWJlckNvbnN0cnVjdG9y
RnVuY0lzSW50ZWdlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDEsIE51bWJlcklzSW50ZWdlckludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJpc0ludGVnZXIiX3MpLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBOdW1i
ZXJJc0ludGVnZXJJbnRyaW5zaWMpOwogfQogCiAvLyBFQ01BIDE1LjcuMQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMjRmMWUx
NjUzOTMyOGQ4ZjlhODkyYmRkNjA5NTRmZjUxNDBmYWZjYi4uNDUwZjhmYTZjMTUxZmFiODczYTY4
NjhjNGQzZjI2Y2U2NDM3NzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNTYsMTAgKzE1NiwxMCBAQCB2b2lkIFN0cmlu
Z1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogCiAgICAgSlNGdW5jdGlvbiogdHJpbVN0YXJ0RnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgInRyaW1TdGFydCJfcywgc3RyaW5nUHJvdG9G
dW5jVHJpbVN0YXJ0LCBOb0ludHJpbnNpYyk7CiAgICAgSlNGdW5jdGlvbiogdHJpbUVuZEZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJ0cmltRW5kIl9z
LCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kLCBOb0ludHJpbnNpYyk7Ci0gICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltU3RhcnQi
KSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRyaW1MZWZ0IiksIHRyaW1TdGFydEZ1bmN0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0cmltRW5kIiksIHRyaW1FbmRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHJpbVJpZ2h0IiksIHRyaW1FbmRGdW5j
dGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidHJpbVN0YXJ0Il9zKSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRyaW1MZWZ0Il9z
KSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRyaW1FbmQiX3MpLCB0cmltRW5kRnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRyaW1SaWdodCJfcyksIHRyaW1FbmRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJv
bC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDZiZjlkNGE2NWI1ZTU0YWU5M2E1
YWRjNmFlZWFhYzEyYTIxZGZkZC4uMjZkOGY5Zjc0ZDcwNDk0OTYyYzMwNzY2OWFkN2U4OTg5NDg2
MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTeW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9s
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0KIAogI2RlZmluZSBJ
TklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUyhuYW1lKSBcCi1wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpLCBTeW1ib2w6OmNy
ZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCp2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
IyNTeW1ib2wuaW1wbCgpKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK3B1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAj
bmFtZSAiIl9zKSwgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigq
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSMjU3ltYm9sLmltcGwoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiAKIHZvaWQgU3ltYm9sQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZDE5YjAxNzc5ZTgwYzBiOGUyOWEx
NDM1MTJmMmFhNzQ2NjlkZmU4Yy4uNWNiNTA0MDkzY2JhMmIyMzEyM2Q3YTQxYTEyYTEyZjMwNGU5
YTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAt
NTI3LDEyICs1MjcsMTIgQEAgcHVibGljOgogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAg
IEN1c3RvbUdldHRlciogdGhpc09iamVjdCA9IGpzQ2FzdDxDdXN0b21HZXR0ZXIqPihvYmplY3Qp
OwotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0dGVyIikpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21HZXR0
ZXIiX3MpKSkgewogICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVj
dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGN1c3RvbUdldHRlclZhbHVlR2V0
dGVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAocHJvcGVydHlOYW1lID09IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY3VzdG9tR2V0dGVyQWNjZXNzb3IiKSkpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUdl
dHRlckFjY2Vzc29yIl9zKSkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9t
KHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBjdXN0b21HZXR0ZXJBY2Vzc29yR2V0dGVyKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC01NTAsNyArNTUwLDcgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGN1c3RvbUdldHRlclZhbHVlR2V0dGVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDdXN0b21HZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEN1c3RvbUdldHRlcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICBib29sIHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+
Z2V0KGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgYm9vbCBzaG91
bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZShJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hvdWxkVGhyb3ciX3MpKSkudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoY3VzdG9tR2V0dGVyQWNlc3NvckdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKLSAgICBib29sIHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaG91bGRUaHJvdyIpKSku
dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmpl
Y3QtPmdldChnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2hvdWxkVGhyb3ciX3MpKSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKHNob3Vs
ZFRocm93KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKQEAgLTcxMyw3ICs3MTMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVzdFN0
YXRpY0FjY2Vzc29yR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGlm
ICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiAKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqZWN0LT5nZXRE
aXJlY3Qodm0sIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEZp
ZWxkIikpKSkKKyAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qo
dm0sIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVzdEZpZWxkIl9z
KSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTcyOSw3ICs3MjksNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIodGVzdFN0YXRpY0FjY2Vzc29yUHV0dGVyLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzT2JqZWN0KTsKIAotICAgIHJldHVybiB0aGlz
T2JqZWN0LT5wdXREaXJlY3Qodm0sIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidGVzdEZpZWxkIikpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInRlc3RGaWVsZCJfcykpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKIH0KIAog
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IHN0YXRpY0N1c3RvbUFjY2Vzc29y
VGFibGVJbmRleFs5XSA9IHsKQEAgLTgxNiw3ICs4MTYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIodGVzdFN0YXRpY1ZhbHVlUHV0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRQogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0RGly
ZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRlc3RTdGF0
aWNWYWx1ZSIpKSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CisgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0ZXN0U3RhdGljVmFsdWUiX3MpKSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKIEpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUih0ZXN0U3RhdGljVmFsdWVQdXR0ZXJTZXRGbGFnLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTgyOSw3ICs4MjksNyBAQCBKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIodGVzdFN0YXRpY1ZhbHVlUHV0dGVyU2V0RmxhZywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYgogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICByZXR1cm4gdGhpc09iamVj
dC0+cHV0RGlyZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRlc3RTdGF0aWNWYWx1ZVNldHRlckNhbGxlZCIpKSwganNCb29sZWFuKHRydWUpKTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInRlc3RTdGF0aWNWYWx1ZVNldHRlckNhbGxlZCJfcykpLCBqc0Jvb2xl
YW4odHJ1ZSkpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3Rh
dGljQ3VzdG9tVmFsdWVUYWJsZUluZGV4WzhdID0gewpAQCAtMTA2NSwxMSArMTA2NSwxMSBAQCB2
b2lkIERPTUpJVEdldHRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKICAgICAgICAg
Y29uc3QgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9ICZET01KSVRHZXR0ZXJET01KSVQ7
CiAgICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IERPTUF0dHJpYnV0ZUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBudWxscHRyLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIHsgRE9NSklUTm9kZTo6aW5mbygpLCBkb21KSVQgfSk7Ci0gICAgICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9t
R2V0dGVyIiksIGN1c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICAgICAgcHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21HZXR0
ZXIiX3MpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAgICAgfQogICAgIHsKICAgICAg
ICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGRvbUpJVEdldHRlckN1c3RvbUdldHRlciwgbnVsbHB0ciwgRE9NQXR0cmlidXRl
QW5ub3RhdGlvbiB7IERPTUpJVE5vZGU6OmluZm8oKSwgbnVsbHB0ciB9KTsKLSAgICAgICAgcHV0
RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0
b21HZXR0ZXIyIiksIGN1c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICAgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21H
ZXR0ZXIyIl9zKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOwogICAgIH0KIH0KIApAQCAt
MTMxNSw4ICsxMzE1LDggQEAgdm9pZCBET01KSVRHZXR0ZXJDb21wbGV4OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSAm
RE9NSklUR2V0dGVyQ29tcGxleERPTUpJVDsKICAgICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIg
PSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIoKSwg
bnVsbHB0ciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IERPTUpJVEdldHRlckNvbXBsZXg6Omlu
Zm8oKSwgZG9tSklUIH0pOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0dGVyIiksIGN1c3RvbUdldHRlclNldHRlciwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlRXhjZXB0aW9uIiksIDAsIGZ1bmN0aW9u
RE9NSklUR2V0dGVyQ29tcGxleEVuYWJsZUV4Y2VwdGlvbiwgTm9JbnRyaW5zaWMsIDApOworICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y3VzdG9tR2V0dGVyIl9zKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOworICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJlbmFibGVFeGNlcHRpb24iX3MpLCAwLCBmdW5jdGlvbkRPTUpJVEdldHRlckNvbXBs
ZXhFbmFibGVFeGNlcHRpb24sIE5vSW50cmluc2ljLCAwKTsKIH0KIAogZXh0ZXJuICJDIiB7IHN0
YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OX1dJVEhPVVRfV1RGX0lOVEVSTkFMKGZ1bmN0
aW9uRE9NSklURnVuY3Rpb25PYmplY3RXaXRob3V0VHlwZUNoZWNrLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUpJVE5vZGUqKSk7IH0KQEAgLTEzOTcs
NyArMTM5Nyw3IEBAIHZvaWQgRE9NSklURnVuY3Rpb25PYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZnVuYyIpLCAwLCBmdW5jdGlvbkRPTUpJVEZ1bmN0aW9uT2JqZWN0V2l0aFR5
cGVDaGVjaywgTm9JbnRyaW5zaWMsICZET01KSVRGdW5jdGlvbk9iamVjdFNpZ25hdHVyZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJmdW5jIl9zKSwgMCwgZnVuY3Rpb25ET01KSVRGdW5jdGlvbk9iamVjdFdpdGhU
eXBlQ2hlY2ssIE5vSW50cmluc2ljLCAmRE9NSklURnVuY3Rpb25PYmplY3RTaWduYXR1cmUsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIH0KIAog
ZXh0ZXJuICJDIiB7IHN0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OX1dJVEhPVVRfV1RG
X0lOVEVSTkFMKGZ1bmN0aW9uRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3RXaXRob3V0VHlwZUNoZWNr
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUpJVE5v
ZGUqIG5vZGUpKTsgfQpAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgdm9pZCBET01KSVRDaGVja0pTQ2Fz
dE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZnVuYyIpLCAwLCBmdW5jdGlvbkRP
TUpJVENoZWNrSlNDYXN0T2JqZWN0V2l0aFR5cGVDaGVjaywgTm9JbnRyaW5zaWMsICZET01KSVRD
aGVja0pTQ2FzdE9iamVjdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmdW5jIl9zKSwgMCwgZnVu
Y3Rpb25ET01KSVRDaGVja0pTQ2FzdE9iamVjdFdpdGhUeXBlQ2hlY2ssIE5vSW50cmluc2ljLCAm
RE9NSklUQ2hlY2tKU0Nhc3RPYmplY3RTaWduYXR1cmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIH0KIAogc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoZG9tSklUR2V0dGVyQmFzZUpTT2JqZWN0Q3VzdG9tR2V0dGVyKTsKQEAgLTE1
MzcsNyArMTUzNyw3IEBAIHZvaWQgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIGNvbnN0IERP
TUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSAmRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0RE9N
SklUOwogICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IERPTUF0dHJpYnV0ZUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBudWxscHRyLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIHsgSlNPYmplY3Q6OmluZm8oKSwgZG9tSklUIH0pOwotICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tR2V0dGVy
IiksIGN1c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUdldHRlciJfcyksIGN1
c3RvbUdldHRlclNldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGRvbUpJVEdldHRlckJhc2VKU09iamVjdEN1c3RvbUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAg
LTE2NDQsNyArMTY0NCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjdXN0b21HZXRWYWx1
ZTIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkCiAgICAgUkVMRUFTRV9B
U1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSkuaW5oZXJpdHM8SlNUZXN0Q3VzdG9tR2V0
dGVyU2V0dGVyPihnbG9iYWxPYmplY3QtPnZtKCkpKTsKIAogICAgIGF1dG8qIHRhcmdldCA9IGpz
Q2FzdDxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVl
KSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IHRhcmdldC0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidmFsdWUyIikpOworICAgIEpTVmFsdWUgdmFsdWUgPSB0YXJnZXQt
PmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlMiJfcykpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUgPyB2YWx1ZSA6IGpzVW5kZWZpbmVkKCkp
OwogfQogCkBAIC0xNjY5LDcgKzE2NjksNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3Vz
dG9tU2V0QWNjZXNzb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogCiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QpOwotICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0IiksIEpTVmFsdWU6OmRlY29kZSh0aGlz
T2JqZWN0KSwgc2xvdCk7CisgICAgb2JqZWN0LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN1bHQiX3MpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c09iamVjdCksIHNsb3QpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjg1LDcgKzE2ODUs
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0QWNjZXNzb3JHbG9iYWxPYmpl
Y3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwotICAgIG9i
amVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicmVzdWx0IiksIGdsb2JhbE9iamVjdCwgc2xvdCk7CisgICAgb2JqZWN0LT5wdXQob2JqZWN0
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN1bHQiX3MpLCBn
bG9iYWxPYmplY3QsIHNsb3QpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzAzLDcgKzE3
MDMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY3VzdG9tU2V0VmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KHZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwotICAg
IG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicmVzdWx0IiksIEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLCBzbG90KTsKKyAgICBv
YmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInJlc3VsdCJfcyksIEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLCBzbG90KTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTcyMSw3ICsxNzIxLDcgQEAgSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKGN1c3RvbVNldFZhbHVlR2xvYmFsT2JqZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamUKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3VsdCIpLCBnbG9iYWxPYmpl
Y3QsIHNsb3QpOworICAgIG9iamVjdC0+cHV0KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdWx0Il9zKSwgZ2xvYmFsT2JqZWN0LCBzbG90KTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKGN1c3RvbVNldFZhbHVlMiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWQKICAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKS5p
bmhlcml0czxKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI+KHZtKSk7CiAgICAgYXV0byogdGFyZ2V0
ID0ganNDYXN0PEpTVGVzdEN1c3RvbUdldHRlclNldHRlcio+KEpTVmFsdWU6OmRlY29kZShzbG90
VmFsdWUpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0YXJnZXQpOwotICAgIHRhcmdldC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUyIiksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICB0YXJnZXQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlMiJfcyksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc2MCwyMiArMTc2MCwyMiBA
QCB2b2lkIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogCi0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZSIpLAorICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tVmFsdWUiX3MpLAogICAg
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIGN1c3Rv
bVNldFZhbHVlKSwgMCk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZTIiKSwKKyAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZhbHVlMiJfcyks
CiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRWYWx1ZTIs
IGN1c3RvbVNldFZhbHVlMiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWUpKTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUFjY2Vzc29yIiksCisgICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3Nv
ciJfcyksCiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRB
Y2Nlc3NvciwgY3VzdG9tU2V0QWNjZXNzb3IpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21WYWx1ZUdsb2JhbE9iamVj
dCIpLAorICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiX3MpLAogICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3VzdG9tR2V0VmFsdWVHbG9iYWxPYmplY3QsIGN1c3RvbVNl
dFZhbHVlR2xvYmFsT2JqZWN0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21WYWx1ZSkpOwotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QiKSwKKyAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0Il9zKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yR2xvYmFsT2JqZWN0LCBjdXN0b21TZXRB
Y2Nlc3Nvckdsb2JhbE9iamVjdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbVZhbHVlTm9TZXR0ZXIiKSwKKyAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
c3RvbVZhbHVlTm9TZXR0ZXIiX3MpLAogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgY3VzdG9tR2V0VmFsdWUsIG51bGxwdHIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5
IiksCisgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjdXN0b21BY2Nlc3NvclJlYWRPbmx5Il9zKSwKICAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBudWxscHRyKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
IAotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VzdG9tRnVuY3Rpb24iKSwKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUZ1bmN0aW9uIl9zKSwKICAgICAgICAg
Q3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29yLCBjdXN0b21G
dW5jdGlvblNldHRlciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IpKTsKIAogfQpAQCAtMTg4NCw4ICsxODg0LDggQEAgcHVibGljOgogICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJhZGRCeXRlcyIpLCAwLCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcywg
Tm9JbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbmFsaXplIiksIDAsIGZ1bmN0aW9uV2Fz
bVN0cmVhbWluZ1BhcnNlckZpbmFsaXplLCBOb0ludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
YWRkQnl0ZXMiX3MpLCAwLCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJBZGRCeXRlcywgTm9J
bnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbmFsaXplIl9zKSwgMCwgZnVuY3Rpb25XYXNt
U3RyZWFtaW5nUGFyc2VyRmluYWxpemUsIE5vSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9J
TkZPOwpAQCAtMTk3Myw3ICsxOTczLDcgQEAgcHVibGljOgogICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRo
aXMtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhZGRCeXRlcyIpLCAw
LCBmdW5jdGlvbldhc21TdHJlYW1pbmdDb21waWxlckFkZEJ5dGVzLCBOb0ludHJpbnNpYywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiYWRkQnl0ZXMiX3MpLCAwLCBmdW5jdGlvbldhc21TdHJlYW1pbmdDb21w
aWxlckFkZEJ5dGVzLCBOb0ludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERS
RU47CkBAIC0zMTUxLDcgKzMxNTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25DcmVhdGVCdWlsdGluLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwgeyB9KTsKLSAgICBKU0Z1bmN0
aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vIiksIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2
bSwgbnVsbHB0ciwgc291cmNlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgc291
cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vIl9zKSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBudWxs
cHRyLCBzb3VyY2UpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShmdW5jKTsKIH0KQEAgLTM4NzEsMTMgKzM4NzEsMTMgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJjcmFzaCIsIGZ1bmN0aW9u
Q3Jhc2gsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiYnJlYWtwb2ludCIsIGZ1bmN0aW9uQnJl
YWtwb2ludCwgMCk7CiAKLSAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGZnVHJ1ZSIpLCAwLCBmdW5jdGlvbkRG
R1RydWUsIERGR1RydWVJbnRyaW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmdGxUcnVlIiksIDAsIGZ1bmN0aW9uRlRMVHJ1ZSwgRlRMVHJ1ZUlu
dHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyk7CisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImRmZ1RydWUiX3MpLCAwLCBmdW5jdGlvbkRGR1RydWUsIERGR1RydWVJbnRyaW5zaWMsIGpzRG9s
bGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmdGxUcnVlIl9zKSwg
MCwgZnVuY3Rpb25GVExUcnVlLCBGVExUcnVlSW50cmluc2ljLCBqc0RvbGxhclZNUHJvcGVydHlB
dHRyaWJ1dGVzKTsKIAotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcHVNZmVuY2UiKSwgMCwgZnVuY3Rpb25D
cHVNZmVuY2UsIENQVU1mZW5jZUludHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRl
cyk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNwdVJkdHNjIiksIDAsIGZ1bmN0aW9uQ3B1UmR0c2MsIENQ
VVJkdHNjSW50cmluc2ljLCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVzKTsKLSAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY3B1Q3B1aWQiKSwgMCwgZnVuY3Rpb25DcHVDcHVpZCwgQ1BVQ3B1aWRJbnRyaW5z
aWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcHVQ
YXVzZSIpLCAwLCBmdW5jdGlvbkNwdVBhdXNlLCBDUFVQYXVzZUludHJpbnNpYywganNEb2xsYXJW
TVByb3BlcnR5QXR0cmlidXRlcyk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNwdU1mZW5jZSJfcyksIDAs
IGZ1bmN0aW9uQ3B1TWZlbmNlLCBDUFVNZmVuY2VJbnRyaW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0
eUF0dHJpYnV0ZXMpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcHVSZHRzYyJfcyksIDAsIGZ1bmN0aW9u
Q3B1UmR0c2MsIENQVVJkdHNjSW50cmluc2ljLCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVz
KTsKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3B1Q3B1aWQiX3MpLCAwLCBmdW5jdGlvbkNwdUNwdWlkLCBD
UFVDcHVpZEludHJpbnNpYywganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyk7CisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNwdVBhdXNlIl9zKSwgMCwgZnVuY3Rpb25DcHVQYXVzZSwgQ1BVUGF1c2VJbnRy
aW5zaWMsIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOwogICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3B1Q2xmbHVzaCIsIGZ1bmN0aW9uQ3B1Q2xmbHVzaCwgMik7CiAKICAgICBhZGRGdW5jdGlv
bih2bSwgImxsaW50VHJ1ZSIsIGZ1bmN0aW9uTExpbnRUcnVlLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKaW5kZXgg
YjMzZDg4NTExZTNiMWIwOGUyMjgzMWE0ZjAwMjJiN2ExNTNiZTI5NS4uYjg1MmI3MWNjYmZkZjVk
ZWZiZWNiMWVmMmFiZmUwNjAzNGQ5NTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUdsb2JhbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
SlNPYmplY3QqIEpTV2ViQXNzZW1ibHlHbG9iYWw6OnR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIDIpOwogCi0gICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtdXRhYmxl
IiksIGpzQm9vbGVhbihtX2dsb2JhbC0+bXV0YWJpbGl0eSgpID09IFdhc206Okdsb2JhbEluZm9y
bWF0aW9uOjpNdXRhYmxlKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtdXRhYmxlIl9zKSwganNCb29sZWFuKG1fZ2xvYmFsLT5tdXRhYmls
aXR5KCkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFibGUpKTsKIAogICAgIFdhc206
OlR5cGUgdmFsdWVUeXBlID0gbV9nbG9iYWwtPnR5cGUoKTsKICAgICBKU1N0cmluZyogdmFsdWVT
dHJpbmcgPSBudWxscHRyOwpAQCAtMTE0LDcgKzExNCw3IEBAIEpTT2JqZWN0KiBKU1dlYkFzc2Vt
Ymx5R2xvYmFsOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICB9Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSIpLCB2YWx1
ZVN0cmluZyk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ2YWx1ZSJfcyksIHZhbHVlU3RyaW5nKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwCmluZGV4IGY0YTQwMjM2ODY3N2MwNzI5OGQyN2U5NTg3NDgwNTU1OGE0ZjAzYzEu
LmViOWQ2OGQ1OWI2NTAzNjY4ZmI3ZDY2NWUwZTg0YzcxZWUxMGYyNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBA
IC0xNDEsMTIgKzE0MSwxMiBAQCBKU09iamVjdCogSlNXZWJBc3NlbWJseU1lbW9yeTo6dHlwZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTT2JqZWN0KiByZXN1bHQ7CiAgICAg
aWYgKG1heGltdW0uaXNWYWxpZCgpKSB7CiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSwgMyk7
Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bSIpLCBqc051bWJlcihtYXhpbXVtLnBhZ2VDb3VudCgpKSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSJf
cyksIGpzTnVtYmVyKG1heGltdW0ucGFnZUNvdW50KCkpKTsKICAgICB9IGVsc2UKICAgICAgICAg
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpLCAyKTsKIAotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bSIpLCBqc051bWJlcihtaW5pbXVtLnBhZ2VD
b3VudCgpKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJzaGFyZWQiKSwganNCb29sZWFuKG1fbWVtb3J5LT5zaGFyaW5nTW9kZSgpID09IFdh
c206Ok1lbW9yeVNoYXJpbmdNb2RlOjpTaGFyZWQpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW0iX3MpLCBqc051bWJlcihtaW5p
bXVtLnBhZ2VDb3VudCgpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaGFyZWQiX3MpLCBqc0Jvb2xlYW4obV9tZW1vcnktPnNoYXJpbmdN
b2RlKCkgPT0gV2FzbTo6TWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZCkpOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuY3BwCmluZGV4IDIyZDUyMGRhMjA1Mzg3ZjdkZDQ1YTAzNGVjYjcyNTAz
M2JmN2UxZjEuLmVkMDQ3YTk0Y2E4MjEwZjU1YWZlMTExZTBkMTY1NmQ5NzRhYjMzM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxl
LmNwcApAQCAtMTQwLDEzICsxNDAsMTMgQEAgSlNPYmplY3QqIEpTV2ViQXNzZW1ibHlUYWJsZTo6
dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGF1dG8gbWF4aW11bSA9IG1f
dGFibGUtPm1heGltdW0oKTsKICAgICBpZiAobWF4aW11bSkgewogICAgICAgICByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCksIDMpOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iKSwganNOdW1iZXIoKm1heGltdW0pKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
Il9zKSwganNOdW1iZXIoKm1heGltdW0pKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpLCAyKTsKIAogICAgIHVpbnQzMl90IG1pbmltdW0gPSBtX3RhYmxlLT5sZW5ndGgo
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltdW0iKSwganNOdW1iZXIobWluaW11bSkpOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWxlbWVudCIpLCBlbGVtZW50U3RyaW5nKTsK
KyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW0iX3MpLCBqc051bWJlcihtaW5pbXVtKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbGVtZW50Il9zKSwgZWxlbWVudFN0cmluZyk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAppbmRl
eCA0OWVlOGI0NjEwNzA3M2I4YWMzZWQ4ZTYwY2FjNTJmNmFhMWVlM2ZiLi4wZWU2ODdhM2IxY2Vi
MWE1YjY0NDFkYzQyOTZjOGI2NDE2ZDEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNw
cApAQCAtNjgsNyArNjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNX
ZWJBc3NlbWJseUdsb2JhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogCiAgICAgV2FzbTo6
R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHkgbXV0YWJpbGl0eTsKICAgICB7Ci0gICAgICAg
IElkZW50aWZpZXIgbXV0YWJsZUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11
dGFibGUiKTsKKyAgICAgICAgSWRlbnRpZmllciBtdXRhYmxlSWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibXV0YWJsZSJfcyk7CiAgICAgICAgIEpTVmFsdWUgbXV0YWJsZVZhbHVl
ID0gZ2xvYmFsRGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbXV0YWJsZUlkZW50KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgYm9vbCBtdXRhYmxlQm9vbGVhbiA9IG11dGFibGVWYWx1ZS50b0Jvb2xlYW4oZ2xv
YmFsT2JqZWN0KTsKQEAgLTgxLDcgKzgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNv
bnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIAog
ICAgIFdhc206OlR5cGUgdHlwZTsKICAgICB7Ci0gICAgICAgIElkZW50aWZpZXIgdmFsdWVJZGVu
dCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSIpOworICAgICAgICBJZGVudGlm
aWVyIHZhbHVlSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpOwog
ICAgICAgICBKU1ZhbHVlIHZhbHVlVmFsdWUgPSBnbG9iYWxEZXNjcmlwdG9yLT5nZXQoZ2xvYmFs
T2JqZWN0LCB2YWx1ZUlkZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gdmFs
dWVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcAppbmRleCA2ZTk0N2I2NGE0MTM2ZDM2YTRkMTUzOTFmZDI4MTg0MDM2OGJmNGYxLi5kZTA0
MmE3YTU0OTRiY2ZjZTU4Mjg5ZGE0ZmRhZTM2OGEzZjRhYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcApAQCAtNzEsMTAgKzcxLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAK
ICAgICBXYXNtOjpQYWdlQ291bnQgaW5pdGlhbFBhZ2VDb3VudDsKICAgICB7Ci0gICAgICAgIElk
ZW50aWZpZXIgaW5pdGlhbCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbml0aWFsIik7
CisgICAgICAgIElkZW50aWZpZXIgaW5pdGlhbCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJpbml0aWFsIl9zKTsKICAgICAgICAgSlNWYWx1ZSBpbml0U2l6ZVZhbHVlID0gbWVtb3J5RGVz
Y3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgaW5pdGlhbCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIElkZW50aWZp
ZXIgbWluaW11bSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtIik7CisgICAg
ICAgIElkZW50aWZpZXIgbWluaW11bSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5p
bXVtIl9zKTsKICAgICAgICAgSlNWYWx1ZSBtaW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoZ2xvYmFsT2JqZWN0LCBtaW5pbXVtKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFtaW5TaXplVmFs
dWUuaXNVbmRlZmluZWQoKSAmJiAhaW5pdFNpemVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05
Nyw3ICs5Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5TWVtb3J5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgewogICAgICAgICAvLyBJ
biBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVuZGVmaW5l
ZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1bHQuCiAgICAgICAgIC8vIGh0dHBzOi8vd2ViaWRs
LnNwZWMud2hhdHdnLm9yZy8jaWRsLWRpY3Rpb25hcmllcwotICAgICAgICBJZGVudGlmaWVyIG1h
eGltdW0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSIpOworICAgICAgICBJ
ZGVudGlmaWVyIG1heGltdW0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSJf
cyk7CiAgICAgICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0
KGdsb2JhbE9iamVjdCwgbWF4aW11bSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghbWF4U2l6ZVZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogCiAgICAgV2FzbTo6TWVtb3J5U2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBXYXNtOjpNZW1v
cnlTaGFyaW5nTW9kZTo6RGVmYXVsdDsKICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlC
dWZmZXIoKSkgewotICAgICAgICBKU1ZhbHVlIHNoYXJlZFZhbHVlID0gbWVtb3J5RGVzY3JpcHRv
ci0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNoYXJlZCIp
KTsKKyAgICAgICAgSlNWYWx1ZSBzaGFyZWRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaGFyZWQiX3MpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgYm9vbCBzaGFyZWQgPSBzaGFyZWRWYWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTFhYzE2YTcxOTA0Yzc1M2Q5
MjQ4Y2FkYTliODNkY2M1MGRhMzVmYi4uMDM2ZDJiZWQzYWQ3OWViMzBlYmI4MWNjMTM2N2E1MjIx
ZWUxZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTExMSw5ICsxMTEsOSBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiAgICAgY29uc3QgYXV0byYgaW1wb3J0cyA9IG1v
ZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRzOwogICAgIGlmIChpbXBvcnRzLnNpemUo
KSkgewotICAgICAgICBJZGVudGlmaWVyIG1vZHVsZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtb2R1bGUiKTsKLSAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5hbWUiKTsKLSAgICAgICAgSWRlbnRpZmllciBraW5kID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImtpbmQiKTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibW9kdWxlIl9zKTsKKyAgICAgICAgSWRlbnRpZmll
ciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpOworICAgICAgICBJ
ZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAia2luZCJfcyk7CiAg
ICAgICAgIGZvciAoY29uc3QgV2FzbTo6SW1wb3J0JiBpbXAgOiBpbXBvcnRzKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKQEAgLTE0
Miw4ICsxNDIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNb2R1bGVF
eHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiAgICAgY29uc3QgYXV0byYg
ZXhwb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOwogICAgIGlmIChl
eHBvcnRzLnNpemUoKSkgewotICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibmFtZSIpOwotICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAia2luZCIpOworICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyk7CisgICAgICAgIElkZW50aWZpZXIg
a2luZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJraW5kIl9zKTsKICAgICAgICAgZm9y
IChjb25zdCBXYXNtOjpFeHBvcnQmIGV4cCA6IGV4cG9ydHMpIHsKICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggZGFhZjBmZjAxNjhmMTM2MzhlMDhlMjJlN2RmYzU2NjFmNGNiZDQ1MS4u
YWZmMWFlOTgxNjAzMGYwN2RjNDRjNzgxZTM3ZmUxYjA2ZTdjYmJhNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29u
c3RydWN0b3IuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAK
ICAgICBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlIHR5cGU7CiAgICAgewotICAgICAgICBJZGVudGlm
aWVyIGVsZW1lbnRJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbGVtZW50Iik7
CisgICAgICAgIElkZW50aWZpZXIgZWxlbWVudElkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImVsZW1lbnQiX3MpOwogICAgICAgICBKU1ZhbHVlIGVsZW1lbnRWYWx1ZSA9IG1lbW9y
eURlc2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIGVsZW1lbnRJZGVudCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
IFN0cmluZyBlbGVtZW50U3RyaW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9i
amVjdCk7CkBAIC04MiwxMCArODIsMTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
IldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0aGUg
c3RyaW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcyk7CiAgICAgfQogCi0gICAgSWRlbnRp
ZmllciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIp
OworICAgIElkZW50aWZpZXIgaW5pdGlhbElkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImluaXRpYWwiX3MpOwogICAgIEpTVmFsdWUgaW5pdGlhbFNpemVWYWx1ZSA9IG1lbW9yeURl
c2NyaXB0b3ItPmdldChnbG9iYWxPYmplY3QsIGluaXRpYWxJZGVudCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBJZGVudGlmaWVy
IG1pbmltdW1JZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtIik7Cisg
ICAgSWRlbnRpZmllciBtaW5pbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bSJfcyk7CiAgICAgSlNWYWx1ZSBtaW5TaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoZ2xvYmFsT2JqZWN0LCBtaW5pbXVtSWRlbnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFpbml0aWFsU2l6ZVZh
bHVlLmlzVW5kZWZpbmVkKCkgJiYgIW1pblNpemVWYWx1ZS5pc1VuZGVmaW5lZCgpKQpAQCAtMTAw
LDcgKzEwMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgLy8gSW4gV2ViSURMLCAi
cHJlc2VudCIgbWVhbnMgdGhhdCBbW0dldF1dIHJlc3VsdCBpcyB1bmRlZmluZWQsIG5vdCBbW0hh
c1Byb3BlcnR5XV0gcmVzdWx0LgogICAgIC8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9y
Zy8jaWRsLWRpY3Rpb25hcmllcwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07
Ci0gICAgSWRlbnRpZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bSIpOworICAgIElkZW50aWZpZXIgbWF4aW11bUlkZW50ID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW0iX3MpOwogICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0g
bWVtb3J5RGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbWF4aW11bUlkZW50KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
ICghbWF4U2l6ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcAppbmRleCAy
OWI1ZjJkZGJkMzM0NGRlZjZkZjk3ZDBhNDA5NGI3MGNkNjBmNDJlLi5iMjEwMmVmYzUxOTE5ZDg3
N2I5YTdmOWY4ZjhkMWU4OGU0NmIzNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuY3BwCkBAIC0xMTMsNyAr
MTEzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFnUHJvdG9GdW5j
VHlwZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIEpTQXJyYXkqIHBhcmFtZXRl
cnMgPSBjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqPihudWxscHRyKSwgYXJnTGlzdCk7CiAgICAgSlNPYmplY3QqIHR5cGUgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCksIDEpOwotICAgIHR5cGUtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcmFtZXRlcnMiKSwgcGFyYW1ldGVycyk7CisgICAgdHlwZS0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyYW1ldGVycyJfcyksIHBhcmFtZXRl
cnMpOwogCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXktYW1z
LXVpL0FwcGxlUGF5QU1TVUlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXIuY3BwCmluZGV4
IDRhMzIyNWNlOWNhNDA2YzAwZmUxNjg0NjBhNWQ2ZDAzMDA0Mjg1NTkuLmYxNDM1MDg3MjUwNmI3
OTMwODRhODc5ZjA2ZTE5MGE3ODI5NWJkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXltZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS1hbXMtdWkvQXBwbGVQYXlBTVNVSVBh
eW1lbnRIYW5kbGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEFwcGxlUGF5QU1TVUlQYXlt
ZW50SGFuZGxlcjo6ZmluaXNoU2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmVzdWx0KQog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
ICAgICBhdXRvKiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzdWNjZXNzIiksIEpTQzo6anNCb29sZWFuKHN1Y2Nlc3MpKTsKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InN1Y2Nlc3MiX3MpLCBKU0M6OmpzQm9vbGVhbihzdWNjZXNzKSk7CiAKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJL
ZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCBjZTIxY2I4MjcwZWNmZmE3YjA1ZDc0MGI5
NjczNmRkMjNjYmY0MTE1Li5hMzVmMmE5YWYyOTRiMDM0NTNmYTE1ZTJjNGE1MWRiODE2NDcxNjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCBib29sIENETVNlc3Npb25DbGVhcktleTo6dXBkYXRlKFVpbnQ4QXJy
YXkqIHJhd0tleXNEYXRhLCBSZWZQdHI8VWludDhBcnJheT4mIG5leAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGtleXNBcnJheVZhbHVlID0gYXNPYmplY3Qo
a2V5c0RhdGFWYWx1ZSktPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImtleXMiKSk7CisgICAgICAgIGF1dG8ga2V5c0FycmF5VmFsdWUgPSBhc09i
amVjdChrZXlzRGF0YVZhbHVlKS0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAia2V5cyJfcykpOwogICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkgfHwgIWlzSlNBcnJheShrZXlzQXJyYXlWYWx1ZSkpIHsKICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25DbGVhcktleTo6dXBkYXRlKCVwKSAtIGZhaWxlZDoga2V5cyBhcnJheSBt
aXNzaW5nIG9yIGVtcHR5IiwgdGhpcyk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKaW5kZXggZmY5MzcxMGYyMDk3NDZiYWFlZjlhNjZjNTdjZDAyNGMwOTUzY2IwOC4u
NGE0NGI3MmNlZWI4YjZjNmU5YjViMzU2Mzc3OTVkZWI0MmQ4NzQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjwKICAgICBp
ZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiQ2xhc3MgZGVmaW5pdGlvbiBwYXNzZWQgdG8gcmVnaXN0ZXJQcm9jZXNzb3IoKSBo
YXMgaW52YWxpZCBwcm90b3R5cGUiX3MgfTsKIAotICAgIGF1dG8gcGFyYW1ldGVyRGVzY3JpcHRv
cnNWYWx1ZSA9IGpzQ29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcmFtZXRlckRlc2NyaXB0b3JzIikpOworICAgIGF1dG8gcGFy
YW1ldGVyRGVzY3JpcHRvcnNWYWx1ZSA9IGpzQ29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3Qs
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmFtZXRlckRlc2NyaXB0b3JzIl9z
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKIAogICAgIFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4gcGFy
YW1ldGVyRGVzY3JpcHRvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKaW5kZXggYzhjNDg2YTZlOWE2YzU0
MTcxMTg0OWNjNWMzMTk5ODE4NmVhMGE5OC4uY2ViYjQ4NDM5MjlmMTJmYzU4NmZkNWRkMzgxNTBh
OWZmN2M4ZDMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIGJvb2wg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9C
dXM+PiYgaW5wdXRzLCBWZWN0CiAgICAgYnVpbGRKU0FyZ3VtZW50cyh2bSwgZ2xvYmFsT2JqZWN0
LCBhcmdzLCBpbnB1dHMsIG91dHB1dHMsIHBhcmFtVmFsdWVzTWFwKTsKIAogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIHJlc3VsdCA9IEpT
Q2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayh2bSwgd3JhcHBlcigpLCBqc1VuZGVmaW5lZCgp
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRv
IHJlc3VsdCA9IEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayh2bSwgd3JhcHBlcigpLCBq
c1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIl9zKSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRp
b24oJmdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICB0aHJld0V4Y2Vw
dGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKaW5kZXggYjY5YWJhNDk5MzFmNzFh
Y2Q2YWJkYzhiOGU1YTJmMGZkYWYzYjA4ZS4uZDA1MzVjNWI1NDBlNjBkODcwNWUyNDAzNWU1NzVj
MDQzMzhkNWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAtMTI5LDI1ICsxMjksMjUg
QEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWwKICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20oKSwgbG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKICAgICBhdXRv
IGVsZW1lbnRJbnRlcmZhY2UgPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNyZWF0ZShuYW1l
LCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0KCkpOwogCi0gICAgYXV0byogY29ubmVjdGVkQ2Fs
bGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
dG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29ubmVjdGVkQ2FsbGJh
Y2siKSk7CisgICAgYXV0byogY29ubmVjdGVkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2Fs
bGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY29ubmVjdGVkQ2FsbGJhY2siX3MpKTsKICAgICBpZiAoY29ubmVjdGVk
Q2FsbGJhY2spCiAgICAgICAgIGVsZW1lbnRJbnRlcmZhY2UtPnNldENvbm5lY3RlZENhbGxiYWNr
KGNvbm5lY3RlZENhbGxiYWNrKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwogCi0gICAgYXV0byogZGlzY29ubmVjdGVkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVt
ZW50Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlzY29ubmVjdGVkQ2FsbGJhY2siKSk7CisgICAgYXV0byog
ZGlzY29ubmVjdGVkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2sobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvdG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZGlzY29ubmVjdGVkQ2FsbGJhY2siX3MpKTsKICAgICBpZiAoZGlzY29ubmVjdGVkQ2FsbGJhY2sp
CiAgICAgICAgIGVsZW1lbnRJbnRlcmZhY2UtPnNldERpc2Nvbm5lY3RlZENhbGxiYWNrKGRpc2Nv
bm5lY3RlZENhbGxiYWNrKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwogCi0gICAgYXV0byogYWRvcHRlZENhbGxiYWNrID0gZ2V0Q3VzdG9tRWxlbWVudENhbGxi
YWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImFkb3B0ZWRDYWxsYmFjayIpKTsKKyAgICBhdXRvKiBhZG9wdGVkQ2FsbGJh
Y2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvdG90
eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWRvcHRlZENhbGxiYWNrIl9z
KSk7CiAgICAgaWYgKGFkb3B0ZWRDYWxsYmFjaykKICAgICAgICAgZWxlbWVudEludGVyZmFjZS0+
c2V0QWRvcHRlZENhbGxiYWNrKGFkb3B0ZWRDYWxsYmFjayk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAotICAgIGF1dG8qIGF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm90
b3R5cGVPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2siKSk7CisgICAgYXV0byogYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gZ2V0Q3Vz
dG9tRWxlbWVudENhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3RvdHlwZU9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJfcykp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgaWYgKGF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaykgewotICAgICAgICBhdXRvIG9ic2VydmVkQXR0cmlidXRl
c1ZhbHVlID0gY29uc3RydWN0b3ItPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm9ic2VydmVkQXR0cmlidXRlcyIpKTsKKyAgICAgICAgYXV0byBv
YnNlcnZlZEF0dHJpYnV0ZXNWYWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvYnNlcnZlZEF0dHJpYnV0ZXMiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAg
ICAgaWYgKCFvYnNlcnZlZEF0dHJpYnV0ZXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICBhdXRvIG9ic2VydmVkQXR0cmlidXRlcyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9N
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgb2JzZXJ2ZWRBdHRyaWJ1dGVzVmFsdWUpOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIEpTVmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmlu
ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBhdXRvIGRpc2FibGVkRmVhdHVyZXNWYWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkaXNhYmxl
ZEZlYXR1cmVzIikpOworICAgIGF1dG8gZGlzYWJsZWRGZWF0dXJlc1ZhbHVlID0gY29uc3RydWN0
b3ItPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImRpc2FibGVkRmVhdHVyZXMiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIGlmICghZGlzYWJsZWRGZWF0dXJlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgYXV0byBkaXNhYmxlZEZlYXR1cmVzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01T
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBkaXNhYmxlZEZlYXR1cmVzVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4
IDEwNmZmNTJlYWYyMDA4N2FlYTcyNzg1YWM0Y2M5OGQyMTE3ODgxNDEuLjhjZTc4OTU5ZWVkMzAz
YzJiZDFhYjc2MjViOGIxOTVjYTMxZGI2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBpbmxpbmUg
dm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyYgZGlhbG9nKQogICAg
IC8vICAgICAgICB3b3JsZCBpZiBkaWFsb2dBcmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRl
ZCB3b3JsZC4KICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRvdyht
X2ZyYW1lLmdldCgpLCBub3JtYWxXb3JsZCh2bSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxvZ0Fy
Z3VtZW50cyA9IG1fY2FsbEZyYW1lLmFyZ3VtZW50KDEpKQotICAgICAgICBnbG9iYWxPYmplY3Qt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRpYWxvZ0FyZ3VtZW50
cyIpLCBkaWFsb2dBcmd1bWVudHMpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRpYWxvZ0FyZ3VtZW50cyJfcyksIGRpYWxv
Z0FyZ3VtZW50cyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJldHVyblZh
bHVlKCkgY29uc3QKQEAgLTQ4MSw3ICs0ODEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5k
bGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9
IHRvSlNET01XaW5kb3cobV9mcmFtZS5nZXQoKSwgbm9ybWFsV29ybGQodm0pKTsKICAgICBpZiAo
IWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJldHVyblZhbHVl
Iik7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInJldHVyblZhbHVlIl9zKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIGlmICghSlNHbG9i
YWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsICZtX2dsb2JhbE9iamVj
dCwgaWRlbnRpZmllciwgc2xvdCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
NTg2LDcgKzU4Niw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldE9wZW5lcihKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsCiAgICAgfQogCiAgICAgYm9v
bCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSwgIm9wZW5lciIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIGNyZWF0ZURhdGFQcm9wZXJ0
eSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xv
YmFsT2JqZWN0LnZtKCksICJvcGVuZXIiX3MpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBK
U1ZhbHVlIEpTRE9NV2luZG93OjpzZWxmKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdApAQCAt
NjU3LDcgKzY1Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6CiAgICAgICAgIHJldHVybjsK
IAogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0cnVlOwotICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCksICJvcGVuRGF0YWJhc2UiKSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBj
cmVhdGVEYXRhUHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCAib3BlbkRhdGFiYXNlIl9zKSwgdmFsdWUs
IHNob3VsZFRocm93KTsKIH0KIAogSlNET01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChG
cmFtZSYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAppbmRleCBlNTJiNWQ5ZTU0OTM2Yjk0NWE0MzY3YmU4ZGIzOWFkNzEyZWY0NjE4Li5j
NzBmODRkMjVjNTcyYWM0NDIwODJlM2NmODkyODE3MGQ4NzdkMzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBpZiAobV9pc0F0dHJpYnV0ZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5j
dGlvbi0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rp
b24tPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
aGFuZGxlRXZlbnQiX3MpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigp
KSkgewogICAgICAgICAgICAgYXV0byogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDQzYzk4NzFkNmQwNjc4N2M5
Yjg4ODIzNDAwMDFjNmNjZTBjZWYxN2YuLjU1MTUyM2YxZmI4YzZlNmJjOTY4NmY4NDIyYWY4Zjhi
NzE0YzhhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCoKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8mIGRhdGEgPSBp
bWFnZURhdGEtPmRhdGEoKTsKICAgICBhdXRvKiB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxJbWFn
ZURhdGE+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbWFnZURhdGEpKTsKLSAgICBJZGVudGlmaWVy
IGRhdGFOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRhdGEiKTsKKyAgICBJZGVu
dGlmaWVyIGRhdGFOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRhdGEiX3MpOwog
ICAgIHdyYXBwZXItPnB1dERpcmVjdCh2bSwgZGF0YU5hbWUsIHRvSlMobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBkYXRhKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIC8vIEZJWE1FOiBBZG9wdCByZXBv
cnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxv
Y2F0ZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MjU5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5jcHAKaW5kZXggNzAxZDM5YzA4YjBiNzljYmEzMjIyYjMyNTdkNTU0OTNhYjQ3MTgxOC4uNTkx
ZTg0OTZlMmViN2U2YjM1NmNhZTI4YWY2NTVhMjdiMWQ0MzA1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0zNzEsNyArMzcx
LDcgQEAgSlNDOjpKU09iamVjdCogU2NyaXB0TW9kdWxlTG9hZGVyOjpjcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcyhKU0M6OkpTR2xvYmFsT2JqZWMKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNw
b25zZVVSTEZyb21SZXF1ZXN0VVJMKCpqc0dsb2JhbE9iamVjdCwgbW9kdWxlS2V5VmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgbWV0YVByb3Bl
cnRpZXMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXJs
IiksIEpTQzo6anNTdHJpbmcodm0sIHJlc3BvbnNlVVJMLnN0cmluZygpKSk7CisgICAgbWV0YVBy
b3BlcnRpZXMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXJsIl9zKSwgSlNDOjpqc1N0cmluZyh2bSwgcmVzcG9uc2VVUkwuc3RyaW5nKCkpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIHJldHVybiBtZXRhUHJv
cGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggYjQ1Y2JkOWZlMzhhZDc1N2I0ZGE2MjA3MmM3ZDE3ZGEyZGM0MzBm
MS4uYmM1YzYwNDFmNzRiZDY2ZjNiMGM5ODAxYzZiMmNlYWUzYTljZDVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI2
NjksNyArMjY2OSw3IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRl
bnQKICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpXG4iOwogICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgICAgICAke2tl
eX1WYWx1ZSA9IGpzVW5kZWZpbmVkKCk7XG4iOwogICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtp
bmRlbnR9ICAgIGVsc2Uge1xuIjsKLSAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAg
ICAgICAgJHtrZXl9VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tleX1cIikpO1xuIjsKKyAgICAgICAgICAgICRy
ZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAgJHtrZXl9VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tleX1cIl9z
KSk7XG4iOwogICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iOwogICAgICAgICAgICAgJHJlc3VsdCAu
PSAiJHtpbmRlbnR9ICAgIH1cbiI7CiAKQEAgLTI3NjUsMTQgKzI3NjUsMTQgQEAgc3ViIEdlbmVy
YXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAgICAgICAgICAgICAk
cmVzdWx0IC49ICIke2luZGVudH0gICAgaWYgKCEke0lETFR5cGV9Ojppc051bGxWYWx1ZSgke3Zh
bHVlRXhwcmVzc2lvbn0pKSB7XG4iOwogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIk
e2luZGVudH0gICAgICAgIGF1dG8gJHtrZXl9VmFsdWUgPSAke2NvbnZlcnNpb25FeHByZXNzaW9u
fTtcbiI7CiAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50fSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIjsKLSAgICAgICAgICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7a2V5fVwiKSwgJHtrZXl9VmFsdWUp
O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiJHtpbmRlbnR9ICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7
a2V5fVwiX3MpLCAke2tleX1WYWx1ZSk7XG4iOwogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0
IC49ICIke2luZGVudH0gICAgfVxuIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBteSAkY29udmVyc2lvbkV4cHJlc3Npb24gPSBOYXRpdmVUb0pTVmFsdWVV
c2luZ1JlZmVyZW5jZXMoJG1lbWJlciwgJHR5cGVTY29wZSwgJHZhbHVlRXhwcmVzc2lvbiwgImds
b2JhbE9iamVjdCIpOwogCiAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiR7aW5kZW50
fSAgICBhdXRvICR7a2V5fVZhbHVlID0gJHtjb252ZXJzaW9uRXhwcmVzc2lvbn07XG4iOwogICAg
ICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAu
PSAiJHtpbmRlbnR9ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIFwiJHtrZXl9XCIpLCAke2tleX1WYWx1ZSk7XG4iOworICAgICAgICAgICAg
ICAgICAgICAkcmVzdWx0IC49ICIke2luZGVudH0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tleX1cIl9zKSwgJHtrZXl9VmFsdWUp
O1xuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCRuZWVkc1J1bnRp
bWVDaGVjaykgewogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKQEAg
LTQxNzYsNyArNDE3Niw3IEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4iKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU09iamVjdCYgdW5zY29wYWJsZXMgPSAqY29uc3Ry
dWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KCktPnZtKCksIGdsb2JhbE9iamVjdCgpLT5udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpO1xuIik7CiAgICAgZm9yZWFjaCBteSAkdW5zY29w
YWJsZSAoQHVuc2NvcGFibGVzKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVu
c2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIkdW5z
Y29wYWJsZVwiKSwganNCb29sZWFuKHRydWUpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB1bnNjb3BhYmxlcy5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIFwiJHVuc2NvcGFibGVcIl9zKSwganNCb29sZWFuKHRydWUpKTtcbiIpOwogICAgIH0K
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5zY29wYWJsZXNTeW1ib2wsICZ1bnNjb3BhYmxlcywgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7XG4iKTsKIH0KQEAgLTQ1NzksNyArNDU3OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+
bmFtZTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghJHtydW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTtcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgXCIkbmFtZVwiX3MpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7XG4iKTsKQEAgLTU0NzksNyArNTQ3OSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRl
ckJvZHlEZWZpbml0aW9uCiAgICAgICAgIAogICAgICAgICAjIDMuNS45LjEuIExldCBRIGJlID8g
R2V0KE8sIGlkKS4KICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIke2lkfVwiKSwgc3RybGVuKFwi
JHtpZH1cIikpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGlk
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2lkfVwiX3MpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlzT2Jq
ZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpO1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtc
biIpOwogICAgICAgICAKQEAgLTU0OTEsNyArNTQ5MSw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0
ZVNldHRlckJvZHlEZWZpbml0aW9uCiAgICAgICAgIAogICAgICAgICAjIDMuNS45LjMuIExldCBm
b3J3YXJkSWQgYmUgdGhlIGlkZW50aWZpZXIgYXJndW1lbnQgb2YgdGhlIFtQdXRGb3J3YXJkc10g
ZXh0ZW5kZWQgYXR0cmlidXRlLgogICAgICAgICBteSAkZm9yd2FyZElkID0gJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2FyZHN9OwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIke2ZvcndhcmRJZH1cIiksIHN0cmxlbihc
IiR7Zm9yd2FyZElkfVwiKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGF1dG8gZm9yd2FyZElkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2ZvcndhcmRJ
ZH1cIl9zKTtcbiIpOwogICAgICAgICAKICAgICAgICAgIyAzLjUuOS40LiBQZXJmb3JtID8gU2V0
KFEsIGZvcndhcmRJZCwgViwgZmFsc2UpLgogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFsdWVUb0ZvcndhcmRUbywgZmFsc2UpO1xuIik7CkBA
IC01ODk4LDEyICs1ODk4LDEyIEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRUb0pTT05PcGVyYXRpb25E
ZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBp
ZiAoJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvICR7YXR0cmlidXRlTmFt
ZX1WYWx1ZSA9ICR7dG9KU0V4cHJlc3Npb259O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7YXR0cmlidXRlTmFtZX1cIiksICR7YXR0cmlidXRlTmFt
ZX1WYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
XCIke2F0dHJpYnV0ZU5hbWV9XCJfcyksICR7YXR0cmlidXRlTmFtZX1WYWx1ZSk7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvICR7YXR0cmlidXRlTmFtZX1WYWx1ZSA9ICR7dG9KU0V4cHJlc3Npb259O1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2F0dHJpYnV0ZU5hbWV9
XCIpLCAke2F0dHJpYnV0ZU5hbWV9VmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgXCIke2F0dHJpYnV0ZU5hbWV9XCJfcyksICR7YXR0cmlidXRlTmFtZX1W
YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGNv
bmRpdGlvbmFsKSB7CkBAIC02NjIzLDcgKzY2MjMsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24g
PSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2Vw
dGlvbikiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBteSAkY2FsbGJh
Y2tUeXBlID0gJG51bU9wZXJhdGlvbnMgPiAxID8gIk9iamVjdCIgOiAiRnVuY3Rpb25Pck9iamVj
dCI7Ci0gICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2Z1bmN0
aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CisgICAgICAgICAgICAgICAgJGNhbGxi
YWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIl9zKSwgcmV0dXJuZWRFeGNl
cHRpb24pIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPnR5
cGUtPm5hbWUgZXEgInVuZGVmaW5lZCIpIHsKQEAgLTc5MDYsNyArNzkwNiw3IEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBteSAkcnVudGltZUVuYWJsZUNv
bmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmco
JGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlLCAiJmdsb2JhbE9iamVjdCIpOwogICAg
ICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmd9KSB7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJG5hbWVcIl9zKTtcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRTdGFyLmNwcAppbmRleCA0NjlhMTIxZjI0OTVlNmI0MjhhZWVmNjIwODhhZDA1
ZmU1NGNhNzA4Li4wMmE0ZDg3MDRjY2E3NGVjMTkwOGM2N2U3YTBlNmM4ZDJiZTc5ZmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFN0YXIuY3BwCkBAIC0xMjYsMTQgKzEyNiwxNCBAQCB2b2lkIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBib29sIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSBmYWxzZTsKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMi
KSwgc3RybGVuKCJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiKSk7CisgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9wZXJhdGlvbkp1
c3RGb3JXaW5kb3dDb250ZXh0cyJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIiksIHN0cmxl
bigib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIikpOworICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvcGVyYXRpb25KdXN0Rm9yV29y
a2VyQ29udGV4dHMiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAppbmRleCBmZjExNDg1YzVlNjhkYzU3
YmFiZjJhZWE0YzY1NjU1OTA0MzE3YWJkLi4zODljYWExOWU4ZWVkZjI0NGYwYmU1MzlhMzFkNzg2
MmY3MzY5NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8PiBFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OkRp
Y3QgY29udmVydERpY3Rpb25hcnk8RXhwb3NlZFRvV29ya2VyQW5kV2kKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIG9ialZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgb2JqVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9iaiIpKTsKKyAgICAgICAgb2JqVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm9iaiJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghb2JqVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtODUsNyAr
ODUsNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICghSURMSW50ZXJmYWNlPFRl
c3RPYmo+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5Lm9iaikpIHsKICAgICAgICAgYXV0byBvYmpW
YWx1ZSA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEludGVyZmFjZTxUZXN0T2JqPjo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkub2JqKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9iaiIpLCBvYmpWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJv
YmoiX3MpLCBvYmpWYWx1ZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcAppbmRleCBkNjQ5ZjFkMzMwMmYyYTg0ZjM4NDBhMjYyODQ1YjdmNWQ3
YTIxYTFiLi4xMTVjOWQxZTZlZjJmNjc3Y2RlYjE5M2M5ZTZjYWUyNWUwN2ZhMzE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTI4MCwxNCArMjgwLDE0IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZVNldHRlcihKU0ds
b2JhbE9iamVjCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJzdHJpbmdpZmllckF0dHJpYnV0ZSIpLCBzdHJsZW4oInN0cmluZ2lmaWVy
QXR0cmlidXRlIikpOworICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5naWZpZXJBdHRyaWJ1dGUiX3MpOwogICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRo
aXNPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZVRvRm9y
d2FyZFRvLmlzT2JqZWN0KCkpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBhdXRvIGZvcndhcmRJZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWUiKSwgc3RybGVuKCJ2YWx1ZSIpKTsKKyAgICBhdXRv
IGZvcndhcmRJZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSJfcyk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QodmFsdWVUb0ZvcndhcmRUbywgZmFsc2UpOwogICAgIGFzT2Jq
ZWN0KHZhbHVlVG9Gb3J3YXJkVG8pLT5tZXRob2RUYWJsZSh2bSktPnB1dChhc09iamVjdCh2YWx1
ZVRvRm9yd2FyZFRvKSwgJmxleGljYWxHbG9iYWxPYmplY3QsIGZvcndhcmRJZCwgdmFsdWUsIHNs
b3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwpAQCAtMzgw
LDE0ICszODAsMTQgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zX3N0
cmluZ2lmaWVyQXR0cmlidXRlTm90TmVlZGVkU2V0dGVyKEpTR2wKIHsKICAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInN0cmluZ2lmaWVyQXR0
cmlidXRlTm90TmVlZGVkIiksIHN0cmxlbigic3RyaW5naWZpZXJBdHRyaWJ1dGVOb3ROZWVkZWQi
KSk7CisgICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdpZmll
ckF0dHJpYnV0ZU5vdE5lZWRlZCJfcyk7CiAgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhp
c09iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlVG9Gb3J3
YXJkVG8uaXNPYmplY3QoKSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGF1dG8gZm9yd2FyZElkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJ2YWx1ZVdpdGhvdXRSZWFjdGlvbnMiKSwgc3RybGVuKCJ2YWx1
ZVdpdGhvdXRSZWFjdGlvbnMiKSk7CisgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidmFsdWVXaXRob3V0UmVhY3Rpb25zIl9zKTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdCh2YWx1ZVRvRm9yd2FyZFRvLCBmYWxzZSk7CiAgICAgYXNPYmplY3QodmFsdWVU
b0ZvcndhcmRUbyktPm1ldGhvZFRhYmxlKHZtKS0+cHV0KGFzT2JqZWN0KHZhbHVlVG9Gb3J3YXJk
VG8pLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZm9yd2FyZElkLCB2YWx1ZSwgc2xvdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCA0OGI0YzJmNzgxN2E3NDczYzBjYTM1NTRhZDZjNDhl
ZjhmNmYyM2ViLi5lOTkxNGM3YWRmYjk3NjFhNDVjNGI3NWY2Y2E5ZGMyZjlkODk5MTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdGVt
cGxhdGU8PiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25h
cnk8VGVzdENhbGxiYWNrSW50ZXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IG9wdGlvbmFsTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBvcHRpb25hbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJvcHRpb25hbE1lbWJlciIpKTsKKyAgICAgICAg
b3B0aW9uYWxNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3B0aW9uYWxNZW1iZXIiX3MpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW9w
dGlvbmFsTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTA3LDcgKzEwNyw3IEBAIHRl
bXBsYXRlPD4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9u
YXJ5PFRlc3RDYWxsYmFja0ludGVyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICByZXF1aXJlZE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgcmVxdWlyZWRNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVxdWlyZWRNZW1iZXIiKSk7CisgICAgICAg
IHJlcXVpcmVkTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkTWVtYmVyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFy
ZXF1aXJlZE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBD
YWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4g
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkp
OwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAg
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tXaXRoTm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tU
eXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhOb1Bh
cmFtIl9zKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwpAQCAtMjIwLDcgKzIyMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAg
QVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwg
dGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFycmF5UGFyYW0iX3MpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICBy
ZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0yNDgsNyArMjQ4
LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlv
blR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlv
bjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIl9zKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAt
Mjc1LDcgKzI3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1w
bGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgQVNTRVJUKCFhcmdz
Lmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3QiX3MpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNh
bEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJh
Y2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zMDIsNyArMzAyLDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVz
dENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNr
V2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2Fs
bGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQm9vbGVhbiJf
cyksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKQEAgLTMzMCw3ICszMzAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmlu
ZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNW
YWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MiKSwgcmV0dXJu
ZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwg
YXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MiX3MpLCByZXR1cm5lZEV4
Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAg
ICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zNTYsNyAr
MzU2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRh
dGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3Zl
cmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2Vw
dGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhp
c1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUiKSwgcmV0dXJu
ZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSJf
cyksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKQEAgLTM4Niw3ICszODYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFJldGhyb3dz
RXhjZXB0aW9ucyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBqc1Jlc3VsdCA9IG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJh
Y2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIl9zKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTQxNyw3ICs0MTcsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlw
ZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2Vk
KCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwot
ICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNPYmplY3QiKSwgcmV0dXJuZWRFeGNlcHRp
b24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlz
VmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNPYmplY3QiX3MpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9y
dEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAg
ICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKaW5kZXggZGFiNWNlMjEyOWViMmNmOGQw
N2ZhNDU5MGVlMjMyZTM5Yzk1OWQ4OS4uYzFmY2FiZmEyNjI1MmM2MWQ5YzEzOTc1YTYyYzUxMmM5
N2M5NzU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcApAQCAt
MTk2LDcgKzE5Niw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNCiAgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjppbmZvKCksIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKLSAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX0NPTlNUQU5UIiksIHN0cmxlbigiTUlYSU5fQ09OU1RB
TlQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIk1JWElOX0NPTlNUQU5UIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CkBAIC0yMDQsNyArMjA0LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0KICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0gICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiKSwgc3RybGVu
KCJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCJf
cyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAm
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVz
KCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
UEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiKSwgc3RybGVuKCJQQVJUSUFMX01J
WElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9N
X1BBUlRJQUwiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTMxMyw3ICsz
MTMsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0
dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
bWl4aW5PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbk9wZXJhdGlvbiIpKTsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5PcGVyYXRp
b24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMjIsNyArMzIyLDcg
QEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIy
KSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdz
VmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGlu
Q29tcGxleE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29tcGxleE9wZXJhdGlvbiIpKTsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4
aW5Db21wbGV4T3BlcmF0aW9uIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpA
QCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVO
QUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ3VzdG9tT3Bl
cmF0aW9uIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtaXhpbkN1c3RvbU9wZXJhdGlvbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiAoRU5BQkxFKENvbmRp
dGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVl
cygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkNvbmRp
dGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpKTsK
KyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYg
KCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxl
bigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIikpOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBA
IC0zNTgsNyArMzU4LDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5B
QkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblJlc3Vs
dEZpZWxkT3BlcmF0aW9uIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIl9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lm
IChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENv
bmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiksIHN0cmxlbigicGFydGlhbE1p
eGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0
aWFsIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzc2LDcgKzM3Niw3
IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5h
YmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIl9z
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZv
aWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAg
IGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5BdHRy
aWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1peGluQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFs
dWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ3Vz
dG9tQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5DdXN0b21BdHRyaWJ1dGUiKSk7CisgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGluQ3Vz
dG9tQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtNDAz
LDcgKzQwMyw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluTm9kZUF0dHJpYnV0ZSIp
LCBzdHJsZW4oIm1peGluTm9kZUF0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5Ob2RlQXR0cmlidXRlIl9zKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiksIHN0
cmxlbigicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKSk7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxNaXhpbkF0
dHJpYnV0ZUZyb21QYXJ0aWFsIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpA
QCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX0NPTlNUQU5U
IiksIHN0cmxlbigiTUlYSU5fQ09OU1RBTlQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk1JWElOX0NPTlNUQU5UIl9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpLCBzdHJsZW4oIk1JWElOX1JF
RkxFQ1RFRF9DT05TVEFOVCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIl9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiksIHN0cmxl
bigiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiKSk7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIlBBUlRJQUxfTUlYSU5f
Q09OU1RBTlRfRlJPTV9QQVJUSUFMIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCmluZGV4IGRh
NjFkNjkzNjc5Mzk3ODQxYTAzMDUyZDEyNGRlMTExNTI3MDgyNjAuLjc4MTQyYmY3NjI2OTE2Y2Jl
YjBjNjcyNTk4ZWExYjUxNjY5Y2VmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZS5jcHAKQEAgLTE5MCwyOCArMTkwLDI4IEBAIHZvaWQgSlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGJv
b2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlIiksIHN0cmxlbigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
ICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiKSwg
c3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSJfcyk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFkb3duY2FzdDxEb2N1
bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIp
KTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIl9zKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50
Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzVmFsdWVzKCkudGVzdEZlYXR1cmVFbmFibGVkKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigic2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
UHJvbWlzZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0
ZVByb21pc2UiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21p
c2UiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTi5jcHAKaW5kZXggM2QzYzQzYzg1ODk2MGM5ZDdmZjg0MmM5NGNjZGFmMjZkNWNiNmIz
ZS4uZmRjOTRhODU3M2I0OGFiYzIxZmQwZGNmOTdjZjMyMjZhMDk5ZTgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T04uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OLmNwcApAQCAtMTk5LDE0ICsxOTksMTQgQEAgdm9pZCBKU1Rlc3REZWZh
dWx0VG9KU09OUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYm9vbCBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVuYWJsZWQoKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImxvbmdBdHRyaWJ1dGUiKSwgc3RybGVuKCJsb25nQXR0cmli
dXRlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJsb25nQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0
aW5nRW5hYmxlZCkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdzQXR0cmli
dXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNl
dHRpbmdzQXR0cmlidXRlIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwog
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAt
NzQ0LDU1ICs3NDQsNTUgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZh
dWx0VG9KU09OUHJvdG90eXBlRnVuY3Rpb25fdG9KU09OQm9keShKU0cKICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0UnVudGltZUVuYWJsZWRFbmFi
bGVkKCkpIHsKICAgICAgICAgYXV0byBsb25nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdBdHRyaWJ1dGUoKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb25nQXR0
cmlidXRlIiksIGxvbmdBdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9uZ0F0dHJpYnV0ZSJfcyksIGxvbmdB
dHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgYXV0byBlbmFi
bGVkQnlTZXR0aW5nc0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExVbnNpZ25lZFNob3J0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlTZXR0aW5nc0F0dHJp
YnV0ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIiksIGVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRl
VmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIl9zKSwgZW5hYmxlZEJ5U2V0dGlu
Z3NBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQog
ICAgIGF1dG8gZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRW51
bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnVtPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRy
aWJ1dGUiKSwgZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlDb25k
aXRpb25hbEF0dHJpYnV0ZSJfcyksIGVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlVmFsdWUp
OwogI2VuZGlmCiAKICAgICBhdXRvIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlyc3RT
dHJpbmdBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZmlyc3RTdHJpbmdBdHRyaWJ1dGUiKSwgZmlyc3RTdHJpbmdBdHRyaWJ1dGVWYWx1ZSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaXJz
dFN0cmluZ0F0dHJpYnV0ZSJfcyksIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUpOwogICAgIGF1
dG8gc2Vjb25kTG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zZWNvbmRMb25nQXR0cmlidXRlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlY29uZExvbmdBdHRyaWJ1dGUiKSwg
c2Vjb25kTG9uZ0F0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlY29uZExvbmdBdHRyaWJ1dGUiX3MpLCBzZWNvbmRM
b25nQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0
cmlidXRlVmFsdWUgPSB0b0pTPElETFVucmVzdHJpY3RlZERvdWJsZT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvdXJ0aFVucmVz
dHJpY3RlZERvdWJsZUF0dHJpYnV0ZSIpLCBmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1
dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUiX3MpLCBmb3VydGhVbnJl
c3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBmaWZ0aExvbmdDbGFtcGVk
QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETENsYW1wQWRhcHRvcjxJRExMb25nPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWZ0aExvbmdDbGFt
cGVkQXR0cmlidXRlIiksIGZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWZ0aExvbmdD
bGFtcGVkQXR0cmlidXRlIl9zKSwgZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZVZhbHVlKTsKICAg
ICBhdXRvIHNpeHRoVHlwZWRlZkF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExEb3VibGU+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNpeHRoVHlwZWRlZkF0dHJpYnV0ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaXh0aFR5cGVkZWZB
dHRyaWJ1dGUiKSwgc2l4dGhUeXBlZGVmQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2l4dGhUeXBlZGVmQXR0cmli
dXRlIl9zKSwgc2l4dGhUeXBlZGVmQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gc2V2ZW50aERp
cmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnNldmVudGhEaXJlY3RseVRvSlNP
TmFibGVBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSIpLCBzZXZlbnRoRGlyZWN0bHlU
b0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0
ZSJfcyksIHNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0
byBlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmVpZ2h0aEluZGly
ZWN0bHlBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSIpLCBlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRl
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSJfcyksIGVpZ2h0aEluZGlyZWN0bHlBdHRy
aWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0
cmlidXRlVmFsdWUgPSB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNP
TmFibGVBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSIpLCBuaW50aE9wdGlv
bmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmludGhPcHRpb25hbERpcmVjdGx5
VG9KU09OYWJsZUF0dHJpYnV0ZSJfcyksIG5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVB
dHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUg
PSB0b0pTPElETEZyb3plbkFycmF5PElETEJvb2xlYW4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlbnRoRnJvemVu
QXJyYXlBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIpLCB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRl
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSJfcyksIHRlbnRoRnJvemVuQXJyYXlBdHRy
aWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlVmFsdWUgPSB0
b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZWxldmVudGhTZXF1ZW5j
ZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJl
bGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIiksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVWYWx1
ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIl9zKSwgZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0
ZVZhbHVlKTsKICAgICBhdXRvIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVl
ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWw+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC50d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHdlbGZ0aEludGVyZmFj
ZVNlcXVlbmNlQXR0cmlidXRlIiksIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSJfcyksIHR3ZWxmdGhJbnRlcmZh
Y2VTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHRoaXJ0ZWVudGhSZWNvcmRBdHRy
aWJ1dGVWYWx1ZSA9IHRvSlM8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMVW5zaWduZWRTaG9y
dD4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwudGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlIiks
IHRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRl
Il9zKSwgdGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZVZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKaW5kZXggY2QzNjc1YzZjNzliMTk3MzRlOWY4
ZmE5MzAwNDJiZmFkYWE4MzJmNC4uY2I3ZTQ0MWFkZGRmNzA0OWFhMjdjODA3ODQ2YTczMTBhZThi
MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5jcHAKQEAgLTEzMiwxNCArMTMyLDE0IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAg
ICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZmlsdGVyZWRC
eUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiKSwgc3RybGVuKCJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRv
d0F0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiX3MpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZpbHRlcmVkQnlF
eHBvc2VkV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJB
dHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIl9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGVGdW5jdGkKICAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJv
dG90eXBlKCkpOwogICAgIGF1dG8gbm9ybWFsQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm5vcm1hbEF0dHJpYnV0ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3JtYWxBdHRyaWJ1
dGUiKSwgbm9ybWFsQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm9ybWFsQXR0cmlidXRlIl9zKSwgbm9ybWFsQXR0
cmlidXRlVmFsdWUpOwogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIGF1dG8gZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGVWYWx1
ZSA9IHRvSlM8SURMRG91YmxlPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5maWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSgpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0
cmlidXRlIiksIGZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlVmFsdWUpOworICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbHRl
cmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlIl9zKSwgZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dB
dHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGF1dG8gZmlsdGVyZWRCeUV4cG9zZWRX
b3JrZXJBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSgp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiksIGZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0
cmlidXRlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIl9zKSwgZmls
dGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQuY3BwCmluZGV4IDM0OTQ2NTg4NjVkNDEzNGE2NWRhMGRkZjVlM2ViN2ZhNTA0MDE2
OWEuLmJlMmZkMjEwNGFkZjUwOTQ2NzJmMjliYzU4OWI2NjEyYWYxYTIzODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcApAQCAtMjI1LDU4ICsyMjUsNTggQEAg
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFBy
b3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkIKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS50ZXN0UnVudGltZUVuYWJsZWRFbmFibGVkKCkpIHsKICAgICAgICAg
YXV0byBsb25nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdBdHRyaWJ1dGUoKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb25nQXR0cmlidXRlIiksIGxvbmdBdHRy
aWJ1dGVWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibG9uZ0F0dHJpYnV0ZSJfcyksIGxvbmdBdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50
ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgYXV0byBlbmFibGVkQnlTZXR0aW5nc0F0dHJp
YnV0ZVZhbHVlID0gdG9KUzxJRExVbnNpZ25lZFNob3J0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSgpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdz
QXR0cmlidXRlIiksIGVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlVmFsdWUpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRC
eVNldHRpbmdzQXR0cmlidXRlIl9zKSwgZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGVWYWx1ZSk7
CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQogICAgIGF1dG8gZW5hYmxlZEJ5
Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdERlZmF1
bHRUb0pTT05FbnVtPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZW5h
YmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5Q29uZGl0aW9uYWxBdHRyaWJ1dGUiKSwgZW5hYmxlZEJ5
Q29uZGl0aW9uYWxBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZSJf
cyksIGVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlVmFsdWUpOwogI2VuZGlmCiAKICAgICBh
dXRvIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlyc3RTdHJpbmdBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3RTdHJpbmdBdHRy
aWJ1dGUiKSwgZmlyc3RTdHJpbmdBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaXJzdFN0cmluZ0F0dHJpYnV0ZSJf
cyksIGZpcnN0U3RyaW5nQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gc2Vjb25kTG9uZ0F0dHJp
YnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5zZWNvbmRMb25nQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNlY29uZExvbmdBdHRyaWJ1dGUiKSwgc2Vjb25kTG9uZ0F0dHJpYnV0
ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInNlY29uZExvbmdBdHRyaWJ1dGUiX3MpLCBzZWNvbmRMb25nQXR0cmlidXRlVmFsdWUp
OwogICAgIGF1dG8gZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlVmFsdWUgPSB0b0pT
PElETFVucmVzdHJpY3RlZERvdWJsZT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJp
YnV0ZSIpLCBmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb3VydGhVbnJl
c3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUiX3MpLCBmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRy
aWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBmaWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlVmFsdWUgPSB0
b0pTPElETENsYW1wQWRhcHRvcjxJRExMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlIiksIGZp
ZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWZ0aExvbmdDbGFtcGVkQXR0cmlidXRlIl9z
KSwgZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHNpeHRoVHlwZWRl
ZkF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExEb3VibGU+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLnNpeHRoVHlwZWRlZkF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaXh0aFR5cGVkZWZBdHRyaWJ1dGUiKSwgc2l4dGhU
eXBlZGVmQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic2l4dGhUeXBlZGVmQXR0cmlidXRlIl9zKSwgc2l4dGhUeXBl
ZGVmQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0
dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWw+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCB0aHJvd1Njb3BlLCBpbXBsLnNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2V2ZW50aERpcmVjdGx5
VG9KU09OYWJsZUF0dHJpYnV0ZSIpLCBzZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRl
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSJfcyksIHNldmVudGhEaXJl
Y3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBlaWdodGhJbmRpcmVjdGx5
QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETEludGVyZmFjZTxUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWlnaHRoSW5kaXJlY3Rs
eUF0dHJpYnV0ZSIpLCBlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlVmFsdWUpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZWlnaHRoSW5kaXJl
Y3RseUF0dHJpYnV0ZSJfcyksIGVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
YXV0byBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUgPSB0b0pT
PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLm5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmludGhPcHRpb25hbERp
cmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSIpLCBuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05h
YmxlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibmludGhPcHRpb25hbERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0
ZSJfcyksIG5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgYXV0byB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETEZyb3plbkFy
cmF5PElETEJvb2xlYW4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVudGhGcm96ZW5BcnJh
eUF0dHJpYnV0ZSIpLCB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidGVudGhGcm96ZW5B
cnJheUF0dHJpYnV0ZSJfcyksIHRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
YXV0byBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIHRocm93U2NvcGUsIGltcGwuZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbGV2ZW50aFNlcXVlbmNlQXR0
cmlidXRlIiksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbGV2ZW50aFNlcXVlbmNl
QXR0cmlidXRlIl9zKSwgZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRv
IHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExTZXF1ZW5j
ZTxJRExJbnRlcmZhY2U8VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+Pj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1w
bC50d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRl
IiksIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR3ZWxmdGhJbnRlcmZh
Y2VTZXF1ZW5jZUF0dHJpYnV0ZSJfcyksIHR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0
ZVZhbHVlKTsKICAgICBhdXRvIHRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8
SURMUmVjb3JkPElETERPTVN0cmluZywgSURMVW5zaWduZWRTaG9ydD4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGhp
cnRlZW50aFJlY29yZEF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlIiksIHRoaXJ0ZWVudGhSZWNvcmRB
dHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlIl9zKSwgdGhpcnRlZW50aFJl
Y29yZEF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIGluaGVyaXRMb25nQXR0cmlidXRlVmFsdWUg
PSB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmlu
aGVyaXRMb25nQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImluaGVyaXRMb25nQXR0cmlidXRlIiksIGluaGVyaXRMb25nQXR0cmlidXRlVmFsdWUp
OworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
aW5oZXJpdExvbmdBdHRyaWJ1dGUiX3MpLCBpbmhlcml0TG9uZ0F0dHJpYnV0ZVZhbHVlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ODQzMTdjZjdkYTI2MWY0
MzY1OWJlMDVjYTJhZjJhNGJlZjllYjE0Li5kZmE1ZWZkZTA2OWY4MDgwNTMyOWY0ODQwNGFhOTBi
ZTFmM2RjM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwuY3BwCkBAIC0yNTksNjQgKzI1OSw2NCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvbl90bwog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RSdW50
aW1lRW5hYmxlZEVuYWJsZWQoKSkgewogICAgICAgICBhdXRvIGxvbmdBdHRyaWJ1dGVWYWx1ZSA9
IHRvSlM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubG9u
Z0F0dHJpYnV0ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImxvbmdBdHRyaWJ1dGUiKSwgbG9uZ0F0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsb25nQXR0cmli
dXRlIl9zKSwgbG9uZ0F0dHJpYnV0ZVZhbHVlKTsKICAgICB9CiAgICAgaWYgKGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAg
ICAgICBhdXRvIGVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETFVuc2ln
bmVkU2hvcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmVuYWJsZWRC
eVNldHRpbmdzQXR0cmlidXRlKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiKSwgZW5hYmxlZEJ5U2V0
dGluZ3NBdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiX3MpLCBl
bmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZVZhbHVlKTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1Rf
Q09ORElUSU9OQUwpCiAgICAgYXV0byBlbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZVZhbHVl
ID0gdG9KUzxJRExFbnVtZXJhdGlvbjxUZXN0RGVmYXVsdFRvSlNPTkVudW0+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQnlD
b25kaXRpb25hbEF0dHJpYnV0ZSIpLCBlbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZVZhbHVl
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImVuYWJsZWRCeUNvbmRpdGlvbmFsQXR0cmlidXRlIl9zKSwgZW5hYmxlZEJ5Q29uZGl0aW9uYWxB
dHRyaWJ1dGVWYWx1ZSk7CiAjZW5kaWYKIAogICAgIGF1dG8gZmlyc3RTdHJpbmdBdHRyaWJ1dGVW
YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5maXJzdFN0cmluZ0F0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmaXJzdFN0cmluZ0F0dHJpYnV0ZSIpLCBmaXJzdFN0cmluZ0F0dHJp
YnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZpcnN0U3RyaW5nQXR0cmlidXRlIl9zKSwgZmlyc3RTdHJpbmdBdHRyaWJ1dGVW
YWx1ZSk7CiAgICAgYXV0byBzZWNvbmRMb25nQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNlY29uZExvbmdBdHRyaWJ1
dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2Vjb25kTG9u
Z0F0dHJpYnV0ZSIpLCBzZWNvbmRMb25nQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2Vjb25kTG9uZ0F0dHJpYnV0
ZSJfcyksIHNlY29uZExvbmdBdHRyaWJ1dGVWYWx1ZSk7CiAgICAgYXV0byBmb3VydGhVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMVW5yZXN0cmljdGVkRG91YmxlPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5mb3VydGhVbnJlc3RyaWN0ZWRE
b3VibGVBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlIiksIGZvdXJ0aFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSJf
cyksIGZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIGZp
ZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMQ2xhbXBBZGFwdG9yPElETExv
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWZ0aExvbmdDbGFt
cGVkQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGUiKSwgZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZVZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGUiX3MpLCBmaWZ0aExvbmdDbGFtcGVkQXR0cmli
dXRlVmFsdWUpOwogICAgIGF1dG8gc2l4dGhUeXBlZGVmQXR0cmlidXRlVmFsdWUgPSB0b0pTPElE
TERvdWJsZT4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc2l4dGhUeXBl
ZGVmQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InNpeHRoVHlwZWRlZkF0dHJpYnV0ZSIpLCBzaXh0aFR5cGVkZWZBdHRyaWJ1dGVWYWx1ZSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaXh0
aFR5cGVkZWZBdHRyaWJ1dGUiX3MpLCBzaXh0aFR5cGVkZWZBdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
YXV0byBzZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlVmFsdWUgPSB0b0pTPElETElu
dGVyZmFjZTxUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc2V2ZW50
aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlIiksIHNl
dmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXZlbnRoRGlyZWN0bHlUb0pT
T05hYmxlQXR0cmlidXRlIl9zKSwgc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZh
bHVlKTsKICAgICBhdXRvIGVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURM
SW50ZXJmYWNlPFRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwuZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlIiksIGVpZ2h0aEluZGly
ZWN0bHlBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlIl9zKSwgZWlnaHRo
SW5kaXJlY3RseUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIG5pbnRoT3B0aW9uYWxEaXJlY3Rs
eVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubmludGhPcHRpb25h
bERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJuaW50aE9wdGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRl
IiksIG5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGVWYWx1ZSk7CisgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuaW50aE9w
dGlvbmFsRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlIl9zKSwgbmludGhPcHRpb25hbERpcmVj
dGx5VG9KU09OYWJsZUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIHRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMRnJvemVuQXJyYXk8SURMQm9vbGVhbj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwudGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIiksIHRlbnRoRnJvemVu
QXJyYXlBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIl9zKSwgdGVudGhG
cm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlKTsKICAgICBhdXRvIGVsZXZlbnRoU2VxdWVuY2VBdHRy
aWJ1dGVWYWx1ZSA9IHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5l
bGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUiKSwgZWxldmVudGhTZXF1ZW5j
ZUF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUiX3MpLCBlbGV2ZW50aFNl
cXVlbmNlQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gdHdlbGZ0aEludGVyZmFjZVNlcXVlbmNl
QXR0cmlidXRlVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbD4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5j
ZUF0dHJpYnV0ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0
d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiKSwgdHdlbGZ0aEludGVyZmFjZVNlcXVl
bmNlQXR0cmlidXRlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlIl9zKSwg
dHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gdGhpcnRl
ZW50aFJlY29yZEF0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJ
RExVbnNpZ25lZFNob3J0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXJ0ZWVudGhSZWNv
cmRBdHRyaWJ1dGUiKSwgdGhpcnRlZW50aFJlY29yZEF0dHJpYnV0ZVZhbHVlKTsKKyAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXJ0ZWVudGhS
ZWNvcmRBdHRyaWJ1dGUiX3MpLCB0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlVmFsdWUpOwogICAg
IGF1dG8gaW5oZXJpdExvbmdBdHRyaWJ1dGVWYWx1ZSA9IHRvSlM8SURMTG9uZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5oZXJpdExvbmdBdHRyaWJ1dGUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5oZXJpdExvbmdBdHRyaWJ1
dGUiKSwgaW5oZXJpdExvbmdBdHRyaWJ1dGVWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbmhlcml0TG9uZ0F0dHJpYnV0ZSJfcyks
IGluaGVyaXRMb25nQXR0cmlidXRlVmFsdWUpOwogICAgIGF1dG8gZmluYWxMb25nQXR0cmlidXRl
Rm9vVmFsdWUgPSB0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmZpbmFsTG9uZ0F0dHJpYnV0ZUZvbygpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmaW5hbExvbmdBdHRyaWJ1dGVGb28iKSwgZmluYWxMb25nQXR0cmli
dXRlRm9vVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZmluYWxMb25nQXR0cmlidXRlRm9vIl9zKSwgZmluYWxMb25nQXR0cmlidXRl
Rm9vVmFsdWUpOwogICAgIGF1dG8gZmluYWxMb25nQXR0cmlidXRlQmFyVmFsdWUgPSB0b0pTPElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpbmFsTG9uZ0F0
dHJpYnV0ZUJhcigpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJm
aW5hbExvbmdBdHRyaWJ1dGVCYXIiKSwgZmluYWxMb25nQXR0cmlidXRlQmFyVmFsdWUpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmluYWxM
b25nQXR0cmlidXRlQmFyIl9zKSwgZmluYWxMb25nQXR0cmlidXRlQmFyVmFsdWUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVk
RGljdGlvbmFyeS5jcHAKaW5kZXggYzQxNjdlZjM1MDM1ZmY5MTNkNGI1NDEzMzRiYzk2YjgyN2Mz
YzM2Yy4uOGM1OTA0MDk0NDMzY2I3MWMzMWY4MGU2ODY2MmNmMDY0OTJiYmVhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWRE
aWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHRlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGlj
dGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29s
TWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBib29sTWVt
YmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYm9vbE1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTYxLDcgKzYxLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0dsb2IKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+KEpTR2xvYgogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFsQm9vbGVh
bk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFy
dGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC04NCw3ICs4NCw3IEBA
IHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RE
ZXJpdmVkRGljdGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0
aW9uYWxWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSk7
CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFs
Qm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTk2
LDcgKzk2LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29udmVydERpY3Rp
b25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihKU0dsb2IKICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxDYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbENh
bGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTA3LDcgKzEwNyw3IEBAIHRl
bXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJp
dmVkRGljdGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXIiKSk7CisgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1i
ZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFy
dGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEyMSw3ICsx
MjEsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+KEpTR2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
U3RyaW5nTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMzMsNyArMTMzLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVy
aXZlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5PihK
U0dsb2IKICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICAgICAgcGFydGlh
bFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxl
ZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNl
dHRpbmciKSk7CisgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNl
dHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5n
Il9zKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdGVtcGxh
dGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWRE
aWN0aW9uYXJ5PihKU0dsb2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBh
cnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJ
bXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1w
bGVtZW50ZWRBcyIpKTsKKyAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBs
ZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBcyJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1l
bnRlZEFzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIHRlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGlj
dGlvbmFyeT4oSlNHbG9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJp
bmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cmlu
Z01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSk7CisgICAgICAgIHN0cmluZ01lbWJl
clZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJp
dmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+KEpT
R2xvYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgZGVyaXZlZEJvb2xNZW1i
ZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRlcml2ZWRCb29s
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIikpOworICAgICAgICBkZXJpdmVk
Qm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghZGVy
aXZlZEJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xODcsNTkgKzE4Nyw1OSBA
QCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSkgewogICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1
ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURM
Qm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJi
b29sTWVtYmVyIiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIl9zKSwgYm9v
bE1lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKICAg
ICAgICAgYXV0byBjYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcyksIGNhbGxiYWNr
TWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRp
Y3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbEJv
b2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFydGlhbEJv
b2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcyksIHBhcnRp
YWxCb29sZWFuTWVtYmVyVmFsdWUpOwogICAgIH0KICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxNSkK
ICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xl
YW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5N
ZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29u
ZGl0aW9uYWxWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25h
bCJfcyksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUpOwogICAgIH0K
ICNlbmRpZgogICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSkgewogICAgICAgICBh
dXRvIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxs
YmFja01lbWJlciIpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
Q2FsbGJhY2tNZW1iZXIiX3MpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgfQog
ICAgIGF1dG8gcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gdG9KUzxJRExMb25nPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LnBhcnRpYWxSZXF1aXJl
ZExvbmdNZW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
LSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIl9zKSwgcGFydGlhbFJlcXVpcmVk
TG9uZ01lbWJlclZhbHVlKTsKICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGlj
dGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxTdHJp
bmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpLCBwYXJ0aWFsU3Ry
aW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciJfcyksIHBhcnRpYWxT
dHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1Zh
bHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBpZiAoIUlETERPTVN0cmluZzo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNl
dHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxl
ZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRpYWxTdHJpbmdNZW1i
ZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmciX3MpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmdWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFJRExVbnNpZ25l
ZExvbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikp
IHsKICAgICAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXNWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldp
dGhJbXBsZW1lbnRlZEFzIiksIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50
ZWRBc1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50
ZWRBcyJfcyksIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVl
KTsKICAgICB9CiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnku
c3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJ
RExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETERPTVN0cmlu
Zzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmlu
Z01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpLCBz
dHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJlcikpIHsKICAgICAgICAgYXV0byBkZXJpdmVk
Qm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5kZXJpdmVkQm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciIpLCBkZXJpdmVkQm9vbE1lbWJl
clZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIl9zKSwgZGVyaXZlZEJvb2xNZW1iZXJW
YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnky
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeTIuY3BwCmluZGV4IGYyN2JhY2VkYjljMDFhZTBjODI3N2M4NjY1ZmJiMWYz
ODMwMGE0MDUuLjkyMWNmYmZmMzY3MzI3NTFmZDcwOTRhZDNiY2M3NmQxZjE4M2M4MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHRl
bXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVy
aXZlZERpY3Rpb25hcnkyPihKU0dsCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBi
b29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIGJvb2xNZW1iZXJW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiYm9vbE1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbE1lbWJlclZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTYxLDcgKzYxLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rp
b25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KEpTR2wKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY2FsbGJhY2tNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgewpAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlv
bmFyeTIgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mj4oSlNHbAogICAg
IGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nTWVtYmVyIikpOworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5n
TWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgaWYgKCFzdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBA
IC04Myw3ICs4Myw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5MiBjb252ZXJ0
RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyPihKU0dsCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
ZXJpdmVkQm9vbE1lbWJlcjIiKSk7CisgICAgICAgIGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJkZXJpdmVkQm9vbE1lbWJlcjIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWRlcml2ZWRCb29sTWVtYmVyMlZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwMywyMiArMTAzLDIyIEBAIEpTQzo6SlNPYmplY3Qq
IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmJv
b2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29s
ZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9v
bE1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpLCBib29sTWVtYmVyVmFsdWUpOwog
ICAgIH0KICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgewogICAgICAgICBhdXRvIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGlj
dGlvbmFyeS5jYWxsYmFja01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpLCBjYWxsYmFja01lbWJlclZh
bHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAg
ICAgfQogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmlu
Z01lbWJlcikpIHsKICAgICAgICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1i
ZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSwgc3RyaW5n
TWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRp
Y3Rpb25hcnkuZGVyaXZlZEJvb2xNZW1iZXIyKSkgewogICAgICAgICBhdXRvIGRlcml2ZWRCb29s
TWVtYmVyMlZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5k
ZXJpdmVkQm9vbE1lbWJlcjIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIyIiksIGRlcml2ZWRCb29sTWVtYmVy
MlZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyMiJfcyksIGRlcml2ZWRCb29sTWVtYmVy
MlZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOCw3ICsxMzgsNyBA
QCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29udmVydERp
Y3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAg
ICAgICAgYm9vbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIikpOworICAgICAgICBib29sTWVt
YmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGlj
dGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBjYWxsYmFja01lbWJlclZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtMTYwLDcgKzE2MCw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2
ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERp
Y3RpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQm9vbGVhbk1l
bWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbEJv
b2xlYW5NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSk7CisgICAgICAg
IHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIl9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTE3Miw3ICsxNzIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rp
b25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlmIChpc051bGxP
clVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxCb29sZWFu
TWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0
aENvbmRpdGlvbmFsIikpOworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRp
b25hbFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCJfcykp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQog
ICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rp
b25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbENhbGxiYWNr
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgcGFy
dGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciJfcykp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQog
ICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
MTk1LDcgKzE5NSw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3RpCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSk7CisgICAgICAgIHBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJl
ciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTIwOSw3ICsyMDksNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFy
eTI6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFsU3RyaW5n
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRp
YWxTdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0yMjEsNyArMjIxLDcgQEAg
dGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldp
dGhFbmFibGVkQnlTZXR0aW5nIl9zKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwYXJ0aWFsU3RyaW5n
TWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0yMzMs
NyArMjMzLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGkKICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRB
c1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFVuc2ln
bmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpKTsKKyAgICAgICAgcGFydGlhbFVuc2lnbmVk
TG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbFVuc2lnbmVkTG9u
Z01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMjQ0LDcg
KzI0NCw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3RpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSk7Cisg
ICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTI1NSw3ICsyNTUsNyBAQCB0
ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29udmVydERpY3Rp
b25hcnk8VGVzdERlcml2ZWREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIikp
OworICAgICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJl
ciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBA
IC0yNzUsNTkgKzI3NSw1OSBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICghSURM
Qm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSkgewogICAgICAgICBh
dXRvIGJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rp
b25hcnkuYm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJi
b29sTWVtYmVyIl9zKSwgYm9vbE1lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jYWxs
YmFja01lbWJlcikpIHsKICAgICAgICAgYXV0byBjYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01l
bWJlciJfcyksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETEJvb2xl
YW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAgICAg
ICAgIGF1dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5N
ZW1iZXIiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVh
bk1lbWJlciJfcyksIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUpOwogICAgIH0KICNpZiBFTkFC
TEUoQ29uZGl0aW9uYWwxNSkKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rp
b25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKSB7CiAgICAgICAgIGF1
dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IHRvSlM8SURMQm9v
bGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMQm9vbGVhbjo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29u
ZGl0aW9uYWwpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSwgcGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1l
bWJlcldpdGhDb25kaXRpb25hbCJfcyksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlv
bmFsVmFsdWUpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVt
YmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNr
TWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSk7CiAgICAgfQogICAgIGF1dG8gcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVl
ID0gdG9KUzxJRExMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9u
YXJ5LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIl9z
KSwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKICAgICBpZiAoIUlETERPTVN0cmlu
Zzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSkgewogICAgICAg
ICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01l
bWJlciIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01l
bWJlciJfcyksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmIChqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAgICBp
ZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIiks
IHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciX3MpLCBwYXJ0aWFsU3Ry
aW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgaWYgKCFJRExVbnNpZ25lZExvbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVu
c2lnbmVkTG9uZ01lbWJlcikpIHsKICAgICAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZy
b21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVu
c2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIiksIHBhcnRpYWxVbnNpZ25lZExvbmdN
ZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdN
ZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcyksIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRo
SW1wbGVtZW50ZWRBc1ZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVs
bFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHN0cmluZ01l
bWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
c3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dHJpbmdNZW1iZXIiX3MpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURM
Qm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJlcikpIHsKICAg
ICAgICAgYXV0byBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJlcikpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVkQm9vbE1lbWJlciIp
LCBkZXJpdmVkQm9vbE1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIl9zKSwg
ZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGljdGlvbmFyeS5jcHAKaW5kZXggODk3NjAzNzA2NTVmZjM1NDIxY2JiMTMzOTFjNjk4
ODAxOGM4MTBhYy4uYTI0NTQyNWZiNzNiZmYwYTE0ODgwZjYwY2Q0NTMwZDlhYmQxYmI2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5LmNwcApAQCAtNDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RE
aWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5PihKU0dsb2JhbE9iamVj
dCYgbGV4aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbWVtYmVyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBtZW1iZXJWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWVtYmVyIikpOworICAgICAgICBtZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWVtYmVyIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFtZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0
aW9uYWxNZW1iZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuY3BwCmluZGV4IDYw
NTA5ODZlZWUxNzc3ODM5MjczMzAzZmMxNjIwMmE0ZGM3ZTNkZTQuLmE5MDY1MDcxN2YwM2E1NzM4
NzUzNWRiMTg4NWM0NDY0OGQxNmQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1l
bWJlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHRlbXBsYXRlPD4gVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVy
cyBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBjb25kaXRpb25hbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgY29uZGl0aW9uYWxNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29uZGl0aW9uYWxN
ZW1iZXIiKSk7CisgICAgICAgIGNvbmRpdGlvbmFsTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlv
bmFsTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgaWYgKCFjb25kaXRpb25hbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTcxLDcgKzcxLDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlU
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBpZiAo
IUlETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmNv
bmRpdGlvbmFsTWVtYmVyKSkgewogICAgICAgICBhdXRvIGNvbmRpdGlvbmFsTWVtYmVyVmFsdWUg
PSB0b0pTPElETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5jb25kaXRpb25hbE1lbWJlcikp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
b25kaXRpb25hbE1lbWJlciIpLCBjb25kaXRpb25hbE1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRp
dGlvbmFsTWVtYmVyIl9zKSwgY29uZGl0aW9uYWxNZW1iZXJWYWx1ZSk7CiAgICAgfQogI2VuZGlm
CiAgICAgVU5VU0VEX1BBUkFNKGRpY3Rpb25hcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwCmluZGV4IDA1Y2EyOThiYjY0OWVlNmQ1NWQwMjFiNTRlZTc0YmU3YzAzMzI5ZTcu
LjNjN2QwYmZiZDUwY2U3ZGFlYWY0NzMyZTk2N2ZhMmZhYzc2Y2FjNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdgogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKICAgICByZWlm
eVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7Ci0g
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSwg
c3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNldHRpbmdDb25z
dGFudCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiJfcyk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNl
dHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJp
YnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVuYWJsZWRCeVNl
dHRpbmdBdHRyaWJ1dGUiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQgJiYganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJsZWQpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5VHdvU2V0dGluZ3NBdHRyaWJ1dGUiKSwgc3RybGVuKCJl
bmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5VHdvU2V0dGluZ3NBdHRy
aWJ1dGUiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yMTksMTQgKzIx
OSwxNCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKICNlbmRpZgogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVl
cygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VBdHRyaWJ1dGVFbmFibGVkICYmIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZh
Y2VFbmFibGVkKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInN1cHBsZW1lbnRhbEF0dHJpYnV0ZSIp
LCBzdHJsZW4oInN1cHBsZW1lbnRhbEF0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3VwcGxlbWVudGFsQXR0cmlidXRl
Il9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCIpLCBzdHJsZW4oImVuYWJsZWRC
eVNldHRpbmdDb25zdGFudCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50Il9zKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IGRlODdjOTE5ODVjN2NkZWIxMDI5YmUzOTM1MDIzMmY5ODlmOTA0OWYuLmU3OWFj
MTc4MjI1NTU4YTBjZjFhOWRjMjgzOGUzMjVjNGU0YjExNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
SW4KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJ1YmJsZXNWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJ1YmJsZXNWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYnVi
YmxlcyIpKTsKKyAgICAgICAgYnViYmxlc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJidWJibGVzIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFidWJibGVzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzUsNyArNzUsNyBAQCB0ZW1wbGF0
ZTw+IFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RFdmVu
dENvbnN0cnVjdG9yOjpJbgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY2Fu
Y2VsYWJsZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2FuY2Vs
YWJsZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjYW5jZWxhYmxlIikpOworICAgICAgICBjYW5jZWxhYmxlVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNhbmNlbGFibGUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbmNlbGFibGVWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC04Nyw3ICs4Nyw3IEBAIHRlbXBsYXRlPD4gVGVzdEV2ZW50Q29uc3RydWN0b3I6
OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdEV2ZW50Q29uc3RydWN0b3I6OkluCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjb21wb3NlZFZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgY29tcG9zZWRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcG9zZWQiKSk7
CisgICAgICAgIGNvbXBvc2VkVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBvc2VkIl9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjb21w
b3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTk5LDcgKzk5LDcgQEAgdGVtcGxhdGU8PiBU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6SW4KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGF0dHIyVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBhdHRyMlZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJhdHRyMiIpKTsKKyAgICAgICAgYXR0cjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXR0cjIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IWF0dHIyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTEyLDcgKzExMiw3IEBAIHRlbXBsYXRl
PD4gVGVzdEV2ZW50Q29uc3RydWN0b3I6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdEV2ZW50
Q29uc3RydWN0b3I6OkluCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhdHRy
M1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXR0cjNWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYXR0cjMiKSk7CisgICAgICAgIGF0dHIzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImF0dHIzIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFhdHRyM1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAppbmRleCBjODQ5NTRhOGMwNjhiNDk5ODlhNzIxZWViNmI0NzZlMjI3
N2Q1N2FkLi42MGU3ODkxZjE0OTdhODlkNjNjYjU0ODI5MmIxNGNmYmZkM2JlODY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAg
ICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJhU2VjcmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYVNl
Y3JldEF0dHJpYnV0ZSJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAppbmRleCA1YmZkN2RmMzAwMDYzYTBj
MWU5ZjExZWRmZmQ1Y2Q4NTljMDE3NmJiLi5jMGYzZTY1Y2I4ODM3MDIxN2RiZDIxNzg4MDA0Mzg1
MTY0NmQxNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVy
dERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7Cisg
ICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9v
bE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTYxLDcgKzYxLDcgQEAgdGVtcGxhdGU8
PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVk
RGljdGlvbmFyeT4oSlMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBjYWxs
YmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgY2FsbGJh
Y2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNr
TWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTw+
IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWRE
aWN0aW9uYXJ5PihKUwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIikp
OworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVh
bk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC04NCw3ICs4NCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkgY29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25k
aXRpb25hbFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5N
ZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0
aENvbmRpdGlvbmFsVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlv
bmFsIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJp
dGVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4o
SlMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxDYWxsYmFja01l
bWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbENh
bGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpKTsKKyAgICAg
ICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJl
ciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkg
ewpAQCAtMTA3LDcgKzEwNyw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25n
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSk7CisgICAgICAg
IHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9u
Z01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWRE
aWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihKUwog
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZh
bHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFN0cmluZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IXBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMzMsNyArMTMz
LDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4oSlMKICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5n
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3Ry
aW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAgICAgICBwYXJ0aWFsU3Ry
aW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwYXJ0aWFs
U3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeSBjb252
ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4oSlMKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlh
bFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxV
bnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpKTsKKyAgICAgICAgcGFydGlhbFVu
c2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbFVuc2ln
bmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
MTU2LDcgKzE1Niw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVy
dERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEpTCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIi
KSk7CisgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE3Niw1NCArMTc2
LDU0IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJl
clZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVt
YmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImJvb2xNZW1iZXIiKSwgYm9vbE1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3Mp
LCBib29sTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkg
ewogICAgICAgICBhdXRvIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVu
Y3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJl
ciIpLCBjYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSwgY2Fs
bGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcikpIHsKICAgICAgICAgYXV0byBwYXJ0
aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGlj
dGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciIpLCBwYXJ0
aWFsQm9vbGVhbk1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIl9zKSwg
cGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7CiAgICAgfQogI2lmIEVOQUJMRShDb25kaXRpb25h
bDE1KQogICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFs
Qm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCkpIHsKICAgICAgICAgYXV0byBwYXJ0aWFsQm9v
bGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0
aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCIpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldp
dGhDb25kaXRpb25hbFZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsIl9zKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CiAg
ICAgfQogI2VuZGlmCiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIpKSB7CiAgICAg
ICAgIGF1dG8gcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVu
Y3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bENhbGxiYWNrTWVtYmVyIiksIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxDYWxsYmFja01lbWJlciJfcyksIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAg
ICB9CiAgICAgYXV0byBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSB0b0pTPElETExv
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkucGFydGlhbFJl
cXVpcmVkTG9uZ01lbWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiksIHBhcnRpYWxSZXF1aXJlZExvbmdN
ZW1iZXJWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiX3MpLCBwYXJ0aWFsUmVx
dWlyZWRMb25nTWVtYmVyVmFsdWUpOwogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlh
bFN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIiksIHBhcnRp
YWxTdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSwgcGFy
dGlhbFN0cmluZ01lbWJlclZhbHVlKTsKICAgICB9CiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRp
bmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CiAgICAgICAgIGlmICghSURMRE9NU3Ry
aW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxl
ZEJ5U2V0dGluZykpIHsKICAgICAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlcldpdGhF
bmFibGVkQnlTZXR0aW5nVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
ZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSwgcGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOworICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcyksIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIUlETFVu
c2lnbmVkTG9uZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyKSkgewogICAgICAgICBhdXRvIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVt
ZW50ZWRBc1ZhbHVlID0gdG9KUzxJRExVbnNpZ25lZExvbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIElETFVuc2lnbmVkTG9uZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyV2l0aEltcGxlbWVudGVkQXMiKSwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBs
ZW1lbnRlZEFzVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBs
ZW1lbnRlZEFzIl9zKSwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFz
VmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlv
bmFyeS5zdHJpbmdNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gc3RyaW5nTWVtYmVyVmFsdWUgPSB0
b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMRE9N
U3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nTWVtYmVyIiksIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciJf
cyksIHN0cmluZ01lbWJlclZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCmluZGV4IDNlODU0NGZmZmMw
NTdkNzVhNTVjYTFkNjEwYTE2NWUwNWMzZTkzYTcuLjdmYWM5YjQ2MzE2NWZjYTE2ZWUzNjQyZDM2
M2EzZGJhZDE0MzE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnky
LmNwcApAQCAtNDgsNyArNDgsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTI+KAogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYm9vbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVy
IikpOworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBp
ZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHRl
bXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5Mj4oCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAg
IGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFj
YWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTcwLDcgKzcwLDcgQEAgdGVt
cGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIgY29udmVydERpY3Rpb25hcnk8VGVzdElu
aGVyaXRlZERpY3Rpb25hcnkyPigKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IHN0cmluZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
c3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgc3RyaW5n
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghc3RyaW5nTWVtYmVy
VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtOTAsMTcgKzkwLDE3IEBAIEpTQzo6SlNPYmplY3Qq
IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmJv
b2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29s
ZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9v
bE1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpLCBib29sTWVtYmVyVmFsdWUpOwog
ICAgIH0KICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgewogICAgICAgICBhdXRvIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGlj
dGlvbmFyeS5jYWxsYmFja01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpLCBjYWxsYmFja01lbWJlclZh
bHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAg
ICAgfQogICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmlu
Z01lbWJlcikpIHsKICAgICAgICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9N
U3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1i
ZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSwgc3RyaW5n
TWVtYmVyVmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAppbmRleCBkZmQxZDRmYzc2ZmQ2YzMzZTRhMTM3OTI5MWVhZDViZjk3NDE5NGY4Li42
ZjcyZjQ0NjM4NGIwN2M3YTAyNTgyZGY4NWRkYzY2NGY1YTUwZTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50
ZXN0U2V0dGluZ0VuYWJsZWQpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVy
YXRpb24iKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAK
aW5kZXggZGU5MGU5YTA2NjI4MzBkZjFjYzYyMjkzNmI1NjgxMWMwZDczODc4NS4uMGNlMmY3MDUz
ZDJmMzQ4YzU4YmUxNGZjMDYyMmVlYTRiOGM5NGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFj
ZU9iamVjdC5jcHAKQEAgLTEwOSwyMSArMTA5LDIxIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lc3BhY2VPYmplY3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6Omlu
Zm8oKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMp
OwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NW
YWx1ZXMoKS50ZXN0U2V0dGluZzFFbmFibGVkKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJuYW1lc3BhY2VBdHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJsZW4oIm5hbWVzcGFjZUF0
dHJpYnV0ZUZyb21QYXJ0aWFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lc3BhY2VBdHRyaWJ1dGVGcm9tUGFydGlhbCJfcyk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0gICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nTmFtZXNwYWNlT3BlcmF0
aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlvbiIpKTsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW5h
YmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlvbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcxRW5hYmxlZCkgewotICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigibmFtZXNwYWNlT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSwgc3Ry
bGVuKCJuYW1lc3BhY2VPcGVyYXRpb25Gcm9tUGFydGlhbCIpKTsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZXNwYWNlT3BlcmF0aW9u
RnJvbVBhcnRpYWwiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cAppbmRleCBiOTA0ZGY2YjMwNzdhYjJkZGE3N2QyOWZmNDVmNWNkNGZlMWY2MjViLi43YjY1NzVk
NzU1MGM3YzRmMzVkODQ2YTExNDQ5YmUzMjQ1MWJjNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0xODAs
MTQgKzE4MCwxNCBAQCB2b2lkIEpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKICAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3Vs
dCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Il9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJnZXRTZWNy
ZXRCb29sZWFuIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJnZXRTZWNyZXRCb29sZWFuIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYg
KCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iX3MpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yMDMsMjggKzIwMywyOCBAQCB2b2lk
IEpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNlbmRpZgogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRv
ckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVudHJpZXMiKSwgc3RybGVuKCJlbnRy
aWVzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJlbnRyaWVzIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwog
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9t
SXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJrZXlzIiksIHN0cmxlbigi
a2V5cyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAia2V5cyJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0
ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigi
dmFsdWVzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ2YWx1ZXMiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5k
b21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZvckVhY2giKSwgc3Ry
bGVuKCJmb3JFYWNoIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmb3JFYWNoIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkJvZHkoSlNHbG9iYWxPYmplCiAgICAgYXV0
byogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBhdXRvIG5h
bWVWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5uYW1lKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm5hbWUiKSwgbmFtZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBuYW1lVmFsdWUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA1OTY1YzliNjRlYWVm
ZWJjZDFhNzY4NWY5OTQ5MjY2MDdmYWJlNGY1Li5jMjFlZjFhZDQ2YWRhN2ZkNjIzYzA0Mjk2MTIz
YzU1Yzg2ZDAwNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhbm5vdGF0
ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW5ub3Rh
dGVkVHlwZUluU2VxdWVuY2VNZW1iZXIiKSk7CisgICAgICAgIGFubm90YXRlZFR5cGVJblNlcXVl
bmNlTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyIl9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgaWYgKCFhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29u
dmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFubm90YXRlZFR5cGVJblVu
aW9uTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyIikpOworICAg
ICAgICBhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBl
SW5Vbmlvbk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC00OTgsNyArNDk4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2Jq
OjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xv
YmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGFueVR5cGVkZWZWYWx1
ZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYW55VHlwZWRlZlZh
bHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImFueVR5cGVkZWZWYWx1ZSIpKTsKKyAgICAgICAgYW55VHlwZWRlZlZh
bHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImFueVR5cGVkZWZWYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYW55VHlwZWRlZlZh
bHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNTEwLDcgKzUxMCw3IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhbnlWYWx1
ZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYW55VmFsdWVWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiYW55VmFsdWUiKSk7CisgICAgICAgIGFueVZhbHVlVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVZh
bHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgaWYgKCFhbnlWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTUyMiw3
ICs1MjIsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgYW55VmFsdWVXaXRoTnVsbERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImFueVZhbHVlV2l0aE51bGxEZWZhdWx0IikpOworICAgICAgICBhbnlWYWx1ZVdpdGhOdWxs
RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdCJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
YW55VmFsdWVXaXRoTnVsbERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC01MzQsNyAr
NTM0LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5X
aXRoRGVmYXVsdCIpKTsKKyAgICAgICAgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xlYW5XaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUuaXNV
bmRlZmluZWQoKSkgewpAQCAtNTQ2LDcgKzU0Niw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9i
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29sZWFuV2l0aG91dERlZmF1
bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRo
b3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7CisgICAgICAg
IGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
QEAgLTU1Nyw3ICs1NTcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVy
dERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgYnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImJ1ZmZlclNvdXJjZVZhbHVlIikpOworICAgICAgICBidWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJidWZmZXJTb3VyY2VWYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYnVmZmVyU291cmNlVmFsdWVWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC01NjgsNyArNTY4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2Jq
OjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xv
YmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGRpY3Rpb25hcnlNZW1i
ZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpY3Rpb25hcnlN
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZGljdGlvbmFyeU1lbWJlciIpKTsKKyAgICAgICAgZGljdGlvbmFy
eU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJkaWN0aW9uYXJ5TWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFkaWN0aW9u
YXJ5TWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNTc5LDcgKzU3OSw3IEBAIHRlbXBs
YXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0
aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBl
bnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVt
ZXJhdGlvblZhbHVlV2l0aERlZmF1bHQiKSk7CisgICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRo
RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQiX3MpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBp
ZiAoIWVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTU5MSw3ICs1OTEsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxP
clVuZGVmaW5lZCkKICAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1
bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGVudW1lcmF0aW9u
VmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWVX
aXRoRW1wdHlTdHJpbmdEZWZhdWx0IikpOworICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aEVt
cHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3Ry
aW5nRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0Rl
ZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02MDMsNyArNjAzLDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGVudW1l
cmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVu
dW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKTsKKyAgICAgICAgZW51bWVyYXRpb25WYWx1
ZVdpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVs
dCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAg
ICAgfQogICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRl
ZmluZWQoKSkgewpAQCAtNjE0LDcgKzYxNCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBmb29BbGlhc1ZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgZm9vQWxpYXNWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vQWxp
YXMiKSk7CisgICAgICAgIGZvb0FsaWFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb0FsaWFzIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFmb29BbGlhc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTYyNiw3ICs2MjYsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
Zm9vV2l0aERlZmF1bHRBbGlhc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgZm9vV2l0aERlZmF1bHRBbGlhc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29XaXRoRGVmYXVsdEFsaWFz
IikpOworICAgICAgICBmb29XaXRoRGVmYXVsdEFsaWFzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb1dpdGhEZWZh
dWx0QWxpYXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIWZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC02MzgsNyArNjM4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGludGVnZXJWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlciIpKTsK
KyAgICAgICAgaW50ZWdlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2VyIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFpbnRlZ2Vy
VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNjQ5LDcgKzY0OSw3IEBAIHRlbXBsYXRlPD4gVGVz
dE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihK
U0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBpbnRlZ2VyV2l0
aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGludGVn
ZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2VyV2l0aERlZmF1bHQiKSk7CisgICAgICAg
IGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2VyV2l0aERlZmF1bHQiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIWludGVnZXJXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTY2MSw3
ICs2NjEsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgbGFyZ2VJbnRlZ2VyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBsYXJnZUludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGFyZ2VJbnRlZ2VyIikpOwor
ICAgICAgICBsYXJnZUludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibGFyZ2VJbnRlZ2VyIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFsYXJnZUludGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02NzIsNyArNjcyLDcgQEAg
dGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsYXJnZUlu
dGVnZXJXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWxhcmdlSW50ZWdl
cldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNjg0LDcgKzY4NCw3IEBAIHRl
bXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpE
aWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBudWxsYWJsZUVudW1WYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IG51bGxhYmxlRW51bVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZUVudW0iKSk7CisgICAgICAgIG51bGxh
YmxlRW51bVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZUVudW0iX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxlRW51
bVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTY5Niw3ICs2OTYsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4o
SlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIG51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlSW50ZWdl
cldpdGhEZWZhdWx0IikpOworICAgICAgICBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghbnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03MDgsNyArNzA4LDcg
QEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIG51bGxhYmxlTm9kZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgbnVsbGFibGVOb2RlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZSIpKTsKKyAgICAgICAg
bnVsbGFibGVOb2RlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZSJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghbnVsbGFi
bGVOb2RlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzIwLDcgKzcyMCw3IEBAIHRlbXBsYXRl
PD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9u
YXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxs
YWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ugewot
ICAgICAgICBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlU3Ry
aW5nV2l0aERlZmF1bHQiKSk7CisgICAgICAgIG51bGxhYmxlU3RyaW5nV2l0aERlZmF1bHRWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghbnVsbGFibGVT
dHJpbmdXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTczMiw3ICs3MzIsNyBA
QCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAg
ICAgICAgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9u
TWVtYmVyIikpOworICAgICAgICBudWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxh
YmxlVW5pb25NZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxlVW5pb25NZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CkBAIC03NDQsNyArNzQ0LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0
aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlcXVpcmVkQnVmZmVyU291cmNl
VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlcXVpcmVk
QnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZSIp
KTsKKyAgICAgICAgcmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJl
ZEJ1ZmZlclNvdXJjZVZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFyZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVl
VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRlPD4gVGVz
dE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihK
U0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXN0cmljdGVk
RG91YmxlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZXN0cmlj
dGVkRG91YmxlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGUiKSk7CisgICAgICAgIHJlc3Ry
aWN0ZWREb3VibGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZERvdWJsZSJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVz
dHJpY3RlZERvdWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTc2OSw3ICs3NjksNyBAQCB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0IikpOworICAgICAgICByZXN0cmljdGVkRG91Ymxl
V2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Il9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgaWYgKCFyZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CkBAIC03ODEsNyArNzgxLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZl
cnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJl
c3RyaWN0ZWRGbG9hdCIpKTsKKyAgICAgICAgcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJl
c3RyaWN0ZWRGbG9hdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVzdHJpY3RlZEZsb2F0VmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpAQCAtNzkyLDcgKzc5Miw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFy
eSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVs
dFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdHJpY3RlZEZs
b2F0V2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQiKSk7
CisgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0
ZWRGbG9hdFdpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVs
dFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTgwNCw3ICs4MDQsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4o
SlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc2VxdWVuY2VP
ZlN0cmluZ3NWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlcXVl
bmNlT2ZTdHJpbmdzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlcXVlbmNlT2ZTdHJpbmdzIikpOworICAgICAgICBz
ZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlm
ICghc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC04MTUsNyArODE1
LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxJbnRl
Z2VyQ2xhbXBlZCIpKTsKKyAgICAgICAgc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
bWFsbEludGVnZXJDbGFtcGVkIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzbWFsbEludGVnZXJDbGFtcGVkVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtODI2LDcgKzgyNiw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6
RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2Jh
bE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzbWFsbEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc21hbGxJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxJbnRlZ2VyV2l0aERlZmF1bHQiKSk7
CisgICAgICAgIHNtYWxsSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdl
cldpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTgzNyw3ICs4MzcsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRp
Y3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxP
YgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc21hbGxVbnNpZ25lZEludGVn
ZXJFbmZvcmNlZFJhbmdlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNp
Z25lZEludGVnZXJFbmZvcmNlZFJhbmdlIikpOworICAgICAgICBzbWFsbFVuc2lnbmVkSW50ZWdl
ckVuZm9yY2VkUmFuZ2VWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJh
bmdlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgaWYgKCFzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CkBAIC04NDgsNyArODQ4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpE
aWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFs
T2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHNtYWxsVW5zaWduZWRJbnRl
Z2VyV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25l
ZEludGVnZXJXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgc21hbGxVbnNpZ25lZEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgaWYgKCFzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQo
KSkgewpAQCAtODYwLDcgKzg2MCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5n
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdUcmVhdE51
bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmci
KSk7CisgICAgICAgIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3Ry
aW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZyJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghc3RyaW5nVHJlYXROdWxsQXNF
bXB0eVN0cmluZ1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTg3MSw3ICs4NzEsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
c3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhEZWZhdWx0IikpOwor
ICAgICAgICBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRoRGVmYXVsdCJf
cykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQogICAgIGlmICghc3RyaW5nV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC04
ODMsNyArODgzLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJzdHJpbmdXaXRob3V0RGVmYXVsdCIpKTsKKyAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ1dpdGhv
dXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtODk0LDcgKzg5NCw3IEBAIHRlbXBs
YXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0
aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1
bmlvbk1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5p
b25NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXIiKSk7CisgICAgICAgIHVuaW9uTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVuaW9uTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCF1bmlvbk1lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTkwNSw3ICs5MDUsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRp
Y3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxP
YgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5yZXN0cmljdGVkRG91Ymxl
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bnJlc3RyaWN0ZWRE
b3VibGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91YmxlIikpOworICAgICAgICB1bnJlc3Ry
aWN0ZWREb3VibGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91YmxlIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCF1
bnJlc3RyaWN0ZWREb3VibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MTYsNyArOTE2LDcg
QEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgdW5yZXN0
cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91YmxlV2l0
aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBpZiAoIXVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtOTI4LDcgKzkyOCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6
RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2Jh
bE9iCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1bnJlc3RyaWN0ZWRGbG9h
dFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5yZXN0cmljdGVk
RmxvYXRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRmxvYXQiKSk7CisgICAgICAgIHVucmVzdHJp
Y3RlZEZsb2F0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0Il9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCF1bnJl
c3RyaWN0ZWRGbG9hdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTkzOSw3ICs5MzksNyBAQCB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IikpOworICAgICAgICB1bnJlc3RyaWN0ZWRG
bG9hdFdpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIXVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC05NTEsNyArOTUxLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuc2lnbmVkSW50ZWdlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInVuc2lnbmVkSW50ZWdlciIpKTsKKyAgICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInVuc2lnbmVkSW50ZWdlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghdW5zaWduZWRJbnRlZ2VyVmFsdWUuaXNV
bmRlZmluZWQoKSkgewpAQCAtOTYyLDcgKzk2Miw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9i
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1bnNpZ25lZEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWdu
ZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1
bHQiKSk7CisgICAgICAgIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVu
c2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCF1bnNpZ25lZEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTk3NCw3ICs5NzQsNyBAQCB0ZW1wbGF0
ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeT4oSlNHbG9iYWxPYgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5z
aWduZWRMYXJnZUludGVnZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2Vy
IikpOworICAgICAgICB1bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25lZExh
cmdlSW50ZWdlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC05ODUsNyArOTg1LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9u
YXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0
aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2ln
bmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRMYXJnZUludGVn
ZXJXaXRoRGVmYXVsdCIpKTsKKyAgICAgICAgdW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVs
dFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCF1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpA
QCAtMTAwNiwxODAgKzEwMDYsMTgwIEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgaWYg
KCFJRExTZXF1ZW5jZTxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+Ojppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LmFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyKSkgewogICAgICAgICBhdXRvIGFu
bm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyVmFsdWUgPSB0b0pTPElETFNlcXVlbmNlPElETENs
YW1wQWRhcHRvcjxJRExMb25nPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgSURMU2VxdWVuY2U8SURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pjo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1i
ZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXIiKSwgYW5ub3RhdGVkVHlwZUluU2VxdWVu
Y2VNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlciJfcyks
IGFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlE
TFVuaW9uPElETERPTVN0cmluZywgSURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5hbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlcikpIHsKICAgICAgICAgYXV0
byBhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlclZhbHVlID0gdG9KUzxJRExVbmlvbjxJRExET01T
dHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5pb248SURMRE9NU3RyaW5nLCBJRExDbGFtcEFk
YXB0b3I8SURMTG9uZz4+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5hbm5v
dGF0ZWRUeXBlSW5Vbmlvbk1lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlciIpLCBhbm5v
dGF0ZWRUeXBlSW5Vbmlvbk1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFubm90YXRlZFR5cGVJblVuaW9u
TWVtYmVyIl9zKSwgYW5ub3RhdGVkVHlwZUluVW5pb25NZW1iZXJWYWx1ZSk7CiAgICAgfQogICAg
IGF1dG8gYW55VHlwZWRlZlZhbHVlVmFsdWUgPSB0b0pTPElETEFueT4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5hbnlUeXBlZGVmVmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW55VHlwZWRlZlZhbHVlIiksIGFu
eVR5cGVkZWZWYWx1ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW55VHlwZWRlZlZhbHVlIl9zKSwgYW55VHlwZWRlZlZh
bHVlVmFsdWUpOwogICAgIGF1dG8gYW55VmFsdWVWYWx1ZSA9IHRvSlM8SURMQW55PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmFueVZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVZhbHVlIiksIGFueVZhbHVl
VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJhbnlWYWx1ZSJfcyksIGFueVZhbHVlVmFsdWUpOwogICAgIGF1dG8gYW55VmFs
dWVXaXRoTnVsbERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMQW55PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmFueVZhbHVlV2l0aE51bGxEZWZhdWx0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVZhbHVlV2l0aE51bGxE
ZWZhdWx0IiksIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbnlWYWx1ZVdpdGhO
dWxsRGVmYXVsdCJfcyksIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUpOwogICAgIGF1dG8g
Ym9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkuYm9vbGVhbldpdGhEZWZhdWx0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRoRGVmYXVs
dCIpLCBib29sZWFuV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRoRGVmYXVsdCJfcyks
IGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkuYm9vbGVhbldpdGhvdXREZWZhdWx0KSkgewogICAgICAgICBhdXRvIGJv
b2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
ZGljdGlvbmFyeS5ib29sZWFuV2l0aG91dERlZmF1bHQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0Iiks
IGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRob3V0RGVmYXVs
dCJfcyksIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExV
bmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPjo6aXNOdWxsVmFsdWUoZGlj
dGlvbmFyeS5idWZmZXJTb3VyY2VWYWx1ZSkpIHsKICAgICAgICAgYXV0byBidWZmZXJTb3VyY2VW
YWx1ZVZhbHVlID0gdG9KUzxJRExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVm
ZmVyPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExV
bmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPjo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkuYnVmZmVyU291cmNlVmFsdWUpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYnVmZmVyU291cmNlVmFsdWUi
KSwgYnVmZmVyU291cmNlVmFsdWVWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJidWZmZXJTb3VyY2VWYWx1ZSJfcyks
IGJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETERpY3Rpb25hcnk8
VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+Ojppc051bGxWYWx1ZShk
aWN0aW9uYXJ5LmRpY3Rpb25hcnlNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gZGljdGlvbmFyeU1l
bWJlclZhbHVlID0gdG9KUzxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hv
dWxkVG9sZXJhdGVOdWxsPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJh
dGVOdWxsPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuZGljdGlvbmFyeU1l
bWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0g
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJkaWN0aW9uYXJ5TWVtYmVyIiksIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
aWN0aW9uYXJ5TWVtYmVyIl9zKSwgZGljdGlvbmFyeU1lbWJlclZhbHVlKTsKICAgICB9CiAgICAg
YXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBk
aWN0aW9uYXJ5LmVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQi
KSwgZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVl
V2l0aERlZmF1bHQiX3MpLCBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAg
YXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gdG9KUzxJ
RExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGRpY3Rpb25hcnkuZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1
bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVy
YXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHQiKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhF
bXB0eVN0cmluZ0RlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJp
bmdEZWZhdWx0Il9zKSwgZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHRWYWx1
ZSk7CiAgICAgaWYgKCFJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkuZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSkgewogICAgICAg
ICBhdXRvIGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0gdG9KUzxJRExFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPjo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKGRpY3Rpb25hcnkuZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0
aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpLCBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRW
YWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQiX3MpLCBlbnVtZXJh
dGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSk7CiAgICAgfQogICAgIGF1dG8gZm9vQWxpYXNW
YWx1ZSA9IHRvSlM8SURMQW55PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0
aW9uYXJ5LmZvbyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJmb29BbGlhcyIpLCBmb29BbGlhc1ZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vQWxpYXMiX3MpLCBmb29BbGlhc1Zh
bHVlKTsKICAgICBhdXRvIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSA9IHRvSlM8SURMQW55Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmZvb1dpdGhEZWZhdWx0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZvb1dpdGhE
ZWZhdWx0QWxpYXMiKSwgZm9vV2l0aERlZmF1bHRBbGlhc1ZhbHVlKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vV2l0aERlZmF1
bHRBbGlhcyJfcyksIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSk7CiAgICAgaWYgKCFJRExMb25n
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmludGVnZXIpKSB7CiAgICAgICAgIGF1dG8gaW50ZWdl
clZhbHVlID0gdG9KUzxJRExMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJ
RExMb25nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5pbnRlZ2VyKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImludGVn
ZXIiKSwgaW50ZWdlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImludGVnZXIiX3MpLCBpbnRlZ2VyVmFsdWUpOwog
ICAgIH0KICAgICBhdXRvIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExMb25nPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5LmludGVnZXJXaXRoRGVm
YXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRl
Z2VyV2l0aERlZmF1bHQiKSwgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2VyV2l0
aERlZmF1bHQiX3MpLCBpbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExMb25n
TG9uZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5sYXJnZUludGVnZXIpKSB7CiAgICAgICAgIGF1
dG8gbGFyZ2VJbnRlZ2VyVmFsdWUgPSB0b0pTPElETExvbmdMb25nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBJRExMb25nTG9uZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkubGFyZ2VJbnRlZ2VyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImxhcmdlSW50ZWdlciIpLCBsYXJnZUludGVnZXJWYWx1ZSk7
CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJsYXJnZUludGVnZXIiX3MpLCBsYXJnZUludGVnZXJWYWx1ZSk7CiAgICAgfQogICAg
IGF1dG8gbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMTG9uZ0xvbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkubGFyZ2VJbnRlZ2VyV2l0
aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQiKSwgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImxhcmdlSW50ZWdlcldpdGhEZWZhdWx0Il9zKSwgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRW
YWx1ZSk7CiAgICAgYXV0byBudWxsYWJsZUVudW1WYWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURM
RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgZGljdGlvbmFyeS5udWxsYWJsZUVudW0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVFbnVtIiksIG51bGxhYmxlRW51bVZhbHVl
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibnVsbGFibGVFbnVtIl9zKSwgbnVsbGFibGVFbnVtVmFsdWUpOwogICAgIGF1dG8gbnVs
bGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMTG9uZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rpb25hcnkubnVsbGFibGVJbnRl
Z2VyV2l0aERlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQiKSwgbnVsbGFibGVJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0Il9zKSwgbnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgYXV0byBudWxsYWJsZU5vZGVWYWx1ZSA9IHRv
SlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBkaWN0aW9uYXJ5Lm51bGxhYmxlTm9kZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZU5vZGUiKSwg
bnVsbGFibGVOb2RlVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZU5vZGUiX3MpLCBudWxsYWJsZU5vZGVWYWx1
ZSk7CiAgICAgYXV0byBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETE51
bGxhYmxlPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRp
Y3Rpb25hcnkubnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0IiksIG51
bGxhYmxlU3RyaW5nV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlU3RyaW5nV2l0aERlZmF1
bHQiX3MpLCBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUpOwogICAgIGF1dG8gbnVsbGFi
bGVVbmlvbk1lbWJlclZhbHVlID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExMb25nLCBJ
RExJbnRlcmZhY2U8Tm9kZT4+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBkaWN0aW9uYXJ5Lm51bGxhYmxlVW5pb25NZW1iZXIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbk1lbWJlciIpLCBu
dWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uTWVtYmVyIl9zKSwgbnVs
bGFibGVVbmlvbk1lbWJlclZhbHVlKTsKICAgICBhdXRvIHJlcXVpcmVkQnVmZmVyU291cmNlVmFs
dWVWYWx1ZSA9IHRvSlM8SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZl
cj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlv
bmFyeS5yZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWUiKSwgcmVxdWly
ZWRCdWZmZXJTb3VyY2VWYWx1ZVZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZSJf
cyksIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSk7CiAgICAgaWYgKCFJRExEb3VibGU6
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucmVzdHJpY3RlZERvdWJsZSkpIHsKICAgICAgICAgYXV0
byByZXN0cmljdGVkRG91YmxlVmFsdWUgPSB0b0pTPElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGlj
dGlvbmFyeS5yZXN0cmljdGVkRG91YmxlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGUiKSwgcmVzdHJpY3RlZERv
dWJsZVZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGUiX3MpLCByZXN0cmljdGVkRG91Ymxl
VmFsdWUpOwogICAgIH0KICAgICBhdXRvIHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVl
ID0gdG9KUzxJRExEb3VibGU+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rp
b25hcnkucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpLCBy
ZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWREb3VibGVXaXRo
RGVmYXVsdCJfcyksIHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAo
IUlETEZsb2F0Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnJlc3RyaWN0ZWRGbG9hdCkpIHsKICAg
ICAgICAgYXV0byByZXN0cmljdGVkRmxvYXRWYWx1ZSA9IHRvSlM8SURMRmxvYXQ+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEZsb2F0OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5yZXN0cmljdGVkRmxvYXQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZEZsb2F0IiksIHJlc3RyaWN0
ZWRGbG9hdFZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0ZWRGbG9hdCJfcyksIHJlc3RyaWN0ZWRGbG9h
dFZhbHVlKTsKICAgICB9CiAgICAgYXV0byByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVl
ID0gdG9KUzxJRExGbG9hdD4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlv
bmFyeS5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIpLCByZXN0
cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1
bHQiX3MpLCByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETFNl
cXVlbmNlPElETERPTVN0cmluZz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc2VxdWVuY2VPZlN0
cmluZ3MpKSB7CiAgICAgICAgIGF1dG8gc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZSA9IHRvSlM8SURM
U2VxdWVuY2U8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+OjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5zZXF1ZW5jZU9mU3RyaW5ncykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyIp
LCBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlcXVlbmNlT2ZTdHJpbmdzIl9zKSwg
c2VxdWVuY2VPZlN0cmluZ3NWYWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMQ2xhbXBBZGFwdG9y
PElETEJ5dGU+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnNtYWxsSW50ZWdlckNsYW1wZWQpKSB7
CiAgICAgICAgIGF1dG8gc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlID0gdG9KUzxJRExDbGFtcEFk
YXB0b3I8SURMQnl0ZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETENsYW1w
QWRhcHRvcjxJRExCeXRlPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc21h
bGxJbnRlZ2VyQ2xhbXBlZCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzbWFsbEludGVnZXJDbGFtcGVkIiksIHNtYWxsSW50ZWdlckNsYW1w
ZWRWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzbWFsbEludGVnZXJDbGFtcGVkIl9zKSwgc21hbGxJbnRlZ2VyQ2xh
bXBlZFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExCeXRlOjppc051bGxWYWx1ZShkaWN0aW9u
YXJ5LnNtYWxsSW50ZWdlcldpdGhEZWZhdWx0KSkgewogICAgICAgICBhdXRvIHNtYWxsSW50ZWdl
cldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETEJ5dGU+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIElETEJ5dGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnNt
YWxsSW50ZWdlcldpdGhEZWZhdWx0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdlcldpdGhEZWZhdWx0IiksIHNtYWxsSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic21hbGxJbnRlZ2VyV2l0aERlZmF1bHQiX3Mp
LCBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICB9CiAgICAgaWYgKCFJRExFbmZv
cmNlUmFuZ2VBZGFwdG9yPElETE9jdGV0Pjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zbWFsbFVu
c2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2UpKSB7CiAgICAgICAgIGF1dG8gc21hbGxVbnNpZ25l
ZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUgPSB0b0pTPElETEVuZm9yY2VSYW5nZUFkYXB0b3I8
SURMT2N0ZXQ+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExFbmZvcmNlUmFu
Z2VBZGFwdG9yPElETE9jdGV0Pjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
c21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2VyRW5m
b3JjZWRSYW5nZSIpLCBzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2UiX3MpLCBzbWFsbFVuc2lnbmVk
SW50ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZSk7CiAgICAgfQogICAgIGF1dG8gc21hbGxVbnNpZ25l
ZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gdG9KUzxJRExPY3RldD4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS5zbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZh
dWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxs
VW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiKSwgc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVm
YXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCJfcyksIHNtYWxs
VW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgaWYgKCFJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFy
eS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nKSkgewogICAgICAgICBhdXRvIHN0cmluZ1Ry
ZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1ZSA9IHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+OjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5n
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciKSwgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0
cmluZ1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciX3MpLCBzdHJp
bmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgZGljdGlvbmFyeS5zdHJpbmdXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRoRGVmYXVsdCIpLCBzdHJp
bmdXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aERlZmF1bHQiX3MpLCBzdHJpbmdXaXRo
RGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlv
bmFyeS5zdHJpbmdXaXRob3V0RGVmYXVsdCkpIHsKICAgICAgICAgYXV0byBzdHJpbmdXaXRob3V0
RGVmYXVsdFZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkuc3RyaW5nV2l0aG91dERlZmF1bHQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiKSwgc3RyaW5nV2l0
aG91dERlZmF1bHRWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRob3V0RGVmYXVsdCJfcyksIHN0cmlu
Z1dpdGhvdXREZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICBpZiAoIUlETFVuaW9uPElETExvbmcs
IElETEludGVyZmFjZTxOb2RlPj46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkudW5pb25NZW1iZXIp
KSB7CiAgICAgICAgIGF1dG8gdW5pb25NZW1iZXJWYWx1ZSA9IHRvSlM8SURMVW5pb248SURMTG9u
ZywgSURMSW50ZXJmYWNlPE5vZGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBJRExVbmlvbjxJRExMb25nLCBJRExJbnRlcmZhY2U8Tm9kZT4+OjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS51bmlvbk1lbWJlcikpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlciIp
LCB1bmlvbk1lbWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaW9uTWVtYmVyIl9zKSwgdW5pb25NZW1iZXJW
YWx1ZSk7CiAgICAgfQogICAgIGlmICghSURMVW5yZXN0cmljdGVkRG91YmxlOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LnVucmVzdHJpY3RlZERvdWJsZSkpIHsKICAgICAgICAgYXV0byB1bnJlc3Ry
aWN0ZWREb3VibGVWYWx1ZSA9IHRvSlM8SURMVW5yZXN0cmljdGVkRG91YmxlPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbnJlc3RyaWN0ZWREb3VibGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnVucmVzdHJpY3RlZERvdWJsZSkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRE
b3VibGUiKSwgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91
YmxlIl9zKSwgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHVucmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETFVucmVzdHJpY3RlZERvdWJs
ZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS51bnJlc3RyaWN0
ZWREb3VibGVXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpLCB1bnJlc3RyaWN0ZWRE
b3VibGVXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQi
X3MpLCB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETFVu
cmVzdHJpY3RlZEZsb2F0Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnVucmVzdHJpY3RlZEZsb2F0
KSkgewogICAgICAgICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0VmFsdWUgPSB0b0pTPElETFVucmVz
dHJpY3RlZEZsb2F0PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbnJlc3Ry
aWN0ZWRGbG9hdDo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkudW5yZXN0cmlj
dGVkRmxvYXQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidW5yZXN0cmljdGVkRmxvYXQiKSwgdW5yZXN0cmljdGVkRmxvYXRWYWx1ZSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1bnJlc3RyaWN0ZWRGbG9hdCJfcyksIHVucmVzdHJpY3RlZEZsb2F0VmFsdWUpOwogICAg
IH0KICAgICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURM
VW5yZXN0cmljdGVkRmxvYXQ+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRpY3Rp
b25hcnkudW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0Iiks
IHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0
V2l0aERlZmF1bHQiX3MpLCB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUpOwogICAg
IGlmICghSURMVW5zaWduZWRMb25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnVuc2lnbmVkSW50
ZWdlcikpIHsKICAgICAgICAgYXV0byB1bnNpZ25lZEludGVnZXJWYWx1ZSA9IHRvSlM8SURMVW5z
aWduZWRMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExVbnNpZ25lZExv
bmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnVuc2lnbmVkSW50ZWdlcikp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
bnNpZ25lZEludGVnZXIiKSwgdW5zaWduZWRJbnRlZ2VyVmFsdWUpOworICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRJ
bnRlZ2VyIl9zKSwgdW5zaWduZWRJbnRlZ2VyVmFsdWUpOwogICAgIH0KICAgICBhdXRvIHVuc2ln
bmVkSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFyeS51bnNpZ25lZEludGVnZXJXaXRo
RGVmYXVsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIpLCB1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZh
bHVlKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiX3MpLCB1bnNpZ25lZEludGVnZXJX
aXRoRGVmYXVsdFZhbHVlKTsKICAgICBpZiAoIUlETFVuc2lnbmVkTG9uZ0xvbmc6OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkudW5zaWduZWRMYXJnZUludGVnZXIpKSB7CiAgICAgICAgIGF1dG8gdW5z
aWduZWRMYXJnZUludGVnZXJWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMVW5zaWduZWRMb25nTG9uZzo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkudW5zaWduZWRMYXJnZUludGVnZXIpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRM
YXJnZUludGVnZXIiKSwgdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25l
ZExhcmdlSW50ZWdlciJfcyksIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUpOwogICAgIH0KICAg
ICBhdXRvIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IHRvSlM8SURMVW5z
aWduZWRMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlvbmFy
eS51bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQi
KSwgdW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRMYXJn
ZUludGVnZXJXaXRoRGVmYXVsdCJfcyksIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRW
YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTE5OCw3ICsxMTk4LDcgQEAgdGVt
cGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCBjb252
ZXJ0RGljdGlvbmFyeTxUZXN0T2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRob3V0
RGVmYXVsdCIpKTsKKyAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xlYW5XaXRob3V0RGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbGVhbldpdGhvdXREZWZhdWx0VmFs
dWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTIwOSw3ICsxMjA5LDcgQEAgdGVtcGxhdGU8PiBUZXN0
T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG5vbk51bGxhYmxl
Tm9kZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbm9uTnVsbGFi
bGVOb2RlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm5vbk51bGxhYmxlTm9kZSIpKTsKKyAgICAgICAgbm9uTnVsbGFi
bGVOb2RlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm5vbk51bGxhYmxlTm9kZSJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghbm9uTnVsbGFi
bGVOb2RlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTIyMyw3ICsxMjIzLDcgQEAgdGVtcGxh
dGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCBjb252ZXJ0
RGljdGlvbmFyeTxUZXN0T2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJl
cXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgcmVxdWlyZWREaWN0aW9uYXJ5TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkRGlj
dGlvbmFyeU1lbWJlciIpKTsKKyAgICAgICAgcmVxdWlyZWREaWN0aW9uYXJ5TWVtYmVyVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlcXVpcmVkRGljdGlvbmFyeU1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVxdWlyZWREaWN0
aW9uYXJ5TWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTIzNyw3ICsxMjM3LDcgQEAg
dGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCBj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2IKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVp
cmVkRW51bWVyYXRpb25WYWx1ZSIpKTsKKyAgICAgICAgcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVl
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZSJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVxdWly
ZWRFbnVtZXJhdGlvblZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTI2NSw3ICsxMjY1
LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVs
bCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjoKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xl
YW5XaXRob3V0RGVmYXVsdCIpKTsKKyAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbGVhbldpdGhvdXRE
ZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgdGVtcGxh
dGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbCBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0T2JqOjoKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGVu
dW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZSIpKTsKKyAgICAg
ICAgZW51bWVyYXRpb25WYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFlbnVtZXJhdGlvblZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTMwMSw3ICsx
MzAxLDcgQEAgdGVtcGxhdGU8PiBBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZSBjb252ZXJ0RGljdGlv
bmFyeTxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4oSlMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xlYW5XaXRob3V0RGVmYXVsdCIpKTsKKyAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbGVhbldpdGhv
dXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgdGVt
cGxhdGU8PiBBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZSBjb252ZXJ0RGljdGlvbmFyeTxBbHRlcm5h
dGVEaWN0aW9uYXJ5TmFtZT4oSlMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZSIpKTsKKyAg
ICAgICAgZW51bWVyYXRpb25WYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlIl9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgaWYgKCFlbnVtZXJhdGlvblZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTMzNyw3
ICsxMzM3LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnkKICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSIp
KTsKKyAgICAgICAgcGFyZW50TWVtYmVyMVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIxIl9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgaWYgKCFwYXJlbnRNZW1iZXIxVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTM0OCw3ICsx
MzQ4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5IGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiIpKTsK
KyAgICAgICAgcGFyZW50TWVtYmVyMlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIyIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
aWYgKCFwYXJlbnRNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTM3Myw3ICsxMzcz
LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5PigKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSIpKTsKKyAg
ICAgICAgcGFyZW50TWVtYmVyMVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIxIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFwYXJlbnRNZW1iZXIxVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTM4NCw3ICsxMzg0LDcg
QEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8
VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5PigKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiIpKTsKKyAgICAg
ICAgcGFyZW50TWVtYmVyMlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFw
YXJlbnRNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTM5NSw3ICsxMzk1LDcgQEAg
dGVtcGxhdGU8PiBUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6Q2hpbGREaWN0aW9uYXJ5PigKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIGNoaWxkTWVtYmVyMVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgY2hpbGRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNoaWxkTWVtYmVyMSIpKTsKKyAgICAgICAgY2hp
bGRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNoaWxkTWVtYmVyMSJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2hpbGRNZW1i
ZXIxVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTQwNiw3ICsxNDA2LDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q2hp
bGREaWN0aW9uYXJ5PigKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNoaWxk
TWVtYmVyMlZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2hpbGRN
ZW1iZXIyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNoaWxkTWVtYmVyMiIpKTsKKyAgICAgICAgY2hpbGRNZW1iZXIy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNoaWxkTWVtYmVyMiJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2hpbGRNZW1iZXIyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2Jq
OjpDb25kaXRpb25hbERpY3Rpb25hcnlBIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRp
dGlvbmEKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ1dpdGhvdXRE
ZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdX
aXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRob3V0RGVmYXVsdCIpKTsKKyAgICAg
ICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIXN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpA
QCAtMTQ2Miw3ICsxNDYyLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25hbERpY3Rp
b25hcnlCIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmEKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJzdHJpbmdXaXRob3V0RGVmYXVsdCIpKTsKKyAgICAgICAgc3RyaW5nV2l0aG91dERl
ZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmlu
Z1dpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTQ5MSw3ICsxNDkxLDcg
QEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmEKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRo
b3V0RGVmYXVsdCIpKTsKKyAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXN0cmluZ1dpdGhvdXREZWZhdWx0VmFs
dWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMjA4MSw3ICsyMDgxLDcgQEAgdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmEKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9iajo6aW5mbygp
LCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlU3RhdGljIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGlj
Il9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
ICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yMDg5LDcgKzIwODksNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVz
dEZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uU3RhdGljIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIl9zKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNDM5LDcgKzI0MzksNyBAQCB2b2lkIEpT
VGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CkBAIC0yNDQ3LDI4ICsyNDQ3LDI4IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjZW5kaWYKICAgICBpZiAoISh3b3JsZEZvckRPTU9iamVj
dCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOworICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbmFibGVk
SW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCJfcyk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgq
dGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0
aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAid29ybGRTcGVjaWZpY01ldGhv
ZCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjYWxj
dWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNh
bGN1bGF0ZVNlY3JldFJlc3VsdCJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVh
biIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZ2V0U2VjcmV0Qm9vbGVhbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJ0ZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4iKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiJfcyk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI0ODQsMjEgKzI0ODQsMjEgQEAgdm9pZCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNlbmRpZgogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9XaW5kb3dGdW5jdGlvbiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0
aW9uIl9zKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRp
b25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJGdW5jdGlvbiJfcyk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmFsbG93c01lZGlhRGV2aWNlcygpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNl
cyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWVkaWFEZXZpY2VzIl9zKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAgdm9pZCBKU1Rlc3RP
YmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogICAgIGlmICghKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiX3MpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CkBAIC0yNTE0LDE0ICsyNTE0LDE0IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0F0dHJpYnV0ZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSJfcyk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlF
eHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJB
dHRyaWJ1dGUiX3MpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNTMzLDgg
KzI1MzMsOCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGds
b2JhbE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCkpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBhZGRWYWx1
ZUl0ZXJhYmxlTWV0aG9kcygqZ2xvYmFsT2JqZWN0KCksICp0aGlzKTsKICAgICBKU09iamVjdCYg
dW5zY29wYWJsZXMgPSAqY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KCktPnZtKCks
IGdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwotICAgIHVu
c2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuZGVm
aW5lZE1ldGhvZCIpLCBqc0Jvb2xlYW4odHJ1ZSkpOwotICAgIHVuc2NvcGFibGVzLnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNob3J0QXR0ciIpLCBqc0Jvb2xlYW4o
dHJ1ZSkpOworICAgIHVuc2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVuZGVmaW5lZE1ldGhvZCJfcyksIGpzQm9vbGVhbih0cnVlKSk7CisgICAgdW5z
Y29wYWJsZXMucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hvcnRB
dHRyIl9zKSwganNCb29sZWFuKHRydWUpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5zY29wYWJsZXNTeW1ib2wsICZ1bnNjb3BhYmxlcywg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
CiB9CkBAIC01MDM5LDE0ICs1MDM5LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpfcHV0Rm9yd2FyZHNBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIGlkID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJw
dXRGb3J3YXJkc0F0dHJpYnV0ZSIpLCBzdHJsZW4oInB1dEZvcndhcmRzQXR0cmlidXRlIikpOwor
ICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHV0Rm9yd2FyZHNBdHRy
aWJ1dGUiX3MpOwogICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZVRvRm9yd2FyZFRvLmlzT2JqZWN0
KCkpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBhdXRvIGZvcndhcmRJ
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigibmFtZSIpLCBzdHJsZW4oIm5hbWUiKSk7CisgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodmFsdWVUb0ZvcndhcmRUbywgZmFsc2UpOwogICAgIGFzT2JqZWN0KHZhbHVlVG9Gb3J3YXJk
VG8pLT5tZXRob2RUYWJsZSh2bSktPnB1dChhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKSwgJmxl
eGljYWxHbG9iYWxPYmplY3QsIGZvcndhcmRJZCwgdmFsdWUsIHNsb3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwpAQCAtNTA3NSwxNCArNTA3NSwxNCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3B1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1
dGVTZXR0ZXIoSlNHbG9iYWxPYmplYwogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIp
LCBzdHJsZW4oInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKSk7CisgICAgYXV0byBpZCA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
Il9zKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlzT2JqZWN0LmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgaWQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVUb0ZvcndhcmRUby5pc09iamVjdCgpKSkg
ewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgYXV0byBmb3J3YXJkSWQgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Im5hbWUiKSwgc3RybGVuKCJuYW1lIikpOworICAgIGF1dG8gZm9yd2FyZElkID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZh
bHVlVG9Gb3J3YXJkVG8sIGZhbHNlKTsKICAgICBhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKS0+
bWV0aG9kVGFibGUodm0pLT5wdXQoYXNPYmplY3QodmFsdWVUb0ZvcndhcmRUbyksICZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBmb3J3YXJkSWQsIHZhbHVlLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5jcHAKaW5kZXggMzA2NzJkMmRkNDE1M2FkNGI4M2RiZDUxYmUzOTlmZTRiNGVh
ZDcxZS4uMDhkMWJiNDYwOTEwYmJmOTRiYWIwODc3YjhiN2RkMjgzOWM0MTY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
dGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9u
YXJ5PFRlc3RQcm9taXNlUmVqZWN0aW8KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIGJ1YmJsZXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJ1
YmJsZXNWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiYnViYmxlcyIpKTsKKyAgICAgICAgYnViYmxlc1ZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJidWJibGVzIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgaWYgKCFidWJibGVzVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
NzksNyArNzksNyBAQCB0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQg
Y29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3RpbwogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYW5jZWxhYmxlIikpOworICAg
ICAgICBjYW5jZWxhYmxlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbmNlbGFibGUiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbmNl
bGFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPD4g
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0UHJv
bWlzZVJlamVjdGlvCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjb21wb3Nl
ZFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY29tcG9zZWRWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY29tcG9zZWQiKSk7CisgICAgICAgIGNvbXBvc2VkVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBv
c2VkIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgaWYgKCFjb21wb3NlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwMyw3
ICsxMDMsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQgY29u
dmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3RpbwogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgcHJvbWlzZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgcHJvbWlzZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9taXNlIikpOworICAgICAgICBwcm9taXNl
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInByb21pc2UiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXByb21pc2VWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC0xMTcsNyArMTE3LDcgQEAgdGVtcGxhdGU8PiBUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50OjpJbml0IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW8KICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlYXNvblZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgcmVhc29uVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlYXNvbiIpKTsKKyAg
ICAgICAgcmVhc29uVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlYXNvbiJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcmVhc29uVmFsdWUu
aXNVbmRlZmluZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAKaW5kZXggYTJhZGI0MmVlMGNmYmNiZWMxMThkNDQ4OTNmOGMxNzdiNWQ5MjFhZi4uNzVmMjY5
OWYyZmQ5NWU0OTQ0MGM0YjZiODEwYzFlZDE4YTEyYTE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPD4gRGlj
dGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNH
bG9iYWxPYmplCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29sTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBib29sTWVtYmVyVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Ym9vbE1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghYm9vbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
QEAgLTcxLDcgKzcxLDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERp
Y3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a01lbWJlciIpKTsKKyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tN
ZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpA
QCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGlj
dGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAgIGlmIChpc051bGxP
clVuZGVmaW5lZCkKICAgICAgICAgZW51bU1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgZW51bU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtTWVtYmVyIikpOwor
ICAgICAgICBlbnVtTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1NZW1iZXIiX3MpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWVu
dW1NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC05Myw3ICs5Myw3IEBAIHRlbXBsYXRl
PD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFt
ZT4oSlNHbG9iYWxPYmplCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxs
YWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIG51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUiKSk7CisgICAgICAgIG51bGxh
YmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uV2l0
aE51bGxEZWZhdWx0VmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIW51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1
bHRWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwNiw3ICsxMDYsNyBAQCB0ZW1wbGF0
ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5h
bWU+KEpTR2xvYmFsT2JqZQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFy
dGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVy
IikpOworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9v
bGVhbk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC0xMTksNyArMTE5LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5h
bWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0
aElnbm9yZWRDb25kaXRpb25hbFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbCIpKTsKKyAgICAg
ICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbCJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICgh
cGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1l
IGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxsYmFja01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIHBhcnRp
YWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE0
NSw3ICsxNDUsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlv
bmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgcGFydGlhbEVudW1NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxFbnVtTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxFbnVtTWVtYmVyIikpOworICAgICAgICBwYXJ0aWFsRW51bU1lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsRW51bU1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbEVudW1NZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CkBAIC0xNTgsNyArMTU4LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1w
bE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdN
ZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxS
ZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIp
KTsKKyAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTc0LDcgKzE3NCw3IEBAIHRlbXBsYXRlPD4gRGlj
dGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNH
bG9iYWxPYmplCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsU3Ry
aW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0
aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSk7CisgICAg
ICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciJf
cykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQogICAgIGlmICghcGFydGlhbFN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAg
LTE4OCw3ICsxODgsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGlj
dGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAgICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmdWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpKTsKKyAgICAgICAgICAg
IHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0
aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciX3MpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKQEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFt
ZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+KEpTR2xvYmFsT2JqZQogICAg
IGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJl
cldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAg
ICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIikpOworICAgICAg
ICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFw
YXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUg
Y29udmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ01lbWJlciIpKTsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01l
bWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfQogICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
MjI1LDcgKzIyNSw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0
aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRW
YWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUiKSk7CisgICAgICAg
IHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlcldpdGhE
ZWZhdWx0VmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIXVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTI0Niw1OSArMjQ2LDU5IEBAIEpTQzo6SlNPYmplY3QqIGNv
bnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmJvb2xN
ZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFu
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9vbE1l
bWJlclZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpLCBib29sTWVtYmVyVmFsdWUpOwogICAg
IH0KICAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgewogICAgICAgICBhdXRvIGNhbGxiYWNr
TWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETENhbGxiYWNr
RnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5jYWxsYmFja01lbWJlcikpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpLCBjYWxsYmFja01lbWJlclZhbHVl
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAg
fQogICAgIGlmICghSURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVt
SW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmVudW1N
ZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gZW51bU1lbWJlclZhbHVlID0gdG9KUzxJRExFbnVtZXJh
dGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5
RmlsZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETEVudW1lcmF0aW9uPFRl
c3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPjo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuZW51bU1lbWJlcikpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtTWVtYmVy
IiksIGVudW1NZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtTWVtYmVyIl9zKSwgZW51bU1lbWJlclZh
bHVlKTsKICAgICB9CiAgICAgYXV0byBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVW
YWx1ZSA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExCb29sZWFu
Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgZGljdGlv
bmFyeS5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVs
dFZhbHVlIiksIG51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVs
bGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlIl9zKSwgbnVsbGFibGVVbmlvbldpdGhOdWxs
RGVmYXVsdFZhbHVlVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRpb25hbDEzKSB8fCBFTkFCTEUo
Q29uZGl0aW9uYWwxNCkKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25h
cnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5N
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFy
dGlhbEJvb2xlYW5NZW1iZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFydGlhbEJvb2xlYW5N
ZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcyksIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWUpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb25hbDEz
KSB8fCBFTkFCTEUoQ29uZGl0aW9uYWwxNCkKICAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFs
KSkgewogICAgICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRp
b25hbFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0
aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9uYWwpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1i
ZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsIiksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9y
ZWRDb25kaXRpb25hbFZhbHVlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9y
ZWRDb25kaXRpb25hbCJfcyksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRp
b25hbFZhbHVlKTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwg
RU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIp
KSB7CiAgICAgICAgIGF1dG8gcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENh
bGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicGFydGlhbENhbGxiYWNrTWVtYmVyIiksIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciJfcyksIHBhcnRpYWxDYWxsYmFja01lbWJlclZh
bHVlKTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5BQkxF
KENvbmRpdGlvbmFsMTQpCiAgICAgaWYgKCFJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT46OmlzTnVsbFZhbHVlKGRp
Y3Rpb25hcnkucGFydGlhbEVudW1NZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbEVudW1N
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5
OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1J
blN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LnBhcnRpYWxFbnVtTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxFbnVtTWVtYmVyIiksIHBhcnRpYWxFbnVt
TWVtYmVyVmFsdWUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEVudW1NZW1iZXIiX3MpLCBwYXJ0aWFsRW51bU1l
bWJlclZhbHVlKTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwg
RU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgYXV0byBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUgPSB0b0pTPElETExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGRp
Y3Rpb25hcnkucGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiksIHBh
cnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1i
ZXIiX3MpLCBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbmFsMTMpIHx8IEVOQUJMRShDb25kaXRpb25hbDE0KQogICAgIGlmICghSURM
RE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKSB7
CiAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJp
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcikpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
U3RyaW5nTWVtYmVyIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
U3RyaW5nTWVtYmVyIl9zKSwgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlKTsKICAgICB9CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5BQkxFKENvbmRpdGlvbmFsMTQpCkBA
IC0zMDYsNyArMzA2LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICAgICAgaWYgKCFJ
RExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldp
dGhFbmFibGVkQnlTZXR0aW5nKSkgewogICAgICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGlu
ZykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
ICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpLCBwYXJ0
aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSwgcGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlm
CkBAIC0zMTQsMTcgKzMxNCwxNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIGlmICgh
SURMVW5zaWduZWRMb25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJ
bXBsZW1lbnRlZEFzVmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgSURMVW5zaWduZWRMb25nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0
aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0
aEltcGxlbWVudGVkQXMiX3MpLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVu
dGVkQXNWYWx1ZSk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVs
bFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSkgewogICAgICAgICBhdXRvIHN0cmluZ01l
bWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
c3RyaW5nTWVtYmVyKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dHJpbmdNZW1iZXIiX3MpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CiAgICAgfQogICAgIGF1dG8gdW5p
b25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWUgPSB0b0pTPElETFVuaW9uPElETEVudW1lcmF0
aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlPiwgSURMRG91YmxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBkaWN0aW9uYXJ5LnVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlcldpdGhEZWZh
dWx0VmFsdWUiKSwgdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlVmFsdWUpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1l
bWJlcldpdGhEZWZhdWx0VmFsdWUiX3MpLCB1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWVWYWx1
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNTEwNDc5NzgzMmE4MmEyNDA0MzA5YTEyYmI3MGE3ZTQ2NjM3N2Vl
Zi4uZmZiYmRiOGVlNzFlMzliMDMwNGU1MzIxYTBhMTU1N2VlMTU0MWNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00NTkyLDcgKzQ1OTIsNyBAQCBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsCiAgICAgaWYgKCFtZWRpYUpTV3JhcHBlck9iamVjdCkKICAgICAg
ICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbHNI
b3N0ID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29udHJvbHNIb3N0Iik7Cisg
ICAgSlNDOjpJZGVudGlmaWVyIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNvbnRyb2xzSG9zdCJfcyk7CiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9z
dEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGNvbnRyb2xzSG9zdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpq
c051bGwoKSk7CiAKQEAgLTQ2MDAsNyArNDYwMCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29u
dHJvbGxlckpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICBpZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7CiAKLSAgICBKU0M6OklkZW50aWZpZXIgY29udHJvbGxlcklEID0gSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29udHJvbGxlciIpOworICAgIEpTQzo6SWRlbnRp
ZmllciBjb250cm9sbGVySUQgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb250
cm9sbGVyIl9zKTsKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTV3JhcHBlciA9IGNvbnRy
b2xzSG9zdEpTV3JhcHBlck9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb250cm9s
bGVySUQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNOdWxsKCkpOwog
CkBAIC00NjcxLDcgKzQ2NzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRp
b25Db250YWluZXIoKQogICAgICAgICAvLyAgICAgTm9uZQogICAgICAgICAvLyBSZXR1cm4gdmFs
dWU6CiAgICAgICAgIC8vICAgICBOb25lCi0gICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBjb250
cm9sbGVyT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInVwZGF0ZUNhcHRpb25Db250YWluZXIiKSk7CisgICAgICAgIGF1dG8g
bWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVwZGF0ZUNhcHRpb25Db250YWluZXIi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVwb3J0RXhjZXB0aW9u
QW5kUmV0dXJuRmFsc2UoKSk7CiAKICAgICAgICAgYXV0byogbWV0aG9kT2JqZWN0ID0gSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPih2bSwgbWV0aG9kVmFsdWUpOwpAQCAtNzYyMSw3
ICs3NjIxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5q
ZWN0ZWRTY3JpcHQoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwogCi0g
ICAgICAgIGF1dG8gZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNyZWF0ZUNvbnRyb2xz
IikpOworICAgICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVD
b250cm9scyJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZXBvcnRF
eGNlcHRpb25BbmRSZXR1cm5GYWxzZSgpKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXND
YWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc2OTksNyArNzY5OSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFk
b3dSb290JiByb290KQogICAgICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgICAgIC8vICAgICBB
IHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtZWRpYSBjb250cm9sbGVyIGluc3RhbmNlLgogCi0g
ICAgICAgIGF1dG8gZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNyZWF0ZUNvbnRyb2xz
IikpOworICAgICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVD
b250cm9scyJfcykpOwogICAgICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NzM5LDcgKzc3MzksNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCYgcm9vdCkKICAgICAgICAgLy8gQ29ubmVjdCB0aGUgTWVkaWEsIE1lZGlhQ29udHJvbGxlckhv
c3QsIGFuZCBDb250cm9sbGVyIHNvIHRoZSBHQyBrbm93cyBhYm91dCB0aGVpciByZWxhdGlvbnNo
aXAKICAgICAgICAgYXV0byogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBtZWRpYUpTV3JhcHBlci50
b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHJlcG9ydEV4Y2VwdGlvbkFuZFJldHVybkZhbHNlKCkpOwotICAgICAgICBhdXRv
IGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbnRyb2xz
SG9zdCIpOworICAgICAgICBhdXRvIGNvbnRyb2xzSG9zdCA9IEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbnRyb2xzSG9zdCJfcyk7CiAKICAgICAgICAgQVNTRVJUKCFtZWRpYUpT
V3JhcHBlck9iamVjdC0+aGFzUHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnRyb2xz
SG9zdCkpOwogCkBAIC03NzQ5LDcgKzc3NDksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
ZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKICAgICAgICAgaWYgKCFt
ZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBhdXRvIGNvbnRyb2xsZXIgPSBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb250cm9sbGVyIik7CisgICAgICAgIGF1dG8gY29udHJvbGxlciA9IEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbnRyb2xsZXIiX3MpOwogCiAgICAgICAgIEFTU0VS
VCghY29udHJvbGxlck9iamVjdC0+aGFzUHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIGNv
bnRyb2xsZXIpKTsKIApAQCAtNzc5NSw3ICs3Nzk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCkKICAgICAg
ICAgYXV0byogY29udHJvbGxlck9iamVjdCA9IGNvbnRyb2xsZXJWYWx1ZS50b09iamVjdCgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKIAotICAgICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImhhbmRsZVByZXNlbnRhdGlvbk1vZGVDaGFuZ2UiKSk7CisgICAgICAgIGF1dG8gZnVuY3Rpb25W
YWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSJf
cykpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpIHx8IGZ1bmN0aW9u
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtNzgzOSw3ICs3ODM5LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmdldEN1cnJlbnRN
ZWRpYUNvbnRyb2xzU3RhdHVzKCkKICAgICAgICAgYXV0byogY29udHJvbGxlck9iamVjdCA9IGNv
bnRyb2xsZXJWYWx1ZS50b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgICAgICBhdXRvIGZ1bmN0aW9u
VmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdldEN1cnJlbnRDb250cm9sc1N0YXR1cyIpKTsK
KyAgICAgICAgYXV0byBmdW5jdGlvblZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJnZXRDdXJy
ZW50Q29udHJvbHNTdGF0dXMiX3MpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSB8fCBmdW5jdGlvblZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>