<?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>113123</bug_id>
          
          <creation_ts>2013-03-22 17:53:08 -0700</creation_ts>
          <short_desc>Pass context to Node::attach and detach</short_desc>
          <delta_ts>2013-09-27 09:18:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111627</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>leviw</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>862038</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-22 17:53:08 -0700</bug_when>
    <thetext>Pass context to Node::attach and detach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862041</commentid>
    <comment_count>1</comment_count>
      <attachid>194671</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-22 17:57:15 -0700</bug_when>
    <thetext>Created attachment 194671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862044</commentid>
    <comment_count>2</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-22 17:59:02 -0700</bug_when>
    <thetext>This needs a perf test (I have one, but it&apos;s not in run-perf-tests format), but I wanted to post the patch instead of having it just sitting on my machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862056</commentid>
    <comment_count>3</comment_count>
      <attachid>194671</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-22 18:12:25 -0700</bug_when>
    <thetext>Comment on attachment 194671
Patch

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

&gt; Source/WebCore/dom/Element.cpp:-1259
&gt; -void Element::createRendererIfNeeded()

Nothing overrides this anymore?

&gt; Source/WebCore/dom/NodeRenderingContext.h:48
&gt; +    NodeRenderingContext(Node*, const AttachContext* = 0);

isn&apos;t explicit still needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862079</commentid>
    <comment_count>4</comment_count>
      <attachid>194671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-22 19:00:40 -0700</bug_when>
    <thetext>Comment on attachment 194671
Patch

Attachment 194671 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17239397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862150</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-22 22:52:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 194671 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194671&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:-1259
&gt; &gt; -void Element::createRendererIfNeeded()
&gt; 
&gt; Nothing overrides this anymore?

It&apos;s not virtual, so there were never any overrides. You&apos;re thinking of Element::createRenderer.

Element::createRendererIfNeeded and Text::createTextRendererIfNeeded were both single line, non virtual methods that had only one caller (or two for Text) and delegated immediately to NodeRenderingContext. I inlined the call sites to just use NodeRenderingContext().createRendererForElementIfNeeded (or createRendererForTextIfNeeded) which makes the code more clear and lets you pass the AttachContext inside Element::attach.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.h:48
&gt; &gt; +    NodeRenderingContext(Node*, const AttachContext* = 0);
&gt; 
&gt; isn&apos;t explicit still needed?

Yeah it is, I&apos;ll add it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862176</commentid>
    <comment_count>6</comment_count>
      <attachid>194671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-23 03:38:46 -0700</bug_when>
    <thetext>Comment on attachment 194671
Patch

Attachment 194671 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17181917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862206</commentid>
    <comment_count>7</comment_count>
      <attachid>194671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-23 09:47:21 -0700</bug_when>
    <thetext>Comment on attachment 194671
Patch

Attachment 194671 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17190964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862325</commentid>
    <comment_count>8</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-24 00:28:44 -0700</bug_when>
    <thetext>I&apos;ve been thinking about this more and with a bitfield for lazy attach, or making lazy attach not lie about being attached, we could get the same performance improvement by avoiding n^2 behavior. Making lazyAttach not setAttached would be hard in the short term, so I think we should go with the bitfield.

We should still pass the style down through reattach though in recalcStyle.

@eric: How do you feel about using a bitfield instead? If we do that do you want to keep the AttachContext? Passing just the RenderStyle would make this patch simpler.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194671</attachid>
            <date>2013-03-22 17:57:15 -0700</date>
            <delta_ts>2013-09-27 09:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113123-20130322205301.patch</filename>
            <type>text/plain</type>
            <size>71320</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY3YTE4ZDEwMTdmODRl
