<?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>210254</bug_id>
          
          <creation_ts>2020-04-09 01:00:39 -0700</creation_ts>
          <short_desc>Implement a more efficient tagCFunction() tool.</short_desc>
          <delta_ts>2020-04-09 02:29:17 -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>210252</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1639522</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-09 01:00:39 -0700</bug_when>
    <thetext>The current tagCFunctionPtr() tool does a lot of extra work that is not needed if we are tagging a function and not a potentially arbitrary pointer.  For example,
1. it doesn&apos;t need to do a null check.
2. it doesn&apos;t need to authenticate the function address.  The RELEASE_ASSERT used to enforce that authentication can also go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639527</commentid>
    <comment_count>1</comment_count>
      <attachid>395921</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-09 01:31:57 -0700</bug_when>
    <thetext>Created attachment 395921
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639528</commentid>
    <comment_count>2</comment_count>
      <attachid>395922</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-09 01:38:04 -0700</bug_when>
    <thetext>Created attachment 395922
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639536</commentid>
    <comment_count>3</comment_count>
      <attachid>395922</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-09 02:18:41 -0700</bug_when>
    <thetext>Comment on attachment 395922
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639538</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-09 02:28:16 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r259786: &lt;http://trac.webkit.org/r259786&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639539</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-09 02:29:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61506122&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395921</attachid>
            <date>2020-04-09 01:31:57 -0700</date>
            <delta_ts>2020-04-09 01:38:04 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-210254.patch</filename>
            <type>text/plain</type>
            <size>64951</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5Nzg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDIwLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBtb3JlIGVmZmljaWVudCB0YWdDRnVuY3Rpb24oKSB0b29sLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMjU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHV0dGluZyB0YWdDRnVuY3Rp
