<?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>144137</bug_id>
          
          <creation_ts>2015-04-23 18:37:58 -0700</creation_ts>
          <short_desc>SVGFilterBuilder should drive the builtin sourceAlpha from the passed sourceGraphic</short_desc>
          <delta_ts>2015-04-28 15:33:12 -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>SVG</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088136</commentid>
    <comment_count>0</comment_count>
      <attachid>251526</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-23 18:37:58 -0700</bug_when>
    <thetext>Created attachment 251526
test case

Open the attached test case.

Result: A black square is displayed.
Expected: A lime square should be displayed.

When creating the SVGFilterBuilder, we create a SourceAlpha object from the current SourceGraphic. We should create the SourceAlpha from the previousEffect. If there is no effect applied before, the previousEffect will be the sourceGraphic.

In the attached test case. Here is what is happening:

1. A lime &lt;div&gt; is created.
2. On top of it, a red &lt;div&gt; is created. But two filter are applied to this &lt;div&gt;
   a. The first filter is css opacity(0) filter, which results a transparent square (the alpha bytes are all zeros)
   b. The second filter is an SVG filter which merges the SourceAlpha of the filter with the existing drawing.

The bug happens because we create the SourceAlpha of the SVGFilterBuilder from the current SourceGraphic. And since the current SourceGraphic is a lime square, the sourceAlpha will be black square (the r, g, b are zeros but a is 1). So when it is merged with the existing drawing it draws a black square.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088301</commentid>
    <comment_count>1</comment_count>
      <attachid>251565</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-24 12:36:43 -0700</bug_when>
    <thetext>Created attachment 251565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088302</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 12:38:13 -0700</bug_when>
    <thetext>Attachment 251565 did not pass style-queue:


ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:55:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.h:54:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 8 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088809</commentid>
    <comment_count>3</comment_count>
      <attachid>251565</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-26 12:08:40 -0700</bug_when>
    <thetext>Comment on attachment 251565
Patch

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

&gt; Source/WebCore/platform/graphics/filters/SourceAlpha.cpp:32
&gt; +Ref&lt;SourceAlpha&gt; SourceAlpha::create(FilterEffect* sourceEffect)

Should be a reference, since the code below assumes it’s non-null. Could do that in a later patch, though.

&gt; Source/WebCore/platform/graphics/filters/SourceAlpha.cpp:75
&gt; +SourceAlpha::SourceAlpha(FilterEffect* sourceEffect)

Should be a reference, since the code below assumes it’s non-null. Could do that in a later patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088897</commentid>
    <comment_count>4</comment_count>
      <attachid>251717</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-26 18:44:41 -0700</bug_when>
    <thetext>Created attachment 251717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088898</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-26 18:47:22 -0700</bug_when>
    <thetext>Attachment 251717 did not pass style-queue:


ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.cpp:55:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFEImage.h:54:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 8 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088910</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-04-26 20:05:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 251565 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251565&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/SourceAlpha.cpp:32
&gt; &gt; +Ref&lt;SourceAlpha&gt; SourceAlpha::create(FilterEffect* sourceEffect)
&gt; 
&gt; Should be a reference, since the code below assumes it’s non-null. Could do
&gt; that in a later patch, though.
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/graphics/filters/SourceAlpha.cpp:75
&gt; &gt; +SourceAlpha::SourceAlpha(FilterEffect* sourceEffect)
&gt; 
&gt; Should be a reference, since the code below assumes it’s non-null. Could do
&gt; that in a later patch, though.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088918</commentid>
    <comment_count>7</comment_count>
      <attachid>251717</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-26 20:52:36 -0700</bug_when>
    <thetext>Comment on attachment 251717
Patch

Clearing flags on attachment: 251717

Committed r183381: &lt;http://trac.webkit.org/changeset/183381&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088919</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-26 20:52:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088920</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-04-26 20:53:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/20704289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089763</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-28 15:33:12 -0700</bug_when>
    <thetext>The new test fails on Windows every time: https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=svg%2Ffilters%2FsourceAlpha-input-filter-effect.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>251526</attachid>
            <date>2015-04-23 18:37:58 -0700</date>
            <delta_ts>2015-04-23 18:37:58 -0700</delta_ts>
            <desc>test case</desc>
            <filename>test108.html</filename>
            <type>text/html</type>
            <size>492</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8c3R5bGU+CiAgICBkaXYgewogICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgaGVpZ2h0OiAxMDBw
eDsKICAgIH0KICAgICN0ZXN0IHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwogICAgICAt
d2Via2l0LWZpbHRlcjogb3BhY2l0eSgwKSB1cmwoI2YpOwogICAgICBmaWx0ZXI6IG9wYWNpdHko
MCkgdXJsKCNmKTsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxkaXYgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGxpbWUiPjwvZGl2PgogIDxkaXYgaWQ9InRlc3QiPjwvZGl2Pgog
IDxzdmcgaGVpZ2h0PSIwIj4KICAgIDxmaWx0ZXIgaWQ9ImYiPgogICAgICA8ZmVNZXJnZT4KICAg
ICAgICA8ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUFscGhhIi8+CiAgICAgIDwvZmVNZXJnZT4KICAg
IDwvZmlsdGVyPgogIDwvc3ZnPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251565</attachid>
            <date>2015-04-24 12:36:43 -0700</date>
            <delta_ts>2015-04-26 18:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144137-20150424123537.patch</filename>
            <type>text/plain</type>
            <size>102837</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAxNS0wNC0yMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0ZpbHRl