ZmI0YTkwYzQ4NTliMGY5Y2Y0NDJkNGU0MS4uOGNiMjE2YWIxYWQ1MGMwNGU0ZTQ0MDQ3ZTExODlj
ODE0ZGM5NWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAxMy0wMy0yMiAgRWxs
aW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQYXNzIGNvbnRl
eHQgdG8gTm9kZTo6YXR0YWNoIGFuZCBkZXRhY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzEyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBwYXNzIGNvbnRleHQgaW5mb3JtYXRpb24gZG93
biB0aHJvdWdoIGF0dGFjaCBhbmQgZGV0YWNoIHRvIGF2b2lkCisgICAgICAgIGNvbXB1dGluZyB0
aGUgc3R5bGUgdHdpY2UgZHVyaW5nIHJlYXR0YWNoIGFuZCB3ZSBjYW4gYWxzbyBub3RpZml5IGRl
c2NlbmRhbnRzCisgICAgICAgIHRoYXQgYWxsIHRoZWlyIHNpYmxpbmdzIGFyZSBhYm91dCB0byBh
dHRhY2ggYW5kIHRoZXkgaGF2ZSBubyBuZXh0IHNpYmxpbmdzCisgICAgICAgIHJlbmRlcmVycyB3
aGljaCBsZXRzIHVzIGF2b2lkIG5eMiBsb29wcyBpbiBOb2RlUmVuZGVyaW5nQ29udGV4dCBhbmQg
YWxzbworICAgICAgICBOb2RlOjphdHRhY2ggd2hlcmUgd2UgaGFuZGxlIHdoaXRlc3BhY2UuCisK
KyAgICAgICAgRklYTUU6IEFkZCB0aGUgcGVyZiB0ZXN0LiBUaGlzIG1ha2VzIGEgYmVuY2htYXJr
IG9mIGFkZGluZyA1MDAwIGRpdnMgY2hpbGRyZW4KKyAgICAgICAgZnJvbSBhbiBvdmVyZmxvdyBz
Y3JvbGxpbmcgYXJlYSBmcm9tIDQ1MG1zIGZvciByZWNhbGMgc3R5bGUgKyBhdHRhY2ggZG93biB0
bworICAgICAgICA5MG1zLiBUaGVyZSBzaG91bGQgYmUgYSBodWdlIHBlcmYgaW1wcm92ZW1lbnQg
Zm9yIGRvY3VtZW50cyB0aGF0IGFkZCBtYW55CisgICAgICAgIGNoaWxkcmVuIHdpdGggSlMgdG8g
YW5vdGhlciBub2RlIGFuZCBoYXZlIHZlcnkgZmxhdCB0cmVlIHN0cnVjdHVyZXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuIEZJWE1FOiBOZWVkcyBhIHBlcmYgdGVzdC4KKworICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2gp
OgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmF0dGFjaENoaWxkcmVuKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlY2Fs
Y1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAg
KiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmRldGFjaCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF0dGFjaENvbnRleHQ6OkF0dGFjaENvbnRleHQpOgorICAgICAgICAoQXR0
YWNoQ29udGV4dCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJl
YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlYXR0YWNoSWZBdHRhY2hlZCk6Cisg
ICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZvckVsZW1lbnRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVu
ZGVyZXJGb3JUZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oOgorICAgICAgICAoTm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIGRvbS9Qc2V1
ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuaDoKKyAgICAgICAgKFBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNo
YWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHQ6OmF0dGFjaCk6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKFRleHQpOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENhbnZhc0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oOgorICAgICAgICAoSFRNTENhbnZhc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
OgorICAgICAgICAoSFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChIVE1M
RnJhbWVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2gpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKEhUTUxGcmFtZUVsZW1l
bnRCYXNlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGcmFtZVNldEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTElFbGVtZW50OjphdHRhY2gpOgorICAgICAg
ICAqIGh0bWwvSFRNTExJRWxlbWVudC5oOgorICAgICAgICAoSFRNTExJRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0R3JvdXBFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9wdEdyb3VwRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpkZXRhY2gp
OgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxPcHRp
b25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Lmg6CisgICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBy
b2dyZXNzRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJlYUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAoSFRNTFZpZGVvRWxlbWVudCk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6ZGV0YWNoKToKKyAg
ICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50Lmg6CisgICAgICAgIChQbHVnaW5Eb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2xlYXJCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsZWFyQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9DbGVhckJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKENsZWFyQnV0dG9uRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
OgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1BpY2tl
ckluZGljYXRvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGlja2VySW5kaWNhdG9y
RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JF
bGVtZW50Lmg6CisgICAgICAgIChQaWNrZXJJbmRpY2F0b3JFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xp
ZGVyVGh1bWJFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oOgorICAgICAgICAoU2xpZGVyVGh1bWJFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGlu
QnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9u
RWxlbWVudC5oOgorICAgICAgICAoU3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50KToKKyAgICAgICAgKElucHV0RmllbGRTcGVlY2hCdXR0b25F
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6YXR0
YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpkZXRh
Y2gpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50Lmg6
CisgICAgICAgIChUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudCk6CisgICAgICAgICogbG9hZGVy
L1BsYWNlaG9sZGVyRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJE
b2N1bWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBsb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5o
OgorICAgICAgICAoUGxhY2Vob2xkZXJEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAoU1ZHSW1hZ2VFbGVt
ZW50KToKKwogMjAxMy0wMy0yMSAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBCeXBhc3MgWFNTQXVkaXRvciBmb3IgYXNwLm5ldCBzZXJ2ZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDVjY2Q3YWNkN2FmMGVmZTIxMjFjMTNiOTAyMzVi
MDFhMmU3MTMyMjIuLmQxYzYxZTUzN2E3ZDgxMGIyMDI5Y2JiZTcyMWFjMjQ5NThhY2FhMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTgyMSwxNyArODIxLDE3IEBAIHZv
aWQgQ29udGFpbmVyTm9kZTo6c2NoZWR1bGVTZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hhbmdl
VHlwZSBjaGFuZ2VUeXBlKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKGNoYW5nZVR5cGUp
OwogfQogCi12b2lkIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpCit2b2lkIENvbnRhaW5lck5vZGU6
OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIGF0dGFjaENoaWxk
cmVuKCk7Ci0gICAgTm9kZTo6YXR0YWNoKCk7CisgICAgTm9kZTo6YXR0YWNoKGNvbnRleHQpOwog
fQogCi12b2lkIENvbnRhaW5lck5vZGU6OmRldGFjaCgpCit2b2lkIENvbnRhaW5lck5vZGU6OmRl
dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIGRldGFjaENoaWxkcmVu
KCk7CiAgICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBOb2RlOjpkZXRhY2go
KTsKKyAgICBOb2RlOjpkZXRhY2goY29udGV4dCk7CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiwgTm9kZSosIGludCBj
aGlsZENvdW50RGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2ZDc3ZDA0
ZTVjYjkwMWJjYjA2N2UwOGQ2MjFmMjdjOGI5MWM0NTUyLi44ZmQxYTY1NDc5OWJkZTc0NjNiMzhj
YzQyOTFmZGExMTQxOWNjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTEw
Niw4ICsxMDYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWlu
ZXJOb2RlKiBjbG9uZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9v
bCBhY3RpdmUgPSB0cnVlLCBib29sIHBhdXNlID0gZmFsc2UpIE9WRVJSSURFOwpAQCAtMTkxLDEw
ICsxOTEsMTEgQEAgaW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAKIGlubGluZSB2b2lkIENvbnRhaW5l
ck5vZGU6OmF0dGFjaENoaWxkcmVuKCkKIHsKKyAgICBBdHRhY2hDb250ZXh0IGNvbnRleHQoQXR0
YWNoaW5nRGVzY2VuZGFudHMpOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIEFTU0VSVCgh
Y2hpbGQtPmF0dGFjaGVkKCkgfHwgY2hpbGRBdHRhY2hlZEFsbG93ZWRXaGVuQXR0YWNoaW5nQ2hp
bGRyZW4odGhpcykpOwogICAgICAgICBpZiAoIWNoaWxkLT5hdHRhY2hlZCgpKQotICAgICAgICAg
ICAgY2hpbGQtPmF0dGFjaCgpOworICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgmY29udGV4dCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkNDhjOTE3MDMwNjIwZDE4
ZjcwNjdmMDJmMWU1NGIwN2FhOGNkZGRkLi5hMzAyMzk5ODRlODU2MzdhODBhOTU3ODYyMTFjYjU1
NjVjN2VlMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwNzAsNyArMjA3MCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmNsZWFyU3R5bGVSZXNvbHZlcigpCiAgICAgbV9zdHlsZVJlc29sdmVy
LmNsZWFyKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCit2b2lkIERvY3VtZW50Ojph
dHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoIWF0dGFj
aGVkKCkpOwogICAgIEFTU0VSVCghbV9pblBhZ2VDYWNoZSk7CkBAIC0yMDkwLDEyICsyMDkwLDEy
IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSBy
ZW5kZXJlcigpOwogICAgIHNldFJlbmRlcmVyKDApOwogCi0gICAgQ29udGFpbmVyTm9kZTo6YXR0
YWNoKCk7CisgICAgQ29udGFpbmVyTm9kZTo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgc2V0UmVu
ZGVyZXIocmVuZGVyKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKK3ZvaWQgRG9jdW1l
bnQ6OmRldGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVChh
dHRhY2hlZCgpKTsKICAgICBBU1NFUlQoIW1faW5QYWdlQ2FjaGUpOwpAQCAtMjE0OSw3ICsyMTQ5
LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKICAgICBtX2ZvY3VzZWROb2RlID0gMDsKICAg
ICBtX2FjdGl2ZUVsZW1lbnQgPSAwOwogCi0gICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKCk7Cisg
ICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKGNvbnRleHQpOwogCiAgICAgdW5zY2hlZHVsZVN0eWxl
UmVjYWxjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzAyZGViMWFjMzBjN2Q0ZWNjOGUz
NDNiYzliODRlNGFjNDZhNzUzZi4uMDVhOTJmYWUyNGNhYjI3MTUwMDIwMTExYmMzM2MyYjRmZDZm
MzA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTUzNiw4ICs1MzYsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsgLy8gRklYTUU6IFRy
eSB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4KICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJl
c291cmNlTG9hZGVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3QgQXR0
YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKGNvbnN0
IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1
Y3Rpb24oKTsKIAogICAgIC8vIE92ZXJyaWRlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWV0aG9k
cyB0byBkbyBhZGRpdGlvbmFsIHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhYTdmNTJk
MTIwYzhkNjhmZDJjMzRlOGIzMzljZTY1YmY2MDJmYzRhLi5lNjhkYzA5OGYxNWI5OGI0MTc2NmYx
ZjkwYzE1Yzk5YzViNzY4MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMjU2LDE4ICsx
MjU2LDEzIEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCiAjZW5kaWYKIH0KIAotdm9pZCBFbGVtZW50OjpjcmVhdGVSZW5kZXJlcklmTmVl
ZGVkKCkKLXsKLSAgICBOb2RlUmVuZGVyaW5nQ29udGV4dCh0aGlzKS5jcmVhdGVSZW5kZXJlckZv
ckVsZW1lbnRJZk5lZWRlZCgpOwotfQotCi12b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCit2b2lkIEVs
ZW1lbnQ6OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIFBvc3RB
dHRhY2hDYWxsYmFja0Rpc2FibGVyIGNhbGxiYWNrRGlzYWJsZXIodGhpcyk7CiAgICAgU3R5bGVS
ZXNvbHZlclBhcmVudFB1c2hlciBwYXJlbnRQdXNoZXIodGhpcyk7CiAgICAgV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsK
IAotICAgIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKKyAgICBOb2RlUmVuZGVyaW5nQ29udGV4
dCh0aGlzLCBjb250ZXh0KS5jcmVhdGVSZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCgpOwogCiAg
ICAgaWYgKHBhcmVudEVsZW1lbnQoKSAmJiBwYXJlbnRFbGVtZW50KCktPmlzSW5DYW52YXNTdWJ0
cmVlKCkpCiAgICAgICAgIHNldElzSW5DYW52YXNTdWJ0cmVlKHRydWUpOwpAQCAtMTI4MSw3ICsx
Mjc2LDcgQEAgdm9pZCBFbGVtZW50OjphdHRhY2goKQogICAgIH0gZWxzZSBpZiAoZmlyc3RDaGls
ZCgpKQogICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgpOwogCi0gICAgQ29udGFpbmVyTm9kZTo6
YXR0YWNoKCk7CisgICAgQ29udGFpbmVyTm9kZTo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgdXBk
YXRlUHNldWRvRWxlbWVudChBRlRFUik7CiAKQEAgLTEzMDEsNyArMTI5Niw3IEBAIHZvaWQgRWxl
bWVudDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKCkKICAgICAgICAgZG9jdW1lbnQo
KS0+cmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudE5vZGUodGhpcyk7CiB9CiAKLXZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKK3ZvaWQg
RWxlbWVudDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5
VXBkYXRlczsKICAgICB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoKTsKQEAgLTEzMTEs
NyArMTMwNiw5IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgZGF0YS0+c2V0UHNl
dWRvRWxlbWVudChCRUZPUkUsIDApOwogICAgICAgICBkYXRhLT5zZXRQc2V1ZG9FbGVtZW50KEFG
VEVSLCAwKTsKICAgICAgICAgZGF0YS0+c2V0SXNJbkNhbnZhc1N1YnRyZWUoZmFsc2UpOwotICAg
ICAgICBkYXRhLT5yZXNldENvbXB1dGVkU3R5bGUoKTsKKyAgICAgICAgLy8gT25seSBjbGVhciB0
aGUgYWZmZWN0ZWRCeSBiaXRzIGlmIHdlJ3JlIG5vdCBzaGFyaW5nIHN0eWxlIGR1cmluZyBhIHJl
YXR0YWNoLgorICAgICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPnJlbmRlclN0eWxlKQor
ICAgICAgICAgICAgZGF0YS0+cmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgICAgIGRhdGEtPnJl
c2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMoKTsKICAgICB9CiAKQEAgLTEzMTksNyArMTMx
Niw3IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgZGV0YWNoQ2hpbGRyZW5JZk5l
ZWRlZCgpOwogICAgICAgICBzaGFkb3ctPmRldGFjaCgpOwogICAgIH0KLSAgICBDb250YWluZXJO
b2RlOjpkZXRhY2goKTsKKyAgICBDb250YWluZXJOb2RlOjpkZXRhY2goY29udGV4dCk7CiB9CiAK
IGJvb2wgRWxlbWVudDo6cHNldWRvU3R5bGVDYWNoZUlzSW52YWxpZChjb25zdCBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCkBAIC0xMzgzLDE2ICsxMzgw
LDE5IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAg
IGJvb2wgaGFzRGlyZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXMoKTsKICAgICBib29sIGhhc0luZGlyZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKIAotICAgIGlmICgoY2hhbmdl
ID4gTm9DaGFuZ2UgfHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewotICAgICAgICBpZiAoaGFzUmFy
ZURhdGEoKSkKLSAgICAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5yZXNldENvbXB1dGVkU3R5
bGUoKTsKLSAgICB9CisgICAgaWYgKGhhc1JhcmVEYXRhKCkgJiYgKGNoYW5nZSA+IE5vQ2hhbmdl
IHx8IG5lZWRzU3R5bGVSZWNhbGMoKSkpCisgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5yZXNl
dENvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoaGFzUGFyZW50U3R5bGUgJiYgKGNoYW5nZSA+PSBJ
bmhlcml0IHx8IG5lZWRzU3R5bGVSZWNhbGMoKSkpIHsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiBuZXdTdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKTsKICAgICAgICAgU3R5bGVDaGFuZ2Ug
Y2ggPSBOb2RlOjpkaWZmKGN1cnJlbnRTdHlsZS5nZXQoKSwgbmV3U3R5bGUuZ2V0KCksIGRvY3Vt
ZW50KCkpOwogICAgICAgICBpZiAoY2ggPT0gRGV0YWNoIHx8ICFjdXJyZW50U3R5bGUpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGUgc3R5bGUgZ2V0cyBjb21wdXRlZCB0d2ljZSBieSBjYWxs
aW5nIGF0dGFjaC4gV2UgY291bGQgZG8gYmV0dGVyIGlmIHdlIHBhc3NlZCB0aGUgc3R5bGUgYWxv
bmcuCi0gICAgICAgICAgICByZWF0dGFjaCgpOworICAgICAgICAgICAgLy8gRklYTUU6IFNlbGVj
dG9yQ2hlY2tlciB1c2VzIHRoZSByZW5kZXJlciB0byBkZXRlY3QgZHJhZ2luZyBzbworICAgICAg
ICAgICAgLy8gaWYgd2UncmUgZ29pbmcgdG8gZGV0Y2ggd2UgbmVlZCB0byBnbyBiYWNrIHRocm91
Z2ggaXQgdG8gdXBkYXRlCisgICAgICAgICAgICAvLyB0aGF0IHN0YXRlLiBXZSBzaG91bGQgZmln
dXJlIG91dCBhIHdheSB0byBzaGFyZSBzdHlsZSBpbiB0aGF0IGNhc2UgdG9vLgorICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNEcmFnZ2luZygpKQorICAgICAgICAg
ICAgICAgIG5ld1N0eWxlID0gMDsKKyAgICAgICAgICAgIEF0dGFjaENvbnRleHQgY29udGV4dChB
dHRhY2hpbmdTZWxmLCBuZXdTdHlsZS5nZXQoKSk7CisgICAgICAgICAgICByZWF0dGFjaCgmY29u
dGV4dCk7CiAgICAgICAgICAgICAvLyBhdHRhY2ggcmVjYWxjdWxhdGVzIHRoZSBzdHlsZSBmb3Ig
YWxsIGNoaWxkcmVuLiBObyBuZWVkIHRvIGRvIGl0IHR3aWNlLgogICAgICAgICAgICAgY2xlYXJO
ZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2Fs
YygpOwpAQCAtMjI1OCw2ICsyMjU4LDggQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVt
ZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIGlmICgh
cmVuZGVyZXIoKSB8fCAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocmVuZGVyZXIoKS0+
Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpKSkKICAgICAgICAgICAgIHNldFBzZXVkb0Vs
ZW1lbnQocHNldWRvSWQsIDApOwogICAgIH0gZWxzZSBpZiAoUmVmUHRyPFBzZXVkb0VsZW1lbnQ+
IGVsZW1lbnQgPSBjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQocHNldWRvSWQpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhbiBBdHRhY2hDb250ZXh0IHNvIHRoZSBlbGVt
ZW50IGtub3dzIGlmIGl0IG5lZWRzIHRvCisgICAgICAgIC8vIHRyYXZlcnNlIGl0cyBzaWJsaW5n
cyBsb29raW5nIGZvciBhIG5leHQgcmVuZGVyZXIuCiAgICAgICAgIGVsZW1lbnQtPmF0dGFjaCgp
OwogICAgICAgICBzZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50LnJlbGVhc2UoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmFhOWQ0MjUzNDM5MDM2MzQ1MmZiNTk0ZDRj
ZWFkMDhmNTUxNTJmMy4uYTg5OGJiMDE3NGM5ZDhjNzlmNTFiYmY0OGEyM2JiMTExZTExMjExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0zOTcsOCArMzk3LDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxl
bWVudCYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQq
ID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaChjb25zdCBBdHRhY2hDb250
ZXh0KiA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2b2lkIHJlY2Fs
Y1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwpAQCAtNzIwLDggKzcyMCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZXRhY2hBbGxBdHRyTm9kZXNGcm9tRWxlbWVudCgpOwogICAgIHZvaWQg
ZGV0YWNoQXR0ck5vZGVGcm9tRWxlbWVudFdpdGhWYWx1ZShBdHRyKiwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSk7CiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKLQogICAg
IGJvb2wgaXNKYXZhU2NyaXB0QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOwogICAgIGJvb2wg
aXNKYXZhU2NyaXB0VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuaAppbmRleCBiNWE0YjdjNjY4ZWE0NjFlOTlkN2FhNjkyOTU5ZmVhYjZl
NmUwMDRkLi42YTgxNDU0MGEzM2ZhODJkZWFlNGE4ZWJkNjc5ZWNmZmRmNmEyNmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAg
U2hhZG93Um9vdCogYWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBTaGFkb3dSb290
OjpTaGFkb3dSb290VHlwZSk7CiAKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIHRha2UgYW4g
QXR0YWNoQ29udGV4dC4KICAgICB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAzMGQxM2U2YWM4ZDI5OTM3NTdiNzA3NTkzY2JjYmNiZTZjODhi
OTM0Li44OWM2NjA2YTAwMzI0MGQ4YjBiNjQ2ZTUyNTg3YmE2N2JmNzVlMTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xMDYxLDE0ICsxMDYxLDE0IEBAIGJvb2wgTm9kZTo6Y29udGFpbnNJbmNsdWRp
bmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKICNlbmRpZgogfQogCi12b2lk
IE5vZGU6OmF0dGFjaCgpCit2b2lkIE5vZGU6OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBj
b250ZXh0KQogewogICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CiAgICAgQVNTRVJUKCFyZW5kZXJl
cigpIHx8IChyZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRlcmVyKCktPnBhcmVudCgpKSk7CiAK
ICAgICAvLyBJZiB0aGlzIG5vZGUgZ290IGEgcmVuZGVyZXIgaXQgbWF5IGJlIHRoZSBwcmV2aW91
c1JlbmRlcmVyKCkgb2Ygc2libGluZyB0ZXh0IG5vZGVzIGFuZCB0aHVzIGFmZmVjdCB0aGUKICAg
ICAvLyByZXN1bHQgb2YgVGV4dDo6dGV4dFJlbmRlcmVySXNOZWVkZWQoKSBmb3IgdGhvc2Ugbm9k
ZXMuCi0gICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiAoIWNvbnRl
eHQgfHwgY29udGV4dC0+bW9kZSA9PSBBdHRhY2hpbmdTZWxmKSkgewogICAgICAgICBmb3IgKE5v
ZGUqIG5leHQgPSBuZXh0U2libGluZygpOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmco
KSkgewogICAgICAgICAgICAgaWYgKG5leHQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCB2b2lkIE5vZGU6OmF0dGFjaCgpCiAgICAgICAg
ICAgICBpZiAoIW5leHQtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIEFTU0VSVCghbmV4dC0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICB0b1Rl
eHQobmV4dCktPmNyZWF0ZVRleHRSZW5kZXJlcklmTmVlZGVkKCk7CisgICAgICAgICAgICBOb2Rl
UmVuZGVyaW5nQ29udGV4dChuZXh0LCBzdGF0aWNfY2FzdDxBdHRhY2hDb250ZXh0Kj4oMCkpLmNy
ZWF0ZVJlbmRlcmVyRm9yVGV4dElmTmVlZGVkKCk7CiAgICAgICAgICAgICAvLyBJZiB3ZSBhZ2Fp
biBkZWNpZGVkIG5vdCB0byBjcmVhdGUgYSByZW5kZXJlciBmb3IgbmV4dCwgd2UgY2FuIGJhaWwg
b3V0IHRoZSBsb29wLAogICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCB3b24ndCBhZmZlY3QgdGhl
IHJlc3VsdCBvZiBUZXh0Ojp0ZXh0UmVuZGVyZXJJc05lZWRlZCgpIGZvciB0aGUgcmVzdAogICAg
ICAgICAgICAgLy8gb2Ygc2libGluZyBub2Rlcy4KQEAgLTExMDMsNyArMTEwMyw3IEBAIGJvb2wg
Tm9kZTo6aW5EZXRhY2goKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgTm9kZTo6ZGV0YWNoKCkK
K3ZvaWQgTm9kZTo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqKQogewogI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoIWRldGFjaGluZ05vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYjQwNzg2MzUx
NmUxNmJhOTMxMWI2OTJjNzgzOTRkYmEzMmIwMjI5Ny4uMTIwYzlmMTZjMDAzZDZmODVhMDU5NWM0
NjI0Yzk4MmM0MmU3MjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xMzQsNiArMTM0LDIxIEBAIGVudW0g
QXR0YWNoQmVoYXZpb3IgewogICAgIEF0dGFjaExhemlseSwKIH07CiAKK2VudW0gQXR0YWNoTW9k
ZSB7CisgICAgQXR0YWNoaW5nU2VsZiwKKyAgICBBdHRhY2hpbmdEZXNjZW5kYW50cywKK307CisK
K3N0cnVjdCBBdHRhY2hDb250ZXh0IHsKKyAgICBBdHRhY2hDb250ZXh0KEF0dGFjaE1vZGUgbW9k
ZSA9IEF0dGFjaGluZ1NlbGYsIFJlbmRlclN0eWxlKiBzdHlsZSA9IDApCisgICAgICAgIDogcmVu
ZGVyU3R5bGUoc3R5bGUpCisgICAgICAgICwgbW9kZShtb2RlKQorICAgIHsgfQorCisgICAgUmVu
ZGVyU3R5bGUqIHJlbmRlclN0eWxlOworICAgIEF0dGFjaE1vZGUgbW9kZTsKK307CisKIGNsYXNz
IE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBUcmVlU2hhcmVkPE5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFRyZWVTY29wZTsKQEAgLTUzNiwxOCArNTUxLDE4IEBAIHB1YmxpYzoKICAgICAv
LyBBdHRhY2hlcyB0aGlzIG5vZGUgdG8gdGhlIHJlbmRlcmluZyB0cmVlLiBUaGlzIGNhbGN1bGF0
ZXMgdGhlIHN0eWxlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG5vZGUgYW5kIGNyZWF0ZXMgYW4KICAg
ICAvLyBhcHByb3ByaWF0ZSBSZW5kZXJPYmplY3Qgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZCBpbnRv
IHRoZSB0cmVlIChleGNlcHQgd2hlbiB0aGUgc3R5bGUgaGFzIGRpc3BsYXk6IG5vbmUpLiBUaGlz
CiAgICAgLy8gbWFrZXMgdGhlIG5vZGUgdmlzaWJsZSBpbiB0aGUgRnJhbWVWaWV3LgotICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFj
aENvbnRleHQqID0gMCk7CiAKICAgICAvLyBEZXRhY2hlcyB0aGUgbm9kZSBmcm9tIHRoZSByZW5k
ZXJpbmcgdHJlZSwgbWFraW5nIGl0IGludmlzaWJsZSBpbiB0aGUgcmVuZGVyZWQgdmlldy4gVGhp
cyBtZXRob2Qgd2lsbCByZW1vdmUKICAgICAvLyB0aGUgbm9kZSdzIHJlbmRlcmluZyBvYmplY3Qg
ZnJvbSB0aGUgcmVuZGVyaW5nIHRyZWUgYW5kIGRlbGV0ZSBpdC4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9
IDApOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgaW5EZXRhY2goKSBjb25zdDsKICNlbmRp
ZgogCi0gICAgdm9pZCByZWF0dGFjaCgpOwotICAgIHZvaWQgcmVhdHRhY2hJZkF0dGFjaGVkKCk7
CisgICAgdm9pZCByZWF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApOworICAgIHZvaWQg
cmVhdHRhY2hJZkF0dGFjaGVkKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCk7CiAgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgCiAgICAgLy8g
V3JhcHBlciBmb3Igbm9kZXMgdGhhdCBkb24ndCBoYXZlIGEgcmVuZGVyZXIsIGJ1dCBzdGlsbCBj
YWNoZSB0aGUgc3R5bGUgKGxpa2UgSFRNTE9wdGlvbkVsZW1lbnQpLgpAQCAtODg5LDE3ICs5MDQs
MTcgQEAgaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9z
dEZyZWUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiB9CiAK
LWlubGluZSB2b2lkIE5vZGU6OnJlYXR0YWNoKCkKK2lubGluZSB2b2lkIE5vZGU6OnJlYXR0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGF0dGFjaGVkKCkpCi0g
ICAgICAgIGRldGFjaCgpOwotICAgIGF0dGFjaCgpOworICAgICAgICBkZXRhY2goY29udGV4dCk7
CisgICAgYXR0YWNoKGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9pZCBOb2RlOjpyZWF0dGFjaElm
QXR0YWNoZWQoKQoraW5saW5lIHZvaWQgTm9kZTo6cmVhdHRhY2hJZkF0dGFjaGVkKGNvbnN0IEF0
dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGF0dGFjaGVkKCkpCi0gICAgICAgIHJl
YXR0YWNoKCk7CisgICAgICAgIHJlYXR0YWNoKGNvbnRleHQpOwogfQogCiBpbmxpbmUgdm9pZCBO
b2RlOjpsYXp5UmVhdHRhY2goU2hvdWxkU2V0QXR0YWNoZWQgc2hvdWxkU2V0QXR0YWNoZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlODRjNWU0
MTU5OGM0ZGE4YzExNmUyNmIxZDFiNWU3Mzc0ZDYwMzg1Li4yY2ExNDA5NjgzMWUwMmI2NWYzMTA3
NWRmZGZhMzk3YmUwNzZiMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTU0LDkgKzU0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCitOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQoTm9kZSogbm9kZSwgY29uc3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKICAg
ICA6IG1fbm9kZShub2RlKQorICAgICwgbV9zdHlsZShjb250ZXh0ID8gY29udGV4dC0+cmVuZGVy
U3R5bGUgOiAwKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKKyAgICAsIG1fbmV4dFNp
YmxpbmdzV2lsbEF0dGFjaChjb250ZXh0ICYmIGNvbnRleHQtPm1vZGUgPT0gQXR0YWNoaW5nRGVz
Y2VuZGFudHMpCiB7CiAgICAgbV9yZW5kZXJpbmdQYXJlbnQgPSBOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpwYXJlbnQobm9kZSwgJm1fcGFyZW50RGV0YWlscyk7CiB9CkBAIC02Niw2ICs2OCw3IEBA
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLCBtX3JlbmRlcmluZ1BhcmVudCgwKQogICAgICwgbV9z
dHlsZShzdHlsZSkKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCisgICAgLCBtX25leHRT
aWJsaW5nc1dpbGxBdHRhY2goZmFsc2UpCiB7CiB9CiAKQEAgLTExMyw2ICsxMTYsMTYgQEAgUmVu
ZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAg
ICBpZiAobV9yZW5kZXJpbmdQYXJlbnQgJiYgIW1fcmVuZGVyaW5nUGFyZW50LT5hdHRhY2hlZCgp
KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIEF2b2lkIE8obl4yKSB3aGVuIGFuIGFuY2Vz
dG9yIGlzIGF0dGFjaGluZyBzaW5jZSB3ZSBrbm93IGFsbCBvdXIgc2libGluZ3MKKyAgICAvLyBh
cmUgbm90IHJlYWxseSBhdHRhY2hlZCB5ZXQuCisgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93
IHRvIG1ha2UgdGhpcyBvcHRpbWl6YXRpb24gd29yayBmb3IgZWxlbWVudHMgd2l0aAorICAgIC8v
IGluc2VydGlvbiBwb2ludHMgYW5kIG90aGVyIHRoaW5ncyB0aGF0IGF0dGFjaCBvdXQgb2Ygb3Jk
ZXIgb3IgYmV0dGVyIHlldAorICAgIC8vIGRvbid0IGxldCBhbnlvbmUgYXR0YWNoIG91dCBvZiBv
cmRlci4KKyAgICAvLyBGSVhNRTogU2luY2Ugd2Ugc2tpcCB0aGlzIGZvciB0aGluZ3MgdGhhdCBu
ZWVkIHRoZSB0cmVlIHdhbGtlciB3ZSBhbHNvCisgICAgLy8gZG9uJ3Qgb3B0aW1pemUgZm9yIG5v
ZGVzIHdpdGggcHNldWRvIGVsZW1lbnQgY2hpbGRyZW4uCisgICAgaWYgKCFtX25vZGUtPm5lZWRz
U2hhZG93VHJlZVdhbGtlcigpICYmIG1fbmV4dFNpYmxpbmdzV2lsbEF0dGFjaCkKKyAgICAgICAg
cmV0dXJuIDA7CisKICAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChyZW5kZXJlciAm
JiAhaXNSZW5kZXJlclJlcGFyZW50ZWQocmVuZGVyZXIpKQpAQCAtMjQ2LDcgKzI1OSw4IEBAIHZv
aWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVk
KCkKIAogICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fc3R5bGUgPSBlbGVtZW50LT5zdHlsZUZvclJlbmRlcmVyKCk7CisgICAgaWYgKCFtX3N0
eWxlKQorICAgICAgICBtX3N0eWxlID0gZWxlbWVudC0+c3R5bGVGb3JSZW5kZXJlcigpOwogICAg
IEFTU0VSVChtX3N0eWxlKTsKIAogICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOwpAQCAt
Mjk5LDcgKzMxMyw3IEBAIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVy
Rm9yVGV4dElmTmVlZGVkKCkKIAogICAgIGlmIChyZXNldFN0eWxlSW5oZXJpdGFuY2UoKSkKICAg
ICAgICAgbV9zdHlsZSA9IGRvY3VtZW50LT5zdHlsZVJlc29sdmVyKCktPmRlZmF1bHRTdHlsZUZv
ckVsZW1lbnQoKTsKLSAgICBlbHNlCisgICAgZWxzZSBpZiAoIW1fc3R5bGUpCiAgICAgICAgIG1f
c3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKIAogICAgIGlmICghdGV4dE5vZGUtPnRl
eHRSZW5kZXJlcklzTmVlZGVkKCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmgKaW5kZXggYzA3OTc3NmRjODIwODJkNGQ1ZGZmMTU5NTIxOTg1NTU1NmZiZDE2
Yi4uM2M5Y2FiZTgyMTQyZDJkOWI1NjIzMzUwYTkxNjc3ZmQzNGNhOWEyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
RWxlbWVudFNoYWRvdzsKIAogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgot
ICAgIGV4cGxpY2l0IE5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqKTsKKyAgICBOb2RlUmVuZGVy
aW5nQ29udGV4dChOb2RlKiwgY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKTsKICAgICBOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiwgUmVuZGVyU3R5bGUqKTsKICAgICB+Tm9kZVJlbmRlcmluZ0Nv
bnRleHQoKTsKIApAQCAtNzUsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbV9zdHlsZTsKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1Jl
bmRlcmVyOwogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CisgICAgYm9vbCBtX25leHRT
aWJsaW5nc1dpbGxBdHRhY2g7CiB9OwogCiBpbmxpbmUgTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Om5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGQy
ODJlYzAwN2Y3ZjcyYTc0ZmY4YzdmYWQ1ZjI4MmU5Y2RhYmZjNGQuLjJkOThhYzE2NTQ2MzBmYWM1
ZjViMWE2ZWRkNWIxNDMzMjc1YWY4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTc2LDExICs3NiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVt
ZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKICAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lk
KTsKIH0KIAotdm9pZCBQc2V1ZG9FbGVtZW50OjphdHRhY2goKQordm9pZCBQc2V1ZG9FbGVtZW50
OjphdHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoIXJl
bmRlcmVyKCkpOwogCi0gICAgRWxlbWVudDo6YXR0YWNoKCk7CisgICAgRWxlbWVudDo6YXR0YWNo
KGNvbnRleHQpOwogCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPnN0eWxlKCktPnJlZ2lvblRocmVh
ZCgpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDEyYTJhMjA2
OTE4MTMwOGVmYzJiNTI4OWMwODYwYjRmYTNlN2UzYzkuLmFlMjJkZTk4NjhlNDc3MzdiZDUwZDFi
ZmUyN2I0NGI2YmEwZmRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgflBzZXVkb0VsZW1lbnQoKTsKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNTQyZWRj
ZjBkYjU0ZmVlMGU3NWJiODZjODllODQ3Yjk5YWI5NmYzYi4uMDBmOGQ2NGFlYTk5MmIxOTQyNTRj
ODZkNDFlZDZkY2FhMzMzNzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTcz
LDExICsxNzMsMTEgQEAgdm9pZCBTaGFkb3dSb290OjpzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2Uo
Ym9vbCB2YWx1ZSkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKK3ZvaWQg
U2hhZG93Um9vdDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIo
KTsKICAgICBzdHlsZVJlc29sdmVyLT5wdXNoUGFyZW50U2hhZG93Um9vdCh0aGlzKTsKLSAgICBE
b2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsKKyAgICBEb2N1bWVudEZyYWdtZW50OjphdHRhY2go
Y29udGV4dCk7CiAgICAgc3R5bGVSZXNvbHZlci0+cG9wUGFyZW50U2hhZG93Um9vdCh0aGlzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZGJjNzFkYzBhNmNkNjI4ZTAzZTA5NDUw
NjFlZGNhNjU2MzIwOTkzYy4uOWJiMzA4YWU4YjBjYWY3OTI1ZjAxOTAxODNjYjdiMjNmMTQ0ZjZm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzWW91bmdlc3QoKSBjb25zdCB7IHJldHVybiAheW91bmdlclNoYWRvd1Jvb3QoKTsg
fQogICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7IHJldHVybiAhb2xkZXJTaGFkb3dSb290KCk7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGRiZjM1YTQ1ZTNjMTNkN2U0NThlNGQ3NjFlN2QyYmZm
ZDU2NDRiMGUuLjJiN2NiNWQxYzZmNTk1YTc2YzE2ZWRiYTZhZDAwZTRkODBmMDUwYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAKQEAgLTI1OCwxMSArMjU4LDYgQEAgc3RhdGljIGJvb2wgaXNTVkdUZXh0KFRl
eHQqIHRleHQpCiB9CiAjZW5kaWYKIAotdm9pZCBUZXh0OjpjcmVhdGVUZXh0UmVuZGVyZXJJZk5l
ZWRlZCgpCi17Ci0gICAgTm9kZVJlbmRlcmluZ0NvbnRleHQodGhpcykuY3JlYXRlUmVuZGVyZXJG
b3JUZXh0SWZOZWVkZWQoKTsKLX0KLQogUmVuZGVyVGV4dCogVGV4dDo6Y3JlYXRlVGV4dFJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogI2lmIEVOQUJM
RShTVkcpCkBAIC0yNzUsMTAgKzI3MCwxMCBAQCBSZW5kZXJUZXh0KiBUZXh0OjpjcmVhdGVUZXh0
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHQodGhpcywgZGF0YUltcGwoKSk7CiB9CiAKLXZvaWQg
VGV4dDo6YXR0YWNoKCkKK3ZvaWQgVGV4dDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgY3JlYXRlVGV4dFJlbmRlcmVySWZOZWVkZWQoKTsKLSAgICBDaGFyYWN0
ZXJEYXRhOjphdHRhY2goKTsKKyAgICBOb2RlUmVuZGVyaW5nQ29udGV4dCh0aGlzLCBjb250ZXh0
KS5jcmVhdGVSZW5kZXJlckZvclRleHRJZk5lZWRlZCgpOworICAgIENoYXJhY3RlckRhdGE6OmF0
dGFjaChjb250ZXh0KTsKIH0KIAogdm9pZCBUZXh0OjpyZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFu
Z2UgY2hhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggNjdhYjE2OGMwYWNkZDRiZjQ0NDQyMTBmZWUzYjM4
OWUwOGJhNTJmOS4uODEwMzljYmIzYWYwMjVhMjM5OGM5MmZlYmExODY4YzczYTQ2OWZkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5oCkBAIC00NSwxMiArNDUsMTEgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4
dD4gcmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
CiAgICAgdm9pZCByZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFuZ2UpOwotICAgIHZvaWQgY3JlYXRl
VGV4dFJlbmRlcmVySWZOZWVkZWQoKTsKICAgICBib29sIHRleHRSZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgUmVuZGVyVGV4dCogY3JlYXRlVGV4dFJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2b2lkIHVwZGF0ZVRleHRS
ZW5kZXJlcih1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWduZWQgbGVuZ3RoT2ZS
ZXBsYWNlZERhdGEpOwogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXgg
YTNjMDQ2MzMxOWIzNTU2NzQzZmYzMDRhZThkZDQyM2ZlNGQ4M2VhYy4uNzkxZjkxZGIyNzQxYWM1
OWUzZTMwNWQ1MDFmZTdmMTllMzJmMTZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKQEAgLTEzMSwxMCArMTMxLDEwIEBAIFJlbmRlck9iamVjdCogSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihhcmVuYSwgc3R5bGUp
OwogfQogCi12b2lkIEhUTUxDYW52YXNFbGVtZW50OjphdHRhY2goKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgc2V0
SXNJbkNhbnZhc1N1YnRyZWUodHJ1ZSk7Ci0gICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOworICAg
IEhUTUxFbGVtZW50OjphdHRhY2goY29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1l
bnQ6OmFkZE9ic2VydmVyKENhbnZhc09ic2VydmVyKiBvYnNlcnZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBiZjcxM2QzMTFkN2RhZjQ4MWRhYjk2OTk5ZDA0
OWMwM2U0ZDBhNWNiLi42OWVkM2NkOTMwMjNkM2EwOWE5OGQyMDYxMTU5MTdmMzNhODEyODQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaChjb25z
dCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRo
b3JTaGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCBlNjBiNzQzNDIxYWIyMjE3YTQ4MGUwN2Q1ZTA4MDJiY2NlNzY4MWI3
Li5hMTA3NjlkM2ZjYmI3ODIzOTI2Mjg5ZjQ3NzZkODM1YmE0ODkwOTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIwOCwxMSArMjA4
LDExIEBAIHN0YXRpYyB2b2lkIGZvY3VzUG9zdEF0dGFjaChOb2RlKiBlbGVtZW50LCB1bnNpZ25l
ZCkKICAgICBlbGVtZW50LT5kZXJlZigpOyAKIH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjphdHRhY2goKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2goY29uc3Qg
QXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICBQb3N0QXR0YWNoQ2FsbGJhY2tEaXNhYmxl
ciBkaXNhYmxlcih0aGlzKTsKIAotICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKKyAgICBIVE1M
RWxlbWVudDo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgLy8gVGhlIGNhbGwgdG8gdXBkYXRlRnJv
bUVsZW1lbnQoKSBuZWVkcyB0byBnbyBhZnRlciB0aGUgY2FsbCB0aHJvdWdoCiAgICAgLy8gdG8g
dGhlIGJhc2UgY2xhc3MncyBhdHRhY2goKSBiZWNhdXNlIHRoYXQgY2FuIHNvbWV0aW1lcyBkbyBh
IGNsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmlu
ZGV4IDdiNGQxZmYwNmFlZTE0N2MwYzI2MDc0NjQ5YWQ3NWNiOTU1Yjk0NGQuLjhlN2U3MzczODli
ZWIxZDIwYzUwYzdkNTFmYmM3OTlhYmY3MDJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5n
ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFj
aChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGRE
b2N1bWVudCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cAppbmRleCAxYjI4YzIxMDcyNDQyZTBkNzAwNjUyZTExNGZkYjY4MmY1NTc1MjA0Li41OTE2ZGJm
YTEwMGMyNDhiNjMxNjA2Yjk0MmM2YTNhMzZhMjQ1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgYm9vbCBIVE1MRnJhbWVFbGVt
ZW50Ojpub1Jlc2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShub3Jlc2l6ZUF0
dHIpOwogfQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OmF0dGFjaCgpCit2b2lkIEhUTUxGcmFt
ZUVsZW1lbnQ6OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewotICAgIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKTsKKyAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
YXR0YWNoKGNvbnRleHQpOwogICAgIAogICAgIGlmIChIVE1MRnJhbWVTZXRFbGVtZW50KiBmcmFt
ZVNldEVsZW1lbnQgPSBjb250YWluaW5nRnJhbWVTZXRFbGVtZW50KHRoaXMpKSB7CiAgICAgICAg
IGlmICghbV9mcmFtZUJvcmRlclNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmgKaW5kZXggMGZhZDAwZGZhYzIwN2JjYjE5YjRhYTRmNTlkNjVlYmYwZTcyZDU0My4uZDZhNTdk
MWI5MDI5MTJkOTc4OTQzZmQ5ZDZjYmY5OWQ5YmUwMWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBIVE1MRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0g
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3Qg
QXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggMmNmYjJm
YjM3NDhiNjlhNDhkOGI2MmRiMTZlNzdhMzhiYWY5Zjc0Ni4uYzAxM2E5MGYyZWJkOTU1ZWMyOWIw
YjQyYThjZjhlMjRiNDNmNDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHAKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjpkaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikKICAgICBzZXRO
YW1lQW5kT3BlblVSTCgpOwogfQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2go
KQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQq
IGNvbnRleHQpCiB7Ci0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjphdHRhY2goKTsKKyAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OmF0dGFjaChjb250ZXh0KTsKIAogICAgIGlmIChSZW5kZXJQ
YXJ0KiBwYXJ0ID0gcmVuZGVyUGFydCgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBj
b250ZW50RnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aAppbmRleCAzMWFiMmFiMWQ5MWI2OTlkNzI0MDI3YTBiZWNmYWFhYmM5MmExNmJmLi43MDkzYjg1
MTIzYjlkMmE3MmYzMmNkYzIwZTI0ZTE1N2ZmMmVlNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC01Miw3ICs1Miw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggZTJmOTcwOTBlOWU2MjAyNWM2NTQ2ODcwM2Nl
YmM3MzI4YTQzNzZjNi4uMDAyNmU2MjJiZDExM2ZkNTFhNGQxNzY5OTY3YTFkMDdlMzM2ODc3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0xNjUs
NyArMTY1LDcgQEAgUmVuZGVyT2JqZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWwKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyRnJhbWVTZXQodGhpcyk7CiB9CiAKLXZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6
YXR0YWNoKCkKK3ZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6YXR0YWNoKGNvbnN0IEF0dGFjaENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gSW5oZXJpdCBkZWZhdWx0IHNldHRpbmdzIGZyb20g
cGFyZW50IGZyYW1lc2V0CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGR5bmFtaWMuCkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjphdHRhY2goKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOworICAgIEhUTUxFbGVtZW50
OjphdHRhY2goY29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuaAppbmRleCBkYjkwOTY4YTdiZjIzYTRkODhjZWIwNjVkNThjNzU4NGY1ZGM0NjFm
Li5kNjViNTFiM2U0OTI3OGIzZTY4ZmNlM2E5OTljMGMyYTFlODMyOTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFjaENv
bnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMzZkMzNmOTU5NWJmNDA0YjA5
ZDY5YmNjNGUyMjQ5OWIyMzhlYTEyZi4uMWY3MjE5YTcyYWM0MjYyODFjMTgxODFkMTVlZTcwZGU2
ZmU2MTAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0x
NjAsOSArMTYwLDkgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjpjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0
dGFjaCgpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0
KiBjb250ZXh0KQogewotICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKKyAgICBIVE1MRWxlbWVu
dDo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
aXNJbWFnZSgpICYmICFtX2ltYWdlTG9hZGVyLmhhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKSkg
ewogICAgICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCAxOTdkMDRk
ZGU1ODA4OTgyOGI1YjI2NDgzZWQwNzhmZWQwMzc5M2RkLi45NDFlYjdlYTQwZDQyMWI4MzA0MmZh
ODJmYTk5NDg1MTBhNjYwZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlT
ZXQqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTgwYjZmOGRkMjA5N2Zh
MjRiOTk0YjM3YzU1NDBiOTZlZjY1ZjQzZC4uOGE5ZDMzYTA0MWQ4NTdlMWUyMzUwOTljMzQ3NjEz
OGZkZjczNTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC03OTksMTQgKzc5OSwxNCBAQCBSZW5kZXJPYmplY3QqIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqCiAgICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5jcmVhdGVSZW5kZXJlcihhcmVuYSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmF0dGFjaCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaChjb25z
dCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2Fi
bGVyIGRpc2FibGVyKHRoaXMpOwogCiAgICAgaWYgKCFtX2hhc1R5cGUpCiAgICAgICAgIHVwZGF0
ZVR5cGUoKTsKIAotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2goKTsKKyAg
ICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgbV9p
bnB1dFR5cGUtPmF0dGFjaCgpOwogCkBAIC04MTQsOSArODE0LDkgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjphdHRhY2goKQogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVGb2N1c0FwcGVhcmFu
Y2VTb29uKHRydWUgLyogcmVzdG9yZSBzZWxlY3Rpb24gKi8pOwogfQogCi12b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmRldGFjaCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRldGFjaChjb25zdCBB
dHRhY2hDb250ZXh0KiBjb250ZXh0KQogewotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpkZXRhY2goKTsKKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKGNvbnRl
eHQpOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOwogICAg
IG1faW5wdXRUeXBlLT5kZXRhY2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggYzkzYThmOGZlMzJjZTBlZWFiMzUxOTBlMjM2YjNjY2ZiNzRiYzQ0OC4uMDVh
NDEyMjVmMjVlMGViZmM1ZTM4NzFhM2MyZDNmOTI1OTI4ZjAzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKTsKIAogICAgIC8vIEZJWE1FOiBG
b3IgaXNBY3RpdmF0ZWRTdWJtaXQgYW5kIHNldEFjdGl2YXRlZFN1Ym1pdCwgd2Ugc2hvdWxkIHVz
ZSB0aGUgTlZJLWlkaW9tIGhlcmUgYnkgbWFraW5nCiAgICAgLy8gaXQgcHJpdmF0ZSB2aXJ0dWFs
IGluIGFsbCBjbGFzc2VzIGFuZCBleHBvc2UgYSBwdWJsaWMgbWV0aG9kIGluIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQgdG8gY2FsbApAQCAtMzUyLDcgKzM1Miw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBF
bGVtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lk
IGF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCA2ZDBhNTIzZTZlZjk4ZDNjM2RmMDg4ZDZmMzQ5
MjQzZDRhZGRlMmVmLi5iYTBhYWFhMTEwZmMxY2ZlOTcxMjEwMzk3MGU4YzdmMzgwOWQ1ODMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTg1LDExICs4NSw5IEBAIHZv
aWQgSFRNTExJRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSFRNTExJRWxlbWVudDo6YXR0YWNoKCkKK3ZvaWQg
SFRNTExJRWxlbWVudDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7Ci0g
ICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsKLQotICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKKyAg
ICBIVE1MRWxlbWVudDo6YXR0YWNoKGNvbnRleHQpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKSB7CiAgICAgICAgIFJlbmRlckxpc3RJdGVtKiByZW5k
ZXIgPSB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuaAppbmRleCA3M2E1ZDc5NGYxNDY1YjlhYmY4M2FiYTQyZDAxOTNiY2M5YmZhNTliLi5h
ODRlZTJlNDc1NzIyNjEwMDYwMjgwNGQyOWQyMDU0NjFjOTZlZTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMSUVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHBhcnNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOTIyMDFiNWRiMTg3
NDgxMjQ4OTk3YmUwYmY5Y2IwNWZiNzcxNjEzZS4uMDhjZDAzYzBmZTAyMmYzNGJiNWZkOTRkNDVl
YTI4MThjZDgwYTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC01NzYsMTUgKzU3NiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVk
RnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNo
KCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsKLQogI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQogICAgIG1fbmVlZFdpZGdldFVwZGF0ZSA9IHRydWU7CiAjZW5kaWYK
IAotICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKKyAgICBIVE1MRWxlbWVudDo6YXR0YWNoKGNv
bnRleHQpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0
ZUZyb21FbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IDNlMDBlZDc4MGQwNDZjYjUzNzcyMjUyMjg4M2E5Y2U1ZGViYzZkNTIuLjBhNDMzMDllZjlmMWQ1
ZTkxYzRmYjk1NmYwODYxNzBlOWE1NTRlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC0zNjMsNyArMzYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkg
T1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3Vw
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
CmluZGV4IDEyNzFiNTIyZTNlZWJkNTdkMTk2ZDIzNDE2ZjkxNTU1NjQ5YWY2M2UuLjgyMDY1NzVm
Zjc0YTNlNjlmNWYyZjBiZWZiY2YxZGExZGIzZjg2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtOTYsOSArOTYsOSBAQCB2b2lkIEhUTUxPcHRH
cm91cEVsZW1lbnQ6OnJlY2FsY1NlbGVjdE9wdGlvbnMoKQogICAgICAgICB0b0hUTUxTZWxlY3RF
bGVtZW50KHNlbGVjdCktPnNldFJlY2FsY0xpc3RJdGVtcygpOwogfQogCi12b2lkIEhUTUxPcHRH
cm91cEVsZW1lbnQ6OmF0dGFjaCgpCit2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmF0dGFjaChj
b25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewotICAgIEhUTUxFbGVtZW50OjphdHRhY2go
KTsKKyAgICBIVE1MRWxlbWVudDo6YXR0YWNoKGNvbnRleHQpOwogICAgIC8vIElmIGFmdGVyIGF0
dGFjaGluZyBub3RoaW5nIGNhbGxlZCBzdHlsZUZvclJlbmRlcmVyKCkgb24gdGhpcyBub2RlIHdl
CiAgICAgLy8gbWFudWFsbHkgY2FjaGUgdGhlIHZhbHVlLiBUaGlzIGhhcHBlbnMgaWYgb3VyIHBh
cmVudCBkb2Vzbid0IGhhdmUgYQogICAgIC8vIHJlbmRlcmVyIGxpa2UgPG9wdGdyb3VwPiBvciBp
ZiBpdCBkb2Vzbid0IGFsbG93IGNoaWxkcmVuIGxpa2UgPHNlbGVjdD4uCkBAIC0xMDYsMTAgKzEw
NiwxMCBAQCB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIHVwZGF0
ZU5vblJlbmRlclN0eWxlKCk7CiB9CiAKLXZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6ZGV0YWNo
KCkKK3ZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgbV9zdHlsZS5jbGVhcigpOwotICAgIEhUTUxFbGVtZW50OjpkZXRh
Y2goKTsKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKGNvbnRleHQpOwogfQogCiB2b2lkIEhUTUxP
cHRHcm91cEVsZW1lbnQ6OnVwZGF0ZU5vblJlbmRlclN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKaW5kZXggMWJmYjE0MDZiZDk3ZGRiNTVkZjA2NjZmYzk5
MWZkZjhmZmIxOWYzZC4uMDYzMGE1ODNjMWRhY2M5Mzk2YTUyOTI4YzU2YzRkYTVhYWUyNjMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKQEAgLTQ4LDggKzQ4
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFj
aChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggZGFjYmRi
MTRkZTNiMWU4NjgwNTk2N2UzOWJkNWE5MGI0MGE5OTVjNS4uZWYwN2M4Y2U2MGRjYzRhNzQwMjM0
MmMyOTQ4NGI3OWY4YjQwOTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHAKQEAgLTkwLDkgKzkwLDkgQEAgUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4g
SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQKICAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmF0
dGFjaCgpCit2b2lkIEhUTUxPcHRpb25FbGVtZW50OjphdHRhY2goY29uc3QgQXR0YWNoQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRNTEVsZW1l
bnQ6OmF0dGFjaChjb250ZXh0KTsKICAgICAvLyBJZiBhZnRlciBhdHRhY2hpbmcgbm90aGluZyBj
YWxsZWQgc3R5bGVGb3JSZW5kZXJlcigpIG9uIHRoaXMgbm9kZSB3ZQogICAgIC8vIG1hbnVhbGx5
IGNhY2hlIHRoZSB2YWx1ZS4gVGhpcyBoYXBwZW5zIGlmIG91ciBwYXJlbnQgZG9lc24ndCBoYXZl
IGEKICAgICAvLyByZW5kZXJlciBsaWtlIDxvcHRncm91cD4gb3IgaWYgaXQgZG9lc24ndCBhbGxv
dyBjaGlsZHJlbiBsaWtlIDxzZWxlY3Q+LgpAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBIVE1M
T3B0aW9uRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgdXBkYXRlTm9uUmVuZGVyU3R5bGUoKTsK
IH0KIAotdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6ZGV0YWNoKCkKK3ZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OmRldGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIG1fc3R5
bGUuY2xlYXIoKTsKLSAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CisgICAgSFRNTEVsZW1lbnQ6
OmRldGFjaChjb250ZXh0KTsKIH0KIAogYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6c3VwcG9ydHNG
b2N1cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXgg
MTlmNTY5Yjk3NjA4MWYxOWE4NDU5NmE1ODg0NDI4MTNhMTU2ODMxYi4uMzNjYmQzZWEzNTQ2Mjkz
ODk4MTQwY2NlOTY0ODA0NzdkNDg0NGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaChjb25z
dCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
Y29uc3QgQXR0YWNoQ29udGV4dCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggZjhmMGI0
NWI0ZDE1Y2FmNGJkODM3N2JhODlhZjQwZjkzNzEyOTU1NC4uM2YxNTMyOTVjODU1MjFlODJmODg0
N2M4NTQwZTE4MTZjMmFkMTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEhU
TUxQbHVnSW5FbGVtZW50OjpkZXRhY2goKQordm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgbV9pbnN0YW5jZS5jbGVhcigp
OwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNoKCkK
ICAgICB9CiAjZW5kaWYKIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGV0YWNoKCk7Cisg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpkZXRhY2goY29udGV4dCk7CiB9CiAKIHZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OnJlc2V0SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCmluZGV4IGIzMjBmMzdiMDE2ZGZhNjZkM2ZjZDAzOWY1YmExOWQzYjRjMjBk
ZDUuLjViMDlhYWU3MTE3MmU3ZjUzOWE2OWYxNDk4ZGY0YWI1ODc4MDA5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEhUTUxQbHVnSW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdmly
dHVhbCB2b2lkIGRldGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjA4NWZhYjc3Mjc1MGY3MWQ2YTNmYmU0
NTVkOWU4NGQ5Y2M2ZjQ2MS4uMzcwMWIwYjZlMDhhMGQzOTVmM2YyYmE3MDFkZWIwYmVlNTI1MjEx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsUmVj
YWxjU3R5bGUoU3R5bGVDaGFuZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6YXR0YWNoKCkKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUG9zdEF0dGFjaENh
bGxiYWNrRGlzYWJsZXIgZGlzYWJsZXIodGhpcyk7CiAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgaWYgKCFpc0ltYWdlKQogICAg
ICAgICBxdWV1ZVBvc3RBdHRhY2hDYWxsYmFjaygmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBk
YXRlV2lkZ2V0Q2FsbGJhY2ssIHRoaXMpOwogCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmF0dGFj
aCgpOworICAgIEhUTUxQbHVnSW5FbGVtZW50OjphdHRhY2goY29udGV4dCk7CiAKICAgICBpZiAo
aXNJbWFnZSAmJiByZW5kZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAg
ICBpZiAoIW1faW1hZ2VMb2FkZXIpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjphdHRhY2goKQogICAgIH0KIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkZXRhY2goKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZXRhY2goY29u
c3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogQmVjYXVzZSBvZiB0
aGUgaW5zYW5pdHkgdGhhdCBpcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZWNhbGNTdHlsZSwK
ICAgICAvLyB3ZSBjYW4gZW5kIHVwIGRldGFjaGluZyBkdXJpbmcgYW4gYXR0YWNoKCkgY2FsbCwg
YmVmb3JlIHdlIGV2ZW4gaGF2ZSBhCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpkZXRhY2goKQogICAgIGlmIChhdHRhY2hlZCgpICYmIHJlbmRlcmVyKCkg
JiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKQogICAgICAgICAvLyBVcGRhdGUgdGhlIHdpZGdldCB0
aGUgbmV4dCB0aW1lIHdlIGF0dGFjaCAoZGV0YWNoaW5nIGRlc3Ryb3lzIHRoZSBwbHVnaW4pLgog
ICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsKLSAgICBIVE1MUGx1Z0luRWxlbWVu
dDo6ZGV0YWNoKCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRldGFjaChjb250ZXh0KTsKIH0K
IAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRJZk5lY2Vzc2FyeSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDMy
ODE3ZTI2YmUyZDcwZDAzMDQyZWYxYmQ4NjI1ODllNWJjYTQ5NzMuLjI1YzdiM2M4NDhiZTljMDAw
ODkwZTI4MmEyODE2Y2M1ZWU3MWExY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCkBAIC04NCw4ICs4NCw4IEBAIHByb3RlY3RlZDoKICAgICBTdHJp
bmcgbV91cmw7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgdXBkYXRlV2lkZ2V0Q2FsbGJhY2soTm9k
ZSosIHVuc2lnbmVkID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNvbnN0IEF0dGFjaENv
bnRleHQqID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaChjb25zdCBBdHRh
Y2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogCiAgICAgYm9vbCBhbGxvd2VkVG9Mb2FkRnJhbWVV
UkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIGJvb2wgd291bGRMb2FkQXNOZXRzY2FwZVBsdWdp
bihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCAzNDA5YThlMjJkNmQ4
Yjg4OGJiNTBlOGJmZmI1NmFhZjdhZDM4MWE0Li45M2E4Y2IwYjI2YzAzMTJhYzc5ZWE4NzgxYzc3
NmNiNDAzMjhiN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVu
dC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWMKICAgICAgICAg
TGFiZWxhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi12b2lk
IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmF0dGFjaCgpCit2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6
OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewotICAgIExhYmVsYWJsZUVs
ZW1lbnQ6OmF0dGFjaCgpOworICAgIExhYmVsYWJsZUVsZW1lbnQ6OmF0dGFjaChjb250ZXh0KTsK
ICAgICBpZiAoUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlciA9IHJlbmRlclByb2dyZXNzKCkpCiAgICAg
ICAgIHJlbmRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJvZ3Jlc3NFbGVtZW50LmgKaW5kZXggMTI5MGEwMWFjMWRmZjg3YmM0ZmQyNWEyNjJhMTJi
NGQyMzQxZmI1Ni4uZjE5MTZlNTk0NTZkOGZhNTE5MmUwZjY2NDBkZWJlOTYzZDhjMTQ3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaChjb25zdCBBdHRhY2hDb250
ZXh0KiA9IDApIE9WRVJSSURFOwogCiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApp
bmRleCA0Zjg1MzE2Mzg2M2FhNDQ2Mjg2ZTAxODZlMjE0NjM3NDBiZDUzMGMxLi5kMDhiMDIzOTE1
OWJhZTM2NDc5MWJmOTMyZmQzYTZmMjdiMDFjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTUyMSw5ICs1MjEsOSBAQCBIVE1MRWxlbWVudCog
SFRNTFRleHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9wbGFjZWhvbGRlcjsKIH0KIAotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjphdHRhY2go
KQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjphdHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCog
Y29udGV4dCkKIHsKLSAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCk7Cisg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaChjb250ZXh0KTsKICAgICBmaXhQ
bGFjZWhvbGRlclJlbmRlcmVyKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggZTRhYTNj
YmRkMGJiMDdhZWJhMDIwYjVlNzU2NGRiZGVjYTQxN2RiMS4uYWUwNjQxMDRjZWVjNjgzM2I3Mzc0
OTdmNmM5Y2Q0OTMzMTNhNzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZFVzZUlucHV0TWV0aG9kKCk7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3MoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0Ns
YXNzKCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCmluZGV4IDAyZWMyYzQxZmMyYzZlMzJlNDcwZDgxMTY5M2Q2OGJjMmFjNzVlNjAuLjE2
MGZjZjIwODZhMDY3OWZmNzIwNGFkOGQ0ZmFiZWMyZTA1MTE2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNzQsOSArNzQsOSBAQCBSZW5kZXJPYmplY3Qq
IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogfQogI2VuZGlmCiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKCkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRNTE1lZGlhRWxl
bWVudDo6YXR0YWNoKGNvbnRleHQpOwogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQogICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCAyNDYzOTQ1NjA0ZDQ0NGIzMDUyNDIxYTdhZTA0ZTZkMWViMDkzOWIz
Li5kN2Y0NzRhNTQyYTU4ODA3ODZlYjIwZjkwYTcwYzc0MWE4YjE4ZTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCi0g
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3Qg
QXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggMThkZDNmZjk0NTNmMTg1MWVkNmI1ZWU2NzJl
ZTYwYTJkODJhNzdmYi4uYWRiMWZhNGIwZjBjNjg2Nzg2MmY4OTcxMGI4OTkyNTQ1MzUyZTAyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTE2MiwxMyArMTYyLDEz
IEBAIE5vZGUqIFBsdWdpbkRvY3VtZW50OjpwbHVnaW5Ob2RlKCkKICAgICByZXR1cm4gbV9wbHVn
aW5Ob2RlLmdldCgpOwogfQogCi12b2lkIFBsdWdpbkRvY3VtZW50OjpkZXRhY2goKQordm9pZCBQ
bHVnaW5Eb2N1bWVudDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgLy8gUmVsZWFzZSB0aGUgcGx1Z2luIG5vZGUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIGEgY2ly
Y3VsYXIgcmVmZXJlbmNlLgogICAgIG1fcGx1Z2luTm9kZSA9IDA7CiAgICAgaWYgKEZyYW1lTG9h
ZGVyKiBsb2FkZXIgPSBmcmFtZSgpLT5sb2FkZXIoKSkKICAgICAgICAgbG9hZGVyLT5jbGllbnQo
KS0+cmVkaXJlY3REYXRhVG9QbHVnaW4oMCk7Ci0gICAgSFRNTERvY3VtZW50OjpkZXRhY2goKTsK
KyAgICBIVE1MRG9jdW1lbnQ6OmRldGFjaChjb250ZXh0KTsKIH0KIAogdm9pZCBQbHVnaW5Eb2N1
bWVudDo6Y2FuY2VsTWFudWFsUGx1Z2luTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1BsdWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmgKaW5kZXggY2NkZWUzZjljMzlkZDVkMDE1YzE3YmQ1YmY1ZjQxODJjOTU3NjlhMC4uN2Uz
ZTA5MzFkZGRmZDU2MTZmYzg0NzhjZGQwNTdhN2UyOTNiMTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiBw
bHVnaW5XaWRnZXQoKTsKICAgICBOb2RlKiBwbHVnaW5Ob2RlKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaChjb25zdCBBdHRh
Y2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogCiAgICAgdm9pZCBjYW5jZWxNYW51YWxQbHVnaW5M
b2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NsZWFyQnV0
dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DbGVhckJ1dHRvbkVs
ZW1lbnQuY3BwCmluZGV4IDQ4ZDI3ZWE5NmViZTNjMDMxODVjZDY5YTM2NTk2OGZiOWEwZDc5ZDMu
LjI1ZDM1MTllYjBkODI2YTM2Y2I0YTEyNWM1ZmUwMTAwNjc5MTExNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NsZWFyQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2xlYXJCdXR0b25FbGVtZW50LmNwcApAQCAtNDcsMTMg
KzQ3LDEzIEBAIFBhc3NSZWZQdHI8Q2xlYXJCdXR0b25FbGVtZW50PiBDbGVhckJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIENsCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGVhckJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIGNsZWFyQnV0dG9uT3duZXIpKTsKIH0KIAot
dm9pZCBDbGVhckJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCit2b2lkIENsZWFyQnV0dG9uRWxlbWVu
dDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fY2Fw
dHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
KQogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUoMCk7CiAgICAgfQotICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goKTsKKyAgICBI
VE1MRGl2RWxlbWVudDo6ZGV0YWNoKGNvbnRleHQpOwogfQogCiB2b2lkIENsZWFyQnV0dG9uRWxl
bWVudDo6cmVsZWFzZUNhcHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ2xlYXJCdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
bGVhckJ1dHRvbkVsZW1lbnQuaAppbmRleCA2MTAwYTYxMTNmYTY2MDE3YTUxYzU2MzNjMmRhZjI2
MTY1NDIxODUwLi41ODIxZDBjNjZmY2FiMjM4MzMzNjE5Mzk0ZmJmOTcyZTYxMmU5OTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DbGVhckJ1dHRvbkVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DbGVhckJ1dHRvbkVsZW1lbnQuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2xlYXJCdXR0b25FbGVtZW50
KERvY3VtZW50KiwgQ2xlYXJCdXR0b25Pd25lciYpOwotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRl
eCBjZGY4MjFlMmViYzc0NmQ2OTY5YTM3Y2MxOTQ4NTc0MmI2OTk5MjczLi45YTMxYzU3YzE3MThk
YTIyMWM4ZDY0Zjg1MzA0Mjc1ZTlkODYxYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC01MSw4ICs1MSw5IEBAIEluc2VydGlvblBvaW50
Ojp+SW5zZXJ0aW9uUG9pbnQoKQogewogfQogCi12b2lkIEluc2VydGlvblBvaW50OjphdHRhY2go
KQordm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqKQogewor
ICAgIC8vIEZJWE1FOiBJcyBpdCBzYWZlIHRvIHBhc3MgdGhlIGF0dGFjaCBjb250ZXh0IHRvIHRo
ZSB0aGUgZGlzdHJpYnV0ZWQgbm9kZXM/CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qg
PSBjb250YWluaW5nU2hhZG93Um9vdCgpKQogICAgICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVu
c3VyZURpc3RyaWJ1dGlvbihzaGFkb3dSb290KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CkBAIC02Myw3ICs2NCw3IEBAIHZvaWQgSW5z
ZXJ0aW9uUG9pbnQ6OmF0dGFjaCgpCiAgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwogfQogCi12
b2lkIEluc2VydGlvblBvaW50OjpkZXRhY2goKQordm9pZCBJbnNlcnRpb25Qb2ludDo6ZGV0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNo
YWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQogICAgICAgICBDb250ZW50RGlzdHJp
YnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihzaGFkb3dSb290KTsKQEAgLTcxLDcgKzcyLDcgQEAg
dm9pZCBJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKQogICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hdChp
KS0+ZGV0YWNoKCk7CiAKLSAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CisgICAgSFRNTEVsZW1l
bnQ6OmRldGFjaChjb250ZXh0KTsKIH0KIAogYm9vbCBJbnNlcnRpb25Qb2ludDo6c2hvdWxkVXNl
RmFsbGJhY2tFbGVtZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaAppbmRleCA3NmQ3NDg1YzhhZDM1ODdiYzQxYTI4ZmVmMDc2MWMxM2Y0ZTU5
OWI4Li5jNmUzMjc5NjIxYTZlYTc3MDdkMjBmZWQwYjQ3NTcyNTE0MTc2Mjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTcyLDggKzcyLDggQEAg
cHVibGljOgogICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAKICAgICBib29sIHNo
b3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmNwcAppbmRleCBkOTY5MDI0
YmNlZGEwODc4ODFmYjkyNjMzN2ZhYWQ5OGIxZDRlZjQzLi5kNjliMTBiZDdkNjhkM2IyMDgwNDgy
OGM3ZWRjNDJiNDg0OGRlMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmNwcApAQCAtMTI2LDEwICsxMjYsMTAgQEAgdm9p
ZCBQaWNrZXJJbmRpY2F0b3JFbGVtZW50OjpjbG9zZVBvcHVwKCkKICAgICBtX2Nob29zZXItPmVu
ZENob29zZXIoKTsKIH0KIAotdm9pZCBQaWNrZXJJbmRpY2F0b3JFbGVtZW50OjpkZXRhY2goKQor
dm9pZCBQaWNrZXJJbmRpY2F0b3JFbGVtZW50OjpkZXRhY2goY29uc3QgQXR0YWNoQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICBjbG9zZVBvcHVwKCk7Ci0gICAgSFRNTERpdkVsZW1lbnQ6OmRldGFj
aCgpOworICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goY29udGV4dCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1BpY2tlckluZGljYXRvckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1BpY2tlckluZGljYXRvckVsZW1lbnQuaApp
bmRleCA0ZGM3ZGIyNjMxZjRiMjEyODJmZDI3MTRkZGQ1N2ZlNTViNGUyYzE1Li5hYzRjNjVjYzI1
NmQ2ZmVhMzI5MjE2ODhjY2Q3NTg1ZTY4ZjM2YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5oCkBAIC02OSw3ICs2OSw3IEBA
IHByaXZhdGU6CiAgICAgUGlja2VySW5kaWNhdG9yRWxlbWVudChEb2N1bWVudCosIFBpY2tlcklu
ZGljYXRvck93bmVyJik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKGNvbnN0IEF0dGFjaENv
bnRleHQqID0gMCkgT1ZFUlJJREU7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50KiBob3N0SW5wdXQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKaW5kZXggZjExZTBlMWE3Yzc1YTVhZDg5NjY4N2JhYzFmZDc5ZDhiYTBmOGE4Mi4uOWNh
NWRmMmU5YzUyMjUyNTY3YmQzZmRmNjM3OTFmMzliNDc5ZDMxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0zODUsMTMgKzM4
NSwxMyBAQCBib29sIFNsaWRlclRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKQogICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKTsKIH0KIAotdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRldGFjaCgpCit2b2lk
IFNsaWRlclRodW1iRWxlbWVudDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgaWYgKG1faW5EcmFnTW9kZSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KLSAgICBIVE1MRGl2RWxlbWVu
dDo6ZGV0YWNoKCk7CisgICAgSFRNTERpdkVsZW1lbnQ6OmRldGFjaChjb250ZXh0KTsKIH0KIAog
SFRNTElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRl
eCA4OGFmZjY0MDNkYjNjZDYxYzMzNGZkNDZmZWUwYTVkOWFmMTk5NWE1Li5lNzZlNjNkNDU1Zjk4
Y2MwNzFhYjc4NzU2ZjVjNTA0NGY2MzhmMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKGNvbnN0IEF0dGFj
aENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQu
Y3BwCmluZGV4IGYyM2JhYjhhN2VjOTgyN2Q0M2Q3MjRhYTVlZGJiYWUwMjZjOWY3ZjYuLjkzOTg1
YzI4MWZkNTI2YTU3NjY4ZDJjZTIwZmI2MDc1NGFmZjE5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTYzLDEwICs2MywxMCBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIFNwaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGlubmVyUHNldWRvSWQ7CiB9CiAKLXZvaWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OmRldGFjaCgpCit2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZXRhY2goY29uc3QgQXR0
YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICByZWxlYXNlQ2FwdHVyZSgpOwotICAgIEhUTUxE
aXZFbGVtZW50OjpkZXRhY2goKTsKKyAgICBIVE1MRGl2RWxlbWVudDo6ZGV0YWNoKGNvbnRleHQp
OwogfQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVu
dC5oCmluZGV4IDJmMDBkODIzY2QyYTQwNTY3NmUzZTNhODU2Njg1ZGFlNzM5M2ZhY2YuLjJkZjQx
YWRmZmU0MzY2N2Q5MDNjYWE5ZGNkMmI2OTcyMDVkMGNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2
YXRlOgogICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiwgU3BpbkJ1dHRvbk93bmVyJik7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaChj
b25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1Nw
aW5CdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd0hvc3QoKS0+aXNF
bmFibGVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZE9ubHlQ
c2V1ZG9DbGFzcygpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNmM0NzdhNTIy
NGU4YTIyMTMzNzNmNjBkNjU1YmVmZGZlNWM5NjFmYS4uZjEyMGNmNjExZDExN2FjZDM1ZTcwMDg4
MmIyMWUzOTZlMmZjMjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xOTksMTMgKzE5OSwxMyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAogICAgIHJldHVybiBwc2V1ZG9JZDsKIH0KIAotdm9pZCBTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCit2b2lkIFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudDo6ZGV0YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0
dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQotICAgIEhUTUxEaXZFbGVtZW50OjpkZXRh
Y2goKTsKKyAgICBIVE1MRGl2RWxlbWVudDo6ZGV0YWNoKGNvbnRleHQpOwogfQogCiAKQEAgLTQw
OCwxNSArNDA4LDE1IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFJl
Y29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3BlZWNoSW5wdXRSCiAgICAgICAgIHJlbmRlcmVy
KCktPnJlcGFpbnQoKTsKIH0KIAotdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
YXR0YWNoKCkKK3ZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmF0dGFjaChjb25z
dCBBdHRhY2hDb250ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVCghbV9saXN0ZW5lcklkKTsK
ICAgICBpZiAoU3BlZWNoSW5wdXQqIGlucHV0ID0gU3BlZWNoSW5wdXQ6OmZyb20oZG9jdW1lbnQo
KS0+cGFnZSgpKSkKICAgICAgICAgbV9saXN0ZW5lcklkID0gaW5wdXQtPnJlZ2lzdGVyTGlzdGVu
ZXIodGhpcyk7Ci0gICAgSFRNTERpdkVsZW1lbnQ6OmF0dGFjaCgpOworICAgIEhUTUxEaXZFbGVt
ZW50OjphdHRhY2goY29udGV4dCk7CiB9CiAKLXZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OmRldGFjaCgpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRh
Y2goY29uc3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcp
IHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCkBAIC00
MzAsNyArNDMwLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNo
KCkKICAgICAgICAgbV9saXN0ZW5lcklkID0gMDsKICAgICB9CiAKLSAgICBIVE1MRGl2RWxlbWVu
dDo6ZGV0YWNoKCk7CisgICAgSFRNTERpdkVsZW1lbnQ6OmRldGFjaChjb250ZXh0KTsKIH0KIAog
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oCmluZGV4IGNhZGY0YjMyZjA4ZmRjYjAyOTdjMjZkZmE1YzE0YjdlZmRlYzk1MmUuLjU5
MDIxNzUxOGVkYmY5MzEwODMyY2QyNzA1N2ZhNDE1ZjU0OWRlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBib29sIG1fY2FwdHVyaW5nOwpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTEzMSw3ICsxMzEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0U3RhdGUoU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSk7CiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKGNv
bnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CiAKICAgICBib29sIG1fY2FwdHVyaW5n
OwogICAgIFNwZWVjaElucHV0U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcAppbmRleCBk
ZDNlMTUyMDJhYmI0NjgzMGZiN2RjZDBhNWMzODc5ZmZkNWE2Y2EyLi40NGE0NTY0MGVmMGJhZjIw
NmE3M2ExNDc5OWM0ZGJjNzQzNGNmOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwCkBAIC0xNzMsMTYg
KzE3MywxNiBAQCBSZW5kZXJPYmplY3QqIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbgogICAgIHJldHVybiBpbWFnZTsKIH0K
IAotdm9pZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6YXR0YWNoKCkKK3ZvaWQgVGV4dEZp
ZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmF0dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiBjb250ZXh0
KQogewotICAgIEhUTUxEaXZFbGVtZW50OjphdHRhY2goKTsKKyAgICBIVE1MRGl2RWxlbWVudDo6
YXR0YWNoKGNvbnRleHQpOwogICAgIHVwZGF0ZUltYWdlKCk7CiB9CiAKLXZvaWQgVGV4dEZpZWxk
RGVjb3JhdGlvbkVsZW1lbnQ6OmRldGFjaCgpCit2b2lkIFRleHRGaWVsZERlY29yYXRpb25FbGVt
ZW50OjpkZXRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogY29udGV4dCkKIHsKICAgICBtX3RleHRG
aWVsZERlY29yYXRvci0+d2lsbERldGFjaChob3N0SW5wdXQoKSk7Ci0gICAgSFRNTERpdkVsZW1l
bnQ6OmRldGFjaCgpOworICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goY29udGV4dCk7CiB9CiAK
IGJvb2wgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmgKaW5kZXggYTJjYThhZDA5NzcyMzI3YjYxOGZiYTdjODhhZTNjMTg3NGVm
OWIxZS4uZGYzYjE4MWJjOTlmN2Q4NWYxYWE4YmFkY2UyMGFhYzQzYjZjYTE3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudC5oCkBAIC04MCw4ICs4MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dEZpZWxkRGVjb3JhdGlvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KGNvbnN0IEF0dGFjaENvbnRleHQqID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRl
dGFjaChjb25zdCBBdHRhY2hDb250ZXh0KiA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuY3BwCmluZGV4IDkzYTI2ZGI1MjYzMDEzYmYxMTgy
OTRhN2UxNTlkYzNiMDZiN2RlODMuLjU1MzA5NTg0OGQ0OGUyY2YxOTFiZjJhOTgzZTg1ODllMGQ1
N2E1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5j
cHAKQEAgLTI4LDEyICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUGxh
Y2Vob2xkZXJEb2N1bWVudDo6YXR0YWNoKCkKK3ZvaWQgUGxhY2Vob2xkZXJEb2N1bWVudDo6YXR0
YWNoKGNvbnN0IEF0dGFjaENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKCFhdHRhY2hl
ZCgpKTsKLQogICAgIC8vIFNraXBwaW5nIERvY3VtZW50OjphdHRhY2goKS4KLSAgICBDb250YWlu
ZXJOb2RlOjphdHRhY2goKTsKKyAgICBDb250YWluZXJOb2RlOjphdHRhY2goY29udGV4dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vo
b2xkZXJEb2N1bWVudC5oCmluZGV4IDNkNDBhNmVhMzlmN2Y2NzZkNjgyNjkwYzVlM2E0NjE4YzQ5
YjhjMDUuLmM2Nzk3NzJiZWQzMWNkNTgwZDIzNDU0NmY0N2RhYWE5YmQwZjNlYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhY2Vob2xkZXJEb2N1bWVu
dChmcmFtZSwgdXJsKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3QgQXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsK
IAogcHJpdmF0ZToKICAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKSA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDBkMjNiZTNiMjViMzBkOTM1ZjM2
MDQ3ZDAzMmMyZTQxYThmZTkyMGIuLjUyNjBlMzI2ZDlkMmNkM2RjNTA5YjY5Nzc3MGFhZTkxYTM2
NGJjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0xOTksOSAr
MTk5LDkgQEAgYm9vbCBTVkdJbWFnZUVsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cygpCiAgICAgcmV0dXJuICFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkgfHwg
IW1faW1hZ2VMb2FkZXIuaGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VF
bGVtZW50OjphdHRhY2goKQordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaChjb25zdCBBdHRh
Y2hDb250ZXh0KiBjb250ZXh0KQogewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjphdHRhY2goKTsKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0YWNoKGNv
bnRleHQpOwogCiAgICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZH
SW1hZ2UocmVuZGVyZXIoKSkpIHsKICAgICAgICAgaWYgKGltYWdlT2JqLT5pbWFnZVJlc291cmNl
KCktPmhhc0ltYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggZGU3
YTY0YWExY2I4NWVmODY3ZTY2ZTEwMDAyY2MzYWY0MjUxNmU4YS4uNTk5ODRjYTU4ODI5ZDU2ZWEz
ODBjZjdjMzM3OGU1ZmJmMTAwZmE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goY29uc3Qg
QXR0YWNoQ29udGV4dCogPSAwKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7Cg==
</data>
<flag name="review"
          id="216454"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="216464"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>