b24oKSB0byB1c2UuCisKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAg
KiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcDoKKyAgICAgICAgKiBiMy9C
M01hdGhFeHRyYXMuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlJlZHVjZUxvb3BTdHJlbmd0aDo6cmVkdWNlQnl0ZUNvcHlMb29w
c1RvTWVtY3B5KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy90ZXN0YjNfNS5jcHA6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZSk6CisgICAgICAgICh0
ZXN0Q2FsbFJhcmUpOgorICAgICAgICAodGVzdENhbGxSYXJlTGl2ZSk6CisgICAgICAgICh0ZXN0
Q2FsbFNpbXBsZVB1cmUpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3Vt
ZW50cyk6CisgICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMik6Cisg
ICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMyk6CisgICAgICAgICh0
ZXN0Q2FsbFNpbXBsZURvdWJsZSk6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZUZsb2F0KToKKyAg
ICAgICAgKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMpOgorICAgICAg
ICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKToKKyAgICAgICAgKHRl
c3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2spOgorICAgICAgICAqIGIzL3Rlc3RiM182LmNw
cDoKKyAgICAgICAgKHRlc3RJbnRlcnByZXRlcik6CisgICAgICAgICogYjMvdGVzdGIzXzcuY3Bw
OgorICAgICAgICAodGVzdExJQ01QdXJlKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZVNpZGVFeGl0
cyk6CisgICAgICAgICh0ZXN0TElDTVB1cmVXcml0ZXNQaW5uZWQpOgorICAgICAgICAodGVzdExJ
Q01QdXJlV3JpdGVzKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHNMb2NhbFN0YXRlKToKKyAgICAg
ICAgKHRlc3RMSUNNUmVhZHNQaW5uZWQpOgorICAgICAgICAodGVzdExJQ01SZWFkcyk6CisgICAg
ICAgICh0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudCk6CisgICAgICAgICh0ZXN0TElD
TVB1cmVGb2lsZWRCeUNoaWxkKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0Rv
bWluYW50Rm9pbGVkQnlDaGlsZCk6CisgICAgICAgICh0ZXN0TElDTUV4aXRzU2lkZXdheXMpOgor
ICAgICAgICAodGVzdExJQ01Xcml0ZXNMb2NhbFN0YXRlKToKKyAgICAgICAgKHRlc3RMSUNNV3Jp
dGVzKToKKyAgICAgICAgKHRlc3RMSUNNRmVuY2UpOgorICAgICAgICAodGVzdExJQ01Xcml0ZXNQ
aW5uZWQpOgorICAgICAgICAodGVzdExJQ01Db250cm9sRGVwZW5kZW50KToKKyAgICAgICAgKHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KToKKyAgICAgICAgKHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudFNpZGVFeGl0cyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRz
UGlubmVkV3JpdGVzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJl
bnRIZWFwcyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzV3JpdGVzT3ZlcmxhcHBpbmdIZWFwcyk6
CisgICAgICAgICh0ZXN0TElDTURlZmF1bHRDYWxsKToKKyAgICAgICAgKHRlc3RTaHVmZmxlRG9l
c250VHJhc2hDYWxsZWVTYXZlcyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpo
YW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNhbGxFdmFsKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enop
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAg
KEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6c2xvd1BhdGhGb3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
VGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZWZGdW5j
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXplKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHcm93KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4pOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcGNudD4pOgorICAgICAg
ICAqIHdhc20vV2FzbVRodW5rcy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyaWdnZXJPTUdF
bnRyeVRpZXJVcFRodW5rR2VuZXJhdG9yKToKKwogMjAyMC0wNC0wOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHRy
ZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyNTk3
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjgsNyArMTI4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGF1dG8qIGZtb2REb3VibGUgPSB0YWdDRnVuY3Rpb25QdHI8ZG91YmxlICgqKShkb3Vi
bGUsIGRvdWJsZSk+KGZtb2QsIEIzQ0NhbGxQdHJUYWcpOworICAgICAgICAgICAgICAgIGRvdWJs
ZSgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsKKyAgICAgICAgICAgICAgICBm
bW9kRG91YmxlID0gdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGZtb2REb3VibGUpOwogICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGZtb2REb3VibGUpOwogICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENDYWxsVmFs
dWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDAsOSAr
MTAwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNz
ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJs
ZSkgewogICAgICAgICAgICAgICAgICAgICBkb3VibGUgKCpjZWlsRG91YmxlKShkb3VibGUpID0g
Y2VpbDsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCB0YWdDRnVuY3Rpb25Q
dHIoY2VpbERvdWJsZSwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRl
eCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihjZWlsRG91YmxlKSk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRmxvYXQpCi0gICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9uUHRyKGNlaWxmLCBC
M0NDYWxsUHRyVGFnKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFn
Q0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGNlaWxmKSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0x
MjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25B
ZGRyZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09
IERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICBkb3VibGUgKCpmbG9vckRvdWJsZSkoZG91
YmxlKSA9IGZsb29yOwotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NG
dW5jdGlvblB0cihmbG9vckRvdWJsZSwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1
ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihmbG9vckRv
dWJsZSkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV92YWx1ZS0+dHlwZSgpID09IEZs
b2F0KQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvblB0
cihmbG9vcmYsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25B
ZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1f
b3JpZ2luLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZmxvb3JmKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcAko
cmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0aEV4dHJh
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw4IEBAIHN0ZDo6cGFpcjxCYXNpY0Js
b2NrKiwgVmFsdWUqPiBwb3dEb3VibGUKIAogICAgIC8vIEZ1bmN0aW9uIGNhbGwuCiAgICAgVmFs
dWUqIHlBc0RvdWJsZSA9IGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvY2Vk
dXJlLCBJVG9ELCBvcmlnaW4sIHkpOwotICAgIGF1dG8qIHBvd0RvdWJsZSA9IHRhZ0NGdW5jdGlv
blB0cjxkb3VibGUgKCopKGRvdWJsZSwgZG91YmxlKT4ocG93LCBCM0NDYWxsUHRyVGFnKTsKKyAg
ICBkb3VibGUoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworICAgIHBvd0RvdWJs
ZSA9IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihwb3dEb3VibGUpOwogICAgIFZhbHVlKiBw
b3dSZXN1bHQgPSBmdW5jdGlvbkNhbGxDYXNlLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAg
ICAgIHByb2NlZHVyZSwgRG91YmxlLCBvcmlnaW4sCiAgICAgICAgIGZ1bmN0aW9uQ2FsbENhc2Ut
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jZWR1cmUsIG9yaWdpbiwgYml0d2lzZV9jYXN0
PHZvaWQqPihwb3dEb3VibGUpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZUxvb3BTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NDQsNyArNDQ0LDcgQEAgcHVibGljOgogCiAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVm
ZmVjdHM6OmZvckNhbGwoKTsKICAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
bV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luLCBlZmZlY3RzLAotICAgICAgICAgICAgbWVtY3B5LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4sIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZmFzdEZvcndhcmRDb3B5MzIsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIG1l
bWNweS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luLCB0YWdDRnVuY3Rp
b248QjNDQ2FsbFB0clRhZz4oZmFzdEZvcndhcmRDb3B5MzIpKSwKICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uLT5hcHBlbmRBZGRyKG1fcHJvYywgbWVtY3B5LCBkZXN0aW5hdGlvbi0+YXJyYXlCYXNl
KSwKICAgICAgICAgICAgIHNvdXJjZS0+YXBwZW5kQWRkcihtX3Byb2MsIG1lbWNweSwgc291cmNl
LT5hcnJheUJhc2UpLAogICAgICAgICAgICAgbG9vcEJvdW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDI1OTc4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE4MTgsNyArMTgxOCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ0Nh
bGw6IHsKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQ2FsbChmbW9kLCBjb25zdGFudDEsIGNv
bnN0YW50MikKICAgICAgICAgICAgIC8vIEludG8gdGhpczogZmNhbGwtY29uc3RhbnQoY29uc3Rh
bnQxLCBjb25zdGFudDIpCi0gICAgICAgICAgICBhdXRvKiBmbW9kRG91YmxlID0gdGFnQ0Z1bmN0
aW9uUHRyPGRvdWJsZSAoKikoZG91YmxlLCBkb3VibGUpPihmbW9kLCBCM0NDYWxsUHRyVGFnKTsK
KyAgICAgICAgICAgIGRvdWJsZSgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsK
KyAgICAgICAgICAgIGZtb2REb3VibGUgPSB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZm1v
ZERvdWJsZSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJsZQogICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMwogICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5pc0ludFB0cihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihmbW9kRG91YmxlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
NS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNw
cAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MTYsNyArMTkxNiw3IEBAIHZvaWQgdGVzdENhbGxT
aW1wbGUoaW50IGEsIGludCBiKQogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAg
ICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIz
Q0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0
aW9uKSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpKTsKIApAQCAtMTk0Myw3ICsxOTQzLDcgQEAgdm9pZCB0ZXN0Q2FsbFJhcmUoaW50
IGEsIGludCBiKQogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByYXJl
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCiAg
ICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikp
KTsKIApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgdm9pZCB0ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBp
bnQgYiwgaW50IAogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAg
IHJhcmUtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBsZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2lt
cGxlRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAg
ICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSwKICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxW
YWx1ZT4oCkBAIC0xOTkwLDcgKzE5OTAsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlUHVyZShpbnQg
YSwgaW50IGIpCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBsZUZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihzaW1w
bGVGdW5jdGlvbikpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAogICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CiAKQEAgLTIwMTMsNyArMjAxMyw3IEBAIHZvaWQgdGVzdENhbGxG
dW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50cygKIAogICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzLCBCM0NDYWxs
UHRyVGFnKSkpOworICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUFy
Z3VtZW50cykpKTsKICAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwogCiAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOwpAQCAtMjAz
OSw3ICsyMDM5LDcgQEAgdm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMgog
CiAgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAg
ICAgICAgcHJvYywgSW50NjQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rp
b25XaXRoSGVsbGFBcmd1bWVudHMyLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIpKSk7CiAgICAgY2FsbC0+YXBw
ZW5kQXJncyhhcmdzKTsKIAogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKQEAgLTIwNjEsNyArMjA2MSw3IEBAIHZvaWQgdGVzdENh
bGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMKIAogICAgIENDYWxsVmFsdWUqIGNhbGwgPSBy
b290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMywgQjND
Q2FsbFB0clRhZykpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZnVuY3Rpb25XaXRoSGVs
bGFBcmd1bWVudHMzKSkpOwogICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBA
IC0yMTEyLDcgKzIxMTIsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSBhLCBk
b3ViCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIERvdWJsZSwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb25Eb3VibGUsIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uRG91Ymxl
KSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCksCiAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMSkpKTsKIApAQCAtMjEzOCw3ICsyMTM4LDcgQEAgdm9pZCB0ZXN0Q2FsbFNpbXBsZUZsb2F0
KGZsb2F0IGEsIGZsb2F0IAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAg
ICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBGbG9hdCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb25GbG9hdCwg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2ltcGxlRnVu
Y3Rpb25GbG9hdCkpLAogICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCiAgICAgICAgICAgICBmbG9h
dFZhbHVlMikpOwogCkBAIC0yMTYxLDcgKzIxNjEsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25X
aXRoSGVsbGFEb3VibGVBcmd1CiAKICAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBwZW5k
TmV3PENDYWxsVmFsdWU+KAogICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMsIEIzQ0NhbGxQ
dHJUYWcpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGZ1bmN0aW9uV2l0aEhlbGxhRG91
YmxlQXJndW1lbnRzKSkpOwogICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBA
IC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFy
Z3VtCiAKICAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAogICAgICAgICBwcm9jLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihm
dW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvbjxCM0NDYWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKSkpOwog
ICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBAIC0yMjA4LDcgKzIyMDgsNyBA
QCB2b2lkIHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2soKQogICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAg
ICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0Nh
bGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
CiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM182LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzYuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc2OCw3ICsxNzY4LDcg
QEAgdm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgIHByaW50LT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCiAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAogICAgICAgICBwcmludC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KAotICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oaW50ZXJwcmV0ZXJQcmludCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgcHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihpbnRlcnBy
ZXRlclByaW50KSksCiAgICAgICAgIGNvbnRleHQsCiAgICAgICAgIHByaW50LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9p
bnRlclZhbHVlKSk7CiAgICAgcHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIHRlc3RMSUNNUHVyZSgpCiAgICAgICAgIFsmXSAoQmFzaWNC
bG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAgICAgcmV0dXJuIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3Jp
Z2luKCksIEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25l
RnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRy
VGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAg
ICAgICAgIH0pOwogCkBAIC01OTIsMTEgKzU5MiwxMSBAQCB2b2lkIHRlc3RMSUNNUHVyZVNpZGVF
eGl0cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihu
b09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2Fs
bFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5j
dGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAg
ICAgfSk7CiAKQEAgLTYxNywxMSArNjE3LDExIEBAIHZvaWQgdGVzdExJQ01QdXJlV3JpdGVzUGlu
bmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBW
b2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9P
cEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQ
dHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCks
IEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rp
b24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihv
bmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAg
IH0pOwogCkBAIC02NDIsMTEgKzY0MiwxMSBAQCB2b2lkIHRlc3RMSUNNUHVyZVdyaXRlcygpCiAg
ICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhlYXBSYW5nZSg2MzQ3OSk7CiAgICAgICAgICAg
ICBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVm9p
ZCwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BG
dW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRy
VGFnPihub09wRnVuY3Rpb24pKSk7CiAKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBF
ZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25l
RnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9
KTsKIApAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQgdGVzdExJQ01SZWFkc0xvY2FsU3RhdGUoKQog
ICAgICAgICAgICAgZWZmZWN0cy5yZWFkc0xvY2FsU3RhdGUgPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9j
LCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2Fs
bFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwogICAgICAgICB9KTsKIApAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgdGVzdExJQ01SZWFkc1Bp
bm5lZCgpCiAgICAgICAgICAgICBlZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3At
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIz
Q0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKICAgICAgICAgfSk7CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIHRlc3RMSUNNUmVh
ZHMoKQogICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0
cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCB0ZXN0TElD
TVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudCgpCiAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9v
cCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVm
ZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24s
IEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVG
dW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0p
OwogCkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCB0ZXN0TElDTVB1cmVGb2lsZWRCeUNoaWxkKCkK
ICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5kZXgpIC0+IFZhbHVlKiB7
CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAg
ICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAg
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApLAogICAgICAgICAgICAgICAgIGluZGV4KTsKICAgICAgICAg
fSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21p
bmFudEZvaQogICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4g
VmFsdWUqIHsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
CiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCks
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICAgICAgaW5kZXgpOwog
ICAgICAgICB9KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIHRlc3RMSUNNRXhpdHNTaWRld2F5
cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgICAgICAg
ICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBw
cm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9p
ZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjND
Q2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwogICAgICAgICB9KTsKIApAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgdGVzdExJQ01Xcml0
ZXNMb2NhbFN0YXRlKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRy
dWU7CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAg
ICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC04MjMsNyArODIzLDcgQEAgdm9p
ZCB0ZXN0TElDTVdyaXRlcygpCiAgICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhlYXBSYW5n
ZSg2NjYpOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
ICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtODQyLDcgKzg0Miw3IEBA
IHZvaWQgdGVzdExJQ01GZW5jZSgpCiAgICAgICAgICAgICBlZmZlY3RzLmZlbmNlID0gdHJ1ZTsK
ICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIHRl
c3RMSUNNV3JpdGVzUGlubmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0g
dHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2
b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCgpCiAgICAgICAgICAgICBlZmZlY3RzLmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVj
dHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRy
VGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwK
ICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtOTA0
LDcgKzkwNCw3IEBAIHZvaWQgdGVzdExJQ01Db250cm9sRGVwZW5kZW50Tm90QmFja3dhcmQKICAg
ICAgICAgICAgIGVmZmVjdHMuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
b25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxs
UHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CiAgICAgICAgIH0pOwogCkBAIC05MjMsMTMgKzkyMywxMyBAQCB2b2lkIHRlc3RMSUNNQ29udHJv
bERlcGVuZGVudFNpZGVFeGl0cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMg
PSB0cnVlOwogICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAg
ICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdD
RnVuY3Rpb248QjNDQ2FsbFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogICAgICAgICAKICAgICAg
ICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CiAgICAgICAgICAgICBlZmZlY3RzLmNv
bnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24p
KSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAt
OTQ4LDEzICs5NDgsMTMgQEAgdm9pZCB0ZXN0TElDTVJlYWRzUGlubmVkV3JpdGVzUGlubmVkKCkK
ICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGxv
b3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBP
cmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG5vT3BGdW5jdGlvbikpKTsKICAgICAgICAgCiAgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOwogICAgICAgICAgICAgZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0
cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC05NzUsMTMgKzk3NSwxMyBAQCB2b2lkIHRlc3RM
SUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpCiAgICAgICAgICAgICBlZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZSg2NDM2KTsKICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkp
OworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKICAg
ICAgICAgCiAgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwogICAgICAgICAg
ICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZSg0ODg2KTsKICAgICAgICAgICAgIHJldHVybiBs
b29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIs
IE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5j
dGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAg
ICAgfSk7CiAKQEAgLTEwMDAsMTMgKzEwMDAsMTMgQEAgdm9pZCB0ZXN0TElDTVJlYWRzV3JpdGVz
T3ZlcmxhcHBpbmdIZWFwcwogICAgICAgICAgICAgZWZmZWN0cy53cml0ZXMgPSBIZWFwUmFuZ2Uo
NjQzNiwgNzQ0NTgpOwogICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAog
ICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogICAgICAgICAK
ICAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CiAgICAgICAgICAgICBlZmZl
Y3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODY0LCA3ODIzOSk7CiAgICAgICAgICAgICByZXR1cm4g
bG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMy
LCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVu
Y3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFn
PihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAg
ICAgIH0pOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCB2b2lkIHRlc3RMSUNNRGVmYXVsdENhbGwo
KQogICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKICAg
ICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAg
ICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0Nh
bGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKICAgICAgICAgfSk7CiAKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHZvaWQgdGVzdFNodWZmbGVE
b2VzbnRUcmFzaENhbGxlZVNhdmVzKCkKIAogICAgIHVubGlrZWx5LT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCiAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAotICAgICAgICB1bmxpa2VseS0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8
dm9pZCo+KGZ1bmN0aW9uTmluZUFyZ3MsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgdW5saWtl
bHktPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KGZ1bmN0aW9uTmluZUFyZ3MpKSwKICAgICAgICAgY29uc3ROdW1iZXIs
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcsIGFyZzgpOwogCiAgICAg
UGF0Y2hwb2ludFZhbHVlKiB2b2lkUGF0Y2ggPSB1bmxpa2VseS0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2LDEwICsx
MjYsMTAgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RD
cmVhdGVkOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0ZURpcmVj
dEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyNTk3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRz
KFZNJiB2bSwgQ0NhbGxIZWxwZQogICAgIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UcmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpPihHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmZXhpdCkpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvblRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJh
dGlvblB0clRhZyk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBq
aXQuanVtcCgpOwogICAgIApAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRl
QmFycmllcihWTSYgdm0sIENDYWwKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFy
cmllcikpLCBzY3JhdGNoKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJp
ZXIpKSwgc2NyYXRjaCk7CiAgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsK
IAogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1
OTc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkzODAsOCArOTM4MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHJlcC5ncHIoKSwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICAgICAgYXV0byBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrID0gWyZdICh2
b2lkKiBjYWxsZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNhbGxlZSkp
LCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOworICAgICAgICAgICAgICAg
IGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCgqY2FsbGVlKShKU0dsb2Jh
bE9iamVjdCopKSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihjYWxsZWUpKSwgR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25Q
dHJUYWcpOwogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRF
eGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ss
IEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgfTsKQEAg
LTk0NzgsNyArOTQ3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFy
YXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJn
c1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGRvbnRUaHJvdy5saW5rKCZqaXQpOwpAQCAtOTcyMCw4ICs5NzIwLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjMgPSBmb3J3YXJkaW5n
ID8gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpIDogSW52YWxpZEdQUlJlZzsKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWxsb2NhdG9yLm51bWJlck9mUmV1c2VkUmVnaXN0
ZXJzKCkpOwogCi0gICAgICAgICAgICAgICAgYXV0byBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrID0g
WyZdICh2b2lkKiBjYWxsZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNh
bGxlZSkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOworICAgICAgICAg
ICAgICAgIGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCgqY2FsbGVlKSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihjYWxsZWUpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwog
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25D
aGVjaygqdm0sIEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5
SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgfTsKQEAgLTk3NDUsNyAr
OTc0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC05NzUzLDcg
Kzk3NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpPihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBhcmd1bWVudHNH
UFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZh
ckFyZ09mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24oaml0LnZtKCkpOwotICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncykpOworICAg
ICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lk
KCopKCk+KG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKIAogICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOwogICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmln
aW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsK
QEAgLTk3NjIsNyArOTc2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0NhbGxBcmVhU2l6ZSks
IHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNldHVw
VmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQq
PihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICBjYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lkKCopKCk+KG9wZXJhdGlvblNldHVw
VmFyYXJnc0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIApAQCAtOTkxNSw3ICs5OTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKHN0YXRl
LT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhl
bHBlcnM6OkZhckp1bXBXaWR0aCkpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKFZNJiB2bSwgdW5zaWduZWQKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzKSk7CiAgICAgICAgICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUikp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1hdGVyaWFsaXphdGlvblRvUG9pbnRlci5nZXQobWF0ZXJp
YWxpemF0aW9uKSk7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YihWTSYgdm0sIHVuc2lnbmVkCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRlcmlhbGl6YXRpb24pKSwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Bcmd1bWVu
dHMpKTsKICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdH
UFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9u
RnV6eigKIAogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0
aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOworICAgIG1vdmUo
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25FeGNl
cHRpb25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgcHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSLCBPcGVyYXRpb25QdHJUYWcpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2VuUGEKICAgICBK
dW1wIG9rID0gYnJhbmNoUHRyKEJlbG93LCBzaGFkb3dQYWNrZXQsIFRydXN0ZWRJbW1QdHIoc2hh
ZG93Q2hpY2tlbi0+bG9nRW5kKCkpKTsKICAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZyk+KFRydXN0ZWRJbW1QdHIoJnZtKSk7CiAgICAg
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxv
ZykpLCBzY3JhdGNoMU5vbkFyZ0dQUik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKSks
IHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9uQXJnR1BSLCBPcGVyYXRp
b25QdHJUYWcpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5hZGRyZXNz
T2ZMb2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
c2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNrZXQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDY0LDcgKzEwNjQsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCi0g
ICAgICAgICAgICAgICAgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqLCBKU0VudHJ5UHRyVGFnPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSwKKyAgICAgICAgICAgICAgICB0YWdDRnVuY3Rpb248dm9pZCos
IEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLAogICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxs
TW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQog
ICAgIApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5k
bGVIb3N0Q2FsbAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBU
aGVGcmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0YWdD
RnVuY3Rpb25QdHI8dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCh0YWdDRnVuY3Rpb248dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
ICAgICB9CiAgICAgCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6
Tm9uZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Myw3ICs3Myw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGgKIAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxp
ZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBq
aXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5q
dW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdm9p
ZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMzIpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihz
bG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihz
bG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAg
ICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IDgpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyB2b2lkIHNsb3dQYXRoRm9yKENDYWxsSGVscGVycyYgamkKICAgICBpZiAobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHNs
b3dQYXRoRnVuY3Rpb24pPihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOwotICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0
aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCkBAIC0zMzUsNyAr
MzM1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogICAgIGpp
dC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cigmdm0pLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbikpLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDMpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QzLCBPcGVyYXRpb25QdHJUYWcpOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgaml0LmFkZFB0cihK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVy
ZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtMTE5MSw3ICsxMTkxLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBibwogICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4oKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihH
UFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQ
b2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRh
Zyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsK
ICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNTk3
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02OTgsNyArNjk4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRUYWJsZUdldCh1bnNpZ25lZAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5
cGUoQW55cmVmKSwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigm
b3BlcmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50
KSksCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAg
ICB7CkBAIC03MTcsNyArNzE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1
bnNpZ25lZAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNob3VsZFRocm93
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJbnQz
Miwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9u
U2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5j
dGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25TZXRXYXNtVGFibGVFbGVtZW50KSksCiAgICAg
ICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAg
ewpAQCAtNzM3LDcgKzczNyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50
MzJfdCAKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwK
LSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZvcGVyYXRpb25XYXNtUmVmRnVuYywg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihv
cGVyYXRpb25XYXNtUmVmRnVuYykpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0
YW50KFR5cGU6OkkzMiwgaW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NDcsNyArNzQ3
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWduZQogewogICAgIC8v
IEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoSTMyKSwgb3JpZ2luKCksCi0gICAgICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZSwgQjNDQ2Fs
bFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRp
b25HZXRXYXNtVGFibGVTaXplKSksCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5k
ZXgpKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NTYsNyArNzU2LDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWduZQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJs
ZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lv
blR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
ICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJv
YywgdG9CM1R5cGUoSTMyKSwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPigmb3BlcmF0aW9uV2FzbVRhYmxlR3JvdywgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25XYXNtVGFibGVHcm93KSksCiAg
ICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBmaWxsLCBkZWx0YSk7CiAKICAg
ICByZXR1cm4geyB9OwpAQCAtNzY1LDcgKzc2NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
VGFibGVHcm93KHVuc2lnbmUKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKHVuc2ln
bmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwgRXhwcmVzc2lvblR5cGUgZmls
bCwgRXhwcmVzc2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0Iz
VHlwZShJMzIpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZv
cGVyYXRpb25XYXNtVGFibGVGaWxsLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvbldhc21UYWJsZUZpbGwpKSwKICAgICAgICAg
aW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIG9mZnNldCwgZmlsbCwgY291bnQpOwogCiAg
ICAgewpAQCAtODAwLDcgKzgwMCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFi
bGUoKSAtPiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlw
ZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJ
bnQzMiwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0
aW9uR3Jvd01lbW9yeSwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxC
M0NDYWxsUHRyVGFnPihvcGVyYXRpb25Hcm93TWVtb3J5KSksCiAgICAgICAgIGZyYW1lUG9pbnRl
cigpLCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsKIAogICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpObywgbV9pbmZvLm1lbW9yeSwgaW5z
dGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKQEAgLTkwNCw3ICs5MDQsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBpCiAgICAgICAgICAgICBj
b250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gZG9TbG93UGF0aDsKIAotICAgICAgICAgICAgVmFsdWUqIHdyaXRl
QmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvbldhc21X
cml0ZUJhcnJpZXJTbG93UGF0aCwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgVmFsdWUq
IHdyaXRlQmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVy
YXRpb25XYXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCksIHdy
aXRlQmFycmllckFkZHJlc3MsIGNlbGwsIHZtKTsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0
aW9uKTsKIApAQCAtOTU3LDcgKzk1Nyw3IEBAIGlubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVt
aXRXcml0ZUJhcnIKICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJs
b2NrKTsKICAgICBtX2N1cnJlbnRCbG9jayA9IGRvU2xvd1BhdGg7CiAKLSAgICBWYWx1ZSogd3Jp
dGVCYXJyaWVyQWRkcmVzcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9uV2Fz
bVdyaXRlQmFycmllclNsb3dQYXRoLCBCM0NDYWxsUHRyVGFnKSk7CisgICAgVmFsdWUqIHdyaXRl
QmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25X
YXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLCB3cml0ZUJhcnJpZXJBZGRy
ZXNzLCBjZWxsLCB2bSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwogCkBAIC0yMTUwLDcgKzIx
NTAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUG9wCiAgICAgfQog
I2VuZGlmCiAKLSAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oJm9wZXJhdGlvblBvcGNvdW50MzIsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICBWYWx1ZSogZnVu
Y0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25Qb3Bjb3Vu
dDMyKSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLCBmdW5jQWRkcmVzcywg
YXJnKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcAogICAgIH0KICNlbmRpZgogCi0gICAgVmFs
dWUqIGZ1bmNBZGRyZXNzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9wZXJhdGlvblBvcGNv
dW50NjQsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25Qb3Bjb3VudDY0KSk7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDY0LCBv
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLCBmdW5jQWRkcmVzcywgYXJnKTsKICAgICByZXR1cm4g
eyB9OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJ
KHJldmlzaW9uIDI1OTc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVu
a3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsNyArODgsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRyCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGppdCwgcmVnaXN0ZXJzVG9TcGlsbCwgZXh0
cmFQYWRkaW5nQnl0ZXMpOwogCiAgICAgaml0LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVRyaWdn
ZXJUaWVyVXBOb3cpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5vdykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwog
ICAgIGppdC5jYWxsKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgT3BlcmF0aW9uUHRyVGFnKTsKIAog
ICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0Zv
ckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCBSZWdpc3RlclNldCgpLCBudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSBtb3JlIGVmZmljaWVudCB0YWdDRnVuY3Rp
b24oKSB0b29sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEwMjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGN1cnJlbnQgdGFnQ0Z1bmN0aW9uUHRyKCkgdG9vbCBkb2VzIHNvbWUgZXh0cmEgd29y
ayB0aGF0IGlzIG5vdCBuZWVkZWQgaWYKKyAgICAgICAgd2UgYXJlIHRhZ2dpbmcgYSBrbm93biBm
dW5jdGlvbiBhbmQgbm90IGEgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IHBvaW50ZXIuICBGb3IKKyAg
ICAgICAgZXhhbXBsZSwKKyAgICAgICAgMS4gaXQgZG9lc24ndCBuZWVkIHRvIGRvIGEgbnVsbCBj
aGVjay4KKyAgICAgICAgMi4gaXQgZG9lc24ndCBuZWVkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgZnVu
Y3Rpb24gYWRkcmVzcy4gIAorICAgICAgICAzLiBUaGUgUkVMRUFTRV9BU1NFUlQgdXNlZCB0byBl
bmZvcmNlIHRoYXQgYXV0aGVudGljYXRpb24gY2FuIGFsc28gZ28gYXdheS4KKworICAgICAgICBX
ZSBzaG91bGQgb25seSB1c2UgdGFnQ0Z1bmN0aW9uKCkgKGluc3RlYWQgb2YgdGFnQ0Z1bmN0aW9u
UHRyKCkpIGlmIHdlIGtub3cgZm9yCisgICAgICAgIGNlcnRhaW4gdGhhdCB3ZSdyZSBvcGVyYXRp
bmcgb24gYSBDL0MrKyBmdW5jdGlvbiwgYW5kIG5vdCBzb21lIGFyYml0cmFyeSBwb2ludGVyLgor
CisgICAgICAgICogd3RmL1B0clRhZy5oOgorICAgICAgICAoV1RGOjp0YWdDRnVuY3Rpb24pOgor
CiAyMDIwLTA0LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6VmVjdG9yQ29kZXIgYW5kIElQQzo6VmVjdG9yQXJndW1lbnRD
b2RlciBzaG91bGQgdXNlIGNoZWNrZWQgYXJpdGhtZXRpYwpJbmRleDogU291cmNlL1dURi93dGYv
UHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHRyVGFnLmgJKHJldmlzaW9u
IDI1OTc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1B0clRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIwLDYgKzMyMCwyMCBAQCBpbmxpbmUgUHRyVHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBw
CiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCB0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+CiBpbmxpbmUgUHRy
VHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBwdHIpIHsgcmV0dXJuIHRhZ0NGdW5jdGlvblB0
cihwdHIsIHRhZyk7IH0KIAordGVtcGxhdGU8UHRyVGFnIG5ld1RhZywgdHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KK2lubGluZSBG
dW5jdGlvblR5cGUgdGFnQ0Z1bmN0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jKQoreworICAgIEFTU0VS
VChpc1RhZ2dlZFdpdGgoZnVuYywgQ0Z1bmN0aW9uUHRyVGFnKSk7CisgICAgQVNTRVJUKHRhZyAh
PSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHJldHVybiBwdHJhdXRoX2F1dGhfYW5kX3Jlc2lnbihm
dW5jLCBwdHJhdXRoX2tleV9mdW5jdGlvbl9wb2ludGVyLCAwLCBwdHJhdXRoX2tleV9wcm9jZXNz
X2RlcGVuZGVudF9jb2RlLCBuZXdUYWcpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlLCBQdHJUYWcgbmV3VGFnLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYm
IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5
cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgoraW5saW5lIFJldHVyblR5cGUgdGFnQ0Z1bmN0aW9u
KEZ1bmN0aW9uVHlwZSBmdW5jKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmV0dXJuVHlw
ZT4odGFnQ0Z1bmN0aW9uPG5ld1RhZz4oZnVuYykpOworfQorCiB0ZW1wbGF0ZTxQdHJUYWdBY3Rp
b24gdGFnQWN0aW9uLCB0eXBlbmFtZSBQdHJUeXBlPgogaW5saW5lIFB0clR5cGUgdW50YWdDRnVu
Y3Rpb25QdHJJbXBsKFB0clR5cGUgcHRyLCBQdHJUYWcgdGFnKQogewpAQCAtNTIxLDYgKzUzNSwx
NSBAQCBpbmxpbmUgUHRyVHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBwCiB0ZW1wbGF0ZTxQ
dHJUYWcsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KIGlubGluZSBQdHJUeXBlIHRhZ0NGdW5jdGlv
blB0cihQdHJUeXBlIHB0cikgeyByZXR1cm4gcHRyOyB9CiAKK3RlbXBsYXRlPFB0clRhZyBuZXdU
YWcsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlv
bjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1
ZT46OnR5cGU+CitpbmxpbmUgRnVuY3Rpb25UeXBlIHRhZ0NGdW5jdGlvbihGdW5jdGlvblR5cGUg
ZnVuYykgeyByZXR1cm4gZnVuYzsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCBQ
dHJUYWcgbmV3VGFnLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgoraW5saW5lIFJldHVyblR5cGUgdGFnQ0Z1bmN0aW9uKEZ1bmN0
aW9uVHlwZSBmdW5jKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmV0dXJuVHlwZT4odGFn
Q0Z1bmN0aW9uPG5ld1RhZz4oZnVuYykpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVy
PFB0clR5cGU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIFB0clR5cGU+Ojp2YWx1ZT4+CiBp
bmxpbmUgVCB1bnRhZ0NGdW5jdGlvblB0cihQdHJUeXBlIHB0ciwgUHRyVGFnKSB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8VD4ocHRyKTsgfQogCkBAIC01NzgsNiArNjAxLDcgQEAgdXNpbmcgV1RGOjp0
YWdDb2RlUHRyOwogdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHI7CiB1c2luZyBXVEY6OnJldGFnQ29k
ZVB0cjsKIHVzaW5nIFdURjo6cmVtb3ZlQ29kZVB0clRhZzsKK3VzaW5nIFdURjo6dGFnQ0Z1bmN0
aW9uOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb25QdHI7CiB1c2luZyBXVEY6OnVudGFnQ0Z1bmN0
aW9uUHRyOwogdXNpbmcgV1RGOjp0YWdJbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395922</attachid>
            <date>2020-04-09 01:38:04 -0700</date>
            <delta_ts>2020-04-09 02:18:41 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-210254.patch</filename>
            <type>text/plain</type>
            <size>64954</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5Nzg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDIwLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBtb3JlIGVmZmljaWVudCB0YWdDRnVuY3Rpb24oKSB0b29sLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMjU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHV0dGluZyB0YWdDRnVuY3Rp