ckJ1aWxkZXIgc2hvdWxkIGRyaXZlIHRoZSBidWlsdGluIHNvdXJjZUFscGhhIGZyb20gdGhlIHBh
c3NlZCBzb3VyY2VHcmFwaGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgU291cmNlQWxwaGEgc2hvdWxkIGJlIGRyaXZlbiBmcm9tIHRoZSBsYXN0
IGFwcGxpZWQgRmlsdGVyRWZmZWN0LiBUaGlzCisgICAgICAgIHdpbGwgcmVxdWlyZSB0aGUgU291
cmNlQWxwaGEgRmlsdGVyRWZmZWN0IHRvIHdyYXAgYSBGaWx0ZXJFZmZlY3QgcmF0aGVyCisgICAg
ICAgIHRoYW4ganVzdCBnZXR0aW5nIHRoZSBTb3VyY2VHcmFwaGljIHJlZmVyZW5jZSBmcm9tIEZp
bHRlckVmZmVjdFJlbmRlcmVyLgorCisgICAgICAgIFRoaXMgaXMgYmFzZWQgb24gdGhlIEJsaW5r
IHBhdGNoOgorICAgICAgICBodHRwczovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2JsaW5rP3Jl
dmlzaW9uPTE5NDExNSZ2aWV3PXJldmlzaW9uLgorCisgICAgICAgIFRlc3Q6IHN2Zy9maWx0ZXJz
L3NvdXJjZUFscGhhLWlucHV0LWZpbHRlci1lZmZlY3QuaHRtbAorICAgICAgICAKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUFscGhhOjpjcmVhdGUpOiBNYWtlIFNvdXJjZUFscGhhIHdyYXBzIGEgRmls
dGVyRWZmZWN0CisgICAgICAgIHJhdGhlciB0aGFuIGEgRmlsdGVyLgorICAgICAgICAKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6IERl
dGVybWluZSB0aGUgcGFpbnQKKyAgICAgICAgcmVjdCBmcm9tIHRoZSB3cmFwcGVkIEZpbHRlckVm
ZmVjdC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKTogRXh0cmFjdCB0aGUgYWxwaGEgY2hhbm5lbAorICAgICAgICBmcm9tIHRo
ZSB3cmFwcGVkIEZpbHRlckVmZmVjdC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VBbHBoYTo6U291cmNlQWxwaGEpOiAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6U291cmNl
QWxwaGEpOiBEZWxldGVkLgorICAgICAgICBSZWltcGxlbWVudCB0aGUgY29uc3RydWN0b3Igb2Yg
dGhlIFNvdXJjZUFscGhhIHN1Y2ggdGhhdCBpdCB3cmFwcyB0aGUKKyAgICAgICAgc291cmNlRWZm
ZWN0IGluIGl0cyBpbnB1dEVmZmVjdHMuCisgICAgCisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRl
cmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IERlbGV0ZSB0aGUgRklYTUUKKyAgICAgICAgY29t
bWVudCBhbmQgZG8gZXhhY3RseSB3aGF0IGl0IHNhaWQuIFRoaXMgbWF0Y2hlcyB0aGUgaW1wbGVt
ZW50YXRpb24gb2YKKyAgICAgICAgR2Vja28gYW5kIEJsaW5rLgorICAgICAgICAKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMpOgorICAgICAg
ICBEZWxldGUgdGhlIGV4dHJhIGFyZ3VtZW50LgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJC
dWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmg6IERyaXZlIHRoZSBTb3VyY2VBbHBoYSBmcm9tIHRoZQorICAg
ICAgICBwYXNzZWQgc291cmNlIEZpbHRlckVmZmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNw
ZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIENvZGUgY2xlYW4gdXA6IFBvaW50ZXIgdG8gcmVm
ZXJlbmNlIGNvbnZlcnNpb24uIEl0IHN0YXJ0cyBieSBjb252ZXJ0aW5nCisgICAgICAgIEZpbHRl
ckVmZmVjdDo6bV9maWx0ZXIgZnJvbSBwb2ludGVyIHRvIHJlZmVyZW5jZSBhbmQgaXQga2VwdCBl
eHBhbmRpbmcuCisgICAgICAgIEFsbCB0aGUgY3JlYXRpb25zIG9mIEZpbHRlckVmZmVjdCB3ZXJl
IGhhcHBlbmluZyBieSBwYXNzaW5nICJ0aGlzIiBzbworICAgICAgICBwYXNzaW5nICIqdGhpcyIg
ZGlkIG5vdCByZXF1aXJlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgbmlsLgorCisg
ICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgIENvZGUgY2xlYW4gdXA6
IFBvaW50ZXIgdG8gcmVmZXJlbmNlIGFuZCBQYXNzUmVmUHRyPD4gdG8gUmVmUHRyPD4gb3IgUmVm
PD4KKyAgICAgICAgY29udmVyc2lvbi4KKwogMjAxNS0wNC0yMyAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgYSB3cmFwcGVyIGFyb3VuZCB0aGUg
aG9zdGVkIEFWUGxheWVyTGF5ZXIgdG8gaW50ZXJjZXB0IC1zZXRCb3VuZHM6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5j
cHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyKiBmaWx0ZXIs
IEJsZW5kTW9kZSBtb2RlKQorRkVCbGVuZDo6RkVCbGVuZChGaWx0ZXImIGZpbHRlciwgQmxlbmRN
b2RlIG1vZGUpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9tb2RlKG1vZGUp
CiB7CiB9CiAKLVJlZjxGRUJsZW5kPiBGRUJsZW5kOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIEJs
ZW5kTW9kZSBtb2RlKQorUmVmPEZFQmxlbmQ+IEZFQmxlbmQ6OmNyZWF0ZShGaWx0ZXImIGZpbHRl
ciwgQmxlbmRNb2RlIG1vZGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChm
aWx0ZXIsIG1vZGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFQmxlbmQg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQmxlbmQ+
IGNyZWF0ZShGaWx0ZXIqLCBCbGVuZE1vZGUpOworICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3Jl
YXRlKEZpbHRlciYsIEJsZW5kTW9kZSk7CiAKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29u
c3Q7CiAgICAgYm9vbCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKTsKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVCbGVu
ZChGaWx0ZXIqLCBCbGVuZE1vZGUpOworICAgIEZFQmxlbmQoRmlsdGVyJiwgQmxlbmRNb2RlKTsK
IAogICAgIEJsZW5kTW9kZSBtX21vZGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCShy
ZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KEZp
bHRlciogZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYg
dmFsdWVzKQorRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXImIGZpbHRlciwgQ29s
b3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fdmFsdWVzKHZh
bHVlcykKIHsKIH0KIAotUmVmPEZFQ29sb3JNYXRyaXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShG
aWx0ZXIqIGZpbHRlciwgQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZhbHVlcykKK1JlZjxGRUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1
ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb2xvck1hdHJpeChmaWx0ZXIsIHR5
cGUsIHZhbHVlcykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBl
IHsKIAogY2xhc3MgRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4gY3JlYXRlKEZpbHRlciosIENvbG9yTWF0
cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIHN0YXRpYyBSZWY8RkVDb2xvck1h
dHJpeD4gY3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0
PiYpOwogCiAgICAgQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdDsKICAgICBib29sIHNldFR5
cGUoQ29sb3JNYXRyaXhUeXBlKTsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVIdWVSb3RhdGVDb21wb25lbnRzKGZsb2F0KiBjb21wb25l
bnRzLCBmbG9hdCB2YWx1ZSk7CiAKIHByaXZhdGU6Ci0gICAgRkVDb2xvck1hdHJpeChGaWx0ZXIq
LCBDb2xvck1hdHJpeFR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICBGRUNvbG9yTWF0
cml4KEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCiAg
ICAgQ29sb3JNYXRyaXhUeXBlIG1fdHlwZTsKICAgICBWZWN0b3I8ZmxvYXQ+IG1fdmFsdWVzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCShyZXZpc2lvbiAxODMxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB2b2lkICgqVHJhbnNmZXJUeXBlKSh1bnNpZ25lZCBjaGFyKiwgY29u
c3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOwogCi1GRUNvbXBvbmVudFRyYW5zZmVyOjpG
RUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiByZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVl
bkZ1bmMsCitGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJs
dWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpCiAgICAg
OiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9yZWRGdW5jKHJlZEZ1bmMpCkBAIC00Niw3
ICs0Niw3IEBAIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIKIHsKIH0K
IAotUmVmPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShG
aWx0ZXIqIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywK
K1JlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsCiAg
ICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgYWxwaGFGdW5jKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9u
ZW50VHJhbnNmZXIoZmlsdGVyLCByZWRGdW5jLCBncmVlbkZ1bmMsIGJsdWVGdW5jLCBhbHBoYUZ1
bmMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiAxODMxMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiB7CiAKIGNsYXNzIEZFQ29tcG9uZW50VHJhbnNmZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29tcG9uZW50VHJh
bnNmZXI+IGNyZWF0ZShGaWx0ZXIqLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBy
ZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCisgICAg
c3RhdGljIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgZ3JlZW5GdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwogCiAgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiByZWRGdW5jdGlvbigpIGNvbnN0OwpAQCAtODMsNyArODMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGRUNvbXBvbmVu
dFRyYW5zZmVyKEZpbHRlciosIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1
bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywKKyAgICBGRUNv
bXBvbmVudFRyYW5zZmVyKEZpbHRlciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJs
dWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwogCiAg
ICAgdm9pZCBnZXRWYWx1ZXModW5zaWduZWQgY2hhciByVmFsdWVzWzI1Nl0sIHVuc2lnbmVkIGNo
YXIgZ1ZhbHVlc1syNTZdLCB1bnNpZ25lZCBjaGFyIGJWYWx1ZXNbMjU2XSwgdW5zaWduZWQgY2hh
ciBhVmFsdWVzWzI1Nl0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb21w
b3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBm
bG9hdCBrNCkKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXImIGZpbHRlciwgY29uc3Qg
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBr
MywgZmxvYXQgazQpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV90eXBlKHR5
cGUpCiAgICAgLCBtX2sxKGsxKQpAQCAtNDMsNyArNDMsNyBAQCBGRUNvbXBvc2l0ZTo6RkVDb21w
b3NpdGUoRmlsdGVyKiBmaWx0ZXIsCiB7CiB9CiAKLVJlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3Np
dGU6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYg
dHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCitSZWY8RkVDb21w
b3NpdGU+IEZFQ29tcG9zaXRlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvc2l0
ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0
IGs0KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9zaXRlKGZpbHRlciwgdHlw
ZSwgazEsIGsyLCBrMywgazQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBlbnVtIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUgewogCiBjbGFzcyBGRUNvbXBvc2l0ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShGaWx0ZXIqLCBjb25z
dCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwor
ICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb21wb3Np
dGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogCiAgICAgQ29t
cG9zaXRlT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24oKSBjb25zdDsKICAgICBib29sIHNldE9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElD
OyB9CiAKIHByaXZhdGU6Ci0gICAgRkVDb21wb3NpdGUoRmlsdGVyKiwgY29uc3QgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBGRUNvbXBv
c2l0ZShGaWx0ZXImLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQpOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29m
dHdhcmUoVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3Rp
bmF0aW9uLAogICAgICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlciogZmlsdGVyLCBj
b25zdCBJbnRTaXplJiBrZXJuZWxTaXplLAorRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1h
dHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKICAgICBmbG9h
dCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdl
TW9kZVR5cGUgZWRnZU1vZGUsCiAgICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0
aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgp
CiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQpAQCAtNDksNyArNDksNyBAQCBGRUNvbnZvbHZl
TWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlCiAgICAgQVNTRVJUKG1fa2VybmVsU2l6ZS5o
ZWlnaHQoKSA+IDApOwogfQogCi1SZWY8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJp
eDo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLAorUmVm
PEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZpbHRl
ciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKICAgICBmbG9hdCBkaXZpc29yLCBmbG9hdCBi
aWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUs
CiAgICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFs
cGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgZW51bSBFZGdlTW9kZVR5cGUgewogCiBjbGFzcyBGRUNvbnZvbHZlTWF0
cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNv
bnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyKiwgY29uc3QgSW50U2l6ZSYsCisgICAgc3RhdGlj
IFJlZjxGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsCiAg
ICAgICAgICAgICBmbG9hdCwgZmxvYXQsIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBj
b25zdCBGbG9hdFBvaW50JiwKICAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4m
KTsKIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgICAgICBmbG9hdCBiaWFzOwogICAg
IH07CiAKLSAgICBGRUNvbnZvbHZlTWF0cml4KEZpbHRlciosIGNvbnN0IEludFNpemUmLCBmbG9h
dCwgZmxvYXQsCisgICAgRkVDb252b2x2ZU1hdHJpeChGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQsIGZsb2F0LAogICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUs
IGNvbnN0IEZsb2F0UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKICAgICB0
ZW1wbGF0ZTxib29sIHByZXNlcnZlQWxwaGFWYWx1ZXM+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxp
Z2h0aW5nLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEzICsyNywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFRGlmZnVzZUxpZ2h0
aW5nOjpGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXIqIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZs
b2F0IHN1cmZhY2VTY2FsZSwKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0
aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwg
a2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0K
IAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRl
ciogZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwKK1JlZjxGRURpZmZ1c2VMaWdo
dGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29s
b3ImIGxpZ2h0aW5nQ29sb3IsCiAgICAgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNl
Q29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLAogICAgIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZm
dXNlTGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciosIGNvbnN0IENvbG9yJiwgZmxvYXQs
IGZsb2F0LAorICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXIm
LCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKICAgICAgICAgZmxvYXQsIGZsb2F0LCBQYXNz
UmVmUHRyPExpZ2h0U291cmNlPik7CiAgICAgdmlydHVhbCB+RkVEaWZmdXNlTGlnaHRpbmcoKTsK
IApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXIqLCBjb25zdCBDb2xvciYsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAg
RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDE4
MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKEZp
bHRlciogZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5u
ZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCitGRURpc3BsYWNl
bWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyJiBmaWx0ZXIsIENoYW5uZWxTZWxlY3Rv
clR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVj
dG9yLCBmbG9hdCBzY2FsZSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX3hD
aGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcikKICAgICAsIG1feUNoYW5uZWxTZWxlY3Rv
cih5Q2hhbm5lbFNlbGVjdG9yKQpAQCAtNDAsNyArNDAsNyBAQCBGRURpc3BsYWNlbWVudE1hcDo6
RkVEaXNwbGFjZW1lbnRNYXAoRmlsCiB7CiB9CiAKLVJlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVE
aXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB4Q2hhbm5lbFNlbGVjdG9yLAorUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBGRURpc3BsYWNlbWVu
dE1hcDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVs
U2VsZWN0b3IsCiAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9h
dCBzY2FsZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpc3BsYWNlbWVudE1hcChm
aWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBDaGFubmVsU2VsZWN0b3JUeXBlIHsKIAog
Y2xhc3MgRkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVhdGUoRmlsdGVyKiwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFu
bmVsU2VsZWN0b3IsIGZsb2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBj
cmVhdGUoRmlsdGVyJiwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0KTsKIAogICAgIENoYW5uZWxT
ZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0OwogICAgIGJvb2wgc2V0WENoYW5u
ZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVEaXNw
bGFjZW1lbnRNYXAoRmlsdGVyKiwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0KTsKKyAgICBGRURp
c3BsYWNlbWVudE1hcChGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0
b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQpOwogCiAgICAg
Q2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0b3I7CiAgICAgQ2hhbm5lbFNlbGVj
dG9yVHlwZSBtX3lDaGFubmVsU2VsZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCShyZXZp
c2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAotRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVy
KiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29u
c3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorRkVEcm9wU2hhZG93
OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZs
b2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dP
cGFjaXR5KQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fc3RkWChzdGRYKQog
ICAgICwgbV9zdGRZKHN0ZFkpCkBAIC00Miw3ICs0Miw3IEBAIEZFRHJvcFNoYWRvdzo6RkVEcm9w
U2hhZG93KEZpbHRlciogZmlsdGUKIHsKIH0KIAotUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hh
ZG93OjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0
IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFj
aXR5KQorUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hhZG93OjpjcmVhdGUoRmlsdGVyJiBmaWx0
ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29s
b3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFRHJvcFNoYWRvdyhmaWx0ZXIsIHN0ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93
Q29sb3IsIHNoYWRvd09wYWNpdHkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAkocmV2aXNpb24g
MTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBjbGFzcyBGRURyb3BTaGFkb3cgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciosIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBzdGF0
aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgo
KSBjb25zdCB7IHJldHVybiBtX3N0ZFg7IH0KICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxv
YXQgc3RkWCkgeyBtX3N0ZFggPSBzdGRYOyB9CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYs
IGludCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFRHJvcFNoYWRvdyhGaWx0
ZXIqLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7Cisg
ICAgRkVEcm9wU2hhZG93KEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25z
dCBDb2xvciYsIGZsb2F0KTsKICAgICAKICAgICBmbG9hdCBtX3N0ZFg7CiAgICAgZmxvYXQgbV9z
dGRZOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZs
b29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxNCArMjksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUZsb29kOjpGRUZsb29k
KEZpbHRlciogZmlsdGVyLCBjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFj
aXR5KQorRkVGbG9vZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29k
Q29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAg
ICAgLCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKICAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29k
T3BhY2l0eSkKIHsKIH0KIAotUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShGaWx0ZXIqIGZp
bHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKK1JlZjxG
RUZsb29kPiBGRUZsb29kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBmbG9v
ZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RkVGbG9vZChmaWx0ZXIsIGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJ
KHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGNv
bnN0IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVGbG9vZD4gY3JlYXRlKEZpbHRl
ciYsIGNvbnN0IENvbG9yJiwgZmxvYXQpOwogCiAgICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0
OwotICAgIGJvb2wgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciAmKTsKKyAgICBib29sIHNldEZs
b29kQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0
OwogICAgIGJvb2wgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVGbG9vZChG
aWx0ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBGRUZsb29kKEZpbHRlciYsIGNvbnN0
IENvbG9yJiwgZmxvYXQpOwogCiAgICAgQ29sb3IgbV9mbG9vZENvbG9yOwogICAgIGZsb2F0IG1f
Zmxvb2RPcGFjaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSB2b2lkIGtl
cm5lbFBvc2l0aW9uKGludCBibHVySXRlcmEKICAgICB9CiB9CiAKLUZFR2F1c3NpYW5CbHVyOjpG
RUdhdXNzaWFuQmx1cihGaWx0ZXIqIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVU
eXBlIGVkZ2VNb2RlKQorRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKEZpbHRlciYgZmls
dGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiAgICAgOiBGaWx0
ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9zdGRYKHgpCiAgICAgLCBtX3N0ZFkoeSkKQEAgLTg2
LDcgKzg2LDcgQEAgRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKEZpbHRlciogZgogewog
fQogCi1SZWY8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoRmlsdGVyKiBm
aWx0ZXIsIGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK1JlZjxGRUdh
dXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQg
eCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFR2F1c3NpYW5CbHVyKGZpbHRlciwgeCwgeSwgZWRnZU1vZGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFR2F1c3NpYW5C
bHVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUdh
dXNzaWFuQmx1cj4gY3JlYXRlKEZpbHRlciosIGZsb2F0LCBmbG9hdCwgRWRnZU1vZGVUeXBlKTsK
KyAgICBzdGF0aWMgUmVmPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQsIGZs
b2F0LCBFZGdlTW9kZVR5cGUpOwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZh
dGU6CiAKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5V29ya2VyKFBsYXRmb3JtQXBwbHlQ
YXJhbWV0ZXJzKik7CiAKLSAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXIqLCBmbG9hdCwgZmxvYXQs
IEVkZ2VNb2RlVHlwZSk7CisgICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyJiwgZmxvYXQsIGZsb2F0
LCBFZGdlTW9kZVR5cGUpOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseShVaW50OENs
YW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJy
YXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYg
cGFpbnRTaXplKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RkVMaWdodGluZzo6RkVMaWdodGluZyhGaWx0ZXIqIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0
aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwK
K0ZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdo
dGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
CiAgICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9h
dCBzcGVjdWxhckV4cG9uZW50LAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAg
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0Zm9ybUFwcGx5R2VuZXJpY1Bh
cmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxp
Z2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVMaWdodGluZyhGaWx0ZXIqLCBM
aWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFTGlnaHRpbmcoRmls
dGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKIAogICAgIGJvb2wg
ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiwgaW50LCBpbnQpOwogICAgIGlubGluZSB2
b2lkIGlubGluZVNldFBpeGVsKGludCBvZmZzZXQsIExpZ2h0aW5nRGF0YSYsIExpZ2h0U291cmNl
OjpQYWludGluZ0RhdGEmLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRU1l
cmdlOjpGRU1lcmdlKEZpbHRlciogZmlsdGVyKSAKK0ZFTWVyZ2U6OkZFTWVyZ2UoRmlsdGVyJiBm
aWx0ZXIpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogewogfQogCi1SZWY8RkVNZXJnZT4g
RkVNZXJnZTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyKQorUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNy
ZWF0ZShGaWx0ZXImIGZpbHRlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1lcmdl
KGZpbHRlcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1lcmdlLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVNZXJnZSA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4gY3Jl
YXRlKEZpbHRlciopOworICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4gY3JlYXRlKEZpbHRlciYpOwog
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwogI2lmIEVOQUJMRShP
UEVOQ0wpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIEZFTWVyZ2UoRmlsdGVyKik7CisgICAgRkVNZXJnZShGaWx0ZXIm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJ
KHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KEZpbHRl
ciogZmlsdGVyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZs
b2F0IHJhZGl1c1kpCitGRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neShGaWx0ZXImIGZpbHRlciwg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZ
KQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwg
bV9yYWRpdXNYKHJhZGl1c1gpCkBAIC00MSw3ICs0MSw3IEBAIEZFTW9ycGhvbG9neTo6RkVNb3Jw
aG9sb2d5KEZpbHRlciogZmlsdGUKIHsKIH0KIAotUmVmPEZFTW9ycGhvbG9neT4gRkVNb3JwaG9s
b2d5OjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwg
ZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKK1JlZjxGRU1vcnBob2xvZ3k+IEZFTW9ycGhv
bG9neTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUs
IGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVNb3JwaG9sb2d5KGZpbHRlciwgdHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIGVudW0gTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAKIGNsYXNzIEZFTW9y
cGhvbG9neSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RkVNb3JwaG9sb2d5PiBjcmVhdGUoRmlsdGVyKiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxv
YXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisgICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+
IGNyZWF0ZShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBm
bG9hdCByYWRpdXNZKTsKIAogICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9w
ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRNb3JwaG9sb2d5
T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5KFBhaW50aW5nRGF0YSopOwogICAgIGlu
bGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSosIGNvbnN0IGludCB5
U3RhcnQsIGNvbnN0IGludCB5RW5kKTsKIHByaXZhdGU6Ci0gICAgRkVNb3JwaG9sb2d5KEZpbHRl
ciosIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kp
OworICAgIEZFTW9ycGhvbG9neShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9h
dCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKICAgICBib29sIHBsYXRmb3JtQXBwbHlEZWdlbmVy
YXRlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5LCBjb25zdCBJbnRSZWN0JiBpbWFn
ZVJlY3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSk7CiAgICAgCiAgICAgTW9ycGhvbG9neU9w
ZXJhdG9yVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZFT2Zmc2V0OjpGRU9mZnNldChGaWx0ZXIqIGZpbHRlciwgZmxvYXQgZHgsIGZsb2F0IGR5KQor
RkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCiAg
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9keChkeCkKICAgICAsIG1fZHkoZHkp
CiB7CiB9CiAKLVJlZjxGRU9mZnNldD4gRkVPZmZzZXQ6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwg
ZmxvYXQgZHgsIGZsb2F0IGR5KQorUmVmPEZFT2Zmc2V0PiBGRU9mZnNldDo6Y3JlYXRlKEZpbHRl
ciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVPZmZzZXQoZmlsdGVyLCBkeCwgZHkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgJKHJldmlzaW9uIDE4
MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZFT2Zmc2V0IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRlciosIGZsb2F0IGR4LCBmbG9hdCBkeSk7
CisgICAgc3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRlciYsIGZsb2F0IGR4LCBmbG9h
dCBkeSk7CiAKICAgICBmbG9hdCBkeCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RHgoZmxvYXQpOwpA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBGRU9mZnNldChGaWx0ZXIqLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIEZF
T2Zmc2V0KEZpbHRlciYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAKICAgICBmbG9hdCBtX2R4Owog
ICAgIGZsb2F0IG1fZHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCShyZXZp
c2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxh
ckxpZ2h0aW5nKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxv
YXQgc3VyZmFjZVNjYWxlLAorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmco
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNl
U2NhbGUsCiAgICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVu
dCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFks
IFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogICAgIDogRkVMaWdodGluZyhm
aWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwg
c3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdo
dGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLAorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxp
Z2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LAogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFy
TGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyKiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCwgZmxvYXQsCisgICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+
IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKICAgICAgICAgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogICAgIHZpcnR1YWwg
fkZFU3BlY3VsYXJMaWdodGluZygpOwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFU3BlY3VsYXJMaWdodGluZyhG
aWx0ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
UGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXIm
LCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1Jl
ZlB0cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRVRpbGU6OkZFVGlsZShGaWx0ZXIqIGZpbHRlcikK
K0ZFVGlsZTo6RkVUaWxlKEZpbHRlciYgZmlsdGVyKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
cikKIHsKIH0KIAotUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIpCitS
ZWY8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRVRpbGUoZmlsdGVyKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXIqIGZpbHRlcik7CisgICAgc3RhdGljIFJlZjxG
RVRpbGU+IGNyZWF0ZShGaWx0ZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwpAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGRVRpbGUo
RmlsdGVyKik7CisgICAgRkVUaWxlKEZpbHRlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kQW1wbGl0
dWRlID0gMTY4MDcKIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kUSA9IDEyNzc3MzsgLy8gbSAvIGEK
IHN0YXRpYyBjb25zdCBpbnQgc19yYW5kUiA9IDI4MzY7IC8vIG0gJSBhCiAKLUZFVHVyYnVsZW5j
ZTo6RkVUdXJidWxlbmNlKEZpbHRlciogZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9h
dCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBm
bG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorRkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2Uo
RmlsdGVyJiBmaWx0ZXIsIFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lY
LCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wg
c3RpdGNoVGlsZXMpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV90eXBlKHR5
cGUpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKQpAQCAtNTksNyArNTks
NyBAQCBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXIqIGZpbHRlCiB7CiB9CiAKLVJl
ZjxGRVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBUdXJi
dWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5j
eVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorUmVmPEZF
VHVyYnVsZW5jZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFR1cmJ1bGVu
Y2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwg
aW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRkVUdXJidWxlbmNlKGZpbHRlciwgdHlwZSwgYmFzZUZyZXF1ZW5j
eVgsIGJhc2VGcmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIGVudW0gVHVyYnVsZW5jZVR5cGUgewogCiBjbGFzcyBGRVR1cmJ1bGVu
Y2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFVHVy
YnVsZW5jZT4gY3JlYXRlKEZpbHRlciosIFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGlu
dCwgZmxvYXQsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8RkVUdXJidWxlbmNlPiBjcmVhdGUoRmls
dGVyJiwgVHVyYnVsZW5jZVR5cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7CiAK
ICAgICBUdXJidWxlbmNlVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRUeXBlKFR1cmJ1
bGVuY2VUeXBlKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZv
aWQgZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyopOwogCi0gICAgRkVUdXJi
dWxlbmNlKEZpbHRlciosIFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGludCwgZmxvYXQs
IGJvb2wpOworICAgIEZFVHVyYnVsZW5jZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQs
IGZsb2F0LCBpbnQsIGZsb2F0LCBib29sKTsKIAogICAgIGlubGluZSB2b2lkIGluaXRQYWludChQ
YWludGluZ0RhdGEmKTsKICAgICBmbG9hdCBub2lzZTJEKGludCBjaGFubmVsLCBQYWludGluZ0Rh
dGEmLCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiAx
ODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRmlsdGVyRWZmZWN0OwotCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWx0ZXI+IHsKIHB1YmxpYzoKICAgICBGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgZmxvYXQgZmlsdGVyU2NhbGUgPSAxKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IGtNYXhG
aWx0ZXJBcmVhID0gNDA5NiAqIDQwOTY7CiAKLUZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KEZp
bHRlciogZmlsdGVyKQorRmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QoRmlsdGVyJiBmaWx0ZXIp
CiAgICAgOiBtX2FscGhhSW1hZ2UoZmFsc2UpCiAgICAgLCBtX2ZpbHRlcihmaWx0ZXIpCiAgICAg
LCBtX2hhc1goZmFsc2UpCkBAIC00OSw3ICs0OSw2IEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZm
ZWN0KEZpbHRlciogZmlsdGUKICAgICAsIG1fb3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNl
TGluZWFyUkdCKQogICAgICwgbV9yZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0Ip
CiB7Ci0gICAgQVNTRVJUKG1fZmlsdGVyKTsKIH0KIAogRmlsdGVyRWZmZWN0Ojp+RmlsdGVyRWZm
ZWN0KCkKQEAgLTI4Myw3ICsyODIsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0lt
YWdlQnVmZmVyCiAgICAgaWYgKG1fb3BlbkNMSW1hZ2VSZXN1bHQpCiAgICAgICAgIHJldHVybiBv
cGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIoKTsKICNlbmRpZgotICAgIG1faW1hZ2VCdWZmZXJSZXN1
bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2Zp
bHRlci0+ZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci0+cmVuZGVy
aW5nTW9kZSgpKTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9y
ZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogICAgIEludFJlY3Qg
ZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsK
ICAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1faW1hZ2VCdWZm
ZXJSZXN1bHQtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVkLCBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJ
bnRQb2ludCgpKTsKQEAgLTMyNCw3ICszMjMsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBGaWx0ZXJFZmZlCiB7CiAgICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsK
ICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwotICAgIHNjYWxlZFNpemUuc2Nh
bGUobV9maWx0ZXItPmZpbHRlclNjYWxlKCkpOworICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURh
dGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChzY2FsZWRTaXplLndp
ZHRoKCkgKiBzY2FsZWRTaXplLmhlaWdodCgpICogNCk7CiAgICAgY29weVVubXVsdGlwbGllZElt
YWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7CiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNl
KCk7CkBAIC0zMzQsNyArMzMzLDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmls
dGVyRWZmZQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7CiAgICAgSW50
U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmls
dGVyLT5maWx0ZXJTY2FsZSgpKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICog
c2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1h
Z2VEYXRhLmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKQEAg
LTM0Myw5ICszNDIsOSBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
CiBpbmxpbmUgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzKFVpbnQ4Q2xhbXBlZEFy
cmF5KiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICBJbnRSZWN0IHNjYWxlZFJlY3QocmVjdCk7Ci0gICAgc2NhbGVkUmVj
dC5zY2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAgc2NhbGVkUmVjdC5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBJbnRTaXplIHNjYWxlZFBhaW50U2l6ZShtX2Fi
c29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgc2NhbGVkUGFpbnRTaXplLnNjYWxlKG1fZmls
dGVyLT5maWx0ZXJTY2FsZSgpKTsKKyAgICBzY2FsZWRQYWludFNpemUuc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0
cmFuc3BhcmVudCBibGFjaywgaWYgbm90IGVudGlyZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4K
ICAgICBpZiAoc2NhbGVkUmVjdC54KCkgPCAwIHx8IHNjYWxlZFJlY3QueSgpIDwgMCB8fCBzY2Fs
ZWRSZWN0Lm1heFgoKSA+IHNjYWxlZFBhaW50U2l6ZS53aWR0aCgpIHx8IHNjYWxlZFJlY3QubWF4
WSgpID4gc2NhbGVkUGFpbnRTaXplLmhlaWdodCgpKQpAQCAtNDAwLDcgKzM5OSw3IEBAIHZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwog
ICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkp
OwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsK
KyAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAg
ICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZChpbnB1dFNpemUud2lkdGgoKSAqIGlucHV0U2l6ZS5oZWlnaHQo
KSAqIDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV9w
cmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpOwpAQCAtNDM2LDcgKzQzNSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZEltYWcKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXpl
VmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNp
emUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNj
YWxlKG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgICAgIGlucHV0U2l6ZS5zY2Fs
ZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoaW5wdXRT
aXplLndpZHRoKCkgKiBpbnB1dFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIqIHNvdXJjZUNvbXBvbmVudCA9IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRh
dGEoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0g
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKQEAgLTQ2MSw3ICs0NjAsNyBAQCBJ
bWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1CiAgICAgQVNTRVJUKCFoYXNS
ZXN1bHQoKSk7CiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXItPmZpbHRlclNjYWxlKCksIG1f
cmVzdWx0Q29sb3JTcGFjZSwgbV9maWx0ZXItPnJlbmRlcmluZ01vZGUoKSk7CisgICAgbV9pbWFn
ZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgbV9maWx0
ZXIucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb250ZXh0KCkp
OwpAQCAtNDc3LDcgKzQ3Niw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZVUKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KSk7Ci0gICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAg
cmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVzdWx0U2l6ZS53aWR0aCgpICogcmVzdWx0U2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIHJldHVy
biBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQpAQCAtNDkxLDcgKzQ5MCw3IEBA
IFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVAKICAgICBpZiAobV9hYnNv
bHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFNpemUg
cmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgcmVzdWx0U2l6ZS5z
Y2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlc3VsdFNpemUud2lkdGgoKSAq
IHJlc3VsdFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IGVmZmVjdEJvdW5kYXJpZXMoKSBjb25zdCB7IHJldHVybiBtX2VmZmVjdEJvdW5kYXJpZXM7
IH0KICAgICB2b2lkIHNldEVmZmVjdEJvdW5kYXJpZXMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RC
b3VuZGFyaWVzKSB7IG1fZWZmZWN0Qm91bmRhcmllcyA9IGVmZmVjdEJvdW5kYXJpZXM7IH0KIAot
ICAgIEZpbHRlciYgZmlsdGVyKCkgeyBBU1NFUlQobV9maWx0ZXIpOyByZXR1cm4gKm1fZmlsdGVy
OyB9CisgICAgRmlsdGVyJiBmaWx0ZXIoKSB7IHJldHVybiBtX2ZpbHRlcjsgfQogCiAgICAgYm9v
bCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9CiAgICAg
dm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRzID0gdmFs
dWU7IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKENvbG9yU3BhY2UpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRmlsdGVyRWZmZWN0
KEZpbHRlciopOworICAgIEZpbHRlckVmZmVjdChGaWx0ZXImKTsKIAogICAgIEltYWdlQnVmZmVy
KiBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBjcmVh
dGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhlIG1heGltdW0gc2l6ZSBvZiBhIGZpbHRlciBwcmltaXRpdmUuIEluIFNWRyB0
aGlzIGlzIHRoZSBwcmltaXRpdmUgc3VicmVnaW9uIGluIGFic29sdXRlIGNvb3JkaW5hdGUgc3Bh
Y2UuCiAgICAgLy8gVGhlIGFic29sdXRlIHBhaW50IHJlY3Qgc2hvdWxkIG5ldmVyIGJlIGJpZ2dl
ciB0aGFuIG1fbWF4RWZmZWN0UmVjdC4KICAgICBGbG9hdFJlY3QgbV9tYXhFZmZlY3RSZWN0Owot
ICAgIEZpbHRlciogbV9maWx0ZXI7CisgICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICAKIHByaXZh
dGU6CiAgICAgaW5saW5lIHZvaWQgY29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDkgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNv
dXJjZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyKQorUmVmPFNvdXJj
ZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCogc291cmNlRWZmZWN0KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQWxwaGEoZmlsdGVyKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQWxwaGEoc291cmNlRWZmZWN0KSk7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKQpAQCAtNDIsMjUgKzQyLDIz
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU291cmNlQWxwaGE6OmVmZmVjdE4KIAogdm9pZCBTb3Vy
Y2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewotICAgIEZpbHRlciYgZmls
dGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5z
b3VyY2VJbWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKLSAg
ICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOworICAg
IGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIHNldEFi
c29sdXRlUGFpbnRSZWN0KGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKIH0K
IAogdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIEZp
bHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAh
ZmlsdGVyLnNvdXJjZUltYWdlKCkpCisgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0
dXJuOworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7CiAKLSAgICBzZXRJc0FscGhhSW1hZ2UodHJ1ZSk7CisgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VCdWZmZXIoKTsKKyAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCks
IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZpbHRlckNvbnRleHQtPmZp
bGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLnNvdXJjZUltYWdlKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwor
ICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZv
aWQgU291cmNlQWxwaGE6OmR1bXAoKQpAQCAtNzQsNCArNzIsMTEgQEAgVGV4dFN0cmVhbSYgU291
cmNlQWxwaGE6OmV4dGVybmFsUmVwcmVzZQogICAgIHJldHVybiB0czsKIH0KIAorU291cmNlQWxw
aGE6OlNvdXJjZUFscGhhKEZpbHRlckVmZmVjdCogc291cmNlRWZmZWN0KQorICAgIDogRmlsdGVy
RWZmZWN0KHNvdXJjZUVmZmVjdC0+ZmlsdGVyKCkpCit7CisgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShzb3VyY2VFZmZlY3QtPm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgaW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKHNvdXJjZUVmZmVjdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUFscGhhIDog
cHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6ICAgICAgICAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTb3VyY2VBbHBoYT4gY3JlYXRlKEZpbHRlciopOworICAgIHN0YXRpYyBSZWY8U291cmNl
QWxwaGE+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGVmZmVjdE5hbWUoKTsKIApAQCAtNDQsMTAgKzQ0LDcgQEAgcHVibGljOiAgICAgICAg
CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTb3VyY2VBbHBoYShG
aWx0ZXIqIGZpbHRlcikKLSAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQotICAgIHsKLSAg
ICB9CisgICAgZXhwbGljaXQgU291cmNlQWxwaGEoRmlsdGVyRWZmZWN0Kik7CiB9OwogCiB9IC8v
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKEZpbHRlciogZmlsdGVyKQorUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNy
ZWF0ZShGaWx0ZXImIGZpbHRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUdy
YXBoaWMoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYyhm
aWx0ZXIpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNv
dXJjZUdyYXBoaWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNvdXJjZUdyYXBoaWM+IGNyZWF0ZShGaWx0ZXIqKTsKKyAgICBz
dGF0aWMgUmVmPFNvdXJjZUdyYXBoaWM+IGNyZWF0ZShGaWx0ZXImKTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGVmZmVjdE5hbWUoKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6ICAgICAgICAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNv
dXJjZUdyYXBoaWMoRmlsdGVyKiBmaWx0ZXIpCisgICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZp
bHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgIHsKICAgICAgICAgc2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAkocmV2aXNp
b24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTcyLDcg
KzcxLDcgQEAgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcgogICAgICwg
bV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoZmFsc2UpCiB7CiAgICAgc2V0RmlsdGVyUmVzb2x1
dGlvbihGbG9hdFNpemUoMSwgMSkpOwotICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdyYXBo
aWM6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3NvdXJjZUdyYXBoaWMgPSBTb3VyY2VHcmFwaGljOjpj
cmVhdGUoKnRoaXMpOwogfQogCiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVmZmVjdFJl
bmRlcmVyKCkKQEAgLTExMywxNSArMTEyLDEwIEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBG
aWx0ZXJFZmZlY3RSZW4KIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAg
IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBTb3VyY2VBbHBoYS4gUmlnaHQg
bm93LCB3ZSdyZQotICAgIC8vIHVzaW5nIHRoZSBhbHBoYSBvZiB0aGUgb3JpZ2luYWwgaW5wdXQg
bGF5ZXIsIHdoaWNoIGlzIG9idmlvdXNseQotICAgIC8vIHdyb25nLiBXZSBzaG91bGQgcHJvYmFi
bHkgYmUgZXh0cmFjdGluZyB0aGUgYWxwaGEgZnJvbSB0aGUgCi0gICAgLy8gcHJldmlvdXNFZmZl
Y3QsIGJ1dCB0aGlzIHJlcXVpcmVzIHNvbWUgbW9yZSBwcm9jZXNzaW5nLiAgCi0gICAgLy8gVGhp
cyBtYXkgbmVlZCBhIHNwZWMgY2xhcmlmaWNhdGlvbi4KLSAgICBhdXRvIGJ1aWxkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KHByZXZpb3VzRWZmZWN0LCBTb3VyY2VBbHBo
YTo6Y3JlYXRlKHRoaXMpKTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0ZpbHRlckJ1aWxkZXI+KHByZXZpb3VzRWZmZWN0KTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0
RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz4oKmZpbHRlcikpIHsKLSAgICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWlsZChi
dWlsZGVyLmdldCgpLCB0aGlzKTsKKyAgICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWls
ZChidWlsZGVyLmdldCgpLCAqdGhpcyk7CiAgICAgICAgIGlmICghZWZmZWN0KQogICAgICAgICAg
ICAgY29udGludWU7CiAKQEAgLTE3Niw3ICsxNzAsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjpidWlsZChSZW5kZXJFCiAKICAgICAgICAgICAgIGxhc3RNYXRyaXhSb3coaW5wdXRQYXJh
bWV0ZXJzKTsKIAotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAg
ICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhf
VFlQRV9NQVRSSVgsIGlucHV0UGFyYW1ldGVycyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKQEAgLTIwNCwyMSAr
MTk4LDIxIEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlckUKIAogICAg
ICAgICAgICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwogCi0gICAgICAgICAgICBl
ZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01B
VFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRy
aXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0
ZXJzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURTogewogICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgVmVjdG9y
PGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7CiAgICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkp
KTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNP
TE9STUFUUklYX1RZUEVfU0FUVVJBVEUsIGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgICAgICBl
ZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9T
QVRVUkFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CiAgICAgICAgICAg
ICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9
IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlv
bik7CiAgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKICAgICAgICAg
ICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1h
dHJpeE9wZXJhdGlvbi5hbW91bnQoKSkpOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIGlucHV0UGFy
YW1ldGVycyk7CisgICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIGlucHV0UGFyYW1ldGVycyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
SU5WRVJUOiB7CkBAIC0yMzEsNyArMjI1LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
YnVpbGQoUmVuZGVyRQogICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi50YWJsZVZhbHVlcyA9
IHRyYW5zZmVyUGFyYW1ldGVyczsKIAogICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJh
bnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29t
cG9uZW50VHJhbnNmZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJG
dW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7
CkBAIC0yNDQsNyArMjM4LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVu
ZGVyRQogICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi50YWJsZVZhbHVlcyA9IHRyYW5zZmVy
UGFyYW1ldGVyczsKIAogICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxs
RnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVh
dGUodGhpcywgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgdHJhbnNm
ZXJGdW5jdGlvbik7CisgICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpj
cmVhdGUoKnRoaXMsIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIHRy
YW5zZmVyRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKQEAgLTI1NSw3ICsyNDksNyBAQCBi
b29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFCiAgICAgICAgICAgICB0cmFu
c2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9IDA7CiAKICAgICAgICAgICAgIENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlKHRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rp
b24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CisgICAgICAgICAgICBlZmZlY3Qg
PSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoKnRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRy
YW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09O
VFJBU1Q6IHsKQEAgLTI2NywxOCArMjYxLDE4IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkKFJlbmRlckUKICAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0g
LTAuNSAqIGFtb3VudCArIDAuNTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJG
dW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlv
biwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3BlcmF0aW9u
ID0gZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAg
ICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJh
dGlvbi5zdGREZXZpYXRpb24oKSwgMCk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUdhdXNzaWFu
Qmx1cjo6Y3JlYXRlKHRoaXMsIHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb25zdW1lciA9
PSBGaWx0ZXJQcm9wZXJ0eSA/IEVER0VNT0RFX05PTkUgOiBFREdFTU9ERV9EVVBMSUNBVEUpOwor
ICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSgqdGhpcywgc3RkRGV2
aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09IEZpbHRlclByb3BlcnR5ID8gRURHRU1P
REVfTk9ORSA6IEVER0VNT0RFX0RVUExJQ0FURSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKICAgICAg
ICAgICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24mIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBk
b3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAg
ICAgICAgICAgZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUodGhpcywgZHJvcFNoYWRvd09w
ZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRpb24o
KSwKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKCp0aGlzLCBkcm9w
U2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERl
dmlhdGlvbigpLAogICAgICAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9w
U2hhZG93T3BlcmF0aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNp
b24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCiAjaW5jbHVkZSAiU291cmNl
R3JhcGhpYy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MiwxNiArNzEsMTYgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVtb3ZlQ2xpZQogICAgIG1hcmtDbGllbnRGb3JJ
bnZhbGlkYXRpb24oY2xpZW50LCBtYXJrRm9ySW52YWxpZGF0aW9uID8gQm91bmRhcmllc0ludmFs
aWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZl
cyhTVkdGaWx0ZXIqIGZpbHRlcikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWls
ZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpbHRlciYg
ZmlsdGVyKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDb3VudENoaWxk
Tm9kZXMgPSAyMDA7CiAgICAgaWYgKGZpbHRlckVsZW1lbnQoKS5jb3VudENoaWxkTm9kZXMoKSA+
IG1heENvdW50Q2hpbGROb2RlcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBGbG9h
dFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXItPnRhcmdldEJvdW5kaW5nQm94KCk7Cisg
ICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94
KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKGZpbHRlciksIFNvdXJjZUFscGhhOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWls
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpj
cmVhdGUoZmlsdGVyKSk7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihmaWx0ZXJFbGVtZW50KCkpKSB7
CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IGVsZW1lbnQuYnVpbGQoYnVp
bGRlci5nZXQoKSwgZmlsdGVyKTsKICAgICAgICAgaWYgKCFlZmZlY3QpIHsKQEAgLTE1MSw3ICsx
NTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAgICAgZmls
dGVyRGF0YS0+ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRGF0YS0+c2hlYXJGcmVl
QWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlRHJhd2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdC
b3gsIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMsIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSk7CiAK
ICAgICAvLyBDcmVhdGUgYWxsIHJlbGV2YW50IGZpbHRlciBwcmltaXRpdmVzLgotICAgIGZpbHRl
ckRhdGEtPmJ1aWxkZXIgPSBidWlsZFByaW1pdGl2ZXMoZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgp
KTsKKyAgICBmaWx0ZXJEYXRhLT5idWlsZGVyID0gYnVpbGRQcmltaXRpdmVzKCpmaWx0ZXJEYXRh
LT5maWx0ZXIpOwogICAgIGlmICghZmlsdGVyRGF0YS0+YnVpbGRlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qg
cmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZFByaW1pdGl2ZXMoU1ZHRmls
dGVyKikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxk
UHJpbWl0aXZlcyhTVkdGaWx0ZXImKSBjb25zdDsKIAogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUgZmlsdGVyVW5pdHMoKSBjb25zdCB7IHJldHVybiBmaWx0ZXJFbGVtZW50KCkuZmlsdGVy
VW5pdHMoKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMo
KSBjb25zdCB7IHJldHVybiBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNyArNDg3
LDcgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYQogICAgICAgICAv
LyBDcmVhdGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1
aWxkZXIuCiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7CiAgICAgICAgIFJlZlB0cjxTVkdG
aWx0ZXI+IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCks
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
KyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoKmR1bW15
RmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGJ1
aWxkZXItPmxhc3RFZmZlY3QoKSkKICAgICAgICAgICAgICAgICBsYXN0RWZmZWN0LT5leHRlcm5h
bFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsMjAgKzEwMiwyMCBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
QmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0
ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjIoKSk7CiAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOwogICAgIEZpbHRlckVm
ZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBp
bnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQo
aW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAgIAotICAgIHJldHVy
biBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUJsZW5kRWxlbWVudCkKICAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0
dHJpYnUKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYg
ZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPGZsb2F0PiBmaWx0ZXJWYWx1
ZXM7CiAgICAgQ29sb3JNYXRyaXhUeXBlIGZpbHRlclR5cGUgPSB0eXBlKCk7CkBAIC0xMzksMTIg
KzEzOSwxMiBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpCiAgICAg
ICAgIGlmICgoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYICYmIHNpemUg
IT0gMjApCiAgICAgICAgICAgICB8fCAoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVf
SFVFUk9UQVRFICYmIHNpemUgIT0gMSkKICAgICAgICAgICAgIHx8IChmaWx0ZXJUeXBlID09IEZF
Q09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSAmJiBzaXplICE9IDEpKQotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0
ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVj
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KQogICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50OjpwYXJzCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKQEAgLTg4LDcg
Kzg4LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VAogICAgIAog
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNy
ZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOwor
ICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRklYTUU6IHN2
Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzOCwyMCArMTM4LDIwIEBAIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpzdmdBdHRyaWJ1dGUKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwogICAgIAogICAgIGlmICghaW5wdXQx
IHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUo
ZmlsdGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKICAgICBGaWx0
ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAg
ICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBw
ZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKLSAgICBy
ZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0OwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiAx
ODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb3NpdGVFbGVtZW50KQogICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24g
MTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDEyICsyMzEsMTIgQEAgdm9pZCBTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICgh
aW5wdXQxKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpbnQgb3JkZXJYVmFsdWUgPSBvcmRlclgoKTsKICAgICBpbnQgb3JkZXJZVmFsdWUgPSBvcmRl
clkoKTsKQEAgLTI0NiwyMiArMjQ2LDIyIEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RUNvbnZvbHZlTWEKICAgICB9CiAgICAgLy8gU3BlYyBzYXlzIG9yZGVyIG11c3QgYmUgPiAwLiBC
YWlsIGlmIGl0IGlzIG5vdC4KICAgICBpZiAob3JkZXJYVmFsdWUgPCAxIHx8IG9yZGVyWVZhbHVl
IDwgMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFNW
R051bWJlckxpc3QmIGtlcm5lbE1hdHJpeCA9IHRoaXMtPmtlcm5lbE1hdHJpeCgpOwogICAgIGlu
dCBrZXJuZWxNYXRyaXhTaXplID0ga2VybmVsTWF0cml4LnNpemUoKTsKICAgICAvLyBUaGUgc3Bl
YyBzYXlzIHRoaXMgaXMgYSByZXF1aXJlbWVudCwgYW5kIHNob3VsZCBiYWlsIG91dCBpZiBmYWls
cwogICAgIGlmIChvcmRlclhWYWx1ZSAqIG9yZGVyWVZhbHVlICE9IGtlcm5lbE1hdHJpeFNpemUp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCB0
YXJnZXRYVmFsdWUgPSB0YXJnZXRYKCk7CiAgICAgaW50IHRhcmdldFlWYWx1ZSA9IHRhcmdldFko
KTsKICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRYQXR0cikgJiYgKHRhcmdl
dFhWYWx1ZSA8IDAgfHwgdGFyZ2V0WFZhbHVlID49IG9yZGVyWFZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhl
IGRlZmF1bHQgdmFsdWUgaXM6IHRhcmdldFggPSBmbG9vciAoIG9yZGVyWCAvIDIgKSkKICAgICBp
ZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dGFyZ2V0WEF0dHIpKQogICAgICAgICB0YXJnZXRY
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvcmRlclhWYWx1ZSAvIDIpKTsKICAgICBp
ZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRZQXR0cikgJiYgKHRhcmdldFlWYWx1ZSA8
IDAgfHwgdGFyZ2V0WVZhbHVlID49IG9yZGVyWVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhlIGRlZmF1bHQg
dmFsdWUgaXM6IHRhcmdldFkgPSBmbG9vciAoIG9yZGVyWSAvIDIgKSkKICAgICBpZiAoIWhhc0F0
dHJpYnV0ZShTVkdOYW1lczo6dGFyZ2V0WUF0dHIpKQogICAgICAgICB0YXJnZXRZVmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvcmRlcllWYWx1ZSAvIDIpKTsKQEAgLTI3NCwxMSArMjc0
LDExIEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWEKICAgICAgICAg
a2VybmVsVW5pdExlbmd0aFlWYWx1ZSA9IDE7CiAgICAgfQogICAgIGlmIChrZXJuZWxVbml0TGVu
Z3RoWFZhbHVlIDw9IDAgfHwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSA8PSAwKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBmbG9hdCBkaXZpc29yVmFs
dWUgPSBkaXZpc29yKCk7CiAgICAgaWYgKGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZGl2aXNvckF0
dHIpICYmICFkaXZpc29yVmFsdWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZGl2aXNvckF0dHIpKSB7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2VybmVsTWF0cml4U2l6ZTsgKytpKQogICAg
ICAgICAgICAgZGl2aXNvclZhbHVlICs9IGtlcm5lbE1hdHJpeC5hdChpKTsKQEAgLTI5MSw3ICsy
OTEsNyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hCiAgICAgICAg
ICAgICAgICAgICAgIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUp
LCBlZGdlTW9kZSgpLAogICAgICAgICAgICAgICAgICAgICBGbG9hdFBvaW50KGtlcm5lbFVuaXRM
ZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtl
cm5lbE1hdHJpeCk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsK
LSAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBvcmRlclhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb3JkZXJZSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsMjcgKzE3MiwyNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6bGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQor
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwogCiAgICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UgPSBTVkdGRUxp
Z2h0RWxlbWVudDo6ZmluZExpZ2h0U291cmNlKHRoaXMpOwogICAgIGlmICghbGlnaHRTb3VyY2Up
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBD
b2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigp
OwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6
OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgbGlnaHRT
b3VyY2UucmVsZWFzZSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1
dDEpOwotICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXImKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5l
bFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMjAgKzEyMSwyMCBAQCB2b2lkIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6c3ZnQXR0CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAK
ICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURp
c3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5l
bFNlbGVjdG9yKCksIHNjYWxlKCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZl
Y3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNh
cGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKICAgICBpbnB1dEVm
ZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAgIAotICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOwor
ICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24g
MTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTQgKzExOSwxNCBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OnN2Z0F0dHJpYnV0CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwg
c3RkRGV2aWF0aW9uWSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAKQEAgLTEzNSwxMSArMTM1LDExIEBAIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3cKIAogICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1
dDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwg
c3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFj
aXR5KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJl
dHVybiBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24g
MTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImKSBvdmVycmlkZTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1NCwx
MSBAQCBib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
JiBmaWx0ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHJl
bmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwcml2
YXRlOgogICAgIFNWR0ZFRmxvb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTkgKzEx
MywxOSBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmliCiAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0
aW9uWSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0
ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsK
ICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBl
ZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDE4
MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2
aWF0aW9uWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGRE
ZXZpYXRpb25ZSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQwogICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBhcmVudFJl
bmRlcmVyKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYgZmlsdGVyKQogewogICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gRkVJ
bWFnZTo6Y3JlYXRlV2l0aEltYWdlKGZpbHRlciwgbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihyZW5kZXJlcigpKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291
cmNlUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VF
bGVtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVNZXJnZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZp
bHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBG
aWx0ZXJFZmZlY3RWZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsK
QEAgLTU1LDcgKzU1LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVt
ZQogICAgIGlmIChtZXJnZUlucHV0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVN
ZXJnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwyMSArMTMyLDIxIEBA
IHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAg
IGZsb2F0IHhSYWRpdXMgPSByYWRpdXNYKCk7CiAgICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1ko
KTsKIAogICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoeFJhZGl1cyA8IDAgfHwgeVJhZGl1cyA8IDApCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3Io
KSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQo
aW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHJhZGl1c1lJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE2ICs4MiwxNiBAQCB2
b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
IH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlu
cHV0MSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4
KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0g
ICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
b3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVP
ZmZzZXRFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDI3ICsx
ODMsMjcgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpsaWdodAogICAgIHBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1
dDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJl
ZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UgPSBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExp
Z2h0U291cmNlKHRoaXMpOwogICAgIGlmICghbGlnaHRTb3VyY2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRl
cmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOwogCiAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5p
dExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgbGlnaHRTb3VyY2UucmVsZWFzZSgpKTsK
ICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBl
ZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2
aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlk
ZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRl
bnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5n
dGhZSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNiArNjksMTYgQEAgdm9pZCBTVkdGRVRp
bGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOwor
ICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMTAg
KzEzOCwxMCBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0CiAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAg
fHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gRkVUdXJidWxlbmNlOjpjcmVhdGUoZmlsdGVyLCB0eXBl
KCksIGJhc2VGcmVxdWVuY3lYKCksIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2ZXMoKSwgc2Vl
ZCgpLCBzdGl0Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24g
MTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRl
OwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVu
dGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0
cmluZy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MCw3ICszOSw3IEBAIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXQK
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRlcyhGaWx0ZXJFZmZlY3QqKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZp
bHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpID0gMDsKICAgICAv
LyBSZXR1cm5zIHRydWUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9s
ZCBvbmUuCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8SW1hZ2U+IGlt
YWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQor
RkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKICAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2ltYWdlKGltYWdlKQogICAgICwgbV9kb2N1bWVu
dCgwKQpAQCAtNDQsNyArNDQsNyBAQCBGRUltYWdlOjpGRUltYWdlKEZpbHRlciogZmlsdGVyLCBQ
YXNzUmVmCiB7CiB9CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRl
ciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyKQogICAgICwgbV9kb2N1bWVudCgmZG9jdW1lbnQpCiAgICAgLCBtX2hyZWYoaHJlZikK
QEAgLTUyLDE0ICs1MiwxNCBAQCBGRUltYWdlOjpGRUltYWdlKEZpbHRlciogZmlsdGVyLCBEb2N1
bWVuCiB7CiB9CiAKLVBhc3NSZWZQdHI8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdl
KEZpbHRlciogZmlsdGVyLCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3QgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdl
OjpjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGRUltYWdlKGZpbHRlciwgaW1hZ2UsIHByZXNlcnZlQXNwZWN0
UmF0aW8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwgaW1hZ2Us
IHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KIAotUGFzc1JlZlB0cjxGRUltYWdlPiBGRUltYWdl
OjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJl
c2VydmVBc3BlY3RSYXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVm
ZXJlbmNlKEZpbHRlciYgZmlsdGVyLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFSW1hZ2UoZmlsdGVyLCBkb2N1bWVudCwgaHJl
ZiwgcHJlc2VydmVBc3BlY3RSYXRpbykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1h
Z2UoZmlsdGVyLCBkb2N1bWVudCwgaHJlZiwgcHJlc2VydmVBc3BlY3RSYXRpbykpOwogfQogCiB2
b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9u
IDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBjbGFzcyBSZW5kZXJFbGVtZW50
OwogCiBjbGFzcyBGRUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciosIFBhc3NS
ZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXIqLCBEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKKyAg
ICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0ZXImLCBSZWZQdHI8SW1h
Z2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CisgICAgc3RhdGljIFJlZjxGRUlt
YWdlPiBjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYsIERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShPUEVOQ0wpCkBA
IC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+RkVJ
bWFnZSgpIHsgfQotICAgIEZFSW1hZ2UoRmlsdGVyKiwgUGFzc1JlZlB0cjxJbWFnZT4sIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKLSAgICBGRUltYWdlKEZpbHRlciosIERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOworICAgIEZF
SW1hZ2UoRmlsdGVyJiwgUmVmUHRyPEltYWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
byYpOworICAgIEZFSW1hZ2UoRmlsdGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAgICAgUmVuZGVyRWxlbWVudCogcmVmZXJlbmNl
ZFJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE5ICsyMywxNyBAQAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNvdXJj
ZUFscGhhLmgiCiAjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHRmlsdGVyQnVpbGRlcjo6U1ZHRmlsdGVyQnVpbGRlcihQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYywgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHNv
dXJjZUFscGhhKQorU1ZHRmlsdGVyQnVpbGRlcjo6U1ZHRmlsdGVyQnVpbGRlcihSZWZQdHI8Rmls
dGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKQogewogICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNv
dXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSwgc291cmNlR3JhcGhpYyk7Ci0gICAgbV9idWlsdGlu
RWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgc291cmNlQWxwaGEpOworICAg
IG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCksIFNvdXJjZUFs
cGhhOjpjcmVhdGUoc291cmNlR3JhcGhpYy5nZXQoKSkpOwogICAgIGFkZEJ1aWx0aW5FZmZlY3Rz
KCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewogICAgICAgICBtX2xhc3RFZmZlY3QgPSBl
ZmZlY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIAotICAg
IFNWR0ZpbHRlckJ1aWxkZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBzb3VyY2VBbHBoYSk7CisgICAgU1ZHRmlsdGVyQnVp
bGRlcihSZWZQdHI8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKTsKIAotICAgIHZvaWQgYWRk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0Pik7CisgICAg
dm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4pOwog
CiAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQp
IGNvbnN0OwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdEVmZmVjdC5nZXQoKTsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjMxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQt
MjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBTVkdGaWx0ZXJCdWlsZGVyIHNob3VsZCBkcml2ZSB0aGUgYnVpbHRpbiBzb3VyY2VBbHBoYSBm
cm9tIHRoZSBwYXNzZWQgc291cmNlR3JhcGhpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIHRoZSBTb3VyY2VBbHBoYSBpcyBkcml2ZW4gZnJv
bSBsYXN0IGFwcGxpZWQgRmlsdGVyRWZmZWN0LgorCisgICAgICAgICogc3ZnL2ZpbHRlcnMvc291
cmNlQWxwaGEtaW5wdXQtZmlsdGVyLWVmZmVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZmlsdGVycy9zb3VyY2VBbHBoYS1pbnB1dC1maWx0ZXItZWZmZWN0Lmh0bWw6IEFk
ZGVkLgorCiAyMDE1LTA0LTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFRlc3QgY29tcG9zaXRpbmcvc2Nyb2xsaW5nL3RvdWNoLXNjcm9sbC10by1jbGlw
Lmh0bWwgZmFpbHMgaW4gV0sxCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zb3VyY2VB
bHBoYS1pbnB1dC1maWx0ZXItZWZmZWN0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc291cmNlQWxwaGEtaW5wdXQtZmlsdGVyLWVmZmVjdC1leHBl
Y3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc291cmNl
QWxwaGEtaW5wdXQtZmlsdGVyLWVmZmVjdC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxl
PgorICAgIGRpdiB7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGltZTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdj48L2Rpdj4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9m
aWx0ZXJzL3NvdXJjZUFscGhhLWlucHV0LWZpbHRlci1lZmZlY3QuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zb3VyY2VBbHBoYS1pbnB1dC1maWx0ZXItZWZmZWN0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zb3VyY2VBbHBo
YS1pbnB1dC1maWx0ZXItZWZmZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsK
KyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgfQorICAgICN0ZXN0IHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKKyAgICAgIC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5KDApIHVybCgjZik7CisgICAgICBm
aWx0ZXI6IG9wYWNpdHkoMCkgdXJsKCNmKTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGltZSI+PC9kaXY+CisgIDxk
aXYgaWQ9InRlc3QiPjwvZGl2PgorICA8c3ZnIGhlaWdodD0iMCI+CisgICAgPGZpbHRlciBpZD0i
ZiI+CisgICAgICA8ZmVNZXJnZT4KKyAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VBbHBo
YSIvPgorICAgICAgPC9mZU1lcmdlPgorICAgIDwvZmlsdGVyPgorICA8L3N2Zz4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251717</attachid>
            <date>2015-04-26 18:44:41 -0700</date>
            <delta_ts>2015-04-26 20:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144137-20150426184334.patch</filename>
            <type>text/plain</type>
            <size>102825</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAxNS0wNC0yMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0ZpbHRl