b24oKSB0byB1c2UuCisKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAg
KiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcDoKKyAgICAgICAgKiBiMy9C
M01hdGhFeHRyYXMuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlJlZHVjZUxvb3BTdHJlbmd0aDo6cmVkdWNlQnl0ZUNvcHlMb29w
c1RvTWVtY3B5KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy90ZXN0YjNfNS5jcHA6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZSk6CisgICAgICAgICh0
ZXN0Q2FsbFJhcmUpOgorICAgICAgICAodGVzdENhbGxSYXJlTGl2ZSk6CisgICAgICAgICh0ZXN0
Q2FsbFNpbXBsZVB1cmUpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3Vt
ZW50cyk6CisgICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMik6Cisg
ICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMyk6CisgICAgICAgICh0
ZXN0Q2FsbFNpbXBsZURvdWJsZSk6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZUZsb2F0KToKKyAg
ICAgICAgKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMpOgorICAgICAg
ICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKToKKyAgICAgICAgKHRl
c3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2spOgorICAgICAgICAqIGIzL3Rlc3RiM182LmNw
cDoKKyAgICAgICAgKHRlc3RJbnRlcnByZXRlcik6CisgICAgICAgICogYjMvdGVzdGIzXzcuY3Bw
OgorICAgICAgICAodGVzdExJQ01QdXJlKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZVNpZGVFeGl0
cyk6CisgICAgICAgICh0ZXN0TElDTVB1cmVXcml0ZXNQaW5uZWQpOgorICAgICAgICAodGVzdExJ
Q01QdXJlV3JpdGVzKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHNMb2NhbFN0YXRlKToKKyAgICAg
ICAgKHRlc3RMSUNNUmVhZHNQaW5uZWQpOgorICAgICAgICAodGVzdExJQ01SZWFkcyk6CisgICAg
ICAgICh0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudCk6CisgICAgICAgICh0ZXN0TElD
TVB1cmVGb2lsZWRCeUNoaWxkKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0Rv
bWluYW50Rm9pbGVkQnlDaGlsZCk6CisgICAgICAgICh0ZXN0TElDTUV4aXRzU2lkZXdheXMpOgor
ICAgICAgICAodGVzdExJQ01Xcml0ZXNMb2NhbFN0YXRlKToKKyAgICAgICAgKHRlc3RMSUNNV3Jp
dGVzKToKKyAgICAgICAgKHRlc3RMSUNNRmVuY2UpOgorICAgICAgICAodGVzdExJQ01Xcml0ZXNQ
aW5uZWQpOgorICAgICAgICAodGVzdExJQ01Db250cm9sRGVwZW5kZW50KToKKyAgICAgICAgKHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KToKKyAgICAgICAgKHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudFNpZGVFeGl0cyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRz
UGlubmVkV3JpdGVzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJl
bnRIZWFwcyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzV3JpdGVzT3ZlcmxhcHBpbmdIZWFwcyk6
CisgICAgICAgICh0ZXN0TElDTURlZmF1bHRDYWxsKToKKyAgICAgICAgKHRlc3RTaHVmZmxlRG9l
c250VHJhc2hDYWxsZWVTYXZlcyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpo
YW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNhbGxFdmFsKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enop
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAg
KEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6c2xvd1BhdGhGb3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
VGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZWZGdW5j
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXplKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHcm93KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4pOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcGNudD4pOgorICAgICAg
ICAqIHdhc20vV2FzbVRodW5rcy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyaWdnZXJPTUdF
bnRyeVRpZXJVcFRodW5rR2VuZXJhdG9yKToKKwogMjAyMC0wNC0wOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHRy
ZWF0IGNvbW1hIHN1Yi1leHByZXNzaW9ucyBhcyBzZXBhcmF0ZSBzdGF0ZW1lbnRzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyNTk3
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjgsNyArMTI4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGF1dG8qIGZtb2REb3VibGUgPSB0YWdDRnVuY3Rpb25QdHI8ZG91YmxlICgqKShkb3Vi
bGUsIGRvdWJsZSk+KGZtb2QsIEIzQ0NhbGxQdHJUYWcpOworICAgICAgICAgICAgICAgIGRvdWJs
ZSgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsKKyAgICAgICAgICAgICAgICBm
bW9kRG91YmxlID0gdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGZtb2REb3VibGUpOwogICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGZtb2REb3VibGUpOwogICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENDYWxsVmFs
dWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDAsOSAr
MTAwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNz
ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJs
ZSkgewogICAgICAgICAgICAgICAgICAgICBkb3VibGUgKCpjZWlsRG91YmxlKShkb3VibGUpID0g
Y2VpbDsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCB0YWdDRnVuY3Rpb25Q
dHIoY2VpbERvdWJsZSwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRl
eCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihjZWlsRG91YmxlKSk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRmxvYXQpCi0gICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9uUHRyKGNlaWxmLCBC
M0NDYWxsUHRyVGFnKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFn
Q0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGNlaWxmKSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0x
MjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25B
ZGRyZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09
IERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICBkb3VibGUgKCpmbG9vckRvdWJsZSkoZG91
YmxlKSA9IGZsb29yOwotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NG
dW5jdGlvblB0cihmbG9vckRvdWJsZSwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1
ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihmbG9vckRv
dWJsZSkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV92YWx1ZS0+dHlwZSgpID09IEZs
b2F0KQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvblB0
cihmbG9vcmYsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25B
ZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1f
b3JpZ2luLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZmxvb3JmKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcAko
cmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0aEV4dHJh
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw4IEBAIHN0ZDo6cGFpcjxCYXNpY0Js
b2NrKiwgVmFsdWUqPiBwb3dEb3VibGUKIAogICAgIC8vIEZ1bmN0aW9uIGNhbGwuCiAgICAgVmFs
dWUqIHlBc0RvdWJsZSA9IGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvY2Vk
dXJlLCBJVG9ELCBvcmlnaW4sIHkpOwotICAgIGF1dG8qIHBvd0RvdWJsZSA9IHRhZ0NGdW5jdGlv
blB0cjxkb3VibGUgKCopKGRvdWJsZSwgZG91YmxlKT4ocG93LCBCM0NDYWxsUHRyVGFnKTsKKyAg
ICBkb3VibGUoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworICAgIHBvd0RvdWJs
ZSA9IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihwb3dEb3VibGUpOwogICAgIFZhbHVlKiBw
b3dSZXN1bHQgPSBmdW5jdGlvbkNhbGxDYXNlLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAg
ICAgIHByb2NlZHVyZSwgRG91YmxlLCBvcmlnaW4sCiAgICAgICAgIGZ1bmN0aW9uQ2FsbENhc2Ut
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jZWR1cmUsIG9yaWdpbiwgYml0d2lzZV9jYXN0
PHZvaWQqPihwb3dEb3VibGUpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZUxvb3BTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NDQsNyArNDQ0LDcgQEAgcHVibGljOgogCiAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVm
ZmVjdHM6OmZvckNhbGwoKTsKICAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
bV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luLCBlZmZlY3RzLAotICAgICAgICAgICAgbWVtY3B5LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4sIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZmFzdEZvcndhcmRDb3B5MzIsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIG1l
bWNweS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luLCB0YWdDRnVuY3Rp
b248QjNDQ2FsbFB0clRhZz4oZmFzdEZvcndhcmRDb3B5MzIpKSwKICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uLT5hcHBlbmRBZGRyKG1fcHJvYywgbWVtY3B5LCBkZXN0aW5hdGlvbi0+YXJyYXlCYXNl
KSwKICAgICAgICAgICAgIHNvdXJjZS0+YXBwZW5kQWRkcihtX3Byb2MsIG1lbWNweSwgc291cmNl
LT5hcnJheUJhc2UpLAogICAgICAgICAgICAgbG9vcEJvdW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDI1OTc4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE4MTgsNyArMTgxOCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ0Nh
bGw6IHsKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQ2FsbChmbW9kLCBjb25zdGFudDEsIGNv
bnN0YW50MikKICAgICAgICAgICAgIC8vIEludG8gdGhpczogZmNhbGwtY29uc3RhbnQoY29uc3Rh
bnQxLCBjb25zdGFudDIpCi0gICAgICAgICAgICBhdXRvKiBmbW9kRG91YmxlID0gdGFnQ0Z1bmN0
aW9uUHRyPGRvdWJsZSAoKikoZG91YmxlLCBkb3VibGUpPihmbW9kLCBCM0NDYWxsUHRyVGFnKTsK
KyAgICAgICAgICAgIGRvdWJsZSgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsK
KyAgICAgICAgICAgIGZtb2REb3VibGUgPSB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZm1v
ZERvdWJsZSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJsZQogICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMwogICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5pc0ludFB0cihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihmbW9kRG91YmxlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
NS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNw
cAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MTYsNyArMTkxNiw3IEBAIHZvaWQgdGVzdENhbGxT
aW1wbGUoaW50IGEsIGludCBiKQogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAg
ICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIz
Q0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0
aW9uKSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpKTsKIApAQCAtMTk0Myw3ICsxOTQzLDcgQEAgdm9pZCB0ZXN0Q2FsbFJhcmUoaW50
IGEsIGludCBiKQogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByYXJl
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCiAg
ICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikp
KTsKIApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgdm9pZCB0ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBp
bnQgYiwgaW50IAogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAg
IHJhcmUtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBsZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2lt
cGxlRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAg
ICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSwKICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxW
YWx1ZT4oCkBAIC0xOTkwLDcgKzE5OTAsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlUHVyZShpbnQg
YSwgaW50IGIpCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBsZUZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihzaW1w
bGVGdW5jdGlvbikpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAogICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CiAKQEAgLTIwMTMsNyArMjAxMyw3IEBAIHZvaWQgdGVzdENhbGxG
dW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50cygKIAogICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzLCBCM0NDYWxs
UHRyVGFnKSkpOworICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUFy
Z3VtZW50cykpKTsKICAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwogCiAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOwpAQCAtMjAz
OSw3ICsyMDM5LDcgQEAgdm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMgog
CiAgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAg
ICAgICAgcHJvYywgSW50NjQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rp
b25XaXRoSGVsbGFBcmd1bWVudHMyLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIpKSk7CiAgICAgY2FsbC0+YXBw
ZW5kQXJncyhhcmdzKTsKIAogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKQEAgLTIwNjEsNyArMjA2MSw3IEBAIHZvaWQgdGVzdENh
bGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMKIAogICAgIENDYWxsVmFsdWUqIGNhbGwgPSBy
b290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMywgQjND
Q2FsbFB0clRhZykpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZnVuY3Rpb25XaXRoSGVs
bGFBcmd1bWVudHMzKSkpOwogICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBA
IC0yMTEyLDcgKzIxMTIsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSBhLCBk
b3ViCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIERvdWJsZSwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb25Eb3VibGUsIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uRG91Ymxl
KSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCksCiAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMSkpKTsKIApAQCAtMjEzOCw3ICsyMTM4LDcgQEAgdm9pZCB0ZXN0Q2FsbFNpbXBsZUZsb2F0
KGZsb2F0IGEsIGZsb2F0IAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAg
ICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBGbG9hdCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb25GbG9hdCwg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2ltcGxlRnVu
Y3Rpb25GbG9hdCkpLAogICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCiAgICAgICAgICAgICBmbG9h
dFZhbHVlMikpOwogCkBAIC0yMTYxLDcgKzIxNjEsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25X
aXRoSGVsbGFEb3VibGVBcmd1CiAKICAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBwZW5k
TmV3PENDYWxsVmFsdWU+KAogICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMsIEIzQ0NhbGxQ
dHJUYWcpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGZ1bmN0aW9uV2l0aEhlbGxhRG91
YmxlQXJndW1lbnRzKSkpOwogICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBA
IC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFy
Z3VtCiAKICAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAogICAgICAgICBwcm9jLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihm
dW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvbjxCM0NDYWxsUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKSkpOwog
ICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBAIC0yMjA4LDcgKzIyMDgsNyBA
QCB2b2lkIHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2soKQogICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAg
ICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0Nh
bGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
CiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM182LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzYuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc2OCw3ICsxNzY4LDcg
QEAgdm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgIHByaW50LT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCiAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAogICAgICAgICBwcmludC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KAotICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oaW50ZXJwcmV0ZXJQcmludCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgcHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihpbnRlcnBy
ZXRlclByaW50KSksCiAgICAgICAgIGNvbnRleHQsCiAgICAgICAgIHByaW50LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9p
bnRlclZhbHVlKSk7CiAgICAgcHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIHRlc3RMSUNNUHVyZSgpCiAgICAgICAgIFsmXSAoQmFzaWNC
bG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAgICAgcmV0dXJuIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3Jp
Z2luKCksIEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25l
RnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRy
VGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAg
ICAgICAgIH0pOwogCkBAIC01OTIsMTEgKzU5MiwxMSBAQCB2b2lkIHRlc3RMSUNNUHVyZVNpZGVF
eGl0cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihu
b09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2Fs
bFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5j
dGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAg
ICAgfSk7CiAKQEAgLTYxNywxMSArNjE3LDExIEBAIHZvaWQgdGVzdExJQ01QdXJlV3JpdGVzUGlu
bmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBW
b2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9P
cEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQ
dHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCks
IEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rp
b24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihv
bmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAg
IH0pOwogCkBAIC02NDIsMTEgKzY0MiwxMSBAQCB2b2lkIHRlc3RMSUNNUHVyZVdyaXRlcygpCiAg
ICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhlYXBSYW5nZSg2MzQ3OSk7CiAgICAgICAgICAg
ICBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVm9p
ZCwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BG
dW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRy
VGFnPihub09wRnVuY3Rpb24pKSk7CiAKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBF
ZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25l
RnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9
KTsKIApAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQgdGVzdExJQ01SZWFkc0xvY2FsU3RhdGUoKQog
ICAgICAgICAgICAgZWZmZWN0cy5yZWFkc0xvY2FsU3RhdGUgPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9j
LCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2Fs
bFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwogICAgICAgICB9KTsKIApAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgdGVzdExJQ01SZWFkc1Bp
bm5lZCgpCiAgICAgICAgICAgICBlZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3At
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIz
Q0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKICAgICAgICAgfSk7CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIHRlc3RMSUNNUmVh
ZHMoKQogICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0
cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCB0ZXN0TElD
TVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudCgpCiAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9v
cCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVm
ZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24s
IEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVG
dW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0p
OwogCkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCB0ZXN0TElDTVB1cmVGb2lsZWRCeUNoaWxkKCkK
ICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5kZXgpIC0+IFZhbHVlKiB7
CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAg
ICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAg
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApLAogICAgICAgICAgICAgICAgIGluZGV4KTsKICAgICAgICAg
fSk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21p
bmFudEZvaQogICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4g
VmFsdWUqIHsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
CiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCks
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICAgICAgaW5kZXgpOwog
ICAgICAgICB9KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIHRlc3RMSUNNRXhpdHNTaWRld2F5
cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgICAgICAg
ICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBw
cm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9p
ZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjND
Q2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwogICAgICAgICB9KTsKIApAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgdGVzdExJQ01Xcml0
ZXNMb2NhbFN0YXRlKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRy
dWU7CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAg
ICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC04MjMsNyArODIzLDcgQEAgdm9p
ZCB0ZXN0TElDTVdyaXRlcygpCiAgICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhlYXBSYW5n
ZSg2NjYpOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
ICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtODQyLDcgKzg0Miw3IEBA
IHZvaWQgdGVzdExJQ01GZW5jZSgpCiAgICAgICAgICAgICBlZmZlY3RzLmZlbmNlID0gdHJ1ZTsK
ICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIHRl
c3RMSUNNV3JpdGVzUGlubmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0g
dHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2
b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCgpCiAgICAgICAgICAgICBlZmZlY3RzLmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVj
dHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRy
VGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwK
ICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtOTA0
LDcgKzkwNCw3IEBAIHZvaWQgdGVzdExJQ01Db250cm9sRGVwZW5kZW50Tm90QmFja3dhcmQKICAg
ICAgICAgICAgIGVmZmVjdHMuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
b25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxs
UHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CiAgICAgICAgIH0pOwogCkBAIC05MjMsMTMgKzkyMywxMyBAQCB2b2lkIHRlc3RMSUNNQ29udHJv
bERlcGVuZGVudFNpZGVFeGl0cygpCiAgICAgICAgICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMg
PSB0cnVlOwogICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAg
ICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdD
RnVuY3Rpb248QjNDQ2FsbFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogICAgICAgICAKICAgICAg
ICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CiAgICAgICAgICAgICBlZmZlY3RzLmNv
bnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24p
KSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAt
OTQ4LDEzICs5NDgsMTMgQEAgdm9pZCB0ZXN0TElDTVJlYWRzUGlubmVkV3JpdGVzUGlubmVkKCkK
ICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGxv
b3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBP
cmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG5vT3BGdW5jdGlvbikpKTsKICAgICAgICAgCiAgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOwogICAgICAgICAgICAgZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0
cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC05NzUsMTMgKzk3NSwxMyBAQCB2b2lkIHRlc3RM
SUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpCiAgICAgICAgICAgICBlZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZSg2NDM2KTsKICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkp
OworICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKICAg
ICAgICAgCiAgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwogICAgICAgICAg
ICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZSg0ODg2KTsKICAgICAgICAgICAgIHJldHVybiBs
b29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIs
IE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5j
dGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+
KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAg
ICAgfSk7CiAKQEAgLTEwMDAsMTMgKzEwMDAsMTMgQEAgdm9pZCB0ZXN0TElDTVJlYWRzV3JpdGVz
T3ZlcmxhcHBpbmdIZWFwcwogICAgICAgICAgICAgZWZmZWN0cy53cml0ZXMgPSBIZWFwUmFuZ2Uo
NjQzNiwgNzQ0NTgpOwogICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAog
ICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4obm9PcEZ1bmN0aW9uKSkpOwogICAgICAgICAK
ICAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CiAgICAgICAgICAgICBlZmZl
Y3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODY0LCA3ODIzOSk7CiAgICAgICAgICAgICByZXR1cm4g
bG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMy
LCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVu
Y3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFn
PihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAg
ICAgIH0pOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCB2b2lkIHRlc3RMSUNNRGVmYXVsdENhbGwo
KQogICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKICAg
ICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAg
ICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0Nh
bGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKICAgICAgICAgfSk7CiAKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHZvaWQgdGVzdFNodWZmbGVE
b2VzbnRUcmFzaENhbGxlZVNhdmVzKCkKIAogICAgIHVubGlrZWx5LT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCiAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAotICAgICAgICB1bmxpa2VseS0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8
dm9pZCo+KGZ1bmN0aW9uTmluZUFyZ3MsIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgdW5saWtl
bHktPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KGZ1bmN0aW9uTmluZUFyZ3MpKSwKICAgICAgICAgY29uc3ROdW1iZXIs
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcsIGFyZzgpOwogCiAgICAg
UGF0Y2hwb2ludFZhbHVlKiB2b2lkUGF0Y2ggPSB1bmxpa2VseS0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2LDEwICsx
MjYsMTAgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RD
cmVhdGVkOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0ZURpcmVj
dEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyNTk3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRz
KFZNJiB2bSwgQ0NhbGxIZWxwZQogICAgIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UcmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpPihHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmZXhpdCkpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvblRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJh
dGlvblB0clRhZyk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBq
aXQuanVtcCgpOwogICAgIApAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRl
QmFycmllcihWTSYgdm0sIENDYWwKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFy
cmllcikpLCBzY3JhdGNoKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJp
ZXIpKSwgc2NyYXRjaCk7CiAgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsK
IAogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1
OTc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkzODAsOCArOTM4MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHJlcC5ncHIoKSwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICAgICAgYXV0byBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrID0gWyZdICh2
b2lkKiBjYWxsZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNhbGxlZSkp
LCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOworICAgICAgICAgICAgICAg
IGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCgqY2FsbGVlKShKU0dsb2Jh
bE9iamVjdCopKSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihjYWxsZWUpKSwgR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25Q
dHJUYWcpOwogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRF
eGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ss
IEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgfTsKQEAg
LTk0NzgsNyArOTQ3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFy
YXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJn
c1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGRvbnRUaHJvdy5saW5rKCZqaXQpOwpAQCAtOTcyMCw4ICs5NzIwLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjMgPSBmb3J3YXJkaW5n
ID8gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpIDogSW52YWxpZEdQUlJlZzsKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWxsb2NhdG9yLm51bWJlck9mUmV1c2VkUmVnaXN0
ZXJzKCkpOwogCi0gICAgICAgICAgICAgICAgYXV0byBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrID0g
WyZdICh2b2lkKiBjYWxsZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNh
bGxlZSkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOworICAgICAgICAg
ICAgICAgIGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCgqY2FsbGVlKSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihjYWxsZWUpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwog
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25D
aGVjaygqdm0sIEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5
SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgfTsKQEAgLTk3NDUsNyAr
OTc0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQoKikoKT4ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC05NzUzLDcg
Kzk3NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpPihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBhcmd1bWVudHNH
UFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZh
ckFyZ09mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24oaml0LnZtKCkpOwotICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncykpOworICAg
ICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lk
KCopKCk+KG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKIAogICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOwogICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmln
aW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsK
QEAgLTk3NjIsNyArOTc2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0NhbGxBcmVhU2l6ZSks
IHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNldHVw
VmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQq
PihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICBjYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lkKCopKCk+KG9wZXJhdGlvblNldHVw
VmFyYXJnc0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIApAQCAtOTkxNSw3ICs5OTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKHN0YXRl
LT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhl
bHBlcnM6OkZhckp1bXBXaWR0aCkpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MjU5Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKFZNJiB2bSwgdW5zaWduZWQKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzKSk7CiAgICAgICAgICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUikp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1hdGVyaWFsaXphdGlvblRvUG9pbnRlci5nZXQobWF0ZXJp
YWxpemF0aW9uKSk7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YihWTSYgdm0sIHVuc2lnbmVkCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRlcmlhbGl6YXRpb24pKSwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Bcmd1bWVu
dHMpKTsKICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdH
UFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjU5Nzg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9u
RnV6eigKIAogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0
aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOworICAgIG1vdmUo
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25FeGNl
cHRpb25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgcHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSLCBPcGVyYXRpb25QdHJUYWcpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2VuUGEKICAgICBK
dW1wIG9rID0gYnJhbmNoUHRyKEJlbG93LCBzaGFkb3dQYWNrZXQsIFRydXN0ZWRJbW1QdHIoc2hh
ZG93Q2hpY2tlbi0+bG9nRW5kKCkpKTsKICAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZyk+KFRydXN0ZWRJbW1QdHIoJnZtKSk7CiAgICAg
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxv
ZykpLCBzY3JhdGNoMU5vbkFyZ0dQUik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKSks
IHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9uQXJnR1BSLCBPcGVyYXRp
b25QdHJUYWcpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5hZGRyZXNz
T2ZMb2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
c2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNrZXQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDY0LDcgKzEwNjQsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCi0g
ICAgICAgICAgICAgICAgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqLCBKU0VudHJ5UHRyVGFnPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSwKKyAgICAgICAgICAgICAgICB0YWdDRnVuY3Rpb248dm9pZCos
IEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLAogICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxs
TW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQog
ICAgIApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5k
bGVIb3N0Q2FsbAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBU
aGVGcmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0YWdD
RnVuY3Rpb25QdHI8dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCh0YWdDRnVuY3Rpb248dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
ICAgICB9CiAgICAgCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6
Tm9uZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Myw3ICs3Myw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGgKIAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxp
ZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBq
aXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5q
dW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdm9p
ZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMzIpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihz
bG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihz
bG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAg
ICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IDgpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyB2b2lkIHNsb3dQYXRoRm9yKENDYWxsSGVscGVycyYgamkKICAgICBpZiAobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHNs
b3dQYXRoRnVuY3Rpb24pPihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOwotICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0
aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCkBAIC0zMzUsNyAr
MzM1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogICAgIGpp
dC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cigmdm0pLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbikpLCBKU0ludGVyZmFjZUpJ
VDo6cmVnVDMpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QzLCBPcGVyYXRpb25QdHJUYWcpOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgaml0LmFkZFB0cihK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVy
ZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtMTE5MSw3ICsxMTkxLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBibwogICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4oKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihH
UFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQ
b2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRh
Zyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsK
ICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNTk3
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02OTgsNyArNjk4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRUYWJsZUdldCh1bnNpZ25lZAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5
cGUoQW55cmVmKSwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigm
b3BlcmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50
KSksCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAg
ICB7CkBAIC03MTcsNyArNzE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1
bnNpZ25lZAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNob3VsZFRocm93
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJbnQz
Miwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9u
U2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5j
dGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25TZXRXYXNtVGFibGVFbGVtZW50KSksCiAgICAg
ICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAg
ewpAQCAtNzM3LDcgKzczNyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50
MzJfdCAKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwK
LSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZvcGVyYXRpb25XYXNtUmVmRnVuYywg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihv
cGVyYXRpb25XYXNtUmVmRnVuYykpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0
YW50KFR5cGU6OkkzMiwgaW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NDcsNyArNzQ3
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWduZQogewogICAgIC8v
IEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoSTMyKSwgb3JpZ2luKCksCi0gICAgICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZSwgQjNDQ2Fs
bFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRp
b25HZXRXYXNtVGFibGVTaXplKSksCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5k
ZXgpKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NTYsNyArNzU2LDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWduZQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJs
ZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lv
blR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
ICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJv
YywgdG9CM1R5cGUoSTMyKSwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPigmb3BlcmF0aW9uV2FzbVRhYmxlR3JvdywgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25XYXNtVGFibGVHcm93KSksCiAg
ICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBmaWxsLCBkZWx0YSk7CiAKICAg
ICByZXR1cm4geyB9OwpAQCAtNzY1LDcgKzc2NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
VGFibGVHcm93KHVuc2lnbmUKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKHVuc2ln
bmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwgRXhwcmVzc2lvblR5cGUgZmls
bCwgRXhwcmVzc2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0Iz
VHlwZShJMzIpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZv
cGVyYXRpb25XYXNtVGFibGVGaWxsLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvbldhc21UYWJsZUZpbGwpKSwKICAgICAgICAg
aW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIG9mZnNldCwgZmlsbCwgY291bnQpOwogCiAg
ICAgewpAQCAtODAwLDcgKzgwMCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFi
bGUoKSAtPiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlw
ZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJ
bnQzMiwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0
aW9uR3Jvd01lbW9yeSwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxC
M0NDYWxsUHRyVGFnPihvcGVyYXRpb25Hcm93TWVtb3J5KSksCiAgICAgICAgIGZyYW1lUG9pbnRl
cigpLCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsKIAogICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpObywgbV9pbmZvLm1lbW9yeSwgaW5z
dGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKQEAgLTkwNCw3ICs5MDQsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBpCiAgICAgICAgICAgICBj
b250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gZG9TbG93UGF0aDsKIAotICAgICAgICAgICAgVmFsdWUqIHdyaXRl
QmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvbldhc21X
cml0ZUJhcnJpZXJTbG93UGF0aCwgQjNDQ2FsbFB0clRhZykpOworICAgICAgICAgICAgVmFsdWUq
IHdyaXRlQmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVy
YXRpb25XYXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCksIHdy
aXRlQmFycmllckFkZHJlc3MsIGNlbGwsIHZtKTsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0
aW9uKTsKIApAQCAtOTU3LDcgKzk1Nyw3IEBAIGlubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVt
aXRXcml0ZUJhcnIKICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJs
b2NrKTsKICAgICBtX2N1cnJlbnRCbG9jayA9IGRvU2xvd1BhdGg7CiAKLSAgICBWYWx1ZSogd3Jp
dGVCYXJyaWVyQWRkcmVzcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9uV2Fz
bVdyaXRlQmFycmllclNsb3dQYXRoLCBCM0NDYWxsUHRyVGFnKSk7CisgICAgVmFsdWUqIHdyaXRl
QmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25X
YXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLCB3cml0ZUJhcnJpZXJBZGRy
ZXNzLCBjZWxsLCB2bSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwogCkBAIC0yMTUwLDcgKzIx
NTAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUG9wCiAgICAgfQog
I2VuZGlmCiAKLSAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oJm9wZXJhdGlvblBvcGNvdW50MzIsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICBWYWx1ZSogZnVu
Y0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25Qb3Bjb3Vu
dDMyKSk7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLCBmdW5jQWRkcmVzcywg
YXJnKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcAogICAgIH0KICNlbmRpZgogCi0gICAgVmFs
dWUqIGZ1bmNBZGRyZXNzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9wZXJhdGlvblBvcGNv
dW50NjQsIEIzQ0NhbGxQdHJUYWcpKTsKKyAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25Qb3Bjb3VudDY0KSk7CiAgICAgcmVzdWx0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDY0LCBv
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLCBmdW5jQWRkcmVzcywgYXJnKTsKICAgICByZXR1cm4g
eyB9OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJ
KHJldmlzaW9uIDI1OTc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVu
a3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsNyArODgsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRyCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGppdCwgcmVnaXN0ZXJzVG9TcGlsbCwgZXh0
cmFQYWRkaW5nQnl0ZXMpOwogCiAgICAgaml0LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVRyaWdn
ZXJUaWVyVXBOb3cpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5vdykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwog
ICAgIGppdC5jYWxsKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgT3BlcmF0aW9uUHRyVGFnKTsKIAog
ICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0Zv
ckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCBSZWdpc3RlclNldCgpLCBudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNTk3ODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSBtb3JlIGVmZmljaWVudCB0YWdDRnVuY3Rp
b24oKSB0b29sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEwMjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGN1cnJlbnQgdGFnQ0Z1bmN0aW9uUHRyKCkgdG9vbCBkb2VzIHNvbWUgZXh0cmEgd29y
ayB0aGF0IGlzIG5vdCBuZWVkZWQgaWYKKyAgICAgICAgd2UgYXJlIHRhZ2dpbmcgYSBrbm93biBm
dW5jdGlvbiBhbmQgbm90IGEgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IHBvaW50ZXIuICBGb3IKKyAg
ICAgICAgZXhhbXBsZSwKKyAgICAgICAgMS4gaXQgZG9lc24ndCBuZWVkIHRvIGRvIGEgbnVsbCBj
aGVjay4KKyAgICAgICAgMi4gaXQgZG9lc24ndCBuZWVkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgZnVu
Y3Rpb24gYWRkcmVzcy4gIAorICAgICAgICAzLiBUaGUgUkVMRUFTRV9BU1NFUlQgdXNlZCB0byBl
bmZvcmNlIHRoYXQgYXV0aGVudGljYXRpb24gY2FuIGFsc28gZ28gYXdheS4KKworICAgICAgICBX
ZSBzaG91bGQgb25seSB1c2UgdGFnQ0Z1bmN0aW9uKCkgKGluc3RlYWQgb2YgdGFnQ0Z1bmN0aW9u
UHRyKCkpIGlmIHdlIGtub3cgZm9yCisgICAgICAgIGNlcnRhaW4gdGhhdCB3ZSdyZSBvcGVyYXRp
bmcgb24gYSBDL0MrKyBmdW5jdGlvbiwgYW5kIG5vdCBzb21lIGFyYml0cmFyeSBwb2ludGVyLgor
CisgICAgICAgICogd3RmL1B0clRhZy5oOgorICAgICAgICAoV1RGOjp0YWdDRnVuY3Rpb24pOgor
CiAyMDIwLTA0LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6VmVjdG9yQ29kZXIgYW5kIElQQzo6VmVjdG9yQXJndW1lbnRD
b2RlciBzaG91bGQgdXNlIGNoZWNrZWQgYXJpdGhtZXRpYwpJbmRleDogU291cmNlL1dURi93dGYv
UHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHRyVGFnLmgJKHJldmlzaW9u
IDI1OTc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1B0clRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIwLDYgKzMyMCwyMCBAQCBpbmxpbmUgUHRyVHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBw
CiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCB0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+CiBpbmxpbmUgUHRy
VHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBwdHIpIHsgcmV0dXJuIHRhZ0NGdW5jdGlvblB0
cihwdHIsIHRhZyk7IH0KIAordGVtcGxhdGU8UHRyVGFnIG5ld1RhZywgdHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KK2lubGluZSBG
dW5jdGlvblR5cGUgdGFnQ0Z1bmN0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jKQoreworICAgIEFTU0VS
VChpc1RhZ2dlZFdpdGgoZnVuYywgQ0Z1bmN0aW9uUHRyVGFnKSk7CisgICAgQVNTRVJUKG5ld1Rh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHJldHVybiBwdHJhdXRoX2F1dGhfYW5kX3Jlc2ln
bihmdW5jLCBwdHJhdXRoX2tleV9mdW5jdGlvbl9wb2ludGVyLCAwLCBwdHJhdXRoX2tleV9wcm9j
ZXNzX2RlcGVuZGVudF9jb2RlLCBuZXdUYWcpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1
cm5UeXBlLCBQdHJUYWcgbmV3VGFnLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVl
ICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlv
blR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgoraW5saW5lIFJldHVyblR5cGUgdGFnQ0Z1bmN0
aW9uKEZ1bmN0aW9uVHlwZSBmdW5jKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmV0dXJu
VHlwZT4odGFnQ0Z1bmN0aW9uPG5ld1RhZz4oZnVuYykpOworfQorCiB0ZW1wbGF0ZTxQdHJUYWdB
Y3Rpb24gdGFnQWN0aW9uLCB0eXBlbmFtZSBQdHJUeXBlPgogaW5saW5lIFB0clR5cGUgdW50YWdD
RnVuY3Rpb25QdHJJbXBsKFB0clR5cGUgcHRyLCBQdHJUYWcgdGFnKQogewpAQCAtNTIxLDYgKzUz
NSwxNSBAQCBpbmxpbmUgUHRyVHlwZSB0YWdDRnVuY3Rpb25QdHIoUHRyVHlwZSBwCiB0ZW1wbGF0
ZTxQdHJUYWcsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KIGlubGluZSBQdHJUeXBlIHRhZ0NGdW5j
dGlvblB0cihQdHJUeXBlIHB0cikgeyByZXR1cm4gcHRyOyB9CiAKK3RlbXBsYXRlPFB0clRhZyBu
ZXdUYWcsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5j
dGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2
YWx1ZT46OnR5cGU+CitpbmxpbmUgRnVuY3Rpb25UeXBlIHRhZ0NGdW5jdGlvbihGdW5jdGlvblR5
cGUgZnVuYykgeyByZXR1cm4gZnVuYzsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
LCBQdHJUYWcgbmV3VGFnLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0
ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+
Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgoraW5saW5lIFJldHVyblR5cGUgdGFnQ0Z1bmN0aW9uKEZ1
bmN0aW9uVHlwZSBmdW5jKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmV0dXJuVHlwZT4o
dGFnQ0Z1bmN0aW9uPG5ld1RhZz4oZnVuYykpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2lu
dGVyPFB0clR5cGU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIFB0clR5cGU+Ojp2YWx1ZT4+
CiBpbmxpbmUgVCB1bnRhZ0NGdW5jdGlvblB0cihQdHJUeXBlIHB0ciwgUHRyVGFnKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8VD4ocHRyKTsgfQogCkBAIC01NzgsNiArNjAxLDcgQEAgdXNpbmcgV1RG
Ojp0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHI7CiB1c2luZyBXVEY6OnJldGFn
Q29kZVB0cjsKIHVzaW5nIFdURjo6cmVtb3ZlQ29kZVB0clRhZzsKK3VzaW5nIFdURjo6dGFnQ0Z1
bmN0aW9uOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb25QdHI7CiB1c2luZyBXVEY6OnVudGFnQ0Z1
bmN0aW9uUHRyOwogdXNpbmcgV1RGOjp0YWdJbnQ7Cg==
</data>
<flag name="review"
          id="411346"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>