ckJ1aWxkZXIgc2hvdWxkIGRyaXZlIHRoZSBidWlsdGluIHNvdXJjZUFscGhhIGZyb20gdGhlIHBh
c3NlZCBzb3VyY2VHcmFwaGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBUaGUgU291cmNlQWxwaGEgc2hvdWxkIGJlIGRyaXZlbiBmcm9tIHRoZSBsYXN0IGFw
cGxpZWQgRmlsdGVyRWZmZWN0LiBUaGlzCisgICAgICAgIHdpbGwgcmVxdWlyZSB0aGUgU291cmNl
QWxwaGEgRmlsdGVyRWZmZWN0IHRvIHdyYXAgYSBGaWx0ZXJFZmZlY3QgcmF0aGVyCisgICAgICAg
IHRoYW4ganVzdCBnZXR0aW5nIHRoZSBTb3VyY2VHcmFwaGljIHJlZmVyZW5jZSBmcm9tIEZpbHRl
ckVmZmVjdFJlbmRlcmVyLgorCisgICAgICAgIFRoaXMgaXMgYmFzZWQgb24gdGhlIEJsaW5rIHBh
dGNoOgorICAgICAgICBodHRwczovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2JsaW5rP3Jldmlz
aW9uPTE5NDExNSZ2aWV3PXJldmlzaW9uLgorCisgICAgICAgIFRlc3Q6IHN2Zy9maWx0ZXJzL3Nv
dXJjZUFscGhhLWlucHV0LWZpbHRlci1lZmZlY3QuaHRtbAorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUFscGhhOjpjcmVhdGUpOiBNYWtlIFNvdXJjZUFscGhhIHdyYXBzIGEgRmlsdGVy
RWZmZWN0CisgICAgICAgIHJhdGhlciB0aGFuIGEgRmlsdGVyLgorICAgICAgICAKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6IERldGVy
bWluZSB0aGUgcGFpbnQKKyAgICAgICAgcmVjdCBmcm9tIHRoZSB3cmFwcGVkIEZpbHRlckVmZmVj
dC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKTogRXh0cmFjdCB0aGUgYWxwaGEgY2hhbm5lbAorICAgICAgICBmcm9tIHRoZSB3
cmFwcGVkIEZpbHRlckVmZmVjdC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VB
bHBoYTo6U291cmNlQWxwaGEpOiAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6U291cmNlQWxw
aGEpOiBEZWxldGVkLgorICAgICAgICBSZWltcGxlbWVudCB0aGUgY29uc3RydWN0b3Igb2YgdGhl
IFNvdXJjZUFscGhhIHN1Y2ggdGhhdCBpdCB3cmFwcyB0aGUKKyAgICAgICAgc291cmNlRWZmZWN0
IGluIGl0cyBpbnB1dEVmZmVjdHMuCisgICAgCisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IERlbGV0ZSB0aGUgRklYTUUKKyAgICAgICAgY29tbWVu
dCBhbmQgZG8gZXhhY3RseSB3aGF0IGl0IHNhaWQuIFRoaXMgbWF0Y2hlcyB0aGUgaW1wbGVtZW50
YXRpb24gb2YKKyAgICAgICAgR2Vja28gYW5kIEJsaW5rLgorICAgICAgICAKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMpOgorICAgICAgICBE
ZWxldGUgdGhlIGV4dHJhIGFyZ3VtZW50LgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWls
ZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmg6IERyaXZlIHRoZSBTb3VyY2VBbHBoYSBmcm9tIHRoZQorICAgICAg
ICBwYXNzZWQgc291cmNlIEZpbHRlckVmZmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252
b2x2ZU1hdHJpeC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZm
dXNlTGlnaHRpbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZs
b29kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVP
ZmZzZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1
bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHA6CisgICAgICAgIENvZGUgY2xlYW4gdXA6IFBvaW50ZXIgdG8gcmVmZXJl
bmNlIGNvbnZlcnNpb24uIEl0IHN0YXJ0cyBieSBjb252ZXJ0aW5nCisgICAgICAgIEZpbHRlckVm
ZmVjdDo6bV9maWx0ZXIgZnJvbSBwb2ludGVyIHRvIHJlZmVyZW5jZSBhbmQgaXQga2VwdCBleHBh
bmRpbmcuCisgICAgICAgIEFsbCB0aGUgY3JlYXRpb25zIG9mIEZpbHRlckVmZmVjdCB3ZXJlIGhh
cHBlbmluZyBieSBwYXNzaW5nICJ0aGlzIiBzbworICAgICAgICBwYXNzaW5nICIqdGhpcyIgZGlk
IG5vdCByZXF1aXJlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgbmlsLgorCisgICAg
ICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAg
ICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgIENvZGUgY2xlYW4gdXA6IFBv
aW50ZXIgdG8gcmVmZXJlbmNlIGFuZCBQYXNzUmVmUHRyPD4gdG8gUmVmUHRyPD4gb3IgUmVmPD4K
KyAgICAgICAgY29udmVyc2lvbi4KKwogMjAxNS0wNC0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgYSB3cmFwcGVyIGFyb3VuZCB0aGUgaG9z
dGVkIEFWUGxheWVyTGF5ZXIgdG8gaW50ZXJjZXB0IC1zZXRCb3VuZHM6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJ
KHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyKiBmaWx0ZXIsIEJs
ZW5kTW9kZSBtb2RlKQorRkVCbGVuZDo6RkVCbGVuZChGaWx0ZXImIGZpbHRlciwgQmxlbmRNb2Rl
IG1vZGUpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9tb2RlKG1vZGUpCiB7
CiB9CiAKLVJlZjxGRUJsZW5kPiBGRUJsZW5kOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIEJsZW5k
TW9kZSBtb2RlKQorUmVmPEZFQmxlbmQ+IEZFQmxlbmQ6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwg
QmxlbmRNb2RlIG1vZGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChmaWx0
ZXIsIG1vZGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFQmxlbmQgOiBw
dWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQmxlbmQ+IGNy
ZWF0ZShGaWx0ZXIqLCBCbGVuZE1vZGUpOworICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3JlYXRl
KEZpbHRlciYsIEJsZW5kTW9kZSk7CiAKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3Q7
CiAgICAgYm9vbCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVCbGVuZChG
aWx0ZXIqLCBCbGVuZE1vZGUpOworICAgIEZFQmxlbmQoRmlsdGVyJiwgQmxlbmRNb2RlKTsKIAog
ICAgIEJsZW5kTW9kZSBtX21vZGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCShyZXZp
c2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KEZpbHRl
ciogZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFs
dWVzKQorRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXImIGZpbHRlciwgQ29sb3JN
YXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICA6IEZpbHRl
ckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fdmFsdWVzKHZhbHVl
cykKIHsKIH0KIAotUmVmPEZFQ29sb3JNYXRyaXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGaWx0
ZXIqIGZpbHRlciwgQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZh
bHVlcykKK1JlZjxGRUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBm
aWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb2xvck1hdHJpeChmaWx0ZXIsIHR5cGUs
IHZhbHVlcykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDE4MzEwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsK
IAogY2xhc3MgRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4gY3JlYXRlKEZpbHRlciosIENvbG9yTWF0cml4
VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJp
eD4gY3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYp
OwogCiAgICAgQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdDsKICAgICBib29sIHNldFR5cGUo
Q29sb3JNYXRyaXhUeXBlKTsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBjYWxjdWxhdGVIdWVSb3RhdGVDb21wb25lbnRzKGZsb2F0KiBjb21wb25lbnRz
LCBmbG9hdCB2YWx1ZSk7CiAKIHByaXZhdGU6Ci0gICAgRkVDb2xvck1hdHJpeChGaWx0ZXIqLCBD
b2xvck1hdHJpeFR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICBGRUNvbG9yTWF0cml4
KEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCiAgICAg
Q29sb3JNYXRyaXhUeXBlIG1fdHlwZTsKICAgICBWZWN0b3I8ZmxvYXQ+IG1fdmFsdWVzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdHlwZWRlZiB2b2lkICgqVHJhbnNmZXJUeXBlKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOwogCi1GRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNv
bXBvbmVudFRyYW5zZmVyKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJiByZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1
bmMsCitGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVG
dW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpCiAgICAgOiBG
aWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9yZWRGdW5jKHJlZEZ1bmMpCkBAIC00Niw3ICs0
Niw3IEBAIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIKIHsKIH0KIAot
UmVmPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShGaWx0
ZXIqIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywKK1Jl
ZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsCiAgICAg
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgYWxwaGFGdW5jKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9uZW50
VHJhbnNmZXIoZmlsdGVyLCByZWRGdW5jLCBncmVlbkZ1bmMsIGJsdWVGdW5jLCBhbHBoYUZ1bmMp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiAxODMxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiB7CiAKIGNsYXNzIEZFQ29tcG9uZW50VHJhbnNmZXIgOiBwdWJsaWMg
RmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29tcG9uZW50VHJhbnNm
ZXI+IGNyZWF0ZShGaWx0ZXIqLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRG
dW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCisgICAgc3Rh
dGljIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgZ3JlZW5GdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwogCiAgICAgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiByZWRGdW5jdGlvbigpIGNvbnN0OwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGRUNvbXBvbmVudFRy
YW5zZmVyKEZpbHRlciosIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMs
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywKKyAgICBGRUNvbXBv
bmVudFRyYW5zZmVyKEZpbHRlciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJl
ZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVG
dW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwogCiAgICAg
dm9pZCBnZXRWYWx1ZXModW5zaWduZWQgY2hhciByVmFsdWVzWzI1Nl0sIHVuc2lnbmVkIGNoYXIg
Z1ZhbHVlc1syNTZdLCB1bnNpZ25lZCBjaGFyIGJWYWx1ZXNbMjU2XSwgdW5zaWduZWQgY2hhciBh
VmFsdWVzWzI1Nl0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb21wb3Np
dGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9h
dCBrNCkKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29t
cG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywg
ZmxvYXQgazQpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV90eXBlKHR5cGUp
CiAgICAgLCBtX2sxKGsxKQpAQCAtNDMsNyArNDMsNyBAQCBGRUNvbXBvc2l0ZTo6RkVDb21wb3Np
dGUoRmlsdGVyKiBmaWx0ZXIsCiB7CiB9CiAKLVJlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6
OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlw
ZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCitSZWY8RkVDb21wb3Np
dGU+IEZFQ29tcG9zaXRlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9zaXRlKGZpbHRlciwgdHlwZSwg
azEsIGsyLCBrMywgazQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBlbnVtIENvbXBvc2l0ZU9wZXJhdGlv
blR5cGUgewogCiBjbGFzcyBGRUNvbXBvc2l0ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShGaWx0ZXIqLCBjb25zdCBD
b21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworICAg
IHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb21wb3NpdGVP
cGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogCiAgICAgQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24oKSBjb25zdDsKICAgICBib29sIHNldE9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRpb25UeXBlKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9
CiAKIHByaXZhdGU6Ci0gICAgRkVDb21wb3NpdGUoRmlsdGVyKiwgY29uc3QgQ29tcG9zaXRlT3Bl
cmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBGRUNvbXBvc2l0
ZShGaWx0ZXImLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29mdHdh
cmUoVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0
aW9uLAogICAgICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVN
YXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1GRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlciogZmlsdGVyLCBjb25z
dCBJbnRTaXplJiBrZXJuZWxTaXplLAorRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJp
eChGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKICAgICBmbG9hdCBk
aXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9k
ZVR5cGUgZWRnZU1vZGUsCiAgICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwg
Ym9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiAg
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQpAQCAtNDksNyArNDksNyBAQCBGRUNvbnZvbHZlTWF0
cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlCiAgICAgQVNTRVJUKG1fa2VybmVsU2l6ZS5oZWln
aHQoKSA+IDApOwogfQogCi1SZWY8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6
Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLAorUmVmPEZF
Q29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwg
Y29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKICAgICBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFz
LCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsCiAg
ICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhh
LCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgZW51bSBFZGdlTW9kZVR5cGUgewogCiBjbGFzcyBGRUNvbnZvbHZlTWF0cml4
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbnZv
bHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyKiwgY29uc3QgSW50U2l6ZSYsCisgICAgc3RhdGljIFJl
ZjxGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsCiAgICAg
ICAgICAgICBmbG9hdCwgZmxvYXQsIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBjb25z
dCBGbG9hdFBvaW50JiwKICAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsK
IApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgICAgICBmbG9hdCBiaWFzOwogICAgIH07
CiAKLSAgICBGRUNvbnZvbHZlTWF0cml4KEZpbHRlciosIGNvbnN0IEludFNpemUmLCBmbG9hdCwg
ZmxvYXQsCisgICAgRkVDb252b2x2ZU1hdHJpeChGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwgZmxv
YXQsIGZsb2F0LAogICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUsIGNv
bnN0IEZsb2F0UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKICAgICB0ZW1w
bGF0ZTxib29sIHByZXNlcnZlQWxwaGFWYWx1ZXM+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEzICsyNywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFRGlmZnVzZUxpZ2h0aW5n
OjpGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXIqIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VM
aWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0
IHN1cmZhY2VTY2FsZSwKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJj
ZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5n
LCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0KIAot
UmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciog
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwKK1JlZjxGRURpZmZ1c2VMaWdodGlu
Zz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3Im
IGxpZ2h0aW5nQ29sb3IsCiAgICAgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29u
c3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNl
TGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciosIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LAorICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXImLCBj
b25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKICAgICAgICAgZmxvYXQsIGZsb2F0LCBQYXNzUmVm
UHRyPExpZ2h0U291cmNlPik7CiAgICAgdmlydHVhbCB+RkVEaWZmdXNlTGlnaHRpbmcoKTsKIApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKEZpbHRl
ciogZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxT
ZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCitGRURpc3BsYWNlbWVu
dE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyJiBmaWx0ZXIsIENoYW5uZWxTZWxlY3RvclR5
cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9y
LCBmbG9hdCBzY2FsZSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX3hDaGFu
bmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcikKICAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5
Q2hhbm5lbFNlbGVjdG9yKQpAQCAtNDAsNyArNDAsNyBAQCBGRURpc3BsYWNlbWVudE1hcDo6RkVE
aXNwbGFjZW1lbnRNYXAoRmlsCiB7CiB9CiAKLVJlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNw
bGFjZW1lbnRNYXA6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4
Q2hhbm5lbFNlbGVjdG9yLAorUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBGRURpc3BsYWNlbWVudE1h
cDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2Vs
ZWN0b3IsCiAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBz
Y2FsZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpc3BsYWNlbWVudE1hcChmaWx0
ZXIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBDaGFubmVsU2VsZWN0b3JUeXBlIHsKIAogY2xh
c3MgRkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVhdGUoRmlsdGVyKiwgQ2hhbm5lbFNl
bGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVs
U2VsZWN0b3IsIGZsb2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVh
dGUoRmlsdGVyJiwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0KTsKIAogICAgIENoYW5uZWxTZWxl
Y3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0OwogICAgIGJvb2wgc2V0WENoYW5uZWxT
ZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVEaXNwbGFj
ZW1lbnRNYXAoRmlsdGVyKiwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBD
aGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0KTsKKyAgICBGRURpc3Bs
YWNlbWVudE1hcChGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3Is
IENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQpOwogCiAgICAgQ2hh
bm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVsU2VsZWN0b3I7CiAgICAgQ2hhbm5lbFNlbGVjdG9y
VHlwZSBtX3lDaGFubmVsU2VsZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCShyZXZpc2lv
biAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAotRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyKiBm
aWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorRkVEcm9wU2hhZG93OjpG
RURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0
IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFj
aXR5KQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fc3RkWChzdGRYKQogICAg
ICwgbV9zdGRZKHN0ZFkpCkBAIC00Miw3ICs0Miw3IEBAIEZFRHJvcFNoYWRvdzo6RkVEcm9wU2hh
ZG93KEZpbHRlciogZmlsdGUKIHsKIH0KIAotUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hhZG93
OjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4
LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5
KQorUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hhZG93OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIs
IGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3Im
IHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFRHJvcFNoYWRvdyhmaWx0ZXIsIHN0ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93Q29s
b3IsIHNoYWRvd09wYWNpdHkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCiBjbGFzcyBGRURyb3BTaGFkb3cgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciosIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBzdGF0aWMg
UmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBj
b25zdCB7IHJldHVybiBtX3N0ZFg7IH0KICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQg
c3RkWCkgeyBtX3N0ZFggPSBzdGRYOyB9CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFRHJvcFNoYWRvdyhGaWx0ZXIq
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAg
RkVEcm9wU2hhZG93KEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBD
b2xvciYsIGZsb2F0KTsKICAgICAKICAgICBmbG9hdCBtX3N0ZFg7CiAgICAgZmxvYXQgbV9zdGRZ
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
NCArMjksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUZsb29kOjpGRUZsb29kKEZp
bHRlciogZmlsdGVyLCBjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5
KQorRkVGbG9vZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29s
b3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAg
LCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKICAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29kT3Bh
Y2l0eSkKIHsKIH0KIAotUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShGaWx0ZXIqIGZpbHRl
ciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKK1JlZjxGRUZs
b29kPiBGRUZsb29kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBmbG9vZENv
bG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVG
bG9vZChmaWx0ZXIsIGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHJl
dmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGRUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVGbG9vZD4gY3JlYXRlKEZpbHRlciYs
IGNvbnN0IENvbG9yJiwgZmxvYXQpOwogCiAgICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0Owot
ICAgIGJvb2wgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciAmKTsKKyAgICBib29sIHNldEZsb29k
Q29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0Owog
ICAgIGJvb2wgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVGbG9vZChGaWx0
ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBGRUZsb29kKEZpbHRlciYsIGNvbnN0IENv
bG9yJiwgZmxvYXQpOwogCiAgICAgQ29sb3IgbV9mbG9vZENvbG9yOwogICAgIGZsb2F0IG1fZmxv
b2RPcGFjaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSB2b2lkIGtlcm5l
bFBvc2l0aW9uKGludCBibHVySXRlcmEKICAgICB9CiB9CiAKLUZFR2F1c3NpYW5CbHVyOjpGRUdh
dXNzaWFuQmx1cihGaWx0ZXIqIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlKQorRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKEZpbHRlciYgZmlsdGVy
LCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiAgICAgOiBGaWx0ZXJF
ZmZlY3QoZmlsdGVyKQogICAgICwgbV9zdGRYKHgpCiAgICAgLCBtX3N0ZFkoeSkKQEAgLTg2LDcg
Kzg2LDcgQEAgRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKEZpbHRlciogZgogewogfQog
Ci1SZWY8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoRmlsdGVyKiBmaWx0
ZXIsIGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK1JlZjxGRUdhdXNz
aWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgeCwg
ZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZFR2F1c3NpYW5CbHVyKGZpbHRlciwgeCwgeSwgZWRnZU1vZGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFR2F1c3NpYW5CbHVy
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUdhdXNz
aWFuQmx1cj4gY3JlYXRlKEZpbHRlciosIGZsb2F0LCBmbG9hdCwgRWRnZU1vZGVUeXBlKTsKKyAg
ICBzdGF0aWMgUmVmPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQsIGZsb2F0
LCBFZGdlTW9kZVR5cGUpOwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5V29ya2VyKFBsYXRmb3JtQXBwbHlQYXJh
bWV0ZXJzKik7CiAKLSAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXIqLCBmbG9hdCwgZmxvYXQsIEVk
Z2VNb2RlVHlwZSk7CisgICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBF
ZGdlTW9kZVR5cGUpOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseShVaW50OENsYW1w
ZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXks
IHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFp
bnRTaXplKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVM
aWdodGluZzo6RkVMaWdodGluZyhGaWx0ZXIqIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0aW5n
VHlwZSwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKK0ZF
TGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGlu
Z1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCiAg
ICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBz
cGVjdWxhckV4cG9uZW50LAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAg
OiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
dm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFt
ZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0
aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVMaWdodGluZyhGaWx0ZXIqLCBMaWdo
dGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFTGlnaHRpbmcoRmlsdGVy
JiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKIAogICAgIGJvb2wgZHJh
d0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiwgaW50LCBpbnQpOwogICAgIGlubGluZSB2b2lk
IGlubGluZVNldFBpeGVsKGludCBvZmZzZXQsIExpZ2h0aW5nRGF0YSYsIExpZ2h0U291cmNlOjpQ
YWludGluZ0RhdGEmLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRU1lcmdl
OjpGRU1lcmdlKEZpbHRlciogZmlsdGVyKSAKK0ZFTWVyZ2U6OkZFTWVyZ2UoRmlsdGVyJiBmaWx0
ZXIpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogewogfQogCi1SZWY8RkVNZXJnZT4gRkVN
ZXJnZTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyKQorUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0
ZShGaWx0ZXImIGZpbHRlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1lcmdlKGZp
bHRlcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1lcmdlLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVNZXJnZSA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4gY3JlYXRl
KEZpbHRlciopOworICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4gY3JlYXRlKEZpbHRlciYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwogI2lmIEVOQUJMRShPUEVO
Q0wpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIEZFTWVyZ2UoRmlsdGVyKik7CisgICAgRkVNZXJnZShGaWx0ZXImKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJKHJl
dmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KEZpbHRlciog
ZmlsdGVyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0
IHJhZGl1c1kpCitGRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neShGaWx0ZXImIGZpbHRlciwgTW9y
cGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQog
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9y
YWRpdXNYKHJhZGl1c1gpCkBAIC00MSw3ICs0MSw3IEBAIEZFTW9ycGhvbG9neTo6RkVNb3JwaG9s
b2d5KEZpbHRlciogZmlsdGUKIHsKIH0KIAotUmVmPEZFTW9ycGhvbG9neT4gRkVNb3JwaG9sb2d5
OjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxv
YXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKK1JlZjxGRU1vcnBob2xvZ3k+IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZs
b2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RkVNb3JwaG9sb2d5KGZpbHRlciwgdHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBAIGVudW0gTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAKIGNsYXNzIEZFTW9ycGhv
bG9neSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVN
b3JwaG9sb2d5PiBjcmVhdGUoRmlsdGVyKiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxvYXQg
cmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisgICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNy
ZWF0ZShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9h
dCByYWRpdXNZKTsKIAogICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9wZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRNb3JwaG9sb2d5T3Bl
cmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5KFBhaW50aW5nRGF0YSopOwogICAgIGlubGlu
ZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSosIGNvbnN0IGludCB5U3Rh
cnQsIGNvbnN0IGludCB5RW5kKTsKIHByaXZhdGU6Ci0gICAgRkVNb3JwaG9sb2d5KEZpbHRlcios
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwor
ICAgIEZFTW9ycGhvbG9neShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCBy
YWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKICAgICBib29sIHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRl
KFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5LCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSk7CiAgICAgCiAgICAgTW9ycGhvbG9neU9wZXJh
dG9yVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZF
T2Zmc2V0OjpGRU9mZnNldChGaWx0ZXIqIGZpbHRlciwgZmxvYXQgZHgsIGZsb2F0IGR5KQorRkVP
ZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCiAgICAg
OiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9keChkeCkKICAgICAsIG1fZHkoZHkpCiB7
CiB9CiAKLVJlZjxGRU9mZnNldD4gRkVPZmZzZXQ6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgZmxv
YXQgZHgsIGZsb2F0IGR5KQorUmVmPEZFT2Zmc2V0PiBGRU9mZnNldDo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RkVPZmZzZXQoZmlsdGVyLCBkeCwgZHkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZFT2Zmc2V0IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRlciosIGZsb2F0IGR4LCBmbG9hdCBkeSk7Cisg
ICAgc3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRlciYsIGZsb2F0IGR4LCBmbG9hdCBk
eSk7CiAKICAgICBmbG9hdCBkeCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RHgoZmxvYXQpOwpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBGRU9mZnNldChGaWx0ZXIqLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIEZFT2Zm
c2V0KEZpbHRlciYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAKICAgICBmbG9hdCBtX2R4OwogICAg
IGZsb2F0IG1fZHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCShyZXZpc2lv
biAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
U3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxp
Z2h0aW5nKEZpbHRlciogZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQg
c3VyZmFjZVNjYWxlLAorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsCiAgICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwg
ZmxvYXQga2VybmVsVW5pdExlbmd0aFgsCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBh
c3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogICAgIDogRkVMaWdodGluZyhmaWx0
ZXIsIFNwZWN1bGFyTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3Bl
Y3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5l
bFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGlu
Zz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLAorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAog
ICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3Bl
Y3VsYXJFeHBvbmVudCwKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVs
VW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyKiwgY29uc3QgQ29s
b3ImLCBmbG9hdCwgZmxvYXQsCisgICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKICAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogICAgIHZpcnR1YWwgfkZF
U3BlY3VsYXJMaWdodGluZygpOwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBp
bmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0
ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImLCBj
b25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0
cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRVRpbGU6OkZFVGlsZShGaWx0ZXIqIGZpbHRlcikKK0ZF
VGlsZTo6RkVUaWxlKEZpbHRlciYgZmlsdGVyKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikK
IHsKIH0KIAotUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIpCitSZWY8
RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGRVRpbGUoZmlsdGVyKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
Y2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXIqIGZpbHRlcik7CisgICAgc3RhdGljIFJlZjxGRVRp
bGU+IGNyZWF0ZShGaWx0ZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGRVRpbGUoRmls
dGVyKik7CisgICAgRkVUaWxlKEZpbHRlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kQW1wbGl0dWRl
ID0gMTY4MDcKIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kUSA9IDEyNzc3MzsgLy8gbSAvIGEKIHN0
YXRpYyBjb25zdCBpbnQgc19yYW5kUiA9IDI4MzY7IC8vIG0gJSBhCiAKLUZFVHVyYnVsZW5jZTo6
RkVUdXJidWxlbmNlKEZpbHRlciogZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBi
YXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9h
dCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorRkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UoRmls
dGVyJiBmaWx0ZXIsIFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBm
bG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3Rp
dGNoVGlsZXMpCiAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV90eXBlKHR5cGUp
CiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKQpAQCAtNTksNyArNTksNyBA
QCBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXIqIGZpbHRlCiB7CiB9CiAKLVJlZjxG
RVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBUdXJidWxl
bmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVks
IGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorUmVmPEZFVHVy
YnVsZW5jZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFR1cmJ1bGVuY2VU
eXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50
IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVUdXJidWxlbmNlKGZpbHRlciwgdHlwZSwgYmFzZUZyZXF1ZW5jeVgs
IGJhc2VGcmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIGVudW0gVHVyYnVsZW5jZVR5cGUgewogCiBjbGFzcyBGRVR1cmJ1bGVuY2Ug
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFVHVyYnVs
ZW5jZT4gY3JlYXRlKEZpbHRlciosIFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGludCwg
ZmxvYXQsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8RkVUdXJidWxlbmNlPiBjcmVhdGUoRmlsdGVy
JiwgVHVyYnVsZW5jZVR5cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7CiAKICAg
ICBUdXJidWxlbmNlVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRUeXBlKFR1cmJ1bGVu
Y2VUeXBlKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQg
ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyopOwogCi0gICAgRkVUdXJidWxl
bmNlKEZpbHRlciosIFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGludCwgZmxvYXQsIGJv
b2wpOworICAgIEZFVHVyYnVsZW5jZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQsIGZs
b2F0LCBpbnQsIGZsb2F0LCBib29sKTsKIAogICAgIGlubGluZSB2b2lkIGluaXRQYWludChQYWlu
dGluZ0RhdGEmKTsKICAgICBmbG9hdCBub2lzZTJEKGludCBjaGFubmVsLCBQYWludGluZ0RhdGEm
LCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRmlsdGVyRWZmZWN0OwotCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGaWx0ZXI+IHsKIHB1YmxpYzoKICAgICBGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSwgZmxvYXQgZmlsdGVyU2NhbGUgPSAxKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IGtNYXhGaWx0
ZXJBcmVhID0gNDA5NiAqIDQwOTY7CiAKLUZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KEZpbHRl
ciogZmlsdGVyKQorRmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QoRmlsdGVyJiBmaWx0ZXIpCiAg
ICAgOiBtX2FscGhhSW1hZ2UoZmFsc2UpCiAgICAgLCBtX2ZpbHRlcihmaWx0ZXIpCiAgICAgLCBt
X2hhc1goZmFsc2UpCkBAIC00OSw3ICs0OSw2IEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0
KEZpbHRlciogZmlsdGUKICAgICAsIG1fb3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNlTGlu
ZWFyUkdCKQogICAgICwgbV9yZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiB7
Ci0gICAgQVNTRVJUKG1fZmlsdGVyKTsKIH0KIAogRmlsdGVyRWZmZWN0Ojp+RmlsdGVyRWZmZWN0
KCkKQEAgLTI4Myw3ICsyODIsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdl
QnVmZmVyCiAgICAgaWYgKG1fb3BlbkNMSW1hZ2VSZXN1bHQpCiAgICAgICAgIHJldHVybiBvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIoKTsKICNlbmRpZgotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRl
ci0+ZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci0+cmVuZGVyaW5n
TW9kZSgpKTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1
bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogICAgIEludFJlY3QgZGVz
dGluYXRpb25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1faW1hZ2VCdWZmZXJS
ZXN1bHQtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVkLCBtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LnNpemUoKSwgZGVzdGluYXRpb25SZWN0LCBJbnRQ
b2ludCgpKTsKQEAgLTMyNCw3ICszMjMsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlCiB7CiAgICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsKICAg
ICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUo
bV9maWx0ZXItPmZpbHRlclNjYWxlKCkpOworICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChzY2FsZWRTaXplLndpZHRo
KCkgKiBzY2FsZWRTaXplLmhlaWdodCgpICogNCk7CiAgICAgY29weVVubXVsdGlwbGllZEltYWdl
KGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7CiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7
CkBAIC0zMzQsNyArMzMzLDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVy
RWZmZQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7CiAgICAgSW50U2l6
ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2Nh
bGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VE
YXRhLmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKQEAgLTM0
Myw5ICszNDIsOSBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlCiBp
bmxpbmUgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzKFVpbnQ4Q2xhbXBlZEFycmF5
KiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICBJbnRSZWN0IHNjYWxlZFJlY3QocmVjdCk7Ci0gICAgc2NhbGVkUmVjdC5z
Y2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAgc2NhbGVkUmVjdC5zY2FsZShtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBJbnRTaXplIHNjYWxlZFBhaW50U2l6ZShtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgc2NhbGVkUGFpbnRTaXplLnNjYWxlKG1fZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKKyAgICBzY2FsZWRQYWludFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0cmFu
c3BhcmVudCBibGFjaywgaWYgbm90IGVudGlyZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4KICAg
ICBpZiAoc2NhbGVkUmVjdC54KCkgPCAwIHx8IHNjYWxlZFJlY3QueSgpIDwgMCB8fCBzY2FsZWRS
ZWN0Lm1heFgoKSA+IHNjYWxlZFBhaW50U2l6ZS53aWR0aCgpIHx8IHNjYWxlZFJlY3QubWF4WSgp
ID4gc2NhbGVkUGFpbnRTaXplLmhlaWdodCgpKQpAQCAtNDAwLDcgKzM5OSw3IEBAIHZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwogICAg
ICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsKKyAg
ICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAg
ICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZChpbnB1dFNpemUud2lkdGgoKSAqIGlucHV0U2l6ZS5oZWlnaHQoKSAq
IDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIq
IGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgp
OwpAQCAtNDM2LDcgKzQzNSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGll
ZEltYWcKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFs
aWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUo
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoaW5wdXRTaXpl
LndpZHRoKCkgKiBpbnB1dFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIqIHNvdXJjZUNvbXBvbmVudCA9IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEo
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV9w
cmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKQEAgLTQ2MSw3ICs0NjAsNyBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1CiAgICAgQVNTRVJUKCFoYXNSZXN1
bHQoKSk7CiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXItPmZpbHRlclNjYWxlKCksIG1fcmVz
dWx0Q29sb3JTcGFjZSwgbV9maWx0ZXItPnJlbmRlcmluZ01vZGUoKSk7CisgICAgbV9pbWFnZUJ1
ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgbV9maWx0ZXIu
cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb250ZXh0KCkpOwpA
QCAtNDc3LDcgKzQ3Niw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVUKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7
Ci0gICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAgcmVz
dWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVz
dWx0U2l6ZS53aWR0aCgpICogcmVzdWx0U2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIHJldHVybiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQpAQCAtNDkxLDcgKzQ5MCw3IEBAIFVp
bnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVAKICAgICBpZiAobV9hYnNvbHV0
ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFNpemUgcmVz
dWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgcmVzdWx0U2l6ZS5zY2Fs
ZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CisgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRl
ci5maWx0ZXJTY2FsZSgpKTsKICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4
Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlc3VsdFNpemUud2lkdGgoKSAqIHJl
c3VsdFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDE4MzEwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0
IGVmZmVjdEJvdW5kYXJpZXMoKSBjb25zdCB7IHJldHVybiBtX2VmZmVjdEJvdW5kYXJpZXM7IH0K
ICAgICB2b2lkIHNldEVmZmVjdEJvdW5kYXJpZXMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RCb3Vu
ZGFyaWVzKSB7IG1fZWZmZWN0Qm91bmRhcmllcyA9IGVmZmVjdEJvdW5kYXJpZXM7IH0KIAotICAg
IEZpbHRlciYgZmlsdGVyKCkgeyBBU1NFUlQobV9maWx0ZXIpOyByZXR1cm4gKm1fZmlsdGVyOyB9
CisgICAgRmlsdGVyJiBmaWx0ZXIoKSB7IHJldHVybiBtX2ZpbHRlcjsgfQogCiAgICAgYm9vbCBj
bGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9CiAgICAgdm9p
ZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRzID0gdmFsdWU7
IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKENvbG9yU3BhY2UpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRmlsdGVyRWZmZWN0KEZp
bHRlciopOworICAgIEZpbHRlckVmZmVjdChGaWx0ZXImKTsKIAogICAgIEltYWdlQnVmZmVyKiBj
cmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhlIG1heGltdW0gc2l6ZSBvZiBhIGZpbHRlciBwcmltaXRpdmUuIEluIFNWRyB0aGlz
IGlzIHRoZSBwcmltaXRpdmUgc3VicmVnaW9uIGluIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2Uu
CiAgICAgLy8gVGhlIGFic29sdXRlIHBhaW50IHJlY3Qgc2hvdWxkIG5ldmVyIGJlIGJpZ2dlciB0
aGFuIG1fbWF4RWZmZWN0UmVjdC4KICAgICBGbG9hdFJlY3QgbV9tYXhFZmZlY3RSZWN0OwotICAg
IEZpbHRlciogbV9maWx0ZXI7CisgICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICAKIHByaXZhdGU6
CiAgICAgaW5saW5lIHZvaWQgY29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNvdXJj
ZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDkgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNvdXJj
ZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlciogZmlsdGVyKQorUmVmPFNvdXJjZUFs
cGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQWxwaGEoZmlsdGVyKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU291cmNlQWxwaGEoc291cmNlRWZmZWN0KSk7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKQpAQCAtNDIsMjUgKzQyLDIzIEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgU291cmNlQWxwaGE6OmVmZmVjdE4KIAogdm9pZCBTb3VyY2VB
bHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewotICAgIEZpbHRlciYgZmlsdGVy
ID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3Vy
Y2VJbWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRp
b24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKLSAgICBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOworICAgIGlu
cHV0RWZmZWN0KDApLT5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIHNldEFic29s
dXRlUGFpbnRSZWN0KGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKIH0KIAog
dm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBJbWFnZUJ1
ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIEZpbHRl
ciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmls
dGVyLnNvdXJjZUltYWdlKCkpCisgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJu
OworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250
ZXh0KCk7CiAKLSAgICBzZXRJc0FscGhhSW1hZ2UodHJ1ZSk7CisgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VCdWZmZXIoKTsKKyAgICBBU1NFUlQo
aW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIGFi
c29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNv
bnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZpbHRlckNvbnRleHQtPmZpbGxS
ZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLnNvdXJjZUltYWdlKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAg
IGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQg
U291cmNlQWxwaGE6OmR1bXAoKQpAQCAtNzQsNCArNzIsMTEgQEAgVGV4dFN0cmVhbSYgU291cmNl
QWxwaGE6OmV4dGVybmFsUmVwcmVzZQogICAgIHJldHVybiB0czsKIH0KIAorU291cmNlQWxwaGE6
OlNvdXJjZUFscGhhKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQorICAgIDogRmlsdGVyRWZm
ZWN0KHNvdXJjZUVmZmVjdC5maWx0ZXIoKSkKK3sKKyAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNl
KHNvdXJjZUVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgIGlucHV0RWZmZWN0cygp
LmFwcGVuZCgmc291cmNlRWZmZWN0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU291cmNlQWxwaGEgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNvdXJjZUFscGhhPiBjcmVhdGUoRmlsdGVyKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VBbHBo
YT4gY3JlYXRlKEZpbHRlckVmZmVjdCYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWZmZWN0TmFtZSgpOwogCkBAIC00NCwxMCArNDQsNyBAQCBwdWJsaWM6ICAgICAgICAKICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYs
IGludCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNvdXJjZUFscGhhKEZpbHRl
ciogZmlsdGVyKQotICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBTb3VyY2VBbHBoYShGaWx0ZXJFZmZlY3QmKTsKIH07CiAKIH0gLy9uYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiAxODMxMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTb3VyY2VHcmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUo
RmlsdGVyKiBmaWx0ZXIpCitSZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRl
KEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlR3JhcGhp
YyhmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VHcmFwaGljKGZpbHRl
cikpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU291cmNl
R3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOiAgICAgICAgCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U291cmNlR3JhcGhpYz4gY3JlYXRlKEZpbHRlciopOworICAgIHN0YXRp
YyBSZWY8U291cmNlR3JhcGhpYz4gY3JlYXRlKEZpbHRlciYpOwogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwogCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzog
ICAgICAgIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgU291cmNl
R3JhcGhpYyhGaWx0ZXIqIGZpbHRlcikKKyAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVy
KQogICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgewogICAgICAgICBzZXRPcGVy
YXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCShyZXZpc2lvbiAx
ODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU291cmNlQWxwaGEuaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNzIsNyArNzEs
NyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyCiAgICAgLCBtX2hh
c0ZpbHRlclRoYXRNb3Zlc1BpeGVscyhmYWxzZSkKIHsKICAgICBzZXRGaWx0ZXJSZXNvbHV0aW9u
KEZsb2F0U2l6ZSgxLCAxKSk7Ci0gICAgbV9zb3VyY2VHcmFwaGljID0gU291cmNlR3JhcGhpYzo6
Y3JlYXRlKHRoaXMpOworICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0
ZSgqdGhpcyk7CiB9CiAKIEZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVyRWZmZWN0UmVuZGVy
ZXIoKQpAQCAtMTEzLDE1ICsxMTIsMTAgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRl
ckVmZmVjdFJlbgogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgLy8g
RklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIFNvdXJjZUFscGhhLiBSaWdodCBub3cs
IHdlJ3JlCi0gICAgLy8gdXNpbmcgdGhlIGFscGhhIG9mIHRoZSBvcmlnaW5hbCBpbnB1dCBsYXll
ciwgd2hpY2ggaXMgb2J2aW91c2x5Ci0gICAgLy8gd3JvbmcuIFdlIHNob3VsZCBwcm9iYWJseSBi
ZSBleHRyYWN0aW5nIHRoZSBhbHBoYSBmcm9tIHRoZSAKLSAgICAvLyBwcmV2aW91c0VmZmVjdCwg
YnV0IHRoaXMgcmVxdWlyZXMgc29tZSBtb3JlIHByb2Nlc3NpbmcuICAKLSAgICAvLyBUaGlzIG1h
eSBuZWVkIGEgc3BlYyBjbGFyaWZpY2F0aW9uLgotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4ocHJldmlvdXNFZmZlY3QsIFNvdXJjZUFscGhhOjpj
cmVhdGUodGhpcykpOworICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmls
dGVyQnVpbGRlcj4ocHJldmlvdXNFZmZlY3QpOwogCiAgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVt
ZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PigqZmlsdGVyKSkgewotICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKGJ1aWxk
ZXIuZ2V0KCksIHRoaXMpOworICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKGJ1
aWxkZXIuZ2V0KCksICp0aGlzKTsKICAgICAgICAgaWYgKCFlZmZlY3QpCiAgICAgICAgICAgICBj
b250aW51ZTsKIApAQCAtMTc2LDcgKzE3MCw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkKFJlbmRlckUKIAogICAgICAgICAgICAgbGFzdE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRl
cnMpOwogCi0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywg
RkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJWF9UWVBF
X01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogewpAQCAtMjA0LDIxICsxOTgs
MjEgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRQogCiAgICAgICAg
ICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7CiAKLSAgICAgICAgICAgIGVmZmVj
dCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSh0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklY
LCBpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBpbnB1dFBhcmFtZXRlcnMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNBVFVSQVRFOiB7CiAgICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBWZWN0b3I8Zmxv
YXQ+IGlucHV0UGFyYW1ldGVyczsKICAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQo
bmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSkpOwot
ICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKHRoaXMsIEZFQ09MT1JN
QVRSSVhfVFlQRV9TQVRVUkFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIGVmZmVj
dCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVS
QVRFLCBpbnB1dFBhcmFtZXRlcnMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKICAgICAgICAgICAgIEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gZG93
bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsK
ICAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwogICAgICAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4
T3BlcmF0aW9uLmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4
OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0
ZXJzKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywg
RkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZF
UlQ6IHsKQEAgLTIzMSw3ICsyMjUsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWls
ZChSZW5kZXJFCiAgICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxlVmFsdWVzID0gdHJh
bnNmZXJQYXJhbWV0ZXJzOwogCiAgICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6
OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2Zl
ckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlKCp0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0
aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKQEAg
LTI0NCw3ICsyMzgsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJF
CiAgICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxlVmFsdWVzID0gdHJhbnNmZXJQYXJh
bWV0ZXJzOwogCiAgICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5j
dGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0
aGlzLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1
bmN0aW9uKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0
ZSgqdGhpcywgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgdHJhbnNm
ZXJGdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogewpAQCAtMjU1LDcgKzI0OSw3IEBAIGJvb2wg
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlckUKICAgICAgICAgICAgIHRyYW5zZmVy
RnVuY3Rpb24uaW50ZXJjZXB0ID0gMDsKIAogICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRy
YW5zZmVyOjpjcmVhdGUodGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwg
dHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZF
Q29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFT
VDogewpAQCAtMjY3LDE4ICsyNjEsMTggQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQoUmVuZGVyRQogICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41
ICogYW1vdW50ICsgMC41OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9u
ZW50VHJhbnNmZXI6OmNyZWF0ZSh0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0
aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworICAgICAgICAgICAgZWZmZWN0
ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKCp0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0
cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJM
VVI6IHsKICAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAg
ICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9u
LnN0ZERldmlhdGlvbigpLCAwKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVy
OjpjcmVhdGUodGhpcywgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09IEZp
bHRlclByb3BlcnR5ID8gRURHRU1PREVfTk9ORSA6IEVER0VNT0RFX0RVUExJQ0FURSk7CisgICAg
ICAgICAgICBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKCp0aGlzLCBzdGREZXZpYXRp
b24sIHN0ZERldmlhdGlvbiwgY29uc3VtZXIgPT0gRmlsdGVyUHJvcGVydHkgPyBFREdFTU9ERV9O
T05FIDogRURHRU1PREVfRFVQTElDQVRFKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewogICAgICAgICAg
ICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25j
YXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAg
ICAgICBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZSh0aGlzLCBkcm9wU2hhZG93T3BlcmF0
aW9uLnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLAor
ICAgICAgICAgICAgZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoKnRoaXMsIGRyb3BTaGFk
b3dPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCksIGRyb3BTaGFkb3dPcGVyYXRpb24uc3RkRGV2aWF0
aW9uKCksCiAgICAgICAgICAgICAgICAgZHJvcFNoYWRvd09wZXJhdGlvbi54KCksIGRyb3BTaGFk
b3dPcGVyYXRpb24ueSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLmNvbG9yKCksIDEpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAx
ODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiU291cmNlQWxwaGEuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFw
aGljLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcyLDE2ICs3MSwxNiBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZW1vdmVDbGllCiAgICAgbWFya0NsaWVudEZvckludmFs
aWRhdGlvbihjbGllbnQsIG1hcmtGb3JJbnZhbGlkYXRpb24gPyBCb3VuZGFyaWVzSW52YWxpZGF0
aW9uIDogUGFyZW50T25seUludmFsaWRhdGlvbik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdG
aWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNW
R0ZpbHRlciogZmlsdGVyKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmlsdGVyJiBmaWx0
ZXIpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENvdW50Q2hpbGROb2Rl
cyA9IDIwMDsKICAgICBpZiAoZmlsdGVyRWxlbWVudCgpLmNvdW50Q2hpbGROb2RlcygpID4gbWF4
Q291bnRDaGlsZE5vZGVzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEZsb2F0UmVj
dCB0YXJnZXRCb3VuZGluZ0JveCA9IGZpbHRlci0+dGFyZ2V0Qm91bmRpbmdCb3goKTsKKyAgICBG
bG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsK
IAogICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUo
ZmlsdGVyKSwgU291cmNlQWxwaGE6OmNyZWF0ZShmaWx0ZXIpKTsKKyAgICBhdXRvIGJ1aWxkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KFNvdXJjZUdyYXBoaWM6OmNyZWF0
ZShmaWx0ZXIpKTsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQoKSkpIHsKICAg
ICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gZWxlbWVudC5idWlsZChidWlsZGVy
LmdldCgpLCBmaWx0ZXIpOwogICAgICAgICBpZiAoIWVmZmVjdCkgewpAQCAtMTUxLDcgKzE1MCw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKICAgICBmaWx0ZXJE
YXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNv
bHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwg
ZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAg
IC8vIENyZWF0ZSBhbGwgcmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCi0gICAgZmlsdGVyRGF0
YS0+YnVpbGRlciA9IGJ1aWxkUHJpbWl0aXZlcyhmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOwor
ICAgIGZpbHRlckRhdGEtPmJ1aWxkZXIgPSBidWlsZFByaW1pdGl2ZXMoKmZpbHRlckRhdGEtPmZp
bHRlcik7CiAgICAgaWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNv
dXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkUHJpbWl0aXZlcyhTVkdGaWx0ZXIq
KSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRQcmlt
aXRpdmVzKFNWR0ZpbHRlciYpIGNvbnN0OwogCiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0
cygpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cygpIGNv
bnN0IHsgcmV0dXJuIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3ICs0ODcsNyBA
QCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhCiAgICAgICAgIC8vIENy
ZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUgYnVpbGRl
ci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKICAgICAgICAgUmVmUHRyPFNWR0ZpbHRl
cj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgeworICAg
ICAgICBpZiAoYXV0byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0
ZXIpKSB7CiAgICAgICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRl
ci0+bGFzdEVmZmVjdCgpKQogICAgICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMsIGluZGVudCArIDEpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MiwyMCArMTAyLDIwIEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4K
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVu
ZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciog
ZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMigpKTsKIAogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0
RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1
dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVm
ZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA2LDEyICsxMDYsMTIgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmli
dQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBWZWN0b3I8ZmxvYXQ+IGZpbHRlclZhbHVlczsK
ICAgICBDb2xvck1hdHJpeFR5cGUgZmlsdGVyVHlwZSA9IHR5cGUoKTsKQEAgLTEzOSwxMiArMTM5
LDEyIEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cmkKICAgICAgICAg
aWYgKChmaWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggJiYgc2l6ZSAhPSAy
MCkKICAgICAgICAgICAgIHx8IChmaWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVS
T1RBVEUgJiYgc2l6ZSAhPSAxKQogICAgICAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xP
Uk1BVFJJWF9UWVBFX1NBVFVSQVRFICYmIHNpemUgIT0gMSkpCi0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5
cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5w
dXQxKTsKLSAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQ6OnBhcnMKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIApAQCAtODgsNyArODgs
NyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUCiAgICAgCiAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGSVhNRTogc3ZnQXR0
cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KQog
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDIwICsxMzgsMjAgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0
ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIt
PmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVy
QnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwg
IWlucHV0MikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0
ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogICAgIEZpbHRlckVm
ZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBp
bnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQo
aW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAgIAotICAgIHJldHVy
biBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsMTIgKzIzMSwxMiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1
dDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlu
dCBvcmRlclhWYWx1ZSA9IG9yZGVyWCgpOwogICAgIGludCBvcmRlcllWYWx1ZSA9IG9yZGVyWSgp
OwpAQCAtMjQ2LDIyICsyNDYsMjIgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29u
dm9sdmVNYQogICAgIH0KICAgICAvLyBTcGVjIHNheXMgb3JkZXIgbXVzdCBiZSA+IDAuIEJhaWwg
aWYgaXQgaXMgbm90LgogICAgIGlmIChvcmRlclhWYWx1ZSA8IDEgfHwgb3JkZXJZVmFsdWUgPCAx
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU1ZHTnVt
YmVyTGlzdCYga2VybmVsTWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CiAgICAgaW50IGtl
cm5lbE1hdHJpeFNpemUgPSBrZXJuZWxNYXRyaXguc2l6ZSgpOwogICAgIC8vIFRoZSBzcGVjIHNh
eXMgdGhpcyBpcyBhIHJlcXVpcmVtZW50LCBhbmQgc2hvdWxkIGJhaWwgb3V0IGlmIGZhaWxzCiAg
ICAgaWYgKG9yZGVyWFZhbHVlICogb3JkZXJZVmFsdWUgIT0ga2VybmVsTWF0cml4U2l6ZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaW50IHRhcmdl
dFhWYWx1ZSA9IHRhcmdldFgoKTsKICAgICBpbnQgdGFyZ2V0WVZhbHVlID0gdGFyZ2V0WSgpOwog
ICAgIGlmIChoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldFhBdHRyKSAmJiAodGFyZ2V0WFZh
bHVlIDwgMCB8fCB0YXJnZXRYVmFsdWUgPj0gb3JkZXJYVmFsdWUpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGUgZGVm
YXVsdCB2YWx1ZSBpczogdGFyZ2V0WCA9IGZsb29yICggb3JkZXJYIC8gMiApKQogICAgIGlmICgh
aGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRYQXR0cikpCiAgICAgICAgIHRhcmdldFhWYWx1
ZSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKG9yZGVyWFZhbHVlIC8gMikpOwogICAgIGlmICho
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldFlBdHRyKSAmJiAodGFyZ2V0WVZhbHVlIDwgMCB8
fCB0YXJnZXRZVmFsdWUgPj0gb3JkZXJZVmFsdWUpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGUgZGVmYXVsdCB2YWx1
ZSBpczogdGFyZ2V0WSA9IGZsb29yICggb3JkZXJZIC8gMiApKQogICAgIGlmICghaGFzQXR0cmli
dXRlKFNWR05hbWVzOjp0YXJnZXRZQXR0cikpCiAgICAgICAgIHRhcmdldFlWYWx1ZSA9IHN0YXRp
Y19jYXN0PGludD4oZmxvb3JmKG9yZGVyWVZhbHVlIC8gMikpOwpAQCAtMjc0LDExICsyNzQsMTEg
QEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYQogICAgICAgICBrZXJu
ZWxVbml0TGVuZ3RoWVZhbHVlID0gMTsKICAgICB9CiAgICAgaWYgKGtlcm5lbFVuaXRMZW5ndGhY
VmFsdWUgPD0gMCB8fCBrZXJuZWxVbml0TGVuZ3RoWVZhbHVlIDw9IDApCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZsb2F0IGRpdmlzb3JWYWx1ZSA9
IGRpdmlzb3IoKTsKICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjpkaXZpc29yQXR0cikg
JiYgIWRpdmlzb3JWYWx1ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpkaXZpc29yQXR0cikpIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxNYXRyaXhTaXplOyArK2kpCiAgICAgICAg
ICAgICBkaXZpc29yVmFsdWUgKz0ga2VybmVsTWF0cml4LmF0KGkpOwpAQCAtMjkxLDcgKzI5MSw3
IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWEKICAgICAgICAgICAg
ICAgICAgICAgYmlhcygpLCBJbnRQb2ludCh0YXJnZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVk
Z2VNb2RlKCksCiAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoa2VybmVsVW5pdExlbmd0
aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxwaGEoKSwga2VybmVs
TWF0cml4KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAg
IHJldHVybiBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYs
NyArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG9yZGVyWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBv
cmRlcllJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MiwyNyArMTcyLDI3IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpsaWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAot
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAK
ICAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSA9IFNWR0ZFTGlnaHRF
bGVtZW50OjpmaW5kTGlnaHRTb3VyY2UodGhpcyk7CiAgICAgaWYgKCFsaWdodFNvdXJjZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIENvbG9y
IGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAK
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3Jl
YXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBsaWdodFNvdXJj
ZS5yZWxlYXNlKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7
Ci0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5p
dExlbmd0aFhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSwyMCArMTIxLDIwIEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpzdmdBdHQKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwogICAgIAogICAg
IGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxh
Y2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2Vs
ZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMg
PSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNp
dHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAgIGlucHV0RWZmZWN0
cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCkK
ICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOSwxNCArMTE5LDE0IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6c3ZnQXR0cmlidXQKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGRE
ZXZpYXRpb25ZKCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKS5zdmdTdHlsZSgpOwogICAgIApAQCAtMTM1LDExICsxMzUsMTEgQEAgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvdwogCiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGRE
ZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJu
IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIG92ZXJyaWRlOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0
ZERldmlhdGlvblhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDExIEBA
IGJvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEEKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZp
bHRlcikKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
ICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gcmVuZGVy
ZXItPnN0eWxlKCkuc3ZnU3R5bGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHByaXZhdGU6
CiAgICAgU1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxOSArMTEzLDE5
IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWIKICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKIAogICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25Z
KCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZp
bHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRp
b25YSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlh
dGlvbllJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcGFyZW50UmVuZGVy
ZXIpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBm
aWx0ZXIpCiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBGRUltYWdl
OjpjcmVhdGVXaXRoSW1hZ2UoZmlsdGVyLCBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KHJlbmRlcmVyKCkpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VS
ZWZlcmVuY2VzKCk7CiAgICAgdm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIFJlZjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1l
bnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRU1lcmdlRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVy
KQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOwogICAgIEZpbHRl
ckVmZmVjdFZlY3RvciYgbWVyZ2VJbnB1dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwpAQCAt
NTUsNyArNTUsNyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lCiAg
ICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0OwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDIxICsxMzIsMjEgQEAgdm9p
ZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dAogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgZmxv
YXQgeFJhZGl1cyA9IHJhZGl1c1goKTsKICAgICBmbG9hdCB5UmFkaXVzID0gcmFkaXVzWSgpOwog
CiAgICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4
UmFkaXVzLCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1
dDEpOwotICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOworICAgIHJldHVybiBlZmZlY3Q7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyAr
NjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHJhZGl1c1hJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFk
aXVzWUlkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTYgKzgyLDE2IEBAIHZvaWQg
U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQog
Ci1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQx
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwg
ZHkoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICBy
ZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZWZmZWN0OwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAxODMxMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVy
cmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNl
dEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTgzMTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMjcgKzE4Mywy
NyBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRy
PExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRT
b3VyY2UodGhpcyk7CiAgICAgaWYgKCFsaWdodFNvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXIt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKICAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVu
Z3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBsaWdodFNvdXJjZS5yZWxlYXNlKCkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lv
biAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZp
bHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwog
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFhJZGVudGlm
aWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFlJ
ZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE2ICs2OSwxNiBAQCB2b2lkIFNWR0ZFVGlsZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmls
dGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGVmZmVjdDsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRkVUaWxlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9T
VFJJTkcoSW4xLCBpbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCwxMCArMTM4
LDEwIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciYgZmlsdGVyKQogewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBi
YXNlRnJlcXVlbmN5WSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShmaWx0ZXIsIHR5cGUoKSwg
YmFzZUZyZXF1ZW5jeVgoKSwgYmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCks
IHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCShyZXZpc2lvbiAxODMx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJlcXVlbmN5WUlkZW50aWZp
ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDE4MzEwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5n
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQw
LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dAogcHVi
bGljOgogICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCopIGNvbnN0
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciogZmlsdGVyKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgPSAwOwogICAgIC8vIFJl
dHVybnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9u
ZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDE4MzEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RkVJbWFnZTo6RkVJbWFnZShGaWx0ZXIqIGZpbHRlciwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2Us
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitGRUlt
YWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIDogRmlsdGVy
RWZmZWN0KGZpbHRlcikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX2RvY3VtZW50KDAp
CkBAIC00NCw3ICs0NCw3IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIFBhc3NS
ZWYKIHsKIH0KIAotRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXIqIGZpbHRlciwgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8m
IHByZXNlcnZlQXNwZWN0UmF0aW8pCitGRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKICAgICA6IEZpbHRlckVmZmVjdChmaWx0
ZXIpCiAgICAgLCBtX2RvY3VtZW50KCZkb2N1bWVudCkKICAgICAsIG1faHJlZihocmVmKQpAQCAt
NTIsMTQgKzUyLDE0IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW4K
IHsKIH0KIAotUGFzc1JlZlB0cjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2UoRmls
dGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNy
ZWF0ZVdpdGhJbWFnZShGaWx0ZXImIGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3Qg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwgcHJlc2VydmVBc3BlY3RSYXRp
bykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwgcHJl
c2VydmVBc3BlY3RSYXRpbykpOwogfQogCi1QYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1hZ2U6OmNy
ZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVu
Y2UoRmlsdGVyJiBmaWx0ZXIsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVJbWFnZShmaWx0ZXIsIGRvY3VtZW50LCBocmVmLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShm
aWx0ZXIsIGRvY3VtZW50LCBocmVmLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CiAKIHZvaWQg
RkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gMTgz
MTA3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAK
IGNsYXNzIEZFSW1hZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGRUltYWdlPiBjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyKiwgUGFzc1JlZlB0
cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGRUltYWdlPiBjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciosIERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOworICAgIHN0
YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4s
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+
IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE9QRU5DTCkKQEAgLTUx
LDggKzUxLDggQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5GRUltYWdl
KCkgeyB9Ci0gICAgRkVJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPEltYWdlPiwgY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYpOwotICAgIEZFSW1hZ2UoRmlsdGVyKiwgRG9jdW1lbnQmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CisgICAgRkVJbWFn
ZShGaWx0ZXImLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7
CisgICAgRkVJbWFnZShGaWx0ZXImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKICAgICBSZW5kZXJFbGVtZW50KiByZWZlcmVuY2VkUmVu
ZGVyZXIoKSBjb25zdDsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuY3BwCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTkg
KzIzLDE3IEBACiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiU291cmNlQWxw
aGEuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNl
QWxwaGEpCitTVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IHNvdXJjZUdyYXBoaWMpCiB7CiAgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNl
R3JhcGhpYzo6ZWZmZWN0TmFtZSgpLCBzb3VyY2VHcmFwaGljKTsKLSAgICBtX2J1aWx0aW5FZmZl
Y3RzLmFkZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpLCBzb3VyY2VBbHBoYSk7CisgICAgbV9i
dWlsdGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6
OmNyZWF0ZSgqc291cmNlR3JhcGhpYykpOwogICAgIGFkZEJ1aWx0aW5FZmZlY3RzKCk7CiB9CiAK
LXZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCiB7CiAg
ICAgaWYgKGlkLmlzRW1wdHkoKSkgewogICAgICAgICBtX2xhc3RFZmZlY3QgPSBlZmZlY3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAxODMxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDkgKzM3LDkgQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIAotICAgIFNWR0ZpbHRl
ckJ1aWxkZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBzb3VyY2VBbHBoYSk7CisgICAgU1ZHRmlsdGVyQnVpbGRlcihSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKTsKIAotICAgIHZvaWQgYWRkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0Pik7CisgICAgdm9pZCBhZGQo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCiAgICAgRmls
dGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Owog
ICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVj
dC5nZXQoKTsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjMxKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDQtMjMgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTVkdGaWx0
ZXJCdWlsZGVyIHNob3VsZCBkcml2ZSB0aGUgYnVpbHRpbiBzb3VyY2VBbHBoYSBmcm9tIHRoZSBw
YXNzZWQgc291cmNlR3JhcGhpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRW5zdXJlIHRoZSBTb3VyY2VBbHBoYSBpcyBkcml2ZW4gZnJvbSBsYXN0IGFwcGxp
ZWQgRmlsdGVyRWZmZWN0LgorCisgICAgICAgICogc3ZnL2ZpbHRlcnMvc291cmNlQWxwaGEtaW5w
dXQtZmlsdGVyLWVmZmVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmls
dGVycy9zb3VyY2VBbHBoYS1pbnB1dC1maWx0ZXItZWZmZWN0Lmh0bWw6IEFkZGVkLgorCiAyMDE1
LTA0LTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFRl
c3QgY29tcG9zaXRpbmcvc2Nyb2xsaW5nL3RvdWNoLXNjcm9sbC10by1jbGlwLmh0bWwgZmFpbHMg
aW4gV0sxCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zb3VyY2VBbHBoYS1pbnB1dC1m
aWx0ZXItZWZmZWN0LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2ZpbHRlcnMvc291cmNlQWxwaGEtaW5wdXQtZmlsdGVyLWVmZmVjdC1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc291cmNlQWxwaGEtaW5wdXQt
ZmlsdGVyLWVmZmVjdC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGRpdiB7
CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dy
b3VuZC1jb2xvcjogbGltZTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdj48L2Rpdj4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3NvdXJj
ZUFscGhhLWlucHV0LWZpbHRlci1lZmZlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9zb3VyY2VBbHBoYS1pbnB1dC1maWx0ZXItZWZmZWN0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zb3VyY2VBbHBoYS1pbnB1dC1maWx0
ZXItZWZmZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgfQorICAgICN0ZXN0IHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICAg
IC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5KDApIHVybCgjZik7CisgICAgICBmaWx0ZXI6IG9wYWNp
dHkoMCkgdXJsKCNmKTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRp
diBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGltZSI+PC9kaXY+CisgIDxkaXYgaWQ9InRlc3Qi
PjwvZGl2PgorICA8c3ZnIGhlaWdodD0iMCI+CisgICAgPGZpbHRlciBpZD0iZiI+CisgICAgICA8
ZmVNZXJnZT4KKyAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VBbHBoYSIvPgorICAgICAg
PC9mZU1lcmdlPgorICAgIDwvZmlsdGVyPgorICA8L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>