<?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>159623</bug_id>
          
          <creation_ts>2016-07-11 07:14:09 -0700</creation_ts>
          <short_desc>Move parsing of display, displaystyle and mathvariant attributes from rendering to mathml element classes</short_desc>
          <delta_ts>2016-07-25 00:19:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108778</dependson>
    
    <dependson>133845</dependson>
    
    <dependson>159625</dependson>
          <blocked>156536</blocked>
    
    <blocked>160034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209637</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 07:14:09 -0700</bug_when>
    <thetext>This is bug 156536 for the attributes parsed in rendering/mathml/MathMLStyle.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212723</commentid>
    <comment_count>1</comment_count>
      <attachid>284101</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-20 07:09:16 -0700</bug_when>
    <thetext>Created attachment 284101
Patch (applies after bug 159625)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212724</commentid>
    <comment_count>2</comment_count>
      <attachid>284102</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-20 07:10:31 -0700</bug_when>
    <thetext>Created attachment 284102
Patch bug 159625 + 159623 (for EWS testing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213496</commentid>
    <comment_count>3</comment_count>
      <attachid>284307</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-21 22:55:43 -0700</bug_when>
    <thetext>Created attachment 284307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213600</commentid>
    <comment_count>4</comment_count>
      <attachid>284307</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-22 09:28:03 -0700</bug_when>
    <thetext>Comment on attachment 284307
Patch

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

&gt; Source/WebCore/mathml/MathMLElement.cpp:589
&gt; +void MathMLElement::getSpecifiedDisplayStyle(bool&amp; displayStyle)

We avoid using &apos;get&apos; names in WebKit. This should be called &quot;specifiedDisplayStyle&quot;.

&gt; Source/WebCore/mathml/MathMLElement.cpp:598
&gt; +void MathMLElement::getSpecifiedMathVariant(MathMLElement::MathVariant&amp; mathVariant)

Ditto. We should probably call this &quot;specifiedMathVariant&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213601</commentid>
    <comment_count>5</comment_count>
      <attachid>284307</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-22 09:29:24 -0700</bug_when>
    <thetext>Comment on attachment 284307
Patch

Looks great! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213644</commentid>
    <comment_count>6</comment_count>
      <attachid>284307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-22 11:20:01 -0700</bug_when>
    <thetext>Comment on attachment 284307
Patch

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

&gt;&gt; Source/WebCore/mathml/MathMLElement.cpp:589
&gt;&gt; +void MathMLElement::getSpecifiedDisplayStyle(bool&amp; displayStyle)
&gt; 
&gt; We avoid using &apos;get&apos; names in WebKit. This should be called &quot;specifiedDisplayStyle&quot;.

We actually reserve the use of get for functions with out arguments. And there is an out argument here. But it’s peculiar how this works; it sets the argument to true or false, or possibly leaves the argument alone in other cases. I don’t think the name &quot;get&quot; makes that kind of unconventional behavior clear enough.

I think it would be clearer to use a return type of Optional&lt;bool&gt; for clarity even if that usage is less economical at the call site. Then the function would indeed be named specifiedDisplayStyle.

&gt;&gt; Source/WebCore/mathml/MathMLElement.cpp:598
&gt;&gt; +void MathMLElement::getSpecifiedMathVariant(MathMLElement::MathVariant&amp; mathVariant)
&gt; 
&gt; Ditto. We should probably call this &quot;specifiedMathVariant&quot;

Same comment as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214119</commentid>
    <comment_count>7</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-25 00:19:58 -0700</bug_when>
    <thetext>Committed r203679: &lt;http://trac.webkit.org/changeset/203679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284101</attachid>
            <date>2016-07-20 07:09:16 -0700</date>
            <delta_ts>2016-07-21 22:55:43 -0700</delta_ts>
            <desc>Patch (applies after bug 159625)</desc>
            <filename>0001-Bug-159623-Move-parsing-of-display-displaystyle-and-.patch</filename>
            <type>text/plain</type>
            <size>34794</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA4OTg1YzAzYWRmYjE1YzFhNTA3Y2M5NjM1Zjg0YmJiYmU0YTU0NzFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogV2VkLCAyMCBKdWwgMjAxNiAxNjowNzowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NTk2MjMgLSBNb3ZlIHBhcnNpbmcgb2YgZGlzcGxheSwgZGlzcGxheXN0eWxlIGFuZAogbWF0aHZh
cmlhbnQgYXR0cmlidXRlcyBmcm9tIHJlbmRlcmluZyB0byBtYXRobWwgZWxlbWVudCBjbGFzc2Vz
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgNTQgKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5jcHAgICAgICAgICAgICB8IDY0ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaCAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKwogLi4u
L21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAgICAgICAgfCAxOSArKysr
Ky0KIC4uLi9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggIHwg
IDQgKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAgICAgICAg
IHwgMjYgKysrKysrKy0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
ICAgICAgICAgIHwgIDUgKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5jcHAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxl
bWVudC5oICAgICAgICAgIHwgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9N
YXRoTUxTdHlsZS5jcHAgICAgfCA3NyArKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmggICAgICB8IDM0ICsrLS0tLS0tLS0K
IC4uLi9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIHwgNTcg
KysrKysrKystLS0tLS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyksIDEy
OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNmMmQwNC4uNjg3NjQyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDU5IEBACiAyMDE2LTA3LTIwICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdh
bGlhLmNvbT4KIAorICAgICAgICBNb3ZlIHBhcnNpbmcgb2YgZGlzcGxheSwgZGlzcGxheXN0eWxl
IGFuZCBtYXRodmFyaWFudCBhdHRyaWJ1dGVzIGludG8gTWF0aE1MIGVsZW1lbnQgY2xhc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Ojpw
YXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKTogTW92ZSBoZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2Ug
dGhlCisgICAgICAgIG1hdGh2YXJpYW50IGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGhNTEVsZW1lbnQ6OmdldFNwZWNpZmllZERpc3BsYXlTdHlsZSk6IEhlbHBlciBmdW5jdGlvbiB0
byBzZXQgdGhlIGRpc3BsYXlzdHlsZQorICAgICAgICB2YWx1ZSBmcm9tIHRoZSBhdHRyaWJ1dGUg
c3BlY2lmaWVkIG9uIHRoZSBNYXRoTUwgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TEVsZW1lbnQ6OmdldFNwZWNpZmllZE1hdGhWYXJpYW50KTogSGVscGVyIGZ1bmN0aW9uIHRvIHNl
dCB0aGUgbWF0aHZhcmlhbnQKKyAgICAgICAgdmFsdWUgZnJvbSB0aGUgYXR0cmlidXRlIHNwZWNp
ZmllZCBvbiB0aGUgTWF0aE1MIGVsZW1lbnQuCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1l
bnQuaDogTW92ZSB0aGUgZW51bSBmb3IgbWF0aHZhcmlhbnQgdmFsdWVzIGFuZCBkZWNsYXJlIG5l
dyBtZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6YWNjZXB0c0Rpc3Bs
YXlTdHlsZUF0dHJpYnV0ZSk6IEluZGljYXRlIHdoZXRoZXIgdGhlIGVsZW1lbnQgYWNjZXB0cwor
ICAgICAgICBkaXNwbGF5c3R5bGUgYXR0cmlidXRlIChmYWxzZSBmb3IgbW9zdCBvZiB0aGVtKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmFjY2VwdHNNYXRoVmFyaWFudEF0dHJp
YnV0ZSk6IEluZGljYXRlIHdoZXRoZXIgdGhlIGVsZW1lbnQgYWNjZXB0cworICAgICAgICBtYXRo
dmFyaWFudCBhdHRyaWJ1dGUgKGZhbHNlIGZvciBtb3N0IG9mIHRoZW0pLgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1
dGUpOiBBZGQgbXN0eWxlIGFuZCBtdGFibGUKKyAgICAgICAgdG8gdGhlIGxpc3Qgb2YgZWxlbWVu
dHMgYWNjZXB0aW5nIHRoZSBkaXNwbGF5c3R5bGUgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6YWNjZXB0c01hdGhWYXJpYW50QXR0cmli
dXRlKTogQWRkIG1zdHlsZSB0byB0aGUgbGlzdAorICAgICAgICBvZiBlbGVtZW50cyBhY2NlcHRp
bmcgdGhlIG1hdGh2YXJpYW50IGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogTWFyayBkaXNwbGF5c3R5bGUg
YW5kIG1hdGh2YXJpYW50CisgICAgICAgIGRpcnR5IGlmIG5lY2Vzc2FyeS4gQWxzbyB1c2UgdGhl
IG5ldyBhY2NlcHRzKkF0dHJpYnV0ZSBmdW5jdGlvbi4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5oOiBEZWNsYXJlIG92ZXJyaWRkZW4gYWNjZXB0cypBdHRy
aWJ1dGUgbWVtYmVycy4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmdldFNwZWNpZmllZERpc3BsYXlT
dHlsZSk6IE92ZXJyaWRlIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUKKyAgICAgICAgc28g
dGhhdCB0aGUgZGlzcGxheSBhdHRyaWJ1dGUgaXMgYWxzbyB1c2VkIHRvIHNldCB0aGUgZGVmYXVs
dCB2YWx1ZSBpZiB0aGUgZGlzcGxheXN0eWxlCisgICAgICAgIGF0dHJpYnV0ZSBpcyBhYnNlbnQu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBN
YXJrIGRpc3BsYXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQgZGlydHkgaWYKKyAgICAgICAgbmVjZXNz
YXJ5LiBXZSBkaXJlY3RseSBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSB0byBhdm9pZCBk
dXBsaWNhdGUgd29yay4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDogQWRk
IHRoZSBtYXRoIHRhZyB0byB0aGUgbGlzdCBvZiBlbGVtZW50cyBhY2NlcHRpbmcgdGhlCisgICAg
ICAgIGRpc3BsYXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQgYXR0cmlidXRlcy4gRGVjbGFyZSBvdmVy
cmlkZGVuIGdldFNwZWNpZmllZERpc3BsYXlTdHlsZS4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKTogTWFyayBtYXRodmFyaWFudCBhcyBkaXJ0eS4KKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MVGV4dEVsZW1lbnQuaDogQWRkIHRva2VuIGVsZW1lbnRzIHRvIHRoZSBsaXN0IG9m
IGVsZW1lbnRzIGFjY2VwdGluZyB0aGUKKyAgICAgICAgbWF0aHZhcmlhbnQgYXR0cmlidXRlLgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MU3R5bGU6OnVwZGF0ZVN0eWxlSWZOZWVkZWQpOiBVc2UgdGhlIG5ldyBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudCBlbnVtLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3R5
bGU6OnJlc29sdmVNYXRoTUxTdHlsZSk6ICBXZSBubyBsb25nZXIgcGFyc2UgdGhlIGRpc3BsYXkg
dmFsdWUgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgbWF0
aCB0YWcsIGJlY2F1c2UgdGhpcyBpcyBoYW5kbGVkIGluCisgICAgICAgIGdldFNwZWNpZmllZERp
c3BsYXlTdHlsZS4gSW4gZ2VuZXJhbCwgd2UgYWxzbyBqdXN0IGNhbGwgZ2V0U3BlY2lmaWVkRGlz
cGxheVN0eWxlIGFuZAorICAgICAgICBnZXRTcGVjaWZpZWRNYXRoVmFyaWFudCBvbiB0aGUgTWF0
aE1MIGVsZW1lbnRzIGluc3RlYWQgb2YgcGFyc2luZyB0aGUgZGlzcGxheXN0eWxlIGFuZAorICAg
ICAgICBtYXRodmFyaWFudCBhdHRyaWJ1dGVzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxTdHlsZTo6cGFyc2VNYXRoVmFyaWFudCk6IERlbGV0ZWQuIFRoaXMgaXMgbW92ZWQgaW50byBN
YXRoTUxFbGVtZW50LgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaDog
VXNlIHRoZSBuZXcgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgZW51bS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjptYXRoVmFyaWFudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgpOiBEaXR0by4KKworMjAxNi0wNy0yMCAg
RnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CisKICAgICAgICAgTW92ZSBwYXJzaW5n
IG9mIGFjY2VudHVuZGVyIGFuZCBhY2NlbnQgYXR0cmlidXRlcyBmcm9tIHJlbmRlcmVyIHRvIGVs
ZW1lbnQgY2xhc3NlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU5NjI1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRl
eCBlOWI3NGNkLi5jMmVlNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
Y3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kg
KGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgRnJhbsOnb2lzIFNhdXNzZXQgKHNhdXNzZXRAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NDEsNiArNTQyLDY5IEBAIGNvbnN0IE1hdGhNTEVsZW1l
bnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShj
b25zdCBRCiAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZTsKIH0KIAorTWF0aE1MRWxlbWVudDo6
TWF0aFZhcmlhbnQgTWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQoreworICAgIC8vIFRoZSBtYXRodmFyaWFu
dCBhdHRyaWJ1dGUgdmFsdWVzIGlzIGNhc2Utc2Vuc2l0aXZlLgorICAgIGlmIChhdHRyaWJ1dGVW
YWx1ZSA9PSAibm9ybWFsIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpOb3JtYWw7Cisg
ICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJp
YW50OjpCb2xkOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaXRhbGljIikKKyAgICAgICAg
cmV0dXJuIE1hdGhWYXJpYW50OjpJdGFsaWM7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJi
b2xkLWl0YWxpYyIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Qm9sZEl0YWxpYzsKKyAg
ICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImRvdWJsZS1zdHJ1Y2siKQorICAgICAgICByZXR1cm4g
TWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJv
bGQtZnJha3R1ciIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Qm9sZEZyYWt0dXI7Cisg
ICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzY3JpcHQiKQorICAgICAgICByZXR1cm4gTWF0aFZh
cmlhbnQ6OlNjcmlwdDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJvbGQtc2NyaXB0IikK
KyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpCb2xkU2NyaXB0OworICAgIGlmIChhdHRyaWJ1
dGVWYWx1ZSA9PSAiZnJha3R1ciIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6RnJha3R1
cjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYiKQorICAgICAgICByZXR1
cm4gTWF0aFZhcmlhbnQ6OlNhbnNTZXJpZjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJv
bGQtc2Fucy1zZXJpZiIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Qm9sZFNhbnNTZXJp
ZjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYtaXRhbGljIikKKyAgICAg
ICAgcmV0dXJuIE1hdGhWYXJpYW50OjpTYW5zU2VyaWZJdGFsaWM7CisgICAgaWYgKGF0dHJpYnV0
ZVZhbHVlID09ICJzYW5zLXNlcmlmLWJvbGQtaXRhbGljIikKKyAgICAgICAgcmV0dXJuIE1hdGhW
YXJpYW50OjpTYW5zU2VyaWZCb2xkSXRhbGljOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
bW9ub3NwYWNlIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpNb25vc3BhY2U7CisgICAg
aWYgKGF0dHJpYnV0ZVZhbHVlID09ICJpbml0aWFsIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJp
YW50OjpJbml0aWFsOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAidGFpbGVkIikKKyAgICAg
ICAgcmV0dXJuIE1hdGhWYXJpYW50OjpUYWlsZWQ7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09
ICJsb29wZWQiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Okxvb3BlZDsKKyAgICBpZiAo
YXR0cmlidXRlVmFsdWUgPT0gInN0cmV0Y2hlZCIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFu
dDo6U3RyZXRjaGVkOworICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9uZTsKK30KKwordm9pZCBN
YXRoTUxFbGVtZW50OjpnZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUoYm9vbCYgZGlzcGxheVN0eWxl
KQoreworICAgIGlmICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBzcGVjaWZpZWRE
aXNwbGF5U3R5bGUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRpc3BsYXlzdHlsZUF0dHIsIG1f
ZGlzcGxheVN0eWxlKTsKKyAgICBpZiAoc3BlY2lmaWVkRGlzcGxheVN0eWxlICE9IE1hdGhNTEVs
ZW1lbnQ6OkJvb2xlYW5WYWx1ZTo6RGVmYXVsdCkKKyAgICAgICAgZGlzcGxheVN0eWxlID0gc3Bl
Y2lmaWVkRGlzcGxheVN0eWxlID09IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZTo6VHJ1ZTsK
K30KKwordm9pZCBNYXRoTUxFbGVtZW50OjpnZXRTcGVjaWZpZWRNYXRoVmFyaWFudChNYXRoTUxF
bGVtZW50OjpNYXRoVmFyaWFudCYgbWF0aFZhcmlhbnQpCit7CisgICAgaWYgKCFhY2NlcHRzTWF0
aFZhcmlhbnRBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX21hdGhWYXJp
YW50LmRpcnR5KSB7CisgICAgICAgIG1fbWF0aFZhcmlhbnQudmFsdWUgPSBwYXJzZU1hdGhWYXJp
YW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRB
dHRyKSk7CisgICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAg
aWYgKG1fbWF0aFZhcmlhbnQudmFsdWUgIT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5v
bmUpCisgICAgICAgIG1hdGhWYXJpYW50ID0gbV9tYXRoVmFyaWFudC52YWx1ZTsKK30KKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oCmluZGV4IDk3OGNmMjAuLmQ3YjljNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93
c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEwIEZyYW7Dp29pcyBTYXVzc2V0IChzYXVzc2V0QGdtYWlsLmNvbSkuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNiArNzMsMzggQEAgcHVibGljOgogICAgICAg
ICBib29sIGRpcnR5IHsgdHJ1ZSB9OwogICAgIH07CiAKKyAgICAvLyBUaGVzZSBhcmUgdGhlIG1h
dGh2YXJpYW50IHZhbHVlcyBmcm9tIHRoZSBNYXRoTUwgcmVjb21tZW5kYXRpb24uCisgICAgLy8g
VGhlIHNwZWNpYWwgdmFsdWUgbm9uZSBtZWFucyB0aGF0IG5vIGV4cGxpY2l0IG1hdGh2YXJpYW50
IHZhbHVlIGhhcyBiZWVuIHNwZWNpZmllZC4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIG51bWVyYWwg
dmFsdWVzIGFyZSBpbXBvcnRhbnQgZm9yIHRoZSBjb21wdXRhdGlvbiBwZXJmb3JtZWQgaW4gdGhl
IG1hdGhWYXJpYW50IGZ1bmN0aW9uIG9mIFJlbmRlck1hdGhNTFRva2VuLCBkbyBub3QgY2hhbmdl
IHRoZW0hCisgICAgZW51bSBjbGFzcyBNYXRoVmFyaWFudCB7CisgICAgICAgIE5vbmUgPSAwLAor
ICAgICAgICBOb3JtYWwgPSAxLAorICAgICAgICBCb2xkID0gMiwKKyAgICAgICAgSXRhbGljID0g
MywKKyAgICAgICAgQm9sZEl0YWxpYyA9IDQsCisgICAgICAgIFNjcmlwdCA9IDUsCisgICAgICAg
IEJvbGRTY3JpcHQgPSA2LAorICAgICAgICBGcmFrdHVyID0gNywKKyAgICAgICAgRG91YmxlU3Ry
dWNrID0gOCwKKyAgICAgICAgQm9sZEZyYWt0dXIgPSA5LAorICAgICAgICBTYW5zU2VyaWYgPSAx
MCwKKyAgICAgICAgQm9sZFNhbnNTZXJpZiA9IDExLAorICAgICAgICBTYW5zU2VyaWZJdGFsaWMg
PSAxMiwKKyAgICAgICAgU2Fuc1NlcmlmQm9sZEl0YWxpYyA9IDEzLAorICAgICAgICBNb25vc3Bh
Y2UgPSAxNCwKKyAgICAgICAgSW5pdGlhbCA9IDE1LAorICAgICAgICBUYWlsZWQgPSAxNiwKKyAg
ICAgICAgTG9vcGVkID0gMTcsCisgICAgICAgIFN0cmV0Y2hlZCA9IDE4CisgICAgfTsKKyAgICBz
dHJ1Y3QgTWF0aFZhcmlhbnRBdHRyaWJ1dGUgeworICAgICAgICBNYXRoVmFyaWFudCB2YWx1ZSB7
IE1hdGhWYXJpYW50OjpOb25lIH07CisgICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07CisgICAg
fTsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUoYm9vbCYpOwor
ICAgIHZvaWQgZ2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQoTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlh
bnQmKTsKKwogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIApAQCAtOTEsMTAgKzEyNCwxNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIExlbmd0aCYpOwogICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgY2FjaGVkQm9vbGVhbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgQm9vbGVhbkF0dHJpYnV0ZSYpOwogCisgICAgdmly
dHVhbCBib29sIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgQm9vbGVhbkF0dHJpYnV0ZSBtX2Rpc3BsYXlTdHlsZTsKKyAgICBN
YXRoVmFyaWFudEF0dHJpYnV0ZSBtX21hdGhWYXJpYW50OworCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiAgICAgc3RhdGljIExlbmd0aCBwYXJz
ZU51bWJlckFuZFVuaXQoY29uc3QgU3RyaW5nVmlldyYpOwogICAgIHN0YXRpYyBMZW5ndGggcGFy
c2VOYW1lZFNwYWNlKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAgICBzdGF0aWMgTWF0aFZhcmlhbnQg
cGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZh
bHVlKTsKIAogICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGlzRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggMGI0MDcwNy4u
N2I0MmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC03NCwxMCArNzUsMjQgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW4KICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CiAKK2Jvb2wgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6
YWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpCit7CisgICAgcmV0dXJuIGhhc1RhZ05hbWUo
bXN0eWxlVGFnKSB8fCBoYXNUYWdOYW1lKG10YWJsZVRhZyk7Cit9CisKK2Jvb2wgTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudDo6YWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkKK3sKKyAg
ICByZXR1cm4gaGFzVGFnTmFtZShtc3R5bGVUYWcpOworfQorCiB2b2lkIE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgYm9vbCBkaXNwbGF5U3R5bGVBdHRy
aWJ1dGUgPSAobmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyICYmIChoYXNUYWdOYW1lKG1zdHlsZVRh
ZykgfHwgaGFzVGFnTmFtZShtdGFibGVUYWcpKSk7Ci0gICAgYm9vbCBtYXRoVmFyaWFudEF0dHJp
YnV0ZSA9IChuYW1lID09IG1hdGh2YXJpYW50QXR0ciAmJiAoaGFzVGFnTmFtZShtYXRoVGFnKSB8
fCBoYXNUYWdOYW1lKG1zdHlsZVRhZykpKTsKKyAgICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0
ZSA9IG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmli
dXRlKCk7CisgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlh
bnRBdHRyICYmIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpOworICAgIGlmIChkaXNwbGF5
U3R5bGVBdHRyaWJ1dGUpCisgICAgICAgIG1fZGlzcGxheVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAg
ICBpZiAobWF0aFZhcmlhbnRBdHRyaWJ1dGUpCisgICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkg
PSB0cnVlOwogICAgIGlmICgoZGlzcGxheVN0eWxlQXR0cmlidXRlIHx8IG1hdGhWYXJpYW50QXR0
cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAgICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhN
TFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKaW5kZXggZDI2YWI1Zi4uYmQ4ZWRmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4
IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQwLDYgKzQxLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKKyAg
ICBib29sIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKyAgICBib29s
IGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1By
ZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCmluZGV4IGYzNmRiZWEuLjBhYjE2
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcApAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxl
eEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MywxMiAr
NTQsMzMgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCit2b2lkIE1h
dGhNTE1hdGhFbGVtZW50OjpnZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUoYm9vbCYgZGlzcGxheVN0
eWxlKQoreworICAgIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgc3BlY2lmaWVk
RGlzcGxheVN0eWxlID0gY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShkaXNwbGF5c3R5bGVBdHRyLCBt
X2Rpc3BsYXlTdHlsZSk7CisgICAgaWYgKHNwZWNpZmllZERpc3BsYXlTdHlsZSA9PSBCb29sZWFu
VmFsdWU6OkRlZmF1bHQpIHsKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlzcGxheXN0eWxlIHZh
bHVlIG9mIHRoZSA8bWF0aD4gZGVwZW5kcyBvbiB0aGUgZGlzcGxheSBhdHRyaWJ1dGUsIHNvIHdl
IHBhcnNlIGl0IGhlcmUuCisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpc3BsYXlBdHRyKTsKKyAgICAgICAgaWYgKHZh
bHVlID09ICJibG9jayIpCisgICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZS52YWx1ZSA9IEJvb2xl
YW5WYWx1ZTo6VHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImlubGluZSIpCisgICAg
ICAgICAgICBtX2Rpc3BsYXlTdHlsZS52YWx1ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7CisgICAg
fQorICAgIGlmIChtX2Rpc3BsYXlTdHlsZS52YWx1ZSAhPSBCb29sZWFuVmFsdWU6OkRlZmF1bHQp
CisgICAgICAgIGRpc3BsYXlTdHlsZSA9IG1fZGlzcGxheVN0eWxlLnZhbHVlID09IEJvb2xlYW5W
YWx1ZTo6VHJ1ZTsKK30KKwogdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBpZiAoKG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciB8fCBuYW1lID09IGRpc3BsYXlBdHRy
IHx8IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyKSAmJiByZW5kZXJlcigpKQorICAgIGJvb2wgZGlz
cGxheVN0eWxlQXR0cmlidXRlID0gKG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciB8fCBuYW1lID09
IGRpc3BsYXlBdHRyKTsKKyAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBt
YXRodmFyaWFudEF0dHI7CisgICAgaWYgKGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSkKKyAgICAgICAg
bV9kaXNwbGF5U3R5bGUuZGlydHkgPSB0cnVlOworICAgIGlmIChtYXRoVmFyaWFudEF0dHJpYnV0
ZSkKKyAgICAgICAgbV9tYXRoVmFyaWFudC5kaXJ0eSA9IHRydWU7CisgICAgaWYgKChkaXNwbGF5
U3R5bGVBdHRyaWJ1dGUgfHwgbWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAg
ICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwog
Ci0gICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXggNzFlMTIyZC4uNjhiOTI1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKQEAgLTEsNiAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWls
b3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDEsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVy
cygpIGZpbmFsOwogCisgICAgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRl
KCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZ2V0U3BlY2lmaWVkRGlzcGxheVN0
eWxlKGJvb2wmKSBmaW5hbDsKKwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
ZmluYWw7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNw
cAppbmRleCAwZTM4NWIzLi40Nzg5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5jcHAKQEAgLTcxLDggKzcxLDExIEBAIHZvaWQgTWF0aE1MVGV4dEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobmFtZSA9PSBtYXRodmFyaWFu
dEF0dHIgJiYgcmVuZGVyZXIoKSkKLSAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxT
dHlsZVRyZWUocmVuZGVyZXIoKSk7CisgICAgaWYgKG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyKSB7
CisgICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSB0cnVlOworICAgICAgICBpZiAocmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJl
bmRlcmVyKCkpOworICAgIH0KIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgK
aW5kZXggMGVkMWY2NC4uOWJhOTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEFs
ZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYXRoTUxU
ZXh0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1hdGhNTFRleHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBib29sIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0
ZSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAppbmRleCAyNzE2YzFi
Li5hODlmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhNTFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhN
TFN0eWxlLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgIk1hdGhNTFN0eWxlLmgiCiAK
ICNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWF0aE1M
VGV4dEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2luY2x1ZGUg
IlJlbmRlck1hdGhNTEZyYWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MTWF0aC5oIgpA
QCAtODEsNyArODMsNyBAQCBSZW5kZXJPYmplY3QqIE1hdGhNTFN0eWxlOjpnZXRNYXRoTUxQYXJl
bnROb2RlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIHBhcmVudFJlbmRlcmVy
OwogfQogCi12b2lkIE1hdGhNTFN0eWxlOjp1cGRhdGVTdHlsZUlmTmVlZGVkKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGJvb2wgb2xkRGlzcGxheVN0eWxlLCBNYXRoVmFyaWFudCBvbGRNYXRoVmFy
aWFudCkKK3ZvaWQgTWF0aE1MU3R5bGU6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgYm9vbCBvbGREaXNwbGF5U3R5bGUsIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJp
YW50IG9sZE1hdGhWYXJpYW50KQogewogICAgIGlmIChvbGREaXNwbGF5U3R5bGUgIT0gbV9kaXNw
bGF5U3R5bGUpIHsKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwpAQCAtOTgsNTkgKzEwMCwxOCBAQCB2b2lkIE1hdGhNTFN0eWxlOjp1cGRhdGVT
dHlsZUlmTmVlZGVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgb2xkRGlzcGxheVN0eQog
ICAgIH0KIH0KIAotTWF0aE1MU3R5bGU6Ok1hdGhWYXJpYW50IE1hdGhNTFN0eWxlOjpwYXJzZU1h
dGhWYXJpYW50KGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUpCi17Ci0gICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJub3JtYWwiKQotICAgICAgICByZXR1cm4gTm9ybWFsOwotICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9sZCIpCi0gICAgICAgIHJldHVybiBCb2xkOwotICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaXRhbGljIikKLSAgICAgICAgcmV0dXJuIEl0YWxpYzsK
LSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJvbGQtaXRhbGljIikKLSAgICAgICAgcmV0dXJu
IEJvbGRJdGFsaWM7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJkb3VibGUtc3RydWNrIikK
LSAgICAgICAgcmV0dXJuIERvdWJsZVN0cnVjazsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0g
ImJvbGQtZnJha3R1ciIpCi0gICAgICAgIHJldHVybiBCb2xkRnJha3R1cjsKLSAgICBpZiAoYXR0
cmlidXRlVmFsdWUgPT0gInNjcmlwdCIpCi0gICAgICAgIHJldHVybiBTY3JpcHQ7Ci0gICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLXNjcmlwdCIpCi0gICAgICAgIHJldHVybiBCb2xkU2Ny
aXB0OwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZnJha3R1ciIpCi0gICAgICAgIHJldHVy
biBGcmFrdHVyOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2Fucy1zZXJpZiIpCi0gICAg
ICAgIHJldHVybiBTYW5zU2VyaWY7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLXNh
bnMtc2VyaWYiKQotICAgICAgICByZXR1cm4gQm9sZFNhbnNTZXJpZjsKLSAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gInNhbnMtc2VyaWYtaXRhbGljIikKLSAgICAgICAgcmV0dXJuIFNhbnNTZXJp
Zkl0YWxpYzsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYtYm9sZC1pdGFs
aWMiKQotICAgICAgICByZXR1cm4gU2Fuc1NlcmlmQm9sZEl0YWxpYzsKLSAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gIm1vbm9zcGFjZSIpCi0gICAgICAgIHJldHVybiBNb25vc3BhY2U7Ci0gICAg
aWYgKGF0dHJpYnV0ZVZhbHVlID09ICJpbml0aWFsIikKLSAgICAgICAgcmV0dXJuIEluaXRpYWw7
Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJ0YWlsZWQiKQotICAgICAgICByZXR1cm4gVGFp
bGVkOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAibG9vcGVkIikKLSAgICAgICAgcmV0dXJu
IExvb3BlZDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInN0cmV0Y2hlZCIpCi0gICAgICAg
IHJldHVybiBTdHJldGNoZWQ7Ci0gICAgcmV0dXJuIE5vbmU7Ci19Ci0KIHZvaWQgTWF0aE1MU3R5
bGU6OnJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIEFT
U0VSVChyZW5kZXJlcik7CiAKICAgICBib29sIG9sZERpc3BsYXlTdHlsZSA9IG1fZGlzcGxheVN0
eWxlOwotICAgIE1hdGhWYXJpYW50IG9sZE1hdGhWYXJpYW50ID0gbV9tYXRoVmFyaWFudDsKKyAg
ICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBvbGRNYXRoVmFyaWFudCA9IG1fbWF0aFZhcmlh
bnQ7CiAgICAgYXV0byogcGFyZW50UmVuZGVyZXIgPSBnZXRNYXRoTUxQYXJlbnROb2RlKHJlbmRl
cmVyKTsKICAgICBjb25zdCBNYXRoTUxTdHlsZSogcGFyZW50U3R5bGUgPSBnZXRNYXRoTUxTdHls
ZShwYXJlbnRSZW5kZXJlcik7CiAKICAgICAvLyBCeSBkZWZhdWx0LCB3ZSBqdXN0IGluaGVyaXQg
dGhlIHN0eWxlIGZyb20gb3VyIHBhcmVudC4KICAgICBtX2Rpc3BsYXlTdHlsZSA9IGZhbHNlOwot
ICAgIG1fbWF0aFZhcmlhbnQgPSBOb25lOworICAgIG1fbWF0aFZhcmlhbnQgPSBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudDo6Tm9uZTsKICAgICBpZiAocGFyZW50U3R5bGUpIHsKICAgICAgICAg
c2V0RGlzcGxheVN0eWxlKHBhcmVudFN0eWxlLT5kaXNwbGF5U3R5bGUoKSk7CiAgICAgICAgIHNl
dE1hdGhWYXJpYW50KHBhcmVudFN0eWxlLT5tYXRoVmFyaWFudCgpKTsKQEAgLTE2MiwxMCArMTIz
LDggQEAgdm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXM8UmVuZGVyTWF0
aE1MTWF0aD4ocmVuZGVyZXIpKQotICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKS0+ZWxlbWVudCgpLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGRpc3BsYXlBdHRyKSA9PSAiYmxvY2siOyAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5
c3R5bGUgb2YgdGhlIDxtYXRoPiBlbGVtZW50IGRlcGVuZHMgb24gaXRzIGRpc3BsYXkgYXR0cmli
dXRlLgotICAgIGVsc2UgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCi0gICAg
ICAgIG1fZGlzcGxheVN0eWxlID0gZmFsc2U7IC8vIFRoZSBkZWZhdWx0IGRpc3BsYXlzdHlsZSBv
ZiA8bXRhYmxlPiBpcyBmYWxzZS4KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MTWF0aD4ocmVuZGVy
ZXIpIHx8IGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAgICAgIG1fZGlzcGxh
eVN0eWxlID0gZmFsc2U7IC8vIFRoZSBkZWZhdWx0IGRpc3BsYXlzdHlsZSBvZiA8bWF0aD4gYW5k
IDxtdGFibGU+IGlzIGZhbHNlLgogICAgIGVsc2UgaWYgKHBhcmVudFJlbmRlcmVyKSB7CiAgICAg
ICAgIGlmIChpczxSZW5kZXJNYXRoTUxGcmFjdGlvbj4ocGFyZW50UmVuZGVyZXIpKQogICAgICAg
ICAgICAgbV9kaXNwbGF5U3R5bGUgPSBmYWxzZTsgLy8gPG1mcmFjPiBzZXRzIGRpc3BsYXlzdHls
ZSB0byBmYWxzZSB3aXRoaW4gaXRzIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IuCkBAIC0xNzcs
MjMgKzEzNiwxMSBAQCB2b2lkIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGUoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFRoZSBkaXNwbGF5
c3R5bGUgYXR0cmlidXRlIG9uIHRoZSA8bWF0aD4sIDxtdGFibGU+IG9yIDxtc3R5bGU+IGVsZW1l
bnRzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgotICAgIGNvbnN0IGF1dG8qIGVsZW1l
bnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlciktPmVsZW1lbnQoKTsKLSAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICBp
ZiAodGFnTmFtZSA9PSBtYXRoVGFnIHx8IHRhZ05hbWUgPT0gbXRhYmxlVGFnIHx8IHRhZ05hbWUg
PT0gbXN0eWxlVGFnKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgbW9kaWZ5IHRoZSB2YWx1ZSBvZiBk
aXNwbGF5c3R5bGUgaWYgdGhlcmUgaXMgYW4gZXhwbGljaXQgYW5kIHZhbGlkIGF0dHJpYnV0ZS4K
LSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlzcGxheXN0eWxlQXR0cik7Ci0gICAgICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAidHJ1ZSIpCi0gICAgICAgICAgICBtX2Rpc3BsYXlTdHls
ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJmYWxzZSIpCi0g
ICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IGZhbHNlOwotICAgIH0KLQotICAgIC8vIFRoZSBt
YXRodmFyaWFudCBhdHRyaWJ1dGUgb24gdGhlIDxtYXRoPiwgPG1zdHlsZT4gb3IgdG9rZW4gZWxl
bWVudHMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgotICAgIGlmIChpczxSZW5kZXJN
YXRoTUxNYXRoPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyTWF0aE1MVG9rZW4+KHJlbmRlcmVyKSB8
fCB0YWdOYW1lID09IG1zdHlsZVRhZykgewotICAgICAgICBNYXRoVmFyaWFudCBtYXRodmFyaWFu
dCA9IHBhcnNlTWF0aFZhcmlhbnQoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICAgICAgaWYgKG1hdGh2YXJpYW50ICE9IE5vbmUp
Ci0gICAgICAgICAgICBtX21hdGhWYXJpYW50ID0gbWF0aHZhcmlhbnQ7CisgICAgLy8gVGhlIGRp
c3BsYXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQgYXR0cmlidXRlcyBvdmVycmlkZSB0aGUgZGVmYXVs
dCBiZWhhdmlvci4KKyAgICBhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
cmVuZGVyZXIpLT5lbGVtZW50KCk7CisgICAgaWYgKGlzPE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQp
KSB7CisgICAgICAgIGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5nZXRTcGVjaWZp
ZWREaXNwbGF5U3R5bGUobV9kaXNwbGF5U3R5bGUpOworICAgICAgICBkb3duY2FzdDxNYXRoTUxF
bGVtZW50PihlbGVtZW50KS0+Z2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQobV9tYXRoVmFyaWFudCk7
CiAgICAgfQogCiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZChyZW5kZXJlciwgb2xkRGlzcGxheVN0
eWxlLCBvbGRNYXRoVmFyaWFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL01hdGhNTFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L01hdGhNTFN0eWxlLmgKaW5kZXggMjdlYWM3Ni4uOGY0MjQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShNQVRITUwpCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDMyICs0MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpc3BsYXlTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0eWxlOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5U3R5
bGUoYm9vbCBkaXNwbGF5U3R5bGUpIHsgbV9kaXNwbGF5U3R5bGUgPSBkaXNwbGF5U3R5bGU7IH0K
IAotICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF0aHZhcmlhbnQgdmFsdWVzIGZyb20gdGhlIE1hdGhN
TCByZWNvbW1lbmRhdGlvbi4KLSAgICAvLyBUaGUgc3BlY2lhbCB2YWx1ZSBub25lIG1lYW5zIHRo
YXQgbm8gZXhwbGljaXQgbWF0aHZhcmlhbnQgdmFsdWUgaGFzIGJlZW4gc3BlY2lmaWVkLgotICAg
IC8vIE5vdGUgdGhhdCB0aGUgbnVtZXJhbCB2YWx1ZXMgYXJlIGltcG9ydGFudCBmb3IgdGhlIGNv
bXB1dGF0aW9uIHBlcmZvcm1lZCBpbiB0aGUgbWF0aFZhcmlhbnQgZnVuY3Rpb24gb2YgUmVuZGVy
TWF0aE1MVG9rZW4sIGRvIG5vdCBjaGFuZ2UgdGhlbSEKLSAgICBlbnVtIE1hdGhWYXJpYW50IHsK
LSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIE5vcm1hbCA9IDEsCi0gICAgICAgIEJvbGQgPSAy
LAotICAgICAgICBJdGFsaWMgPSAzLAotICAgICAgICBCb2xkSXRhbGljID0gNCwKLSAgICAgICAg
U2NyaXB0ID0gNSwKLSAgICAgICAgQm9sZFNjcmlwdCA9IDYsCi0gICAgICAgIEZyYWt0dXIgPSA3
LAotICAgICAgICBEb3VibGVTdHJ1Y2sgPSA4LAotICAgICAgICBCb2xkRnJha3R1ciA9IDksCi0g
ICAgICAgIFNhbnNTZXJpZiA9IDEwLAotICAgICAgICBCb2xkU2Fuc1NlcmlmID0gMTEsCi0gICAg
ICAgIFNhbnNTZXJpZkl0YWxpYyA9IDEyLAotICAgICAgICBTYW5zU2VyaWZCb2xkSXRhbGljID0g
MTMsCi0gICAgICAgIE1vbm9zcGFjZSA9IDE0LAotICAgICAgICBJbml0aWFsID0gMTUsCi0gICAg
ICAgIFRhaWxlZCA9IDE2LAotICAgICAgICBMb29wZWQgPSAxNywKLSAgICAgICAgU3RyZXRjaGVk
ID0gMTgKLSAgICB9OwotICAgIE1hdGhWYXJpYW50IG1hdGhWYXJpYW50KCkgY29uc3QgeyByZXR1
cm4gbV9tYXRoVmFyaWFudDsgfQotICAgIHZvaWQgc2V0TWF0aFZhcmlhbnQoTWF0aFZhcmlhbnQg
bWF0aHZhcmlhbnQpIHsgbV9tYXRoVmFyaWFudCA9IG1hdGh2YXJpYW50OyB9CisgICAgTWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aFZhcmlhbnQoKSBjb25zdCB7IHJldHVybiBtX21hdGhW
YXJpYW50OyB9CisgICAgdm9pZCBzZXRNYXRoVmFyaWFudChNYXRoTUxFbGVtZW50OjpNYXRoVmFy
aWFudCBtYXRodmFyaWFudCkgeyBtX21hdGhWYXJpYW50ID0gbWF0aHZhcmlhbnQ7IH0KIAogICAg
IHZvaWQgcmVzb2x2ZU1hdGhNTFN0eWxlKFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lk
IHJlc29sdmVNYXRoTUxTdHlsZVRyZWUoUmVuZGVyT2JqZWN0Kik7CkBAIC03NCwxMSArNTEsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzRGlzcGxheVN0eWxlQWx3YXlzRmFsc2UoUmVuZGVyT2Jq
ZWN0Kik7CiAgICAgY29uc3QgTWF0aE1MU3R5bGUqIGdldE1hdGhNTFN0eWxlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpOwogICAgIFJlbmRlck9iamVjdCogZ2V0TWF0aE1MUGFyZW50Tm9kZShSZW5k
ZXJPYmplY3QqKTsKLSAgICB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWQoUmVuZGVyT2JqZWN0Kiwg
Ym9vbCwgTWF0aFZhcmlhbnQpOwotICAgIE1hdGhWYXJpYW50IHBhcnNlTWF0aFZhcmlhbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CisgICAgdm9pZCB1cGRhdGVTdHlsZUlm
TmVlZGVkKFJlbmRlck9iamVjdCosIGJvb2wsIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50KTsK
IAogICAgIGJvb2wgbV9kaXNwbGF5U3R5bGUgeyBmYWxzZSB9OwotICAgIE1hdGhWYXJpYW50IG1f
bWF0aFZhcmlhbnQgeyBOb25lIH07CisgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgbV9t
YXRoVmFyaWFudCB7IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb25lIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VG9rZW4uY3BwCmluZGV4IDgyYzBkYTYuLjFkMmQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5o
IgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtMjgxLDM3ICsyODIsMzcgQEAgY29uc3QgVUNoYXIz
MiBtYXRoQm9sZFBpU3ltYm9sID0gMHgxRDZFMTsKIC8vIENoYXJhY3RlcnMgd2l0aG91dCBhIHZh
bGlkIG1hcHBpbmcgb3IgdmFsaWQgYU1hdGh2YXIgdmFsdWUgYXJlIHJldHVybmVkCiAvLyB1bmFs
dGVyZWQuCiAvLyBDaGFyYWN0ZXJzIGFscmVhZHkgaW4gdGhlIG1hdGhlbWF0aWNhbCBibG9ja3Mg
KG9yIGFyZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbnMpIGFyZSBuZXZlciB0cmFuc2Zvcm1lZC4KLS8v
IEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFyaWFudCBhcmUgc3BlY2lmaWVkIGluIE1hdGhN
TFN0eWxlLmgKKy8vIEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFyaWFudCBhcmUgc3BlY2lm
aWVkIGluIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjouaAogLy8gVGhlIHRyYW5zZm9ybWFi
bGUgY2hhcmFjdGVycyBjYW4gYmUgZm91bmQgYXQ6CiAvLyBodHRwOi8vbGlzdHMudzMub3JnL0Fy
Y2hpdmVzL1B1YmxpYy93d3ctbWF0aC8yMDEzU2VwLzAwMTIuaHRtbCBhbmQKIC8vIGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGhlbWF0aWNhbF9BbHBoYW51bWVyaWNfU3ltYm9scwot
c3RhdGljIFVDaGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9pbnQsIE1hdGhNTFN0eWxl
OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCkKK3N0YXRpYyBVQ2hhcjMyIG1hdGhWYXJpYW50KFVD
aGFyMzIgY29kZVBvaW50LCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCkK
IHsKLSAgICBBU1NFUlQobWF0aHZhcmlhbnQgPj0gTWF0aE1MU3R5bGU6Ok5vcm1hbCAmJiBtYXRo
dmFyaWFudCA8PSBNYXRoTUxTdHlsZTo6U3RyZXRjaGVkKTsKKyAgICBBU1NFUlQobWF0aHZhcmlh
bnQgPj0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vcm1hbCAmJiBtYXRodmFyaWFudCA8
PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6U3RyZXRjaGVkKTsKIAotICAgIGlmIChtYXRo
dmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6Tm9ybWFsKQorICAgIGlmIChtYXRodmFyaWFudCA9PSBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gY29kZVBv
aW50OyAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCiAKICAgICAvLyBFeGNlcHRpb25hbCBjaGFyYWN0
ZXJzIHdpdGggYXQgbW9zdCBvbmUgcG9zc2libGUgdHJhbnNmb3JtYXRpb24uCiAgICAgaWYgKGNv
ZGVQb2ludCA9PSBob2xlR3JlZWtVcHBlclRoZXRhKQogICAgICAgICByZXR1cm4gY29kZVBvaW50
OyAvLyBOb3RoaW5nIGF0IHRoaXMgY29kZSBwb2ludCBpcyB0cmFuc2Zvcm1lZAogICAgIGlmIChj
b2RlUG9pbnQgPT0gZ3JlZWtMZXR0ZXJEaWdhbW1hKSB7Ci0gICAgICAgIGlmIChtYXRodmFyaWFu
dCA9PSBNYXRoTUxTdHlsZTo6Qm9sZCkKKyAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhN
TEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpCb2xkKQogICAgICAgICAgICAgcmV0dXJuIG1hdGhCb2xk
Q2FwaXRhbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnQ7CiAgICAgfQogICAgIGlm
IChjb2RlUG9pbnQgPT0gZ3JlZWtTbWFsbExldHRlckRpZ2FtbWEpIHsKLSAgICAgICAgaWYgKG1h
dGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpCb2xkKQorICAgICAgICBpZiAobWF0aHZhcmlhbnQg
PT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkJvbGQpCiAgICAgICAgICAgICByZXR1cm4g
bWF0aEJvbGRTbWFsbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnQ7CiAgICAgfQog
ICAgIGlmIChjb2RlUG9pbnQgPT0gbGF0aW5TbWFsbExldHRlckRvdGxlc3NJKSB7Ci0gICAgICAg
IGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6SXRhbGljKQorICAgICAgICBpZiAobWF0
aHZhcmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYykKICAgICAgICAg
ICAgIHJldHVybiBtYXRoSXRhbGljU21hbGxEb3RsZXNzSTsKICAgICAgICAgcmV0dXJuIGNvZGVQ
b2ludDsKICAgICB9CiAgICAgaWYgKGNvZGVQb2ludCA9PSBsYXRpblNtYWxsTGV0dGVyRG90bGVz
c0opIHsKLSAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpJdGFsaWMpCisg
ICAgICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6SXRh
bGljKQogICAgICAgICAgICAgcmV0dXJuIG1hdGhJdGFsaWNTbWFsbERvdGxlc3NKOwogICAgICAg
ICByZXR1cm4gY29kZVBvaW50OwogICAgIH0KQEAgLTM4OSwxOSArMzkwLDE5IEBAIHN0YXRpYyBV
Q2hhcjMyIG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZh
cmlhbnQgbWF0aHZhcmlhCiAgICAgICAgIC8vIEZvciBleGFtcGxlIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGRvdWJsZSBzdHJ1Y2sgbnVtYmVyIHJhbmdlIGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIg
dGhlIGVuZCBvZiB0aGUgYm9sZCBudW1iZXIgcmFuZ2UuCiAgICAgICAgIC8vIG11bHRpcGxpZXIg
cmVwcmVzZW50cyB0aGUgb3JkZXIgb2YgdGhlIHNlcXVlbmNlcyByZWxhdGl2ZSB0byB0aGUgZmly
c3Qgb25lLgogICAgICAgICBzd2l0Y2ggKG1hdGh2YXJpYW50KSB7Ci0gICAgICAgIGNhc2UgTWF0
aE1MU3R5bGU6OkJvbGQ6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6
OkJvbGQ6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMDsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpEb3VibGVTdHJ1Y2s6CisgICAgICAgIGNhc2UgTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazoKICAgICAgICAgICAgIG11bHRp
cGxpZXIgPSAxOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6
OlNhbnNTZXJpZjoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6U2Fu
c1NlcmlmOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDI7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZFNhbnNTZXJpZjoKKyAgICAgICAgY2FzZSBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZFNhbnNTZXJpZjoKICAgICAgICAgICAgIG11
bHRpcGxpZXIgPSAzOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5
bGU6Ok1vbm9zcGFjZToKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6
TW9ub3NwYWNlOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKQEAgLTQxNiwxOSArNDE3LDE5IEBAIHN0YXRpYyBVQ2hhcjMy
IG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZhcmlhbnQg
bWF0aHZhcmlhCiAgICAgfQogICAgIGlmICh2YXJUeXBlID09IEdyZWVraXNoKSB7CiAgICAgICAg
IHN3aXRjaCAobWF0aHZhcmlhbnQpIHsKLSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZDoK
KyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZDoKICAgICAgICAg
ICAgIG11bHRpcGxpZXIgPSAwOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0
aE1MU3R5bGU6Okl0YWxpYzoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFu
dDo6SXRhbGljOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDE7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZEl0YWxpYzoKKyAgICAgICAgY2FzZSBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZEl0YWxpYzoKICAgICAgICAgICAgIG11bHRp
cGxpZXIgPSAyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6
OkJvbGRTYW5zU2VyaWY6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6
OkJvbGRTYW5zU2VyaWY6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMzsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpTYW5zU2VyaWZCb2xkSXRhbGljOgor
ICAgICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpTYW5zU2VyaWZCb2xkSXRh
bGljOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKQEAgLTQ0NiwyMyArNDQ3LDIzIEBAIHN0YXRpYyBVQ2hhcjMyIG1hdGhW
YXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZhcmlhbnQgbWF0aHZh
cmlhCiAgICAgICAgIGNvbnN0IE1hdGhWYXJpYW50TWFwcGluZyogbWFwVGFibGU7CiAgICAgICAg
IHNpemVfdCB0YWJsZUxlbmd0aDsKICAgICAgICAgc3dpdGNoIChtYXRodmFyaWFudCkgewotICAg
ICAgICBjYXNlIE1hdGhNTFN0eWxlOjpJbml0aWFsOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50OjpJbml0aWFsOgogICAgICAgICAgICAgbWFwVGFibGUgPSBhcmFiaWNJ
bml0aWFsTWFwVGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5H
VEgoYXJhYmljSW5pdGlhbE1hcFRhYmxlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hdGhNTFN0eWxlOjpUYWlsZWQ6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0
aFZhcmlhbnQ6OlRhaWxlZDoKICAgICAgICAgICAgIG1hcFRhYmxlID0gYXJhYmljVGFpbGVkTWFw
VGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoYXJhYmlj
VGFpbGVkTWFwVGFibGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1M
U3R5bGU6OlN0cmV0Y2hlZDoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFu
dDo6U3RyZXRjaGVkOgogICAgICAgICAgICAgbWFwVGFibGUgPSBhcmFiaWNTdHJldGNoZWRNYXBU
YWJsZTsKICAgICAgICAgICAgIHRhYmxlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChhcmFiaWNT
dHJldGNoZWRNYXBUYWJsZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXRo
TUxTdHlsZTo6TG9vcGVkOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
OjpMb29wZWQ6CiAgICAgICAgICAgICBtYXBUYWJsZSA9IGFyYWJpY0xvb3BlZE1hcFRhYmxlOwog
ICAgICAgICAgICAgdGFibGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGFyYWJpY0xvb3BlZE1h
cFRhYmxlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpE
b3VibGVTdHJ1Y2s6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkRv
dWJsZVN0cnVjazoKICAgICAgICAgICAgIG1hcFRhYmxlID0gYXJhYmljRG91YmxlTWFwVGFibGU7
CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoYXJhYmljRG91Ymxl
TWFwVGFibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NzIsOSArNDczLDkgQEAgc3RhdGlj
IFVDaGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9pbnQsIE1hdGhNTFN0eWxlOjpNYXRo
VmFyaWFudCBtYXRodmFyaWEKICAgICAgICAgbmV3Q2hhciA9IE1hdGhWYXJpYW50TWFwcGluZ1Nl
YXJjaChjb2RlUG9pbnQsIG1hcFRhYmxlLCB0YWJsZUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gTXVzdCBiZSBMYXRpbgotICAgICAgICBpZiAobWF0aHZhcmlhbnQgPiBNYXRoTUxT
dHlsZTo6TW9ub3NwYWNlKQorICAgICAgICBpZiAobWF0aHZhcmlhbnQgPiBNYXRoTUxFbGVtZW50
OjpNYXRoVmFyaWFudDo6TW9ub3NwYWNlKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsg
Ly8gTGF0aW4gZG9lc24ndCBzdXBwb3J0IHRoZSBBcmFiaWMgbWF0aHZhcmlhbnRzCi0gICAgICAg
IG11bHRpcGxpZXIgPSBtYXRodmFyaWFudCAtIDI7CisgICAgICAgIG11bHRpcGxpZXIgPSBzdGF0
aWNfY2FzdDxpbnQ+KG1hdGh2YXJpYW50KSAtIDI7CiAgICAgICAgIC8vIFRoaXMgaXMgcG9zc2li
bGUgYmVjYXVzZSB0aGUgdmFsdWVzIGZvciBOU19NQVRITUxfTUFUSFZBUklBTlRfKiBhcmUgY2hv
c2VuIHRvIGNvaW5jaWRlIHdpdGggdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBlbmNvZGVkIG1hdGh2
YXJpYW50IGNoYXJhY3RlcnMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZWlyIHVuaWNvZGUgYmxvY2sg
KGxlc3MgYW4gb2Zmc2V0IHRvIGF2b2lkIE5vbmUgYW5kIE5vcm1hbCB2YXJpYW50cykKICAgICAg
ICAgLy8gU2VlIHRoZSBOdW1iZXIgY2FzZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGZvbGxv
d2luZyBjYWxjdWxhdGlvbgogICAgICAgICB0ZW1wQ2hhciA9IGJhc2VDaGFyICsgbWF0aEJvbGRV
cHBlckEgKyBtdWx0aXBsaWVyICogKG1hdGhJdGFsaWNVcHBlckEgLSBtYXRoQm9sZFVwcGVyQSk7
CkBAIC01MjMsOSArNTI0LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZh
cmlhbnRHbHlwaCgpCiAgICAgQXRvbWljU3RyaW5nIHRleHRDb250ZW50ID0gZWxlbWVudCgpLnRl
eHRDb250ZW50KCkuc3RyaXBXaGl0ZVNwYWNlKCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAgICAg
aWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID09IDEpIHsKICAgICAgICAgVUNoYXIzMiBjb2RlUG9p
bnQgPSB0ZXh0Q29udGVudFswXTsKLSAgICAgICAgTWF0aE1MU3R5bGU6Ok1hdGhWYXJpYW50IG1h
dGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsKLSAgICAgICAgaWYgKG1h
dGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpOb25lKQotICAgICAgICAgICAgbWF0aHZhcmlhbnQg
PSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MU3R5
bGU6Okl0YWxpYyA6IE1hdGhNTFN0eWxlOjpOb3JtYWw7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsK
KyAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpO
b25lKQorICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYyA6
IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAgICAgICAgIFVDaGFyMzIgdHJh
bnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9pbnQsIG1hdGh2YXJpYW50KTsK
ICAgICAgICAgaWYgKHRyYW5zZm9ybWVkQ29kZVBvaW50ICE9IGNvZGVQb2ludCkKICAgICAgICAg
ICAgIG1fbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFG
b3JDaGFyYWN0ZXIodHJhbnNmb3JtZWRDb2RlUG9pbnQsICFzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSk7Ci0tIAoyLjguMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284102</attachid>
            <date>2016-07-20 07:10:31 -0700</date>
            <delta_ts>2016-07-21 22:55:43 -0700</delta_ts>
            <desc>Patch bug 159625 + 159623 (for EWS testing)</desc>
            <filename>159625-and-159623.patch</filename>
            <type>text/plain</type>
            <size>61926</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2E2NjFkNi4uMTc5ZDY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTUsNiArMTk5NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50
LmNwcAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKKyAgICBtYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5jcHAKIAogICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3Bw
CiAgICAgcGFnZS9CYXJQcm9wLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzZDhiMTMuLjY4NzY0MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTYtMDctMjAgIEZyZWRlcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAgIE1vdmUgcGFyc2luZyBvZiBkaXNwbGF5LCBkaXNw
bGF5c3R5bGUgYW5kIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgaW50byBNYXRoTUwgZWxlbWVudCBj
bGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVs
ZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUpOiBNb3ZlIGhlbHBlciBmdW5jdGlvbiB0
byBwYXJzZSB0aGUKKyAgICAgICAgbWF0aHZhcmlhbnQgYXR0cmlidXRlLgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlKTogSGVscGVyIGZ1
bmN0aW9uIHRvIHNldCB0aGUgZGlzcGxheXN0eWxlCisgICAgICAgIHZhbHVlIGZyb20gdGhlIGF0
dHJpYnV0ZSBzcGVjaWZpZWQgb24gdGhlIE1hdGhNTCBlbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQpOiBIZWxwZXIgZnVuY3Rp
b24gdG8gc2V0IHRoZSBtYXRodmFyaWFudAorICAgICAgICB2YWx1ZSBmcm9tIHRoZSBhdHRyaWJ1
dGUgc3BlY2lmaWVkIG9uIHRoZSBNYXRoTUwgZWxlbWVudC4KKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MRWxlbWVudC5oOiBNb3ZlIHRoZSBlbnVtIGZvciBtYXRodmFyaWFudCB2YWx1ZXMgYW5kIGRl
Y2xhcmUgbmV3IG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjphY2Nl
cHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKTogSW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBh
Y2NlcHRzCisgICAgICAgIGRpc3BsYXlzdHlsZSBhdHRyaWJ1dGUgKGZhbHNlIGZvciBtb3N0IG9m
IHRoZW0pLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6YWNjZXB0c01hdGhWYXJp
YW50QXR0cmlidXRlKTogSW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBhY2NlcHRzCisgICAg
ICAgIG1hdGh2YXJpYW50IGF0dHJpYnV0ZSAoZmFsc2UgZm9yIG1vc3Qgb2YgdGhlbSkuCisgICAg
ICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6YWNjZXB0c0Rpc3BsYXlTdHls
ZUF0dHJpYnV0ZSk6IEFkZCBtc3R5bGUgYW5kIG10YWJsZQorICAgICAgICB0byB0aGUgbGlzdCBv
ZiBlbGVtZW50cyBhY2NlcHRpbmcgdGhlIGRpc3BsYXlzdHlsZSBhdHRyaWJ1dGUuCisgICAgICAg
IChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjphY2NlcHRzTWF0aFZhcmlh
bnRBdHRyaWJ1dGUpOiBBZGQgbXN0eWxlIHRvIHRoZSBsaXN0CisgICAgICAgIG9mIGVsZW1lbnRz
IGFjY2VwdGluZyB0aGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBNYXJrIGRpc3Bs
YXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQKKyAgICAgICAgZGlydHkgaWYgbmVjZXNzYXJ5LiBBbHNv
IHVzZSB0aGUgbmV3IGFjY2VwdHMqQXR0cmlidXRlIGZ1bmN0aW9uLgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg6IERlY2xhcmUgb3ZlcnJpZGRlbiBhY2Nl
cHRzKkF0dHJpYnV0ZSBtZW1iZXJzLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Z2V0U3BlY2lmaWVk
RGlzcGxheVN0eWxlKTogT3ZlcnJpZGUgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZQorICAg
ICAgICBzbyB0aGF0IHRoZSBkaXNwbGF5IGF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQgdG8gc2V0IHRo
ZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBkaXNwbGF5c3R5bGUKKyAgICAgICAgYXR0cmlidXRlIGlz
IGFic2VudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6IE1hcmsgZGlzcGxheXN0eWxlIGFuZCBtYXRodmFyaWFudCBkaXJ0eSBpZgorICAgICAg
ICBuZWNlc3NhcnkuIFdlIGRpcmVjdGx5IE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlIHRv
IGF2b2lkIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5oOiBBZGQgdGhlIG1hdGggdGFnIHRvIHRoZSBsaXN0IG9mIGVsZW1lbnRzIGFjY2VwdGluZyB0
aGUKKyAgICAgICAgZGlzcGxheXN0eWxlIGFuZCBtYXRodmFyaWFudCBhdHRyaWJ1dGVzLiBEZWNs
YXJlIG92ZXJyaWRkZW4gZ2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlLgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBNYXJrIG1hdGh2YXJpYW50IGFzIGRpcnR5LgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oOiBBZGQgdG9rZW4gZWxlbWVudHMgdG8gdGhl
IGxpc3Qgb2YgZWxlbWVudHMgYWNjZXB0aW5nIHRoZQorICAgICAgICBtYXRodmFyaWFudCBhdHRy
aWJ1dGUuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6dXBkYXRlU3R5bGVJZk5lZWRlZCk6IFVzZSB0aGUg
bmV3IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IGVudW0uCisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKTogIFdlIG5vIGxvbmdlciBwYXJzZSB0aGUg
ZGlzcGxheSB2YWx1ZSB0bworICAgICAgICBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHZhbHVlIG9u
IHRoZSBtYXRoIHRhZywgYmVjYXVzZSB0aGlzIGlzIGhhbmRsZWQgaW4KKyAgICAgICAgZ2V0U3Bl
Y2lmaWVkRGlzcGxheVN0eWxlLiBJbiBnZW5lcmFsLCB3ZSBhbHNvIGp1c3QgY2FsbCBnZXRTcGVj
aWZpZWREaXNwbGF5U3R5bGUgYW5kCisgICAgICAgIGdldFNwZWNpZmllZE1hdGhWYXJpYW50IG9u
IHRoZSBNYXRoTUwgZWxlbWVudHMgaW5zdGVhZCBvZiBwYXJzaW5nIHRoZSBkaXNwbGF5c3R5bGUg
YW5kCisgICAgICAgIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1hdGhNTFN0eWxlOjpwYXJzZU1hdGhWYXJpYW50KTogRGVsZXRlZC4gVGhpcyBpcyBtb3Zl
ZCBpbnRvIE1hdGhNTEVsZW1lbnQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5oOiBVc2UgdGhlIG5ldyBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBlbnVtLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Om1hdGhWYXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisyMDE2
LTA3LTIwICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3Zl
IHBhcnNpbmcgb2YgYWNjZW50dW5kZXIgYW5kIGFjY2VudCBhdHRyaWJ1dGVzIGZyb20gcmVuZGVy
ZXIgdG8gZWxlbWVudCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk2MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBpbnRyb2R1Y2UgYSBuZXcgTWF0aE1MVW5kZXJPdmVyRWxlbWVudCB0
aGF0IGlzIHVzZWQgZm9yIGVsZW1lbnRzIG11bmRlciwgbW92ZXIgYW5kCisgICAgICAgIG11bmRl
cm92ZXIgaW4gb3JkZXIgdG8gY3JlYXRlIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBhbmQgcGFyc2Ug
YW5kIGV4cG9zZSB0aGUgdmFsdWVzIG9mIHRoZQorICAgICAgICBhY2NlbnQgYW5kIGFjY2VudHVu
ZGVyIGF0dHJpYnV0ZXMuIFRoaXMgaXMgb25lIG1vcmUgc3RlcCB0b3dhcmQgbW92aW5nIE1hdGhN
TCBhdHRyaWJ1dGUKKyAgICAgICAgcGFyc2luZyB0byB0aGUgRE9NIChidWcgMTU2NTM2KS4gV2Ug
YWxzbyBkbyBtaW5vciBjbGVhbi11cCBmb3IgdGhpcyBhbmQgcHJldmlvdXMgcmVuZGVyZXIKKyAg
ICAgICAgY2xhc3NlcyB0aGF0IG5vIGxvbmdlciBkbyBhdHRyaWJ1dGUgcGFyc2luZzogdGhlIE1h
dGhNTE5hbWVzIG5hbWVzcGFjZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5CisgICAgICAgIGFuZCBj
b25zdHJ1Y3RvcnMgY2FuIHRha2UgYSBtb3JlIGFjY3VyYXRlIGVsZW1lbnQgdHlwZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0LgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBNYXRoTUxVbmRlck92ZXJFbGVtZW50IGZpbGVz
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisg
ICAgICAgICogbWF0aG1sL01hdGhNTEFsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogbWF0
aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6
Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZSk6IEFkZCBwYXJzaW5nIG9mIGJvb2xlYW4gYXR0cmlidXRl
cy4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBOZXcgdHlwZSBhbmQgaGVscGVy
IGZ1bmN0aW9ucyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzLgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFJlbW92ZSBoYW5k
bGluZyBvZgorICAgICAgICB1bmRlci9vdmVyL3VuZGVyb3ZlciBlbGVtZW50cy4KKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MU2NyaXB0c0VsZW1lbnQ6Ok1hdGhNTFNjcmlwdHNFbGVtZW50KTogUmVtb3ZlIGlubGluZSBr
ZXl3b3JkIHRvIGF2b2lkIGxpbmsKKyAgICAgICAgZXJyb3JzIG5vdyB0aGF0IE1hdGhNTFVuZGVy
T3ZlckVsZW1lbnQgb3ZlcnJpZGVzIHRoYXQgY2xhc3MuCisgICAgICAgICogbWF0aG1sL01hdGhN
TFNjcmlwdHNFbGVtZW50Lmg6IEFsbG93IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQgdG8gb3ZlcnJp
ZGUgdGhpcyBjbGFzcy4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpNYXRoTUxVbmRl
ck92ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2Nl
bnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gYWNjZXNzIHRoZSBhY2NlbnQgdmFsdWUuCisgICAgICAg
IChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRVbmRlcik6IEhlbHBlciBm
dW5jdGlvbiB0byBhY2Nlc3MgdGhlIGFjY2VudHVuZGVyIHZhbHVlLgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBNYWtlIGFjY2VudCBh
bmQgYWNjZW50dW5kZXIgZGlydHkuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOiBDcmVhdGUgUmVuZGVyTWF0aE1MVW5kZXJP
dmVyCisgICAgICAgICogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDoKKyAgICAgICAg
KiBtYXRobWwvbWF0aHRhZ3MuaW46IE1hcCB1bmRlci9vdmVyL3VuZGVyb3ZlciB0byBNYXRoTUxV
bmRlck92ZXJFbGVtZW50LgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwOiBSZW1vdmUgTWF0aE1MTmFtZXMgYW5kIG1ha2UgdGhlIGNvbnN0cnVjdG9y
CisgICAgICAgIHRha2UgYSBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHA6IFJlbW92ZSBNYXRoTUxOYW1lcyBh
bmQgbWFrZSB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgdGFrZSBhIE1hdGhNTFBhZGRlZEVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxQYWRkZWQ6OlJlbmRlck1hdGhNTFBh
ZGRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOiBSZW1v
dmUgTWF0aE1MTmFtZXMgYW5kIG1ha2UgdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIHRha2UgYSBN
YXRoTUxTY3JpcHRzRWxlbWVudC4gQWxzbyByZW5hbWUgc2NyaXB0c0VsZW1lbnQoKSB0byBlbGVt
ZW50KCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRo
TUxTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OmVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6Z2V0U2NyaXB0TWV0
cmljc0FuZExheW91dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNj
cmlwdHM6OnNjcmlwdHNFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6IFJlbW92ZSBNYXRoTUxOYW1lcyBhbmQgbWFrZSB0aGUg
Y29uc3RydWN0b3IKKyAgICAgICAgdGFrZSBhIFJlbmRlck1hdGhNTFVuZGVyT3Zlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6ZWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6Omhhc0FjY2VudCk6IFVzZSB0
aGUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZW50IGFuZCBhY2NlbnR1bmRlci4KKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgorCiAyMDE2LTA3LTE5
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJ
XSBBZGQgYSBKUyBidWlsdGluIHRvIGltcGxlbWVudCBodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jY29uY2VwdC1oZWFkZXJzLWZpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjkzZDMzLi4xYWVlMTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
OTA5LDYgKzY5MDksOCBAQAogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICov
OyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OworCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjI2
RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi87IH07CisJCUZBNjU0QTZDMTEwOEFC
RUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjI2RjEgLyog
TWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlDMUVCMDBEOTk5
REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5j
cHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNjEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi87IH07CkBAIC0xNTA4
OCw2ICsxNTA5MCw4IEBACiAJCUZBNjU0QTY3MTEwOEFCRTIwMDI2MTVFMCAvKiBtYXRoYXR0cnMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aGF0dHJzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2QTExMDhBQkVE
MDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkE2NTRBNjkxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBNjU0QTZBMTEwOEFCRUQw
MDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0
aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVFMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI0OTEyLDYgKzI0OTE2LDggQEAKIAkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0
aE1MU3BhY2VFbGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRleHRFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MVGV4dEVsZW1lbnQuaCAqLywKKwkJCQlGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyog
TWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8sCisJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYy
NkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVC
MDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hdGhtbDsKQEAg
LTI3NDUxLDYgKzI3NDU3LDcgQEAKIAkJCQk0MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0
aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGQTY1QTZDMTEwOEFCRUQwMDI2MTVFMCAv
KiBNYXRoTUxTcGFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE2
NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzcwRUY4NkQ0NzAw
OUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTI4NCw2ICszMTI5MSw3IEBACiAJCQkJRkVENDgzOTBDRUQ2NkMzMjU1RjcyQzU5IC8qIE1hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEZBNjVBNkIxMTA4QUJFRDAw
MjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1
NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2RTkxMkRBMjVFODEyQUY4MEFDIC8qIE1h
dGhPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyQjBGNDIzQTczMDA4RjIw
RkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDlFOTExQzYwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxB
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQWxsSW5PbmUuY3BwCmlu
ZGV4IDczNTMzMGMuLmJhYmY4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFsbElu
T25lLmNwcApAQCAtMzUsNCArMzUsNSBAQAogI2luY2x1ZGUgIk1hdGhNTFNjcmlwdHNFbGVtZW50
LmNwcCIKICNpbmNsdWRlICJNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCIKICNpbmNsdWRlICJNYXRo
TUxUZXh0RWxlbWVudC5jcHAiCisjaW5jbHVkZSAiTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCBkYTk3ZjA3Li5j
MmVlNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC0yLDYg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dz
a2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRnJhbsOn
b2lzIFNhdXNzZXQgKHNhdXNzZXRAZ21haWwuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MjUsNiArNTI2LDg1IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYg
TWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hCiAgICAg
cmV0dXJuIGxlbmd0aDsKIH0KIAorY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBN
YXRoTUxFbGVtZW50OjpjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIEJvb2xlYW5BdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoYXR0cmlidXRl
LmRpcnR5KSB7CisgICAgICAgIC8vIEluIE1hdGhNTCwgYXR0cmlidXRlIHZhbHVlcyBhcmUgY2Fz
ZS1zZW5zaXRpdmUuCisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUpOworICAgICAgICBpZiAodmFsdWUgPT0gInRy
dWUiKQorICAgICAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpUcnVlOwor
ICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQorICAgICAgICAgICAgYXR0cmlidXRl
LnZhbHVlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
YXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpEZWZhdWx0OworICAgICAgICBhdHRyaWJ1
dGUuZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZTsKK30K
KworTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgTWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoVmFy
aWFudEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQoreworICAg
IC8vIFRoZSBtYXRodmFyaWFudCBhdHRyaWJ1dGUgdmFsdWVzIGlzIGNhc2Utc2Vuc2l0aXZlLgor
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAibm9ybWFsIikKKyAgICAgICAgcmV0dXJuIE1hdGhW
YXJpYW50OjpOb3JtYWw7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkIikKKyAgICAg
ICAgcmV0dXJuIE1hdGhWYXJpYW50OjpCb2xkOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
aXRhbGljIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpJdGFsaWM7CisgICAgaWYgKGF0
dHJpYnV0ZVZhbHVlID09ICJib2xkLWl0YWxpYyIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFu
dDo6Qm9sZEl0YWxpYzsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImRvdWJsZS1zdHJ1Y2si
KQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazsKKyAgICBpZiAoYXR0
cmlidXRlVmFsdWUgPT0gImJvbGQtZnJha3R1ciIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFu
dDo6Qm9sZEZyYWt0dXI7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzY3JpcHQiKQorICAg
ICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OlNjcmlwdDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUg
PT0gImJvbGQtc2NyaXB0IikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpCb2xkU2NyaXB0
OworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZnJha3R1ciIpCisgICAgICAgIHJldHVybiBN
YXRoVmFyaWFudDo6RnJha3R1cjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2Vy
aWYiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OlNhbnNTZXJpZjsKKyAgICBpZiAoYXR0
cmlidXRlVmFsdWUgPT0gImJvbGQtc2Fucy1zZXJpZiIpCisgICAgICAgIHJldHVybiBNYXRoVmFy
aWFudDo6Qm9sZFNhbnNTZXJpZjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2Vy
aWYtaXRhbGljIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpTYW5zU2VyaWZJdGFsaWM7
CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzYW5zLXNlcmlmLWJvbGQtaXRhbGljIikKKyAg
ICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpTYW5zU2VyaWZCb2xkSXRhbGljOworICAgIGlmIChh
dHRyaWJ1dGVWYWx1ZSA9PSAibW9ub3NwYWNlIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50
OjpNb25vc3BhY2U7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJpbml0aWFsIikKKyAgICAg
ICAgcmV0dXJuIE1hdGhWYXJpYW50OjpJbml0aWFsOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9
PSAidGFpbGVkIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpUYWlsZWQ7CisgICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJsb29wZWQiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6
Okxvb3BlZDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInN0cmV0Y2hlZCIpCisgICAgICAg
IHJldHVybiBNYXRoVmFyaWFudDo6U3RyZXRjaGVkOworICAgIHJldHVybiBNYXRoVmFyaWFudDo6
Tm9uZTsKK30KKwordm9pZCBNYXRoTUxFbGVtZW50OjpnZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUo
Ym9vbCYgZGlzcGxheVN0eWxlKQoreworICAgIGlmICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJp
YnV0ZSgpKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVh
blZhbHVlJiBzcGVjaWZpZWREaXNwbGF5U3R5bGUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRp
c3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0eWxlKTsKKyAgICBpZiAoc3BlY2lmaWVkRGlzcGxh
eVN0eWxlICE9IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZTo6RGVmYXVsdCkKKyAgICAgICAg
ZGlzcGxheVN0eWxlID0gc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IE1hdGhNTEVsZW1lbnQ6OkJv
b2xlYW5WYWx1ZTo6VHJ1ZTsKK30KKwordm9pZCBNYXRoTUxFbGVtZW50OjpnZXRTcGVjaWZpZWRN
YXRoVmFyaWFudChNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCYgbWF0aFZhcmlhbnQpCit7Cisg
ICAgaWYgKCFhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChtX21hdGhWYXJpYW50LmRpcnR5KSB7CisgICAgICAgIG1fbWF0aFZhcmlhbnQudmFs
dWUgPSBwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7CisgICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSBm
YWxzZTsKKyAgICB9CisgICAgaWYgKG1fbWF0aFZhcmlhbnQudmFsdWUgIT0gTWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ6Ok5vbmUpCisgICAgICAgIG1hdGhWYXJpYW50ID0gbV9tYXRoVmFyaWFu
dC52YWx1ZTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDRjOTYwMGEuLmQ3YjljNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEZyYW7Dp29pcyBTYXVzc2V0IChzYXVzc2V0QGdt
YWlsLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNiArNjcsNDQg
QEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExlbmd0aChj
b25zdCBTdHJpbmcmKTsKIAorICAgIGVudW0gY2xhc3MgQm9vbGVhblZhbHVlIHsgVHJ1ZSwgRmFs
c2UsIERlZmF1bHQgfTsKKyAgICBzdHJ1Y3QgQm9vbGVhbkF0dHJpYnV0ZSB7CisgICAgICAgIEJv
b2xlYW5WYWx1ZSB2YWx1ZSB7IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCB9OworICAgICAgICBib29s
IGRpcnR5IHsgdHJ1ZSB9OworICAgIH07CisKKyAgICAvLyBUaGVzZSBhcmUgdGhlIG1hdGh2YXJp
YW50IHZhbHVlcyBmcm9tIHRoZSBNYXRoTUwgcmVjb21tZW5kYXRpb24uCisgICAgLy8gVGhlIHNw
ZWNpYWwgdmFsdWUgbm9uZSBtZWFucyB0aGF0IG5vIGV4cGxpY2l0IG1hdGh2YXJpYW50IHZhbHVl
IGhhcyBiZWVuIHNwZWNpZmllZC4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIG51bWVyYWwgdmFsdWVz
IGFyZSBpbXBvcnRhbnQgZm9yIHRoZSBjb21wdXRhdGlvbiBwZXJmb3JtZWQgaW4gdGhlIG1hdGhW
YXJpYW50IGZ1bmN0aW9uIG9mIFJlbmRlck1hdGhNTFRva2VuLCBkbyBub3QgY2hhbmdlIHRoZW0h
CisgICAgZW51bSBjbGFzcyBNYXRoVmFyaWFudCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAg
ICBOb3JtYWwgPSAxLAorICAgICAgICBCb2xkID0gMiwKKyAgICAgICAgSXRhbGljID0gMywKKyAg
ICAgICAgQm9sZEl0YWxpYyA9IDQsCisgICAgICAgIFNjcmlwdCA9IDUsCisgICAgICAgIEJvbGRT
Y3JpcHQgPSA2LAorICAgICAgICBGcmFrdHVyID0gNywKKyAgICAgICAgRG91YmxlU3RydWNrID0g
OCwKKyAgICAgICAgQm9sZEZyYWt0dXIgPSA5LAorICAgICAgICBTYW5zU2VyaWYgPSAxMCwKKyAg
ICAgICAgQm9sZFNhbnNTZXJpZiA9IDExLAorICAgICAgICBTYW5zU2VyaWZJdGFsaWMgPSAxMiwK
KyAgICAgICAgU2Fuc1NlcmlmQm9sZEl0YWxpYyA9IDEzLAorICAgICAgICBNb25vc3BhY2UgPSAx
NCwKKyAgICAgICAgSW5pdGlhbCA9IDE1LAorICAgICAgICBUYWlsZWQgPSAxNiwKKyAgICAgICAg
TG9vcGVkID0gMTcsCisgICAgICAgIFN0cmV0Y2hlZCA9IDE4CisgICAgfTsKKyAgICBzdHJ1Y3Qg
TWF0aFZhcmlhbnRBdHRyaWJ1dGUgeworICAgICAgICBNYXRoVmFyaWFudCB2YWx1ZSB7IE1hdGhW
YXJpYW50OjpOb25lIH07CisgICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07CisgICAgfTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUoYm9vbCYpOworICAgIHZv
aWQgZ2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQoTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQmKTsK
KwogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmKTsKIApAQCAtODMsMTEgKzEyMiwxOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBM
ZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3RoJik7
CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBCb29sZWFuQXR0cmlidXRlJik7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWNj
ZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICBCb29sZWFuQXR0cmlidXRlIG1fZGlzcGxheVN0eWxlOworICAgIE1hdGhWYXJpYW50QXR0
cmlidXRlIG1fbWF0aFZhcmlhbnQ7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNlbGVjdGVkQ2hpbGQoKSB7IH0KICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTnVtYmVyQW5kVW5p
dChjb25zdCBTdHJpbmdWaWV3Jik7CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU5hbWVkU3BhY2Uo
Y29uc3QgU3RyaW5nVmlldyYpOworICAgIHN0YXRpYyBNYXRoVmFyaWFudCBwYXJzZU1hdGhWYXJp
YW50QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUpOwogCiAgICAg
Ym9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAppbmRleCAzNjIxOWQyLi43YjQyYzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4
IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxNZW5jbG9zZS5oIgog
I2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb3cu
aCIKLSNpbmNsdWRlICJSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02NSw4ICs2NSw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuCiB7CiAgICAg
aWYgKGhhc1RhZ05hbWUoYW5ub3RhdGlvbl94bWxUYWcpIHx8IGhhc1RhZ05hbWUobWVycm9yVGFn
KSB8fCBoYXNUYWdOYW1lKG1waGFudG9tVGFnKSB8fCBoYXNUYWdOYW1lKG1yb3dUYWcpIHx8IGhh
c1RhZ05hbWUobXN0eWxlVGFnKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ck1hdGhNTFJvdz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBpZiAoaGFzVGFnTmFtZSht
b3ZlclRhZykgfHwgaGFzVGFnTmFtZShtdW5kZXJUYWcpIHx8IGhhc1RhZ05hbWUobXVuZGVyb3Zl
clRhZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxVbmRlck92
ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUobXNxcnRUYWcp
IHx8IGhhc1RhZ05hbWUobXJvb3RUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTWF0aE1MUm9vdD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFn
TmFtZShtZmVuY2VkVGFnKSkKQEAgLTc3LDEwICs3NSwyNCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbgogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxCbG9jaz4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KIAorYm9vbCBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
OjphY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkKK3sKKyAgICByZXR1cm4gaGFzVGFnTmFt
ZShtc3R5bGVUYWcpIHx8IGhhc1RhZ05hbWUobXRhYmxlVGFnKTsKK30KKworYm9vbCBNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50OjphY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKQorewor
ICAgIHJldHVybiBoYXNUYWdOYW1lKG1zdHlsZVRhZyk7Cit9CisKIHZvaWQgTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBib29sIGRpc3BsYXlTdHlsZUF0
dHJpYnV0ZSA9IChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgJiYgKGhhc1RhZ05hbWUobXN0eWxl
VGFnKSB8fCBoYXNUYWdOYW1lKG10YWJsZVRhZykpKTsKLSAgICBib29sIG1hdGhWYXJpYW50QXR0
cmlidXRlID0gKG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyICYmIChoYXNUYWdOYW1lKG1hdGhUYWcp
IHx8IGhhc1RhZ05hbWUobXN0eWxlVGFnKSkpOworICAgIGJvb2wgZGlzcGxheVN0eWxlQXR0cmli
dXRlID0gbmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyICYmIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRy
aWJ1dGUoKTsKKyAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBtYXRodmFy
aWFudEF0dHIgJiYgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCk7CisgICAgaWYgKGRpc3Bs
YXlTdHlsZUF0dHJpYnV0ZSkKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUuZGlydHkgPSB0cnVlOwor
ICAgIGlmIChtYXRoVmFyaWFudEF0dHJpYnV0ZSkKKyAgICAgICAgbV9tYXRoVmFyaWFudC5kaXJ0
eSA9IHRydWU7CiAgICAgaWYgKChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUgfHwgbWF0aFZhcmlhbnRB
dHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0
aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAppbmRleCBkMjZhYjVmLi5iZDhlZGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEFs
ZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDAsNiArNDEsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAor
ICAgIGJvb2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIG92ZXJyaWRlOworICAgIGJv
b2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGlz
UHJlc2VudGF0aW9uTWF0aE1MKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKaW5kZXggZjM2ZGJlYS4uMGFi
MTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCkBA
IC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChh
bGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDEy
ICs1NCwzMyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTE1hdGg+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKK3ZvaWQg
TWF0aE1MTWF0aEVsZW1lbnQ6OmdldFNwZWNpZmllZERpc3BsYXlTdHlsZShib29sJiBkaXNwbGF5
U3R5bGUpCit7CisgICAgY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBzcGVjaWZp
ZWREaXNwbGF5U3R5bGUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRpc3BsYXlzdHlsZUF0dHIs
IG1fZGlzcGxheVN0eWxlKTsKKyAgICBpZiAoc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IEJvb2xl
YW5WYWx1ZTo6RGVmYXVsdCkgeworICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5c3R5bGUg
dmFsdWUgb2YgdGhlIDxtYXRoPiBkZXBlbmRzIG9uIHRoZSBkaXNwbGF5IGF0dHJpYnV0ZSwgc28g
d2UgcGFyc2UgaXQgaGVyZS4KKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlzcGxheUF0dHIpOworICAgICAgICBpZiAo
dmFsdWUgPT0gImJsb2NrIikKKyAgICAgICAgICAgIG1fZGlzcGxheVN0eWxlLnZhbHVlID0gQm9v
bGVhblZhbHVlOjpUcnVlOworICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiaW5saW5lIikKKyAg
ICAgICAgICAgIG1fZGlzcGxheVN0eWxlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKKyAg
ICB9CisgICAgaWYgKG1fZGlzcGxheVN0eWxlLnZhbHVlICE9IEJvb2xlYW5WYWx1ZTo6RGVmYXVs
dCkKKyAgICAgICAgZGlzcGxheVN0eWxlID0gbV9kaXNwbGF5U3R5bGUudmFsdWUgPT0gQm9vbGVh
blZhbHVlOjpUcnVlOworfQorCiB2b2lkIE1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewotICAgIGlmICgobmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyIHx8IG5hbWUgPT0gZGlzcGxheUF0
dHIgfHwgbmFtZSA9PSBtYXRodmFyaWFudEF0dHIpICYmIHJlbmRlcmVyKCkpCisgICAgYm9vbCBk
aXNwbGF5U3R5bGVBdHRyaWJ1dGUgPSAobmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyIHx8IG5hbWUg
PT0gZGlzcGxheUF0dHIpOworICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBuYW1lID09
IG1hdGh2YXJpYW50QXR0cjsKKyAgICBpZiAoZGlzcGxheVN0eWxlQXR0cmlidXRlKQorICAgICAg
ICBtX2Rpc3BsYXlTdHlsZS5kaXJ0eSA9IHRydWU7CisgICAgaWYgKG1hdGhWYXJpYW50QXR0cmli
dXRlKQorICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5ID0gdHJ1ZTsKKyAgICBpZiAoKGRpc3Bs
YXlTdHlsZUF0dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkK
ICAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7
CiAKLSAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CisgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIE1hdGhNTE1hdGhFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAppbmRleCA3MWUxMjJkLi42OGI5
MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaApAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBt
aWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MSwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVy
ZXJzKCkgZmluYWw7CiAKKyAgICBib29sIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1
dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBnZXRTcGVjaWZpZWREaXNwbGF5
U3R5bGUoYm9vbCYpIGZpbmFsOworCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBmaW5hbDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
Y3JpcHRzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuY3BwCmluZGV4IGUwYmY0ODYuLjVlYWRhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotaW5saW5lIE1h
dGhNTFNjcmlwdHNFbGVtZW50OjpNYXRoTUxTY3JpcHRzRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitNYXRoTUxTY3JpcHRzRWxlbWVudDo6
TWF0aE1MU2NyaXB0c0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgIDogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTY3JpcHRzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNF
bGVtZW50LmgKaW5kZXggNzVlMTdjOS4uNTc0N2U3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKQEAgLTMwLDE2ICszMCwxOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1hdGhNTFNjcmlwdHNFbGVtZW50IGZpbmFsIDogcHVibGlj
IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQgeworY2xhc3MgTWF0aE1MU2NyaXB0c0VsZW1l
bnQgOiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxNYXRoTUxTY3JpcHRzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAgICAgY29uc3QgTGVuZ3RoJiBzdWJzY3JpcHRTaGlm
dCgpOwogICAgIGNvbnN0IExlbmd0aCYgc3VwZXJzY3JpcHRTaGlmdCgpOwogCi1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIE1hdGhNTFNjcmlwdHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBmaW5hbDsKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAg
TGVuZ3RoIG1fc3Vic2NyaXB0U2hpZnQ7CiAgICAgTGVuZ3RoIG1fc3VwZXJzY3JpcHRTaGlmdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCmluZGV4IDBlMzg1
YjMuLjQ3ODkzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50
LmNwcApAQCAtNzEsOCArNzEsMTEgQEAgdm9pZCBNYXRoTUxUZXh0RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChuYW1lID09IG1hdGh2YXJpYW50QXR0ciAmJiByZW5k
ZXJlcigpKQotICAgICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5k
ZXJlcigpKTsKKyAgICBpZiAobmFtZSA9PSBtYXRodmFyaWFudEF0dHIpIHsKKyAgICAgICAgbV9t
YXRoVmFyaWFudC5kaXJ0eSA9IHRydWU7CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAg
ICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7Cisg
ICAgfQogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAppbmRleCAwZWQxZjY0
Li45YmE5NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaApA
QCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAo
YWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hdGhNTFRleHRFbGVtZW50IGZp
bmFsIDogcHVibGljIE1hdGhNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0
aE1MVGV4dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOworICAgIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIE1hdGhNTFRleHRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWYxOTNlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1B
VEhNTCkKKyNpbmNsdWRlICJNYXRoTUxVbmRlck92ZXJFbGVtZW50LmgiCisKKyNpbmNsdWRlICJS
ZW5kZXJNYXRoTUxVbmRlck92ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK2lubGluZSBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpN
YXRoTUxVbmRlck92ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTFNjcmlwdHNFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQoreworfQorCitSZWY8TWF0aE1MVW5kZXJPdmVyRWxlbWVudD4gTWF0aE1MVW5kZXJPdmVy
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxVbmRlck92ZXJFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xl
YW5WYWx1ZSYgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6YWNjZW50KCkKK3sKKyAgICByZXR1cm4g
Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShhY2NlbnRBdHRyLCBtX2FjY2VudCk7Cit9CisKK2NvbnN0
IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6YWNj
ZW50VW5kZXIoKQoreworICAgIHJldHVybiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGFjY2VudHVu
ZGVyQXR0ciwgbV9hY2NlbnRVbmRlcik7Cit9CisKK3ZvaWQgTWF0aE1MVW5kZXJPdmVyRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRyKQorICAgICAgICBt
X2FjY2VudC5kaXJ0eSA9IHRydWU7CisgICAgZWxzZSBpZiAobmFtZSA9PSBhY2NlbnR1bmRlckF0
dHIpCisgICAgICAgIG1fYWNjZW50VW5kZXIuZGlydHkgPSB0cnVlOworCisgICAgTWF0aE1MRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworfQorCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCit7CisgICAgQVNT
RVJUKGhhc1RhZ05hbWUobXVuZGVyVGFnKSB8fCBoYXNUYWdOYW1lKG1vdmVyVGFnKSB8fCBoYXNU
YWdOYW1lKG11bmRlcm92ZXJUYWcpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
TWF0aE1MVW5kZXJPdmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2Mzc0
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92
ZXJFbGVtZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTFNjcmlwdHNF
bGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWF0aE1MVW5kZXJPdmVy
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxTY3JpcHRzRWxlbWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxNYXRoTUxVbmRlck92ZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBjb25zdCBCb29sZWFuVmFsdWUmIGFj
Y2VudCgpOworICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgYWNjZW50VW5kZXIoKTsKKworcHJpdmF0
ZToKKyAgICBNYXRoTUxVbmRlck92ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Jik7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBmaW5hbDsKKworICAgIEJvb2xlYW5BdHRyaWJ1dGUgbV9hY2NlbnQ7Cisg
ICAgQm9vbGVhbkF0dHJpYnV0ZSBtX2FjY2VudFVuZGVyOworfTsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgppbmRleCBkOTkyY2U0My4u
ZmQ4NjJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAtMTUsOSArMTUsOSBAQCBt
cGFkZGVkIGludGVyZmFjZU5hbWU9TWF0aE1MUGFkZGVkRWxlbWVudAogbXBoYW50b20gaW50ZXJm
YWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm93IGludGVyZmFjZU5hbWU9
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAogbXN0eWxlIGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudAotbW92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50Ci1tdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50Ci1tdW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudAorbW92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxVbmRlck92ZXJFbGVtZW50CittdW5k
ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxVbmRlck92ZXJFbGVtZW50CittdW5kZXJvdmVyIGludGVy
ZmFjZU5hbWU9TWF0aE1MVW5kZXJPdmVyRWxlbWVudAogbXNxcnQgaW50ZXJmYWNlTmFtZT1NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm9vdCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQKIG1pIGludGVyZmFjZU5hbWU9TWF0aE1MVGV4dEVsZW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXgg
MjcxNmMxYi4uYTg5ZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9NYXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9NYXRoTUxTdHlsZS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJNYXRoTUxTdHls
ZS5oIgogCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUg
Ik1hdGhNTFRleHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKICNp
bmNsdWRlICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE1h
dGguaCIKQEAgLTgxLDcgKzgzLDcgQEAgUmVuZGVyT2JqZWN0KiBNYXRoTUxTdHlsZTo6Z2V0TWF0
aE1MUGFyZW50Tm9kZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBwYXJlbnRS
ZW5kZXJlcjsKIH0KIAotdm9pZCBNYXRoTUxTdHlsZTo6dXBkYXRlU3R5bGVJZk5lZWRlZChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIG9sZERpc3BsYXlTdHlsZSwgTWF0aFZhcmlhbnQgb2xk
TWF0aFZhcmlhbnQpCit2b2lkIE1hdGhNTFN0eWxlOjp1cGRhdGVTdHlsZUlmTmVlZGVkKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGJvb2wgb2xkRGlzcGxheVN0eWxlLCBNYXRoTUxFbGVtZW50OjpN
YXRoVmFyaWFudCBvbGRNYXRoVmFyaWFudCkKIHsKICAgICBpZiAob2xkRGlzcGxheVN0eWxlICE9
IG1fZGlzcGxheVN0eWxlKSB7CiAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKQEAgLTk4LDU5ICsxMDAsMTggQEAgdm9pZCBNYXRoTUxTdHlsZTo6
dXBkYXRlU3R5bGVJZk5lZWRlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIG9sZERpc3Bs
YXlTdHkKICAgICB9CiB9CiAKLU1hdGhNTFN0eWxlOjpNYXRoVmFyaWFudCBNYXRoTUxTdHlsZTo6
cGFyc2VNYXRoVmFyaWFudChjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQotewot
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAibm9ybWFsIikKLSAgICAgICAgcmV0dXJuIE5vcm1h
bDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJvbGQiKQotICAgICAgICByZXR1cm4gQm9s
ZDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gIml0YWxpYyIpCi0gICAgICAgIHJldHVybiBJ
dGFsaWM7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLWl0YWxpYyIpCi0gICAgICAg
IHJldHVybiBCb2xkSXRhbGljOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZG91YmxlLXN0
cnVjayIpCi0gICAgICAgIHJldHVybiBEb3VibGVTdHJ1Y2s7Ci0gICAgaWYgKGF0dHJpYnV0ZVZh
bHVlID09ICJib2xkLWZyYWt0dXIiKQotICAgICAgICByZXR1cm4gQm9sZEZyYWt0dXI7Ci0gICAg
aWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzY3JpcHQiKQotICAgICAgICByZXR1cm4gU2NyaXB0Owot
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9sZC1zY3JpcHQiKQotICAgICAgICByZXR1cm4g
Qm9sZFNjcmlwdDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImZyYWt0dXIiKQotICAgICAg
ICByZXR1cm4gRnJha3R1cjsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYi
KQotICAgICAgICByZXR1cm4gU2Fuc1NlcmlmOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
Ym9sZC1zYW5zLXNlcmlmIikKLSAgICAgICAgcmV0dXJuIEJvbGRTYW5zU2VyaWY7Ci0gICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJzYW5zLXNlcmlmLWl0YWxpYyIpCi0gICAgICAgIHJldHVybiBT
YW5zU2VyaWZJdGFsaWM7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzYW5zLXNlcmlmLWJv
bGQtaXRhbGljIikKLSAgICAgICAgcmV0dXJuIFNhbnNTZXJpZkJvbGRJdGFsaWM7Ci0gICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJtb25vc3BhY2UiKQotICAgICAgICByZXR1cm4gTW9ub3NwYWNl
OwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaW5pdGlhbCIpCi0gICAgICAgIHJldHVybiBJ
bml0aWFsOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAidGFpbGVkIikKLSAgICAgICAgcmV0
dXJuIFRhaWxlZDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImxvb3BlZCIpCi0gICAgICAg
IHJldHVybiBMb29wZWQ7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzdHJldGNoZWQiKQot
ICAgICAgICByZXR1cm4gU3RyZXRjaGVkOwotICAgIHJldHVybiBOb25lOwotfQotCiB2b2lkIE1h
dGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsK
ICAgICBBU1NFUlQocmVuZGVyZXIpOwogCiAgICAgYm9vbCBvbGREaXNwbGF5U3R5bGUgPSBtX2Rp
c3BsYXlTdHlsZTsKLSAgICBNYXRoVmFyaWFudCBvbGRNYXRoVmFyaWFudCA9IG1fbWF0aFZhcmlh
bnQ7CisgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgb2xkTWF0aFZhcmlhbnQgPSBtX21h
dGhWYXJpYW50OwogICAgIGF1dG8qIHBhcmVudFJlbmRlcmVyID0gZ2V0TWF0aE1MUGFyZW50Tm9k
ZShyZW5kZXJlcik7CiAgICAgY29uc3QgTWF0aE1MU3R5bGUqIHBhcmVudFN0eWxlID0gZ2V0TWF0
aE1MU3R5bGUocGFyZW50UmVuZGVyZXIpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgd2UganVzdCBp
bmhlcml0IHRoZSBzdHlsZSBmcm9tIG91ciBwYXJlbnQuCiAgICAgbV9kaXNwbGF5U3R5bGUgPSBm
YWxzZTsKLSAgICBtX21hdGhWYXJpYW50ID0gTm9uZTsKKyAgICBtX21hdGhWYXJpYW50ID0gTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vbmU7CiAgICAgaWYgKHBhcmVudFN0eWxlKSB7CiAg
ICAgICAgIHNldERpc3BsYXlTdHlsZShwYXJlbnRTdHlsZS0+ZGlzcGxheVN0eWxlKCkpOwogICAg
ICAgICBzZXRNYXRoVmFyaWFudChwYXJlbnRTdHlsZS0+bWF0aFZhcmlhbnQoKSk7CkBAIC0xNjIs
MTAgKzEyMyw4IEBAIHZvaWQgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzPFJl
bmRlck1hdGhNTE1hdGg+KHJlbmRlcmVyKSkKLSAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlciktPmVsZW1lbnQoKS0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihkaXNwbGF5QXR0cikgPT0gImJsb2NrIjsgLy8gVGhlIGRlZmF1bHQg
ZGlzcGxheXN0eWxlIG9mIHRoZSA8bWF0aD4gZWxlbWVudCBkZXBlbmRzIG9uIGl0cyBkaXNwbGF5
IGF0dHJpYnV0ZS4KLSAgICBlbHNlIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIp
KQotICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IGZhbHNlOyAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5
c3R5bGUgb2YgPG10YWJsZT4gaXMgZmFsc2UuCisgICAgaWYgKGlzPFJlbmRlck1hdGhNTE1hdGg+
KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQorICAgICAgICBt
X2Rpc3BsYXlTdHlsZSA9IGZhbHNlOyAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5c3R5bGUgb2YgPG1h
dGg+IGFuZCA8bXRhYmxlPiBpcyBmYWxzZS4KICAgICBlbHNlIGlmIChwYXJlbnRSZW5kZXJlcikg
ewogICAgICAgICBpZiAoaXM8UmVuZGVyTWF0aE1MRnJhY3Rpb24+KHBhcmVudFJlbmRlcmVyKSkK
ICAgICAgICAgICAgIG1fZGlzcGxheVN0eWxlID0gZmFsc2U7IC8vIDxtZnJhYz4gc2V0cyBkaXNw
bGF5c3R5bGUgdG8gZmFsc2Ugd2l0aGluIGl0cyBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yLgpA
QCAtMTc3LDIzICsxMzYsMTEgQEAgdm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxl
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBUaGUg
ZGlzcGxheXN0eWxlIGF0dHJpYnV0ZSBvbiB0aGUgPG1hdGg+LCA8bXRhYmxlPiBvciA8bXN0eWxl
PiBlbGVtZW50cyBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4KLSAgICBjb25zdCBhdXRv
KiBlbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLT5lbGVtZW50KCk7
Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7
Ci0gICAgaWYgKHRhZ05hbWUgPT0gbWF0aFRhZyB8fCB0YWdOYW1lID09IG10YWJsZVRhZyB8fCB0
YWdOYW1lID09IG1zdHlsZVRhZykgewotICAgICAgICAvLyBXZSBvbmx5IG1vZGlmeSB0aGUgdmFs
dWUgb2YgZGlzcGxheXN0eWxlIGlmIHRoZXJlIGlzIGFuIGV4cGxpY2l0IGFuZCB2YWxpZCBhdHRy
aWJ1dGUuCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUgPSBlbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpc3BsYXlzdHlsZUF0dHIpOwot
ICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInRydWUiKQotICAgICAgICAgICAgbV9kaXNw
bGF5U3R5bGUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZmFs
c2UiKQotICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICAv
LyBUaGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlIG9uIHRoZSA8bWF0aD4sIDxtc3R5bGU+IG9yIHRv
a2VuIGVsZW1lbnRzIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KLSAgICBpZiAoaXM8
UmVuZGVyTWF0aE1MTWF0aD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlck1hdGhNTFRva2VuPihyZW5k
ZXJlcikgfHwgdGFnTmFtZSA9PSBtc3R5bGVUYWcpIHsKLSAgICAgICAgTWF0aFZhcmlhbnQgbWF0
aHZhcmlhbnQgPSBwYXJzZU1hdGhWYXJpYW50KGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7Ci0gICAgICAgIGlmIChtYXRodmFyaWFudCAh
PSBOb25lKQotICAgICAgICAgICAgbV9tYXRoVmFyaWFudCA9IG1hdGh2YXJpYW50OworICAgIC8v
IFRoZSBkaXNwbGF5c3R5bGUgYW5kIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgb3ZlcnJpZGUgdGhl
IGRlZmF1bHQgYmVoYXZpb3IuCisgICAgYXV0byogZWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KHJlbmRlcmVyKS0+ZWxlbWVudCgpOworICAgIGlmIChpczxNYXRoTUxFbGVtZW50Pihl
bGVtZW50KSkgeworICAgICAgICBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50KS0+Z2V0
U3BlY2lmaWVkRGlzcGxheVN0eWxlKG1fZGlzcGxheVN0eWxlKTsKKyAgICAgICAgZG93bmNhc3Q8
TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPmdldFNwZWNpZmllZE1hdGhWYXJpYW50KG1fbWF0aFZh
cmlhbnQpOwogICAgIH0KIAogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQocmVuZGVyZXIsIG9sZERp
c3BsYXlTdHlsZSwgb2xkTWF0aFZhcmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9NYXRoTUxTdHlsZS5oCmluZGV4IDI3ZWFjNzYuLjhmNDI0MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoTUFUSE1MKQogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUg
Ik1hdGhNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MCwzMiArNDEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNwbGF5
U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdHlsZTsgfQogICAgIHZvaWQgc2V0RGlz
cGxheVN0eWxlKGJvb2wgZGlzcGxheVN0eWxlKSB7IG1fZGlzcGxheVN0eWxlID0gZGlzcGxheVN0
eWxlOyB9CiAKLSAgICAvLyBUaGVzZSBhcmUgdGhlIG1hdGh2YXJpYW50IHZhbHVlcyBmcm9tIHRo
ZSBNYXRoTUwgcmVjb21tZW5kYXRpb24uCi0gICAgLy8gVGhlIHNwZWNpYWwgdmFsdWUgbm9uZSBt
ZWFucyB0aGF0IG5vIGV4cGxpY2l0IG1hdGh2YXJpYW50IHZhbHVlIGhhcyBiZWVuIHNwZWNpZmll
ZC4KLSAgICAvLyBOb3RlIHRoYXQgdGhlIG51bWVyYWwgdmFsdWVzIGFyZSBpbXBvcnRhbnQgZm9y
IHRoZSBjb21wdXRhdGlvbiBwZXJmb3JtZWQgaW4gdGhlIG1hdGhWYXJpYW50IGZ1bmN0aW9uIG9m
IFJlbmRlck1hdGhNTFRva2VuLCBkbyBub3QgY2hhbmdlIHRoZW0hCi0gICAgZW51bSBNYXRoVmFy
aWFudCB7Ci0gICAgICAgIE5vbmUgPSAwLAotICAgICAgICBOb3JtYWwgPSAxLAotICAgICAgICBC
b2xkID0gMiwKLSAgICAgICAgSXRhbGljID0gMywKLSAgICAgICAgQm9sZEl0YWxpYyA9IDQsCi0g
ICAgICAgIFNjcmlwdCA9IDUsCi0gICAgICAgIEJvbGRTY3JpcHQgPSA2LAotICAgICAgICBGcmFr
dHVyID0gNywKLSAgICAgICAgRG91YmxlU3RydWNrID0gOCwKLSAgICAgICAgQm9sZEZyYWt0dXIg
PSA5LAotICAgICAgICBTYW5zU2VyaWYgPSAxMCwKLSAgICAgICAgQm9sZFNhbnNTZXJpZiA9IDEx
LAotICAgICAgICBTYW5zU2VyaWZJdGFsaWMgPSAxMiwKLSAgICAgICAgU2Fuc1NlcmlmQm9sZEl0
YWxpYyA9IDEzLAotICAgICAgICBNb25vc3BhY2UgPSAxNCwKLSAgICAgICAgSW5pdGlhbCA9IDE1
LAotICAgICAgICBUYWlsZWQgPSAxNiwKLSAgICAgICAgTG9vcGVkID0gMTcsCi0gICAgICAgIFN0
cmV0Y2hlZCA9IDE4Ci0gICAgfTsKLSAgICBNYXRoVmFyaWFudCBtYXRoVmFyaWFudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0aFZhcmlhbnQ7IH0KLSAgICB2b2lkIHNldE1hdGhWYXJpYW50KE1hdGhW
YXJpYW50IG1hdGh2YXJpYW50KSB7IG1fbWF0aFZhcmlhbnQgPSBtYXRodmFyaWFudDsgfQorICAg
IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IG1hdGhWYXJpYW50KCkgY29uc3QgeyByZXR1cm4g
bV9tYXRoVmFyaWFudDsgfQorICAgIHZvaWQgc2V0TWF0aFZhcmlhbnQoTWF0aE1MRWxlbWVudDo6
TWF0aFZhcmlhbnQgbWF0aHZhcmlhbnQpIHsgbV9tYXRoVmFyaWFudCA9IG1hdGh2YXJpYW50OyB9
CiAKICAgICB2b2lkIHJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0
aWMgdm9pZCByZXNvbHZlTWF0aE1MU3R5bGVUcmVlKFJlbmRlck9iamVjdCopOwpAQCAtNzQsMTEg
KzUxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Rpc3BsYXlTdHlsZUFsd2F5c0ZhbHNlKFJl
bmRlck9iamVjdCopOwogICAgIGNvbnN0IE1hdGhNTFN0eWxlKiBnZXRNYXRoTUxTdHlsZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKTsKICAgICBSZW5kZXJPYmplY3QqIGdldE1hdGhNTFBhcmVudE5v
ZGUoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCB1cGRhdGVTdHlsZUlmTmVlZGVkKFJlbmRlck9i
amVjdCosIGJvb2wsIE1hdGhWYXJpYW50KTsKLSAgICBNYXRoVmFyaWFudCBwYXJzZU1hdGhWYXJp
YW50KGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUpOworICAgIHZvaWQgdXBkYXRl
U3R5bGVJZk5lZWRlZChSZW5kZXJPYmplY3QqLCBib29sLCBNYXRoTUxFbGVtZW50OjpNYXRoVmFy
aWFudCk7CiAKICAgICBib29sIG1fZGlzcGxheVN0eWxlIHsgZmFsc2UgfTsKLSAgICBNYXRoVmFy
aWFudCBtX21hdGhWYXJpYW50IHsgTm9uZSB9OworICAgIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJp
YW50IG1fbWF0aFZhcmlhbnQgeyBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9uZSB9Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCBiZjdmODdkLi42NGEwOWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcApAQCAtMzEsMTUgKzMxLDEzIEBACiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MRnJhY3Rp
b24uaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIk1hdGhNTE5h
bWVzLmgiCisjaW5jbHVkZSAiTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFp
bnRJbmZvLmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwotCi1SZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVy
TWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFj
dGlvbihNYXRoTUxGcmFjdGlvbkVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uaAppbmRleCAyOWI1OGNjLi4wODVhNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC0zNSw5
ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1hdGhNTEZyYWN0aW9u
RWxlbWVudDsKKwogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRo
TUxGcmFjdGlvbihNYXRoTUxGcmFjdGlvbkVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAg
IGZsb2F0IHJlbGF0aXZlTGluZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdExp
bmVUaGlja25lc3MgPyBtX2xpbmVUaGlja25lc3MgLyBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIDog
TGF5b3V0VW5pdCgwKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKaW5kZXggYzJkMWU3Ni4uM2VjYTU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRk
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
UGFkZGVkLmNwcApAQCAtMjgsMTQgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCi0j
aW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlIDxjbWF0aD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7Ci0KLVJlbmRlck1hdGhNTFBh
ZGRlZDo6UmVuZGVyTWF0aE1MUGFkZGVkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCitSZW5kZXJNYXRoTUxQYWRkZWQ6OlJlbmRlck1hdGhNTFBhZGRlZChNYXRoTUxQYWRk
ZWRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0
aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKaW5kZXggNjkwZTE4
Zi4uZDEwNmNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxQYWRkZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFBhZGRlZC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUGFkZGVkIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhN
TFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUGFkZGVkKEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxQYWRkZWQoTWF0aE1MUGFkZGVkRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MUGFkZGVkIjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAK
aW5kZXggMTNmYmZkNC4uNWU4ODM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC0zNywxNCArMzcsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
Ci0KIHN0YXRpYyBib29sIGlzUHJlc2NyaXB0RGVsaW1pdGVyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyT2JqZWN0KQogewogICAgIHJldHVybiByZW5kZXJPYmplY3Qubm9kZSgpICYmIHJlbmRl
ck9iamVjdC5ub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKTsK
IH0KIAotUmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVy
TWF0aE1MU2NyaXB0cyhNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogICAgIC8vIERldGVybWluZSB3aGF0IGtpbmQgb2Ygc3ViL3N1cCBleHByZXNzaW9uIHdl
IGhhdmUgYnkgZWxlbWVudCBuYW1lCkBAIC02Niw5ICs2NCw4IEBAIFJlbmRlck1hdGhNTFNjcmlw
dHM6OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSkKICAgICB9CiB9CiAKLU1hdGhNTFNjcmlwdHNFbGVtZW50JiBSZW5kZXJNYXRoTUxTY3Jp
cHRzOjpzY3JpcHRzRWxlbWVudCgpIGNvbnN0CitNYXRoTUxTY3JpcHRzRWxlbWVudCYgUmVuZGVy
TWF0aE1MU2NyaXB0czo6ZWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc1JlbmRlck1h
dGhNTFVuZGVyT3ZlcigpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MU2NyaXB0c0Vs
ZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCkBAIC0yNjAsNyArMjU3LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpnZXRTY3JpcHRNZXRyaWNzQW5kTGF5b3V0SWZOZWVk
ZWQoUmVuZGVyQm94KiBiYXNlLCBSZW4KICAgICAgICAgaWYgKCFpc1JlbmRlck1hdGhNTFVuZGVy
T3ZlcigpKSB7CiAgICAgICAgICAgICAvLyBJdCBpcyBub3QgY2xlYXIgaG93IHRvIGludGVycHJl
dCB0aGUgZGVmYXVsdCBzaGlmdCBhbmQgaXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYW55d2F5Lgog
ICAgICAgICAgICAgLy8gSGVuY2Ugd2UganVzdCBwYXNzIDAgYXMgdGhlIGRlZmF1bHQgdmFsdWUg
dXNlZCBieSB0b1VzZXJVbml0cy4KLSAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkTWlu
U3ViU2hpZnQgPSB0b1VzZXJVbml0cyhzY3JpcHRzRWxlbWVudCgpLnN1YnNjcmlwdFNoaWZ0KCks
IHN0eWxlKCksIDApOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRNaW5TdWJTaGlm
dCA9IHRvVXNlclVuaXRzKGVsZW1lbnQoKS5zdWJzY3JpcHRTaGlmdCgpLCBzdHlsZSgpLCAwKTsK
ICAgICAgICAgICAgIG1pblN1YlNjcmlwdFNoaWZ0ID0gc3RkOjptYXgobWluU3ViU2NyaXB0U2hp
ZnQsIHNwZWNpZmllZE1pblN1YlNoaWZ0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI2OSw3ICsy
NjYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmdldFNjcmlwdE1ldHJpY3NBbmRMYXlv
dXRJZk5lZWRlZChSZW5kZXJCb3gqIGJhc2UsIFJlbgogICAgICAgICBpZiAoIWlzUmVuZGVyTWF0
aE1MVW5kZXJPdmVyKCkpIHsKICAgICAgICAgICAgIC8vIEl0IGlzIG5vdCBjbGVhciBob3cgdG8g
aW50ZXJwcmV0IHRoZSBkZWZhdWx0IHNoaWZ0IGFuZCBpdCBpcyBub3QgYXZhaWxhYmxlIHlldCBh
bnl3YXkuCiAgICAgICAgICAgICAvLyBIZW5jZSB3ZSBqdXN0IHBhc3MgMCBhcyB0aGUgZGVmYXVs
dCB2YWx1ZSB1c2VkIGJ5IHRvVXNlclVuaXRzLgotICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVj
aWZpZWRNaW5TdXBTaGlmdCA9IHRvVXNlclVuaXRzKHNjcmlwdHNFbGVtZW50KCkuc3VwZXJzY3Jp
cHRTaGlmdCgpLCBzdHlsZSgpLCAwKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVk
TWluU3VwU2hpZnQgPSB0b1VzZXJVbml0cyhlbGVtZW50KCkuc3VwZXJzY3JpcHRTaGlmdCgpLCBz
dHlsZSgpLCAwKTsKICAgICAgICAgICAgIG1pblN1cFNjcmlwdFNoaWZ0ID0gc3RkOjptYXgobWlu
U3VwU2NyaXB0U2hpZnQsIHNwZWNpZmllZE1pblN1cFNoaWZ0KTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmgKaW5kZXggNTUwM2M3YS4uMDNkNDg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgTWF0aE1MU2NyaXB0c0VsZW1lbnQ7CiAvLyBSZW5kZXIgYSBiYXNlIHdpdGgg
c2NyaXB0cy4KIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgOiBwdWJsaWMgUmVuZGVyTWF0aE1M
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoTWF0aE1MU2NyaXB0c0VsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hl
ZE9wZXJhdG9yKCkgZmluYWw7CiAKIHByb3RlY3RlZDoKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVj
dGVkOgogICAgIFNjcmlwdHNUeXBlIG1fc2NyaXB0VHlwZTsKIAogcHJpdmF0ZToKLSAgICBNYXRo
TUxTY3JpcHRzRWxlbWVudCYgc2NyaXB0c0VsZW1lbnQoKSBjb25zdDsKKyAgICBNYXRoTUxTY3Jp
cHRzRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0OwogICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldEJhc2VBbmRTY3JpcHRzKFJlbmRl
ckJveComIGJhc2UsIFJlbmRlckJveComIGZpcnN0UG9zdFNjcmlwdCwgUmVuZGVyQm94KiYgZmly
c3RQcmVTY3JpcHQpOwogICAgIExheW91dFVuaXQgc3BhY2VBZnRlclNjcmlwdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNw
cAppbmRleCA1ZWY4MTA2Li40YzFmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApAQCAtMjksMTMgKzI5LDEwIEBA
CiAjaWYgRU5BQkxFKE1BVEhNTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwotCiBSZW5kZXJNYXRo
TUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MU3BhY2VFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDgyYzBkYTYuLjFkMmQxMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFp
bnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtMjgxLDM3ICsyODIsMzcg
QEAgY29uc3QgVUNoYXIzMiBtYXRoQm9sZFBpU3ltYm9sID0gMHgxRDZFMTsKIC8vIENoYXJhY3Rl
cnMgd2l0aG91dCBhIHZhbGlkIG1hcHBpbmcgb3IgdmFsaWQgYU1hdGh2YXIgdmFsdWUgYXJlIHJl
dHVybmVkCiAvLyB1bmFsdGVyZWQuCiAvLyBDaGFyYWN0ZXJzIGFscmVhZHkgaW4gdGhlIG1hdGhl
bWF0aWNhbCBibG9ja3MgKG9yIGFyZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbnMpIGFyZSBuZXZlciB0
cmFuc2Zvcm1lZC4KLS8vIEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFyaWFudCBhcmUgc3Bl
Y2lmaWVkIGluIE1hdGhNTFN0eWxlLmgKKy8vIEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFy
aWFudCBhcmUgc3BlY2lmaWVkIGluIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjouaAogLy8g
VGhlIHRyYW5zZm9ybWFibGUgY2hhcmFjdGVycyBjYW4gYmUgZm91bmQgYXQ6CiAvLyBodHRwOi8v
bGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctbWF0aC8yMDEzU2VwLzAwMTIuaHRtbCBh
bmQKIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGhlbWF0aWNhbF9BbHBoYW51
bWVyaWNfU3ltYm9scwotc3RhdGljIFVDaGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9p
bnQsIE1hdGhNTFN0eWxlOjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCkKK3N0YXRpYyBVQ2hhcjMy
IG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFu
dCBtYXRodmFyaWFudCkKIHsKLSAgICBBU1NFUlQobWF0aHZhcmlhbnQgPj0gTWF0aE1MU3R5bGU6
Ok5vcm1hbCAmJiBtYXRodmFyaWFudCA8PSBNYXRoTUxTdHlsZTo6U3RyZXRjaGVkKTsKKyAgICBB
U1NFUlQobWF0aHZhcmlhbnQgPj0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vcm1hbCAm
JiBtYXRodmFyaWFudCA8PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6U3RyZXRjaGVkKTsK
IAotICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6Tm9ybWFsKQorICAgIGlmICht
YXRodmFyaWFudCA9PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9ybWFsKQogICAgICAg
ICByZXR1cm4gY29kZVBvaW50OyAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCiAKICAgICAvLyBFeGNl
cHRpb25hbCBjaGFyYWN0ZXJzIHdpdGggYXQgbW9zdCBvbmUgcG9zc2libGUgdHJhbnNmb3JtYXRp
b24uCiAgICAgaWYgKGNvZGVQb2ludCA9PSBob2xlR3JlZWtVcHBlclRoZXRhKQogICAgICAgICBy
ZXR1cm4gY29kZVBvaW50OyAvLyBOb3RoaW5nIGF0IHRoaXMgY29kZSBwb2ludCBpcyB0cmFuc2Zv
cm1lZAogICAgIGlmIChjb2RlUG9pbnQgPT0gZ3JlZWtMZXR0ZXJEaWdhbW1hKSB7Ci0gICAgICAg
IGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6Qm9sZCkKKyAgICAgICAgaWYgKG1hdGh2
YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpCb2xkKQogICAgICAgICAgICAg
cmV0dXJuIG1hdGhCb2xkQ2FwaXRhbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnQ7
CiAgICAgfQogICAgIGlmIChjb2RlUG9pbnQgPT0gZ3JlZWtTbWFsbExldHRlckRpZ2FtbWEpIHsK
LSAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpCb2xkKQorICAgICAgICBp
ZiAobWF0aHZhcmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkJvbGQpCiAgICAg
ICAgICAgICByZXR1cm4gbWF0aEJvbGRTbWFsbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2Rl
UG9pbnQ7CiAgICAgfQogICAgIGlmIChjb2RlUG9pbnQgPT0gbGF0aW5TbWFsbExldHRlckRvdGxl
c3NJKSB7Ci0gICAgICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6SXRhbGljKQor
ICAgICAgICBpZiAobWF0aHZhcmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0
YWxpYykKICAgICAgICAgICAgIHJldHVybiBtYXRoSXRhbGljU21hbGxEb3RsZXNzSTsKICAgICAg
ICAgcmV0dXJuIGNvZGVQb2ludDsKICAgICB9CiAgICAgaWYgKGNvZGVQb2ludCA9PSBsYXRpblNt
YWxsTGV0dGVyRG90bGVzc0opIHsKLSAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTFN0
eWxlOjpJdGFsaWMpCisgICAgICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxFbGVtZW50OjpN
YXRoVmFyaWFudDo6SXRhbGljKQogICAgICAgICAgICAgcmV0dXJuIG1hdGhJdGFsaWNTbWFsbERv
dGxlc3NKOwogICAgICAgICByZXR1cm4gY29kZVBvaW50OwogICAgIH0KQEAgLTM4OSwxOSArMzkw
LDE5IEBAIHN0YXRpYyBVQ2hhcjMyIG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRo
TUxTdHlsZTo6TWF0aFZhcmlhbnQgbWF0aHZhcmlhCiAgICAgICAgIC8vIEZvciBleGFtcGxlIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGRvdWJsZSBzdHJ1Y2sgbnVtYmVyIHJhbmdlIGZvbGxvd3MgaW1t
ZWRpYXRlbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYm9sZCBudW1iZXIgcmFuZ2UuCiAgICAgICAg
IC8vIG11bHRpcGxpZXIgcmVwcmVzZW50cyB0aGUgb3JkZXIgb2YgdGhlIHNlcXVlbmNlcyByZWxh
dGl2ZSB0byB0aGUgZmlyc3Qgb25lLgogICAgICAgICBzd2l0Y2ggKG1hdGh2YXJpYW50KSB7Ci0g
ICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6OkJvbGQ6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ6OkJvbGQ6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpEb3VibGVTdHJ1Y2s6Cisg
ICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazoKICAg
ICAgICAgICAgIG11bHRpcGxpZXIgPSAxOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTWF0aE1MU3R5bGU6OlNhbnNTZXJpZjoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpN
YXRoVmFyaWFudDo6U2Fuc1NlcmlmOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDI7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZFNhbnNTZXJpZjoK
KyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZFNhbnNTZXJpZjoK
ICAgICAgICAgICAgIG11bHRpcGxpZXIgPSAzOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTWF0aE1MU3R5bGU6Ok1vbm9zcGFjZToKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50
OjpNYXRoVmFyaWFudDo6TW9ub3NwYWNlOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTQxNiwxOSArNDE3LDE5IEBA
IHN0YXRpYyBVQ2hhcjMyIG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHls
ZTo6TWF0aFZhcmlhbnQgbWF0aHZhcmlhCiAgICAgfQogICAgIGlmICh2YXJUeXBlID09IEdyZWVr
aXNoKSB7CiAgICAgICAgIHN3aXRjaCAobWF0aHZhcmlhbnQpIHsKLSAgICAgICAgY2FzZSBNYXRo
TUxTdHlsZTo6Qm9sZDoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6
Qm9sZDoKICAgICAgICAgICAgIG11bHRpcGxpZXIgPSAwOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6Okl0YWxpYzoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudDo6SXRhbGljOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDE7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZEl0YWxpYzoK
KyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZEl0YWxpYzoKICAg
ICAgICAgICAgIG11bHRpcGxpZXIgPSAyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTWF0aE1MU3R5bGU6OkJvbGRTYW5zU2VyaWY6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ6OkJvbGRTYW5zU2VyaWY6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0g
MzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpTYW5zU2Vy
aWZCb2xkSXRhbGljOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpT
YW5zU2VyaWZCb2xkSXRhbGljOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTQ0NiwyMyArNDQ3LDIzIEBAIHN0YXRp
YyBVQ2hhcjMyIG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0
aFZhcmlhbnQgbWF0aHZhcmlhCiAgICAgICAgIGNvbnN0IE1hdGhWYXJpYW50TWFwcGluZyogbWFw
VGFibGU7CiAgICAgICAgIHNpemVfdCB0YWJsZUxlbmd0aDsKICAgICAgICAgc3dpdGNoIChtYXRo
dmFyaWFudCkgewotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpJbml0aWFsOgorICAgICAgICBj
YXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpJbml0aWFsOgogICAgICAgICAgICAgbWFw
VGFibGUgPSBhcmFiaWNJbml0aWFsTWFwVGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9
IFdURl9BUlJBWV9MRU5HVEgoYXJhYmljSW5pdGlhbE1hcFRhYmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpUYWlsZWQ6CisgICAgICAgIGNhc2UgTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OlRhaWxlZDoKICAgICAgICAgICAgIG1hcFRhYmxlID0g
YXJhYmljVGFpbGVkTWFwVGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJB
WV9MRU5HVEgoYXJhYmljVGFpbGVkTWFwVGFibGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTWF0aE1MU3R5bGU6OlN0cmV0Y2hlZDoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudDo6U3RyZXRjaGVkOgogICAgICAgICAgICAgbWFwVGFibGUgPSBhcmFi
aWNTdHJldGNoZWRNYXBUYWJsZTsKICAgICAgICAgICAgIHRhYmxlTGVuZ3RoID0gV1RGX0FSUkFZ
X0xFTkdUSChhcmFiaWNTdHJldGNoZWRNYXBUYWJsZSk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6TG9vcGVkOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50OjpMb29wZWQ6CiAgICAgICAgICAgICBtYXBUYWJsZSA9IGFyYWJpY0xv
b3BlZE1hcFRhYmxlOwogICAgICAgICAgICAgdGFibGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RI
KGFyYWJpY0xvb3BlZE1hcFRhYmxlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE1hdGhNTFN0eWxlOjpEb3VibGVTdHJ1Y2s6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6
TWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazoKICAgICAgICAgICAgIG1hcFRhYmxlID0gYXJhYmlj
RG91YmxlTWFwVGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5H
VEgoYXJhYmljRG91YmxlTWFwVGFibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NzIsOSAr
NDczLDkgQEAgc3RhdGljIFVDaGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9pbnQsIE1h
dGhNTFN0eWxlOjpNYXRoVmFyaWFudCBtYXRodmFyaWEKICAgICAgICAgbmV3Q2hhciA9IE1hdGhW
YXJpYW50TWFwcGluZ1NlYXJjaChjb2RlUG9pbnQsIG1hcFRhYmxlLCB0YWJsZUxlbmd0aCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gTXVzdCBiZSBMYXRpbgotICAgICAgICBpZiAobWF0aHZh
cmlhbnQgPiBNYXRoTUxTdHlsZTo6TW9ub3NwYWNlKQorICAgICAgICBpZiAobWF0aHZhcmlhbnQg
PiBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6TW9ub3NwYWNlKQogICAgICAgICAgICAgcmV0
dXJuIGNvZGVQb2ludDsgLy8gTGF0aW4gZG9lc24ndCBzdXBwb3J0IHRoZSBBcmFiaWMgbWF0aHZh
cmlhbnRzCi0gICAgICAgIG11bHRpcGxpZXIgPSBtYXRodmFyaWFudCAtIDI7CisgICAgICAgIG11
bHRpcGxpZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KG1hdGh2YXJpYW50KSAtIDI7CiAgICAgICAgIC8v
IFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSB0aGUgdmFsdWVzIGZvciBOU19NQVRITUxfTUFUSFZB
UklBTlRfKiBhcmUgY2hvc2VuIHRvIGNvaW5jaWRlIHdpdGggdGhlIG9yZGVyIGluIHdoaWNoIHRo
ZSBlbmNvZGVkIG1hdGh2YXJpYW50IGNoYXJhY3RlcnMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZWly
IHVuaWNvZGUgYmxvY2sgKGxlc3MgYW4gb2Zmc2V0IHRvIGF2b2lkIE5vbmUgYW5kIE5vcm1hbCB2
YXJpYW50cykKICAgICAgICAgLy8gU2VlIHRoZSBOdW1iZXIgY2FzZSBmb3IgYW4gZXhwbGFuYXRp
b24gb2YgdGhlIGZvbGxvd2luZyBjYWxjdWxhdGlvbgogICAgICAgICB0ZW1wQ2hhciA9IGJhc2VD
aGFyICsgbWF0aEJvbGRVcHBlckEgKyBtdWx0aXBsaWVyICogKG1hdGhJdGFsaWNVcHBlckEgLSBt
YXRoQm9sZFVwcGVyQSk7CkBAIC01MjMsOSArNTI0LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tl
bjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCgpCiAgICAgQXRvbWljU3RyaW5nIHRleHRDb250ZW50
ID0gZWxlbWVudCgpLnRleHRDb250ZW50KCkuc3RyaXBXaGl0ZVNwYWNlKCkuc2ltcGxpZnlXaGl0
ZVNwYWNlKCk7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID09IDEpIHsKICAgICAgICAg
VUNoYXIzMiBjb2RlUG9pbnQgPSB0ZXh0Q29udGVudFswXTsKLSAgICAgICAgTWF0aE1MU3R5bGU6
Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsK
LSAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpOb25lKQotICAgICAgICAg
ICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlU
YWcpID8gTWF0aE1MU3R5bGU6Okl0YWxpYyA6IE1hdGhNTFN0eWxlOjpOb3JtYWw7CisgICAgICAg
IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+
bWF0aFZhcmlhbnQoKTsKKyAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50OjpOb25lKQorICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1l
bnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0aFZh
cmlhbnQ6Okl0YWxpYyA6IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAgICAg
ICAgIFVDaGFyMzIgdHJhbnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9pbnQs
IG1hdGh2YXJpYW50KTsKICAgICAgICAgaWYgKHRyYW5zZm9ybWVkQ29kZVBvaW50ICE9IGNvZGVQ
b2ludCkKICAgICAgICAgICAgIG1fbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIodHJhbnNmb3JtZWRDb2RlUG9pbnQsICFzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKaW5kZXggNWI4YzZk
NC4uNzA5ZjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcApAQCAtMzEsMjAgKzMxLDIzIEBACiAjaW5j
bHVkZSAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgiCiAKICNpbmNsdWRlICJNYXRoTUxFbGVtZW50
LmgiCi0jaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJNYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuaCIKKyNpbmNsdWRlICJNYXRoTUxVbmRlck92ZXJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxPcGVyYXRvci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKLQot
UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVy
TWF0aE1MVW5kZXJPdmVyKE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxTY3JpcHRzKGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKQogewogfQogCitNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBSZW5kZXJNYXRoTUxVbmRl
ck92ZXI6OmVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxV
bmRlck92ZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsKK30KKwogdm9pZCBSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OmNvbXB1dGVPcGVyYXRvcnNIb3Jpem9udGFsU3RyZXRjaCgpCiB7
CiAgICAgTGF5b3V0VW5pdCBzdHJldGNoV2lkdGggPSAwOwpAQCAtMTY1LDEwICsxNjgsMTAgQEAg
Ym9vbCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6Omhhc0FjY2VudChib29sIGFjY2VudFVuZGVyKSBj
b25zdAogewogICAgIEFTU0VSVChtX3NjcmlwdFR5cGUgPT0gVW5kZXJPdmVyIHx8IChhY2NlbnRV
bmRlciAmJiBtX3NjcmlwdFR5cGUgPT0gVW5kZXIpIHx8ICghYWNjZW50VW5kZXIgJiYgbV9zY3Jp
cHRUeXBlID09IE92ZXIpKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFs
dWUgPSBlbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYWNjZW50VW5k
ZXIgPyBhY2NlbnR1bmRlckF0dHIgOiBhY2NlbnRBdHRyKTsKLSAgICBpZiAoYXR0cmlidXRlVmFs
dWUgPT0gInRydWUiKQorICAgIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgYXR0
cmlidXRlVmFsdWUgPSBhY2NlbnRVbmRlciA/IGVsZW1lbnQoKS5hY2NlbnRVbmRlcigpIDogZWxl
bWVudCgpLmFjY2VudCgpOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSBNYXRoTUxFbGVtZW50
OjpCb29sZWFuVmFsdWU6OlRydWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChhdHRy
aWJ1dGVWYWx1ZSA9PSAiZmFsc2UiKQorICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSBNYXRoTUxF
bGVtZW50OjpCb29sZWFuVmFsdWU6OkZhbHNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
UmVuZGVyQm94JiBzY3JpcHQgPSBhY2NlbnRVbmRlciA/IHVuZGVyKCkgOiBvdmVyKCk7CiAgICAg
aWYgKCFpczxSZW5kZXJNYXRoTUxCbG9jaz4oc2NyaXB0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCmluZGV4IDg2
YzE5MjcuLjE5YTJiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtMzIsMTQgKzMyLDE3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDsKKwogY2xh
c3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFNjcmlw
dHMgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKE1hdGhNTFVuZGVyT3ZlckVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1M
U2NyaXB0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1JlbmRl
ck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVu
ZGVyT3ZlciI7IH0KKyAgICBNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7
CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAg
dm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284307</attachid>
            <date>2016-07-21 22:55:43 -0700</date>
            <delta_ts>2016-07-22 09:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-159623-Move-parsing-of-display-displaystyle-and-.patch</filename>
            <type>text/plain</type>
            <size>34449</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA5YjgxMzE3ZDE0OWM2ZGZiMzZlNzRjY2EyOGNlZWIxMGM2ZjczOWU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogRnJpLCAyMiBKdWwgMjAxNiAwNzo0NTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NTk2MjMgLSBNb3ZlIHBhcnNpbmcgb2YgZGlzcGxheSwgZGlzcGxheXN0eWxlIGFuZAogbWF0aHZh
cmlhbnQgYXR0cmlidXRlcyBmcm9tIHJlbmRlcmluZyB0byBtYXRobWwgZWxlbWVudCBjbGFzc2Vz
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgNTQgKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuY3BwICAgICAgICAgICAgfCA2NCArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmggICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrCiAu
Li4vbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICAgICAgICB8IDE5ICsr
KysrLQogLi4uL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCAg
fCAgNCArKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCAgICAg
ICAgfCAyNiArKysrKysrLQogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmggICAgICAgICAgfCAgNSArKwogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcCAgICAgICAgfCAgNyArLQogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmggICAgICAgICAgfCAgMiArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L01hdGhNTFN0eWxlLmNwcCAgICB8IDc1ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaCAgICAgIHwgMzQgKystLS0tLS0t
LQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgfCA1
NyArKysrKysrKy0tLS0tLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCAyNTkgaW5zZXJ0aW9ucygrKSwg
MTI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDgyM2Y2Li45ZGFlYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTYtMDctMjAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIE1vdmUgcGFyc2luZyBvZiBkaXNwbGF5LCBkaXNwbGF5c3R5
bGUgYW5kIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgaW50byBNYXRoTUwgZWxlbWVudCBjbGFzc2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIG1h
dGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6
OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUpOiBNb3ZlIGhlbHBlciBmdW5jdGlvbiB0byBwYXJz
ZSB0aGUKKyAgICAgICAgbWF0aHZhcmlhbnQgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlKTogSGVscGVyIGZ1bmN0aW9u
IHRvIHNldCB0aGUgZGlzcGxheXN0eWxlCisgICAgICAgIHZhbHVlIGZyb20gdGhlIGF0dHJpYnV0
ZSBzcGVjaWZpZWQgb24gdGhlIE1hdGhNTCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
c2V0IHRoZSBtYXRodmFyaWFudAorICAgICAgICB2YWx1ZSBmcm9tIHRoZSBhdHRyaWJ1dGUgc3Bl
Y2lmaWVkIG9uIHRoZSBNYXRoTUwgZWxlbWVudC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxl
bWVudC5oOiBNb3ZlIHRoZSBlbnVtIGZvciBtYXRodmFyaWFudCB2YWx1ZXMgYW5kIGRlY2xhcmUg
bmV3IG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjphY2NlcHRzRGlz
cGxheVN0eWxlQXR0cmlidXRlKTogSW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBhY2NlcHRz
CisgICAgICAgIGRpc3BsYXlzdHlsZSBhdHRyaWJ1dGUgKGZhbHNlIGZvciBtb3N0IG9mIHRoZW0p
LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6YWNjZXB0c01hdGhWYXJpYW50QXR0
cmlidXRlKTogSW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBhY2NlcHRzCisgICAgICAgIG1h
dGh2YXJpYW50IGF0dHJpYnV0ZSAoZmFsc2UgZm9yIG1vc3Qgb2YgdGhlbSkuCisgICAgICAgICog
bWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6YWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJp
YnV0ZSk6IEFkZCBtc3R5bGUgYW5kIG10YWJsZQorICAgICAgICB0byB0aGUgbGlzdCBvZiBlbGVt
ZW50cyBhY2NlcHRpbmcgdGhlIGRpc3BsYXlzdHlsZSBhdHRyaWJ1dGUuCisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjphY2NlcHRzTWF0aFZhcmlhbnRBdHRy
aWJ1dGUpOiBBZGQgbXN0eWxlIHRvIHRoZSBsaXN0CisgICAgICAgIG9mIGVsZW1lbnRzIGFjY2Vw
dGluZyB0aGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBNYXJrIGRpc3BsYXlzdHls
ZSBhbmQgbWF0aHZhcmlhbnQKKyAgICAgICAgZGlydHkgaWYgbmVjZXNzYXJ5LiBBbHNvIHVzZSB0
aGUgbmV3IGFjY2VwdHMqQXR0cmlidXRlIGZ1bmN0aW9uLgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg6IERlY2xhcmUgb3ZlcnJpZGRlbiBhY2NlcHRzKkF0
dHJpYnV0ZSBtZW1iZXJzLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Z2V0U3BlY2lmaWVkRGlzcGxh
eVN0eWxlKTogT3ZlcnJpZGUgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZQorICAgICAgICBz
byB0aGF0IHRoZSBkaXNwbGF5IGF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQgdG8gc2V0IHRoZSBkZWZh
dWx0IHZhbHVlIGlmIHRoZSBkaXNwbGF5c3R5bGUKKyAgICAgICAgYXR0cmlidXRlIGlzIGFic2Vu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
IE1hcmsgZGlzcGxheXN0eWxlIGFuZCBtYXRodmFyaWFudCBkaXJ0eSBpZgorICAgICAgICBuZWNl
c3NhcnkuIFdlIGRpcmVjdGx5IE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlIHRvIGF2b2lk
IGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOiBB
ZGQgdGhlIG1hdGggdGFnIHRvIHRoZSBsaXN0IG9mIGVsZW1lbnRzIGFjY2VwdGluZyB0aGUKKyAg
ICAgICAgZGlzcGxheXN0eWxlIGFuZCBtYXRodmFyaWFudCBhdHRyaWJ1dGVzLiBEZWNsYXJlIG92
ZXJyaWRkZW4gZ2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlLgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBNYXJrIG1hdGh2YXJpYW50IGFzIGRpcnR5LgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oOiBBZGQgdG9rZW4gZWxlbWVudHMgdG8gdGhlIGxpc3Qg
b2YgZWxlbWVudHMgYWNjZXB0aW5nIHRoZQorICAgICAgICBtYXRodmFyaWFudCBhdHRyaWJ1dGUu
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxTdHlsZTo6dXBkYXRlU3R5bGVJZk5lZWRlZCk6IFVzZSB0aGUgbmV3IE1h
dGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IGVudW0uCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxT
dHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKTogIFdlIG5vIGxvbmdlciBwYXJzZSB0aGUgZGlzcGxh
eSB2YWx1ZSB0bworICAgICAgICBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHZhbHVlIG9uIHRoZSBt
YXRoIHRhZywgYmVjYXVzZSB0aGlzIGlzIGhhbmRsZWQgaW4KKyAgICAgICAgZ2V0U3BlY2lmaWVk
RGlzcGxheVN0eWxlLiBJbiBnZW5lcmFsLCB3ZSBhbHNvIGp1c3QgY2FsbCBnZXRTcGVjaWZpZWRE
aXNwbGF5U3R5bGUgYW5kCisgICAgICAgIGdldFNwZWNpZmllZE1hdGhWYXJpYW50IG9uIHRoZSBN
YXRoTUwgZWxlbWVudHMgaW5zdGVhZCBvZiBwYXJzaW5nIHRoZSBkaXNwbGF5c3R5bGUgYW5kCisg
ICAgICAgIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGhNTFN0eWxlOjpwYXJzZU1hdGhWYXJpYW50KTogRGVsZXRlZC4gVGhpcyBpcyBtb3ZlZCBpbnRv
IE1hdGhNTEVsZW1lbnQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5o
OiBVc2UgdGhlIG5ldyBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBlbnVtLgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6Om1hdGhWYXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCiAyMDE2LTA3LTIx
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3ZlIHBhcnNp
bmcgb2YgYWNjZW50dW5kZXIgYW5kIGFjY2VudCBhdHRyaWJ1dGVzIGZyb20gcmVuZGVyZXIgdG8g
ZWxlbWVudCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5k
ZXggODA5NzRiYy4uMDRmMDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tp
IChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEwIEZyYW7Dp29pcyBTYXVzc2V0IChzYXVzc2V0QGdtYWlsLmNvbSkuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQzLDYgKzU0NCw2OSBAQCBjb25zdCBNYXRoTUxFbGVt
ZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUo
Y29uc3QgUQogICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWU7CiB9CiAKK01hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50IE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29u
c3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKK3sKKyAgICAvLyBUaGUgbWF0aHZhcmlh
bnQgYXR0cmlidXRlIHZhbHVlcyBpcyBjYXNlLXNlbnNpdGl2ZS4KKyAgICBpZiAoYXR0cmlidXRl
VmFsdWUgPT0gIm5vcm1hbCIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9ybWFsOwor
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9sZCIpCisgICAgICAgIHJldHVybiBNYXRoVmFy
aWFudDo6Qm9sZDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gIml0YWxpYyIpCisgICAgICAg
IHJldHVybiBNYXRoVmFyaWFudDo6SXRhbGljOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
Ym9sZC1pdGFsaWMiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkJvbGRJdGFsaWM7Cisg
ICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJkb3VibGUtc3RydWNrIikKKyAgICAgICAgcmV0dXJu
IE1hdGhWYXJpYW50OjpEb3VibGVTdHJ1Y2s7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJi
b2xkLWZyYWt0dXIiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkJvbGRGcmFrdHVyOwor
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2NyaXB0IikKKyAgICAgICAgcmV0dXJuIE1hdGhW
YXJpYW50OjpTY3JpcHQ7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLXNjcmlwdCIp
CisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Qm9sZFNjcmlwdDsKKyAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gImZyYWt0dXIiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkZyYWt0
dXI7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzYW5zLXNlcmlmIikKKyAgICAgICAgcmV0
dXJuIE1hdGhWYXJpYW50OjpTYW5zU2VyaWY7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJi
b2xkLXNhbnMtc2VyaWYiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkJvbGRTYW5zU2Vy
aWY7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzYW5zLXNlcmlmLWl0YWxpYyIpCisgICAg
ICAgIHJldHVybiBNYXRoVmFyaWFudDo6U2Fuc1NlcmlmSXRhbGljOworICAgIGlmIChhdHRyaWJ1
dGVWYWx1ZSA9PSAic2Fucy1zZXJpZi1ib2xkLWl0YWxpYyIpCisgICAgICAgIHJldHVybiBNYXRo
VmFyaWFudDo6U2Fuc1NlcmlmQm9sZEl0YWxpYzsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0g
Im1vbm9zcGFjZSIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6TW9ub3NwYWNlOworICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaW5pdGlhbCIpCisgICAgICAgIHJldHVybiBNYXRoVmFy
aWFudDo6SW5pdGlhbDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInRhaWxlZCIpCisgICAg
ICAgIHJldHVybiBNYXRoVmFyaWFudDo6VGFpbGVkOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9
PSAibG9vcGVkIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpMb29wZWQ7CisgICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJzdHJldGNoZWQiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlh
bnQ6OlN0cmV0Y2hlZDsKKyAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Ok5vbmU7Cit9CisKK3ZvaWQg
TWF0aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlKGJvb2wmIGRpc3BsYXlTdHls
ZSkKK3sKKyAgICBpZiAoIWFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgc3BlY2lmaWVk
RGlzcGxheVN0eWxlID0gY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShkaXNwbGF5c3R5bGVBdHRyLCBt
X2Rpc3BsYXlTdHlsZSk7CisgICAgaWYgKHNwZWNpZmllZERpc3BsYXlTdHlsZSAhPSBNYXRoTUxF
bGVtZW50OjpCb29sZWFuVmFsdWU6OkRlZmF1bHQpCisgICAgICAgIGRpc3BsYXlTdHlsZSA9IHNw
ZWNpZmllZERpc3BsYXlTdHlsZSA9PSBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWU6OlRydWU7
Cit9CisKK3ZvaWQgTWF0aE1MRWxlbWVudDo6Z2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQoTWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQmIG1hdGhWYXJpYW50KQoreworICAgIGlmICghYWNjZXB0c01h
dGhWYXJpYW50QXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9tYXRoVmFy
aWFudC5kaXJ0eSkgeworICAgICAgICBtX21hdGhWYXJpYW50LnZhbHVlID0gcGFyc2VNYXRoVmFy
aWFudEF0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hdGh2YXJpYW50
QXR0cikpOworICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5ID0gZmFsc2U7CisgICAgfQorICAg
IGlmIChtX21hdGhWYXJpYW50LnZhbHVlICE9IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpO
b25lKQorICAgICAgICBtYXRoVmFyaWFudCA9IG1fbWF0aFZhcmlhbnQudmFsdWU7Cit9CisKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuaAppbmRleCA5NzhjZjIwLi5kN2I5YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxF
bGVtZW50LmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxv
d3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBGcmFuw6dvaXMgU2F1c3NldCAoc2F1c3NldEBnbWFpbC5jb20pLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDYgKzczLDM4IEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBkaXJ0eSB7IHRydWUgfTsKICAgICB9OwogCisgICAgLy8gVGhlc2UgYXJlIHRoZSBt
YXRodmFyaWFudCB2YWx1ZXMgZnJvbSB0aGUgTWF0aE1MIHJlY29tbWVuZGF0aW9uLgorICAgIC8v
IFRoZSBzcGVjaWFsIHZhbHVlIG5vbmUgbWVhbnMgdGhhdCBubyBleHBsaWNpdCBtYXRodmFyaWFu
dCB2YWx1ZSBoYXMgYmVlbiBzcGVjaWZpZWQuCisgICAgLy8gTm90ZSB0aGF0IHRoZSBudW1lcmFs
IHZhbHVlcyBhcmUgaW1wb3J0YW50IGZvciB0aGUgY29tcHV0YXRpb24gcGVyZm9ybWVkIGluIHRo
ZSBtYXRoVmFyaWFudCBmdW5jdGlvbiBvZiBSZW5kZXJNYXRoTUxUb2tlbiwgZG8gbm90IGNoYW5n
ZSB0aGVtIQorICAgIGVudW0gY2xhc3MgTWF0aFZhcmlhbnQgeworICAgICAgICBOb25lID0gMCwK
KyAgICAgICAgTm9ybWFsID0gMSwKKyAgICAgICAgQm9sZCA9IDIsCisgICAgICAgIEl0YWxpYyA9
IDMsCisgICAgICAgIEJvbGRJdGFsaWMgPSA0LAorICAgICAgICBTY3JpcHQgPSA1LAorICAgICAg
ICBCb2xkU2NyaXB0ID0gNiwKKyAgICAgICAgRnJha3R1ciA9IDcsCisgICAgICAgIERvdWJsZVN0
cnVjayA9IDgsCisgICAgICAgIEJvbGRGcmFrdHVyID0gOSwKKyAgICAgICAgU2Fuc1NlcmlmID0g
MTAsCisgICAgICAgIEJvbGRTYW5zU2VyaWYgPSAxMSwKKyAgICAgICAgU2Fuc1NlcmlmSXRhbGlj
ID0gMTIsCisgICAgICAgIFNhbnNTZXJpZkJvbGRJdGFsaWMgPSAxMywKKyAgICAgICAgTW9ub3Nw
YWNlID0gMTQsCisgICAgICAgIEluaXRpYWwgPSAxNSwKKyAgICAgICAgVGFpbGVkID0gMTYsCisg
ICAgICAgIExvb3BlZCA9IDE3LAorICAgICAgICBTdHJldGNoZWQgPSAxOAorICAgIH07CisgICAg
c3RydWN0IE1hdGhWYXJpYW50QXR0cmlidXRlIHsKKyAgICAgICAgTWF0aFZhcmlhbnQgdmFsdWUg
eyBNYXRoVmFyaWFudDo6Tm9uZSB9OworICAgICAgICBib29sIGRpcnR5IHsgdHJ1ZSB9OworICAg
IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlKGJvb2wmKTsK
KyAgICB2b2lkIGdldFNwZWNpZmllZE1hdGhWYXJpYW50KE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJp
YW50Jik7CisKIHByb3RlY3RlZDoKICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKQEAgLTkxLDEwICsxMjQsMTcgQEAgcHJvdGVjdGVk
OgogICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBMZW5ndGgmKTsKICAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEJvb2xlYW5BdHRyaWJ1dGUmKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIEJvb2xlYW5BdHRyaWJ1dGUgbV9kaXNwbGF5U3R5bGU7CisgICAg
TWF0aFZhcmlhbnRBdHRyaWJ1dGUgbV9tYXRoVmFyaWFudDsKKwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogICAgIHN0YXRpYyBMZW5ndGggcGFy
c2VOdW1iZXJBbmRVbml0KGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgTGVuZ3RoIHBh
cnNlTmFtZWRTcGFjZShjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIE1hdGhWYXJpYW50
IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVW
YWx1ZSk7CiAKICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IDBiNDA3MDcu
LjdiNDJjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsMTAgKzc1LDI0IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEJsb2NrPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQogCitib29sIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6
OmFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKQoreworICAgIHJldHVybiBoYXNUYWdOYW1l
KG1zdHlsZVRhZykgfHwgaGFzVGFnTmFtZShtdGFibGVUYWcpOworfQorCitib29sIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpCit7Cisg
ICAgcmV0dXJuIGhhc1RhZ05hbWUobXN0eWxlVGFnKTsKK30KKwogdm9pZCBNYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGJvb2wgZGlzcGxheVN0eWxlQXR0
cmlidXRlID0gKG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiAoaGFzVGFnTmFtZShtc3R5bGVU
YWcpIHx8IGhhc1RhZ05hbWUobXRhYmxlVGFnKSkpOwotICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRy
aWJ1dGUgPSAobmFtZSA9PSBtYXRodmFyaWFudEF0dHIgJiYgKGhhc1RhZ05hbWUobWF0aFRhZykg
fHwgaGFzVGFnTmFtZShtc3R5bGVUYWcpKSk7CisgICAgYm9vbCBkaXNwbGF5U3R5bGVBdHRyaWJ1
dGUgPSBuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgJiYgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJp
YnV0ZSgpOworICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBuYW1lID09IG1hdGh2YXJp
YW50QXR0ciAmJiBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoZGlzcGxh
eVN0eWxlQXR0cmlidXRlKQorICAgICAgICBtX2Rpc3BsYXlTdHlsZS5kaXJ0eSA9IHRydWU7Cisg
ICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQorICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5
ID0gdHJ1ZTsKICAgICBpZiAoKGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0
dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRo
TUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCmluZGV4IGQyNmFiNWYuLmJkOGVkZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxl
eCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw2ICs0MSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCisg
ICAgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNQ
cmVzZW50YXRpb25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAppbmRleCBmMzZkYmVhLi4wYWIx
NjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFs
ZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsMTIg
KzU0LDMzIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyTWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAordm9pZCBN
YXRoTUxNYXRoRWxlbWVudDo6Z2V0U3BlY2lmaWVkRGlzcGxheVN0eWxlKGJvb2wmIGRpc3BsYXlT
dHlsZSkKK3sKKyAgICBjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIHNwZWNpZmll
ZERpc3BsYXlTdHlsZSA9IGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoZGlzcGxheXN0eWxlQXR0ciwg
bV9kaXNwbGF5U3R5bGUpOworICAgIGlmIChzcGVjaWZpZWREaXNwbGF5U3R5bGUgPT0gQm9vbGVh
blZhbHVlOjpEZWZhdWx0KSB7CisgICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpc3BsYXlzdHlsZSB2
YWx1ZSBvZiB0aGUgPG1hdGg+IGRlcGVuZHMgb24gdGhlIGRpc3BsYXkgYXR0cmlidXRlLCBzbyB3
ZSBwYXJzZSBpdCBoZXJlLgorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXNwbGF5QXR0cik7CisgICAgICAgIGlmICh2
YWx1ZSA9PSAiYmxvY2siKQorICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUudmFsdWUgPSBCb29s
ZWFuVmFsdWU6OlRydWU7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJpbmxpbmUiKQorICAg
ICAgICAgICAgbV9kaXNwbGF5U3R5bGUudmFsdWUgPSBCb29sZWFuVmFsdWU6OkZhbHNlOworICAg
IH0KKyAgICBpZiAobV9kaXNwbGF5U3R5bGUudmFsdWUgIT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0
KQorICAgICAgICBkaXNwbGF5U3R5bGUgPSBtX2Rpc3BsYXlTdHlsZS52YWx1ZSA9PSBCb29sZWFu
VmFsdWU6OlRydWU7Cit9CisKIHZvaWQgTWF0aE1MTWF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
Ci0gICAgaWYgKChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgfHwgbmFtZSA9PSBkaXNwbGF5QXR0
ciB8fCBuYW1lID09IG1hdGh2YXJpYW50QXR0cikgJiYgcmVuZGVyZXIoKSkKKyAgICBib29sIGRp
c3BsYXlTdHlsZUF0dHJpYnV0ZSA9IChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgfHwgbmFtZSA9
PSBkaXNwbGF5QXR0cik7CisgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0g
bWF0aHZhcmlhbnRBdHRyOworICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCisgICAgICAg
IG1fZGlzcGxheVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAgICBpZiAobWF0aFZhcmlhbnRBdHRyaWJ1
dGUpCisgICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSB0cnVlOworICAgIGlmICgoZGlzcGxh
eVN0eWxlQXR0cmlidXRlIHx8IG1hdGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQog
ICAgICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsK
IAotICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgTWF0aE1MTWF0aEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCmluZGV4IDcxZTEyMmQuLjY4Yjky
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1p
bG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEln
YWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKSBmaW5hbDsKIAorICAgIGJvb2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0
ZSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGdldFNwZWNpZmllZERpc3BsYXlT
dHlsZShib29sJikgZmluYWw7CisKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IGZpbmFsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5j
cHAKaW5kZXggMGUzODViMy4uNDc4OTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC03MSw4ICs3MSwxMSBAQCB2b2lkIE1hdGhNTFRleHRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5hbWUgPT0gbWF0aHZhcmlh
bnRBdHRyICYmIHJlbmRlcmVyKCkpCi0gICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1M
U3R5bGVUcmVlKHJlbmRlcmVyKCkpOworICAgIGlmIChuYW1lID09IG1hdGh2YXJpYW50QXR0cikg
eworICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgaWYgKHJlbmRl
cmVyKCkpCisgICAgICAgICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShy
ZW5kZXJlcigpKTsKKyAgICB9CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
CmluZGV4IDBlZDFmNjQuLjliYTk2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBB
bGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWF0aE1M
VGV4dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxNYXRoTUxUZXh0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1
dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiAgICAgTWF0aE1MVGV4dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggMjcxNmMx
Yi4uYWFlMTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9N
YXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUmVuZGVyT2JqZWN0KiBNYXRoTUxTdHlsZTo6
Z2V0TWF0aE1MUGFyZW50Tm9kZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBw
YXJlbnRSZW5kZXJlcjsKIH0KIAotdm9pZCBNYXRoTUxTdHlsZTo6dXBkYXRlU3R5bGVJZk5lZWRl
ZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIG9sZERpc3BsYXlTdHlsZSwgTWF0aFZhcmlh
bnQgb2xkTWF0aFZhcmlhbnQpCit2b2lkIE1hdGhNTFN0eWxlOjp1cGRhdGVTdHlsZUlmTmVlZGVk
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgb2xkRGlzcGxheVN0eWxlLCBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudCBvbGRNYXRoVmFyaWFudCkKIHsKICAgICBpZiAob2xkRGlzcGxheVN0
eWxlICE9IG1fZGlzcGxheVN0eWxlKSB7CiAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91
dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKQEAgLTk4LDU5ICs5OCwxOCBAQCB2b2lkIE1hdGhNTFN0
eWxlOjp1cGRhdGVTdHlsZUlmTmVlZGVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgb2xk
RGlzcGxheVN0eQogICAgIH0KIH0KIAotTWF0aE1MU3R5bGU6Ok1hdGhWYXJpYW50IE1hdGhNTFN0
eWxlOjpwYXJzZU1hdGhWYXJpYW50KGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUp
Ci17Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJub3JtYWwiKQotICAgICAgICByZXR1cm4g
Tm9ybWFsOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9sZCIpCi0gICAgICAgIHJldHVy
biBCb2xkOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaXRhbGljIikKLSAgICAgICAgcmV0
dXJuIEl0YWxpYzsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJvbGQtaXRhbGljIikKLSAg
ICAgICAgcmV0dXJuIEJvbGRJdGFsaWM7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJkb3Vi
bGUtc3RydWNrIikKLSAgICAgICAgcmV0dXJuIERvdWJsZVN0cnVjazsKLSAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gImJvbGQtZnJha3R1ciIpCi0gICAgICAgIHJldHVybiBCb2xkRnJha3R1cjsK
LSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNjcmlwdCIpCi0gICAgICAgIHJldHVybiBTY3Jp
cHQ7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLXNjcmlwdCIpCi0gICAgICAgIHJl
dHVybiBCb2xkU2NyaXB0OwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZnJha3R1ciIpCi0g
ICAgICAgIHJldHVybiBGcmFrdHVyOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2Fucy1z
ZXJpZiIpCi0gICAgICAgIHJldHVybiBTYW5zU2VyaWY7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVl
ID09ICJib2xkLXNhbnMtc2VyaWYiKQotICAgICAgICByZXR1cm4gQm9sZFNhbnNTZXJpZjsKLSAg
ICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYtaXRhbGljIikKLSAgICAgICAgcmV0
dXJuIFNhbnNTZXJpZkl0YWxpYzsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2Vy
aWYtYm9sZC1pdGFsaWMiKQotICAgICAgICByZXR1cm4gU2Fuc1NlcmlmQm9sZEl0YWxpYzsKLSAg
ICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gIm1vbm9zcGFjZSIpCi0gICAgICAgIHJldHVybiBNb25v
c3BhY2U7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJpbml0aWFsIikKLSAgICAgICAgcmV0
dXJuIEluaXRpYWw7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJ0YWlsZWQiKQotICAgICAg
ICByZXR1cm4gVGFpbGVkOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAibG9vcGVkIikKLSAg
ICAgICAgcmV0dXJuIExvb3BlZDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInN0cmV0Y2hl
ZCIpCi0gICAgICAgIHJldHVybiBTdHJldGNoZWQ7Ci0gICAgcmV0dXJuIE5vbmU7Ci19Ci0KIHZv
aWQgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAKICAgICBib29sIG9sZERpc3BsYXlTdHlsZSA9
IG1fZGlzcGxheVN0eWxlOwotICAgIE1hdGhWYXJpYW50IG9sZE1hdGhWYXJpYW50ID0gbV9tYXRo
VmFyaWFudDsKKyAgICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBvbGRNYXRoVmFyaWFudCA9
IG1fbWF0aFZhcmlhbnQ7CiAgICAgYXV0byogcGFyZW50UmVuZGVyZXIgPSBnZXRNYXRoTUxQYXJl
bnROb2RlKHJlbmRlcmVyKTsKICAgICBjb25zdCBNYXRoTUxTdHlsZSogcGFyZW50U3R5bGUgPSBn
ZXRNYXRoTUxTdHlsZShwYXJlbnRSZW5kZXJlcik7CiAKICAgICAvLyBCeSBkZWZhdWx0LCB3ZSBq
dXN0IGluaGVyaXQgdGhlIHN0eWxlIGZyb20gb3VyIHBhcmVudC4KICAgICBtX2Rpc3BsYXlTdHls
ZSA9IGZhbHNlOwotICAgIG1fbWF0aFZhcmlhbnQgPSBOb25lOworICAgIG1fbWF0aFZhcmlhbnQg
PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9uZTsKICAgICBpZiAocGFyZW50U3R5bGUp
IHsKICAgICAgICAgc2V0RGlzcGxheVN0eWxlKHBhcmVudFN0eWxlLT5kaXNwbGF5U3R5bGUoKSk7
CiAgICAgICAgIHNldE1hdGhWYXJpYW50KHBhcmVudFN0eWxlLT5tYXRoVmFyaWFudCgpKTsKQEAg
LTE2MiwxMCArMTIxLDggQEAgdm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
aXM8UmVuZGVyTWF0aE1MTWF0aD4ocmVuZGVyZXIpKQotICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS0+ZWxlbWVudCgpLT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGRpc3BsYXlBdHRyKSA9PSAiYmxvY2siOyAvLyBUaGUgZGVm
YXVsdCBkaXNwbGF5c3R5bGUgb2YgdGhlIDxtYXRoPiBlbGVtZW50IGRlcGVuZHMgb24gaXRzIGRp
c3BsYXkgYXR0cmlidXRlLgotICAgIGVsc2UgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5k
ZXJlcikpCi0gICAgICAgIG1fZGlzcGxheVN0eWxlID0gZmFsc2U7IC8vIFRoZSBkZWZhdWx0IGRp
c3BsYXlzdHlsZSBvZiA8bXRhYmxlPiBpcyBmYWxzZS4KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1M
TWF0aD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAg
ICAgIG1fZGlzcGxheVN0eWxlID0gZmFsc2U7IC8vIFRoZSBkZWZhdWx0IGRpc3BsYXlzdHlsZSBv
ZiA8bWF0aD4gYW5kIDxtdGFibGU+IGlzIGZhbHNlLgogICAgIGVsc2UgaWYgKHBhcmVudFJlbmRl
cmVyKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxGcmFjdGlvbj4ocGFyZW50UmVuZGVy
ZXIpKQogICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBmYWxzZTsgLy8gPG1mcmFjPiBzZXRz
IGRpc3BsYXlzdHlsZSB0byBmYWxzZSB3aXRoaW4gaXRzIG51bWVyYXRvciBhbmQgZGVub21pbmF0
b3IuCkBAIC0xNzcsMjMgKzEzNCwxMSBAQCB2b2lkIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1M
U3R5bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIC8v
IFRoZSBkaXNwbGF5c3R5bGUgYXR0cmlidXRlIG9uIHRoZSA8bWF0aD4sIDxtdGFibGU+IG9yIDxt
c3R5bGU+IGVsZW1lbnRzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgotICAgIGNvbnN0
IGF1dG8qIGVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlciktPmVsZW1l
bnQoKTsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lID0gZWxlbWVudC0+dGFnUU5h
bWUoKTsKLSAgICBpZiAodGFnTmFtZSA9PSBtYXRoVGFnIHx8IHRhZ05hbWUgPT0gbXRhYmxlVGFn
IHx8IHRhZ05hbWUgPT0gbXN0eWxlVGFnKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgbW9kaWZ5IHRo
ZSB2YWx1ZSBvZiBkaXNwbGF5c3R5bGUgaWYgdGhlcmUgaXMgYW4gZXhwbGljaXQgYW5kIHZhbGlk
IGF0dHJpYnV0ZS4KLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlzcGxheXN0eWxlQXR0
cik7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAidHJ1ZSIpCi0gICAgICAgICAgICBt
X2Rpc3BsYXlTdHlsZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVZhbHVlID09
ICJmYWxzZSIpCi0gICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IGZhbHNlOwotICAgIH0KLQot
ICAgIC8vIFRoZSBtYXRodmFyaWFudCBhdHRyaWJ1dGUgb24gdGhlIDxtYXRoPiwgPG1zdHlsZT4g
b3IgdG9rZW4gZWxlbWVudHMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgotICAgIGlm
IChpczxSZW5kZXJNYXRoTUxNYXRoPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyTWF0aE1MVG9rZW4+
KHJlbmRlcmVyKSB8fCB0YWdOYW1lID09IG1zdHlsZVRhZykgewotICAgICAgICBNYXRoVmFyaWFu
dCBtYXRodmFyaWFudCA9IHBhcnNlTWF0aFZhcmlhbnQoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICAgICAgaWYgKG1hdGh2YXJp
YW50ICE9IE5vbmUpCi0gICAgICAgICAgICBtX21hdGhWYXJpYW50ID0gbWF0aHZhcmlhbnQ7Cisg
ICAgLy8gVGhlIGRpc3BsYXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQgYXR0cmlidXRlcyBvdmVycmlk
ZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICBhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4ocmVuZGVyZXIpLT5lbGVtZW50KCk7CisgICAgaWYgKGlzPE1hdGhNTEVsZW1l
bnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQp
LT5nZXRTcGVjaWZpZWREaXNwbGF5U3R5bGUobV9kaXNwbGF5U3R5bGUpOworICAgICAgICBkb3du
Y2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50KS0+Z2V0U3BlY2lmaWVkTWF0aFZhcmlhbnQobV9t
YXRoVmFyaWFudCk7CiAgICAgfQogCiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZChyZW5kZXJlciwg
b2xkRGlzcGxheVN0eWxlLCBvbGRNYXRoVmFyaWFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmgKaW5kZXggMjdlYWM3Ni4uOGY0MjQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShNQVRITUwpCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDMyICs0MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGRp
c3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0eWxlOyB9CiAgICAgdm9pZCBz
ZXREaXNwbGF5U3R5bGUoYm9vbCBkaXNwbGF5U3R5bGUpIHsgbV9kaXNwbGF5U3R5bGUgPSBkaXNw
bGF5U3R5bGU7IH0KIAotICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF0aHZhcmlhbnQgdmFsdWVzIGZy
b20gdGhlIE1hdGhNTCByZWNvbW1lbmRhdGlvbi4KLSAgICAvLyBUaGUgc3BlY2lhbCB2YWx1ZSBu
b25lIG1lYW5zIHRoYXQgbm8gZXhwbGljaXQgbWF0aHZhcmlhbnQgdmFsdWUgaGFzIGJlZW4gc3Bl
Y2lmaWVkLgotICAgIC8vIE5vdGUgdGhhdCB0aGUgbnVtZXJhbCB2YWx1ZXMgYXJlIGltcG9ydGFu
dCBmb3IgdGhlIGNvbXB1dGF0aW9uIHBlcmZvcm1lZCBpbiB0aGUgbWF0aFZhcmlhbnQgZnVuY3Rp
b24gb2YgUmVuZGVyTWF0aE1MVG9rZW4sIGRvIG5vdCBjaGFuZ2UgdGhlbSEKLSAgICBlbnVtIE1h
dGhWYXJpYW50IHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIE5vcm1hbCA9IDEsCi0gICAg
ICAgIEJvbGQgPSAyLAotICAgICAgICBJdGFsaWMgPSAzLAotICAgICAgICBCb2xkSXRhbGljID0g
NCwKLSAgICAgICAgU2NyaXB0ID0gNSwKLSAgICAgICAgQm9sZFNjcmlwdCA9IDYsCi0gICAgICAg
IEZyYWt0dXIgPSA3LAotICAgICAgICBEb3VibGVTdHJ1Y2sgPSA4LAotICAgICAgICBCb2xkRnJh
a3R1ciA9IDksCi0gICAgICAgIFNhbnNTZXJpZiA9IDEwLAotICAgICAgICBCb2xkU2Fuc1Nlcmlm
ID0gMTEsCi0gICAgICAgIFNhbnNTZXJpZkl0YWxpYyA9IDEyLAotICAgICAgICBTYW5zU2VyaWZC
b2xkSXRhbGljID0gMTMsCi0gICAgICAgIE1vbm9zcGFjZSA9IDE0LAotICAgICAgICBJbml0aWFs
ID0gMTUsCi0gICAgICAgIFRhaWxlZCA9IDE2LAotICAgICAgICBMb29wZWQgPSAxNywKLSAgICAg
ICAgU3RyZXRjaGVkID0gMTgKLSAgICB9OwotICAgIE1hdGhWYXJpYW50IG1hdGhWYXJpYW50KCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRoVmFyaWFudDsgfQotICAgIHZvaWQgc2V0TWF0aFZhcmlhbnQo
TWF0aFZhcmlhbnQgbWF0aHZhcmlhbnQpIHsgbV9tYXRoVmFyaWFudCA9IG1hdGh2YXJpYW50OyB9
CisgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aFZhcmlhbnQoKSBjb25zdCB7IHJl
dHVybiBtX21hdGhWYXJpYW50OyB9CisgICAgdm9pZCBzZXRNYXRoVmFyaWFudChNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCkgeyBtX21hdGhWYXJpYW50ID0gbWF0aHZhcmlh
bnQ7IH0KIAogICAgIHZvaWQgcmVzb2x2ZU1hdGhNTFN0eWxlKFJlbmRlck9iamVjdCopOwogICAg
IHN0YXRpYyB2b2lkIHJlc29sdmVNYXRoTUxTdHlsZVRyZWUoUmVuZGVyT2JqZWN0Kik7CkBAIC03
NCwxMSArNTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGlzcGxheVN0eWxlQWx3YXlzRmFs
c2UoUmVuZGVyT2JqZWN0Kik7CiAgICAgY29uc3QgTWF0aE1MU3R5bGUqIGdldE1hdGhNTFN0eWxl
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpOwogICAgIFJlbmRlck9iamVjdCogZ2V0TWF0aE1MUGFy
ZW50Tm9kZShSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWQoUmVu
ZGVyT2JqZWN0KiwgYm9vbCwgTWF0aFZhcmlhbnQpOwotICAgIE1hdGhWYXJpYW50IHBhcnNlTWF0
aFZhcmlhbnQoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CisgICAgdm9pZCB1
cGRhdGVTdHlsZUlmTmVlZGVkKFJlbmRlck9iamVjdCosIGJvb2wsIE1hdGhNTEVsZW1lbnQ6Ok1h
dGhWYXJpYW50KTsKIAogICAgIGJvb2wgbV9kaXNwbGF5U3R5bGUgeyBmYWxzZSB9OwotICAgIE1h
dGhWYXJpYW50IG1fbWF0aFZhcmlhbnQgeyBOb25lIH07CisgICAgTWF0aE1MRWxlbWVudDo6TWF0
aFZhcmlhbnQgbV9tYXRoVmFyaWFudCB7IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb25l
IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDgyYzBkYTYuLjAzOTg4OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoTUFUSE1MKQogCisjaW5jbHVkZSAiTWF0
aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJ
bmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtMjgxLDM3ICsyODIsMzcgQEAg
Y29uc3QgVUNoYXIzMiBtYXRoQm9sZFBpU3ltYm9sID0gMHgxRDZFMTsKIC8vIENoYXJhY3RlcnMg
d2l0aG91dCBhIHZhbGlkIG1hcHBpbmcgb3IgdmFsaWQgYU1hdGh2YXIgdmFsdWUgYXJlIHJldHVy
bmVkCiAvLyB1bmFsdGVyZWQuCiAvLyBDaGFyYWN0ZXJzIGFscmVhZHkgaW4gdGhlIG1hdGhlbWF0
aWNhbCBibG9ja3MgKG9yIGFyZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbnMpIGFyZSBuZXZlciB0cmFu
c2Zvcm1lZC4KLS8vIEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFyaWFudCBhcmUgc3BlY2lm
aWVkIGluIE1hdGhNTFN0eWxlLmgKKy8vIEFjY2VwdGFibGUgdmFsdWVzIGZvciBtYXRodmFyaWFu
dCBhcmUgc3BlY2lmaWVkIGluIE1hdGhNTEVsZW1lbnQuaAogLy8gVGhlIHRyYW5zZm9ybWFibGUg
Y2hhcmFjdGVycyBjYW4gYmUgZm91bmQgYXQ6CiAvLyBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hp
dmVzL1B1YmxpYy93d3ctbWF0aC8yMDEzU2VwLzAwMTIuaHRtbCBhbmQKIC8vIGh0dHBzOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL01hdGhlbWF0aWNhbF9BbHBoYW51bWVyaWNfU3ltYm9scwotc3Rh
dGljIFVDaGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9pbnQsIE1hdGhNTFN0eWxlOjpN
YXRoVmFyaWFudCBtYXRodmFyaWFudCkKK3N0YXRpYyBVQ2hhcjMyIG1hdGhWYXJpYW50KFVDaGFy
MzIgY29kZVBvaW50LCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCkKIHsK
LSAgICBBU1NFUlQobWF0aHZhcmlhbnQgPj0gTWF0aE1MU3R5bGU6Ok5vcm1hbCAmJiBtYXRodmFy
aWFudCA8PSBNYXRoTUxTdHlsZTo6U3RyZXRjaGVkKTsKKyAgICBBU1NFUlQobWF0aHZhcmlhbnQg
Pj0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vcm1hbCAmJiBtYXRodmFyaWFudCA8PSBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6U3RyZXRjaGVkKTsKIAotICAgIGlmIChtYXRodmFy
aWFudCA9PSBNYXRoTUxTdHlsZTo6Tm9ybWFsKQorICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gY29kZVBvaW50
OyAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCiAKICAgICAvLyBFeGNlcHRpb25hbCBjaGFyYWN0ZXJz
IHdpdGggYXQgbW9zdCBvbmUgcG9zc2libGUgdHJhbnNmb3JtYXRpb24uCiAgICAgaWYgKGNvZGVQ
b2ludCA9PSBob2xlR3JlZWtVcHBlclRoZXRhKQogICAgICAgICByZXR1cm4gY29kZVBvaW50OyAv
LyBOb3RoaW5nIGF0IHRoaXMgY29kZSBwb2ludCBpcyB0cmFuc2Zvcm1lZAogICAgIGlmIChjb2Rl
UG9pbnQgPT0gZ3JlZWtMZXR0ZXJEaWdhbW1hKSB7Ci0gICAgICAgIGlmIChtYXRodmFyaWFudCA9
PSBNYXRoTUxTdHlsZTo6Qm9sZCkKKyAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVs
ZW1lbnQ6Ok1hdGhWYXJpYW50OjpCb2xkKQogICAgICAgICAgICAgcmV0dXJuIG1hdGhCb2xkQ2Fw
aXRhbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnQ7CiAgICAgfQogICAgIGlmIChj
b2RlUG9pbnQgPT0gZ3JlZWtTbWFsbExldHRlckRpZ2FtbWEpIHsKLSAgICAgICAgaWYgKG1hdGh2
YXJpYW50ID09IE1hdGhNTFN0eWxlOjpCb2xkKQorICAgICAgICBpZiAobWF0aHZhcmlhbnQgPT0g
TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkJvbGQpCiAgICAgICAgICAgICByZXR1cm4gbWF0
aEJvbGRTbWFsbERpZ2FtbWE7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnQ7CiAgICAgfQogICAg
IGlmIChjb2RlUG9pbnQgPT0gbGF0aW5TbWFsbExldHRlckRvdGxlc3NJKSB7Ci0gICAgICAgIGlm
IChtYXRodmFyaWFudCA9PSBNYXRoTUxTdHlsZTo6SXRhbGljKQorICAgICAgICBpZiAobWF0aHZh
cmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYykKICAgICAgICAgICAg
IHJldHVybiBtYXRoSXRhbGljU21hbGxEb3RsZXNzSTsKICAgICAgICAgcmV0dXJuIGNvZGVQb2lu
dDsKICAgICB9CiAgICAgaWYgKGNvZGVQb2ludCA9PSBsYXRpblNtYWxsTGV0dGVyRG90bGVzc0op
IHsKLSAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTFN0eWxlOjpJdGFsaWMpCisgICAg
ICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6SXRhbGlj
KQogICAgICAgICAgICAgcmV0dXJuIG1hdGhJdGFsaWNTbWFsbERvdGxlc3NKOwogICAgICAgICBy
ZXR1cm4gY29kZVBvaW50OwogICAgIH0KQEAgLTM4OSwxOSArMzkwLDE5IEBAIHN0YXRpYyBVQ2hh
cjMyIG1hdGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZhcmlh
bnQgbWF0aHZhcmlhCiAgICAgICAgIC8vIEZvciBleGFtcGxlIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGRvdWJsZSBzdHJ1Y2sgbnVtYmVyIHJhbmdlIGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhl
IGVuZCBvZiB0aGUgYm9sZCBudW1iZXIgcmFuZ2UuCiAgICAgICAgIC8vIG11bHRpcGxpZXIgcmVw
cmVzZW50cyB0aGUgb3JkZXIgb2YgdGhlIHNlcXVlbmNlcyByZWxhdGl2ZSB0byB0aGUgZmlyc3Qg
b25lLgogICAgICAgICBzd2l0Y2ggKG1hdGh2YXJpYW50KSB7Ci0gICAgICAgIGNhc2UgTWF0aE1M
U3R5bGU6OkJvbGQ6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkJv
bGQ6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMDsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE1hdGhNTFN0eWxlOjpEb3VibGVTdHJ1Y2s6CisgICAgICAgIGNhc2UgTWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQ6OkRvdWJsZVN0cnVjazoKICAgICAgICAgICAgIG11bHRpcGxp
ZXIgPSAxOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6OlNh
bnNTZXJpZjoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6U2Fuc1Nl
cmlmOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDI7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZFNhbnNTZXJpZjoKKyAgICAgICAgY2FzZSBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZFNhbnNTZXJpZjoKICAgICAgICAgICAgIG11bHRp
cGxpZXIgPSAzOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6
Ok1vbm9zcGFjZToKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6TW9u
b3NwYWNlOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKQEAgLTQxNiwxOSArNDE3LDE5IEBAIHN0YXRpYyBVQ2hhcjMyIG1h
dGhWYXJpYW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZhcmlhbnQgbWF0
aHZhcmlhCiAgICAgfQogICAgIGlmICh2YXJUeXBlID09IEdyZWVraXNoKSB7CiAgICAgICAgIHN3
aXRjaCAobWF0aHZhcmlhbnQpIHsKLSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZDoKKyAg
ICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZDoKICAgICAgICAgICAg
IG11bHRpcGxpZXIgPSAwOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1M
U3R5bGU6Okl0YWxpYzoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6
SXRhbGljOgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDE7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNYXRoTUxTdHlsZTo6Qm9sZEl0YWxpYzoKKyAgICAgICAgY2FzZSBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Qm9sZEl0YWxpYzoKICAgICAgICAgICAgIG11bHRpcGxp
ZXIgPSAyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5bGU6OkJv
bGRTYW5zU2VyaWY6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkJv
bGRTYW5zU2VyaWY6CiAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMzsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpTYW5zU2VyaWZCb2xkSXRhbGljOgorICAg
ICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpTYW5zU2VyaWZCb2xkSXRhbGlj
OgogICAgICAgICAgICAgbXVsdGlwbGllciA9IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKQEAgLTQ0NiwyMyArNDQ3LDIzIEBAIHN0YXRpYyBVQ2hhcjMyIG1hdGhWYXJp
YW50KFVDaGFyMzIgY29kZVBvaW50LCBNYXRoTUxTdHlsZTo6TWF0aFZhcmlhbnQgbWF0aHZhcmlh
CiAgICAgICAgIGNvbnN0IE1hdGhWYXJpYW50TWFwcGluZyogbWFwVGFibGU7CiAgICAgICAgIHNp
emVfdCB0YWJsZUxlbmd0aDsKICAgICAgICAgc3dpdGNoIChtYXRodmFyaWFudCkgewotICAgICAg
ICBjYXNlIE1hdGhNTFN0eWxlOjpJbml0aWFsOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50OjpJbml0aWFsOgogICAgICAgICAgICAgbWFwVGFibGUgPSBhcmFiaWNJbml0
aWFsTWFwVGFibGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgo
YXJhYmljSW5pdGlhbE1hcFRhYmxlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE1hdGhNTFN0eWxlOjpUYWlsZWQ6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZh
cmlhbnQ6OlRhaWxlZDoKICAgICAgICAgICAgIG1hcFRhYmxlID0gYXJhYmljVGFpbGVkTWFwVGFi
bGU7CiAgICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoYXJhYmljVGFp
bGVkTWFwVGFibGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0aE1MU3R5
bGU6OlN0cmV0Y2hlZDoKKyAgICAgICAgY2FzZSBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6
U3RyZXRjaGVkOgogICAgICAgICAgICAgbWFwVGFibGUgPSBhcmFiaWNTdHJldGNoZWRNYXBUYWJs
ZTsKICAgICAgICAgICAgIHRhYmxlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChhcmFiaWNTdHJl
dGNoZWRNYXBUYWJsZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXRoTUxT
dHlsZTo6TG9vcGVkOgorICAgICAgICBjYXNlIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpM
b29wZWQ6CiAgICAgICAgICAgICBtYXBUYWJsZSA9IGFyYWJpY0xvb3BlZE1hcFRhYmxlOwogICAg
ICAgICAgICAgdGFibGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGFyYWJpY0xvb3BlZE1hcFRh
YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGhNTFN0eWxlOjpEb3Vi
bGVTdHJ1Y2s6CisgICAgICAgIGNhc2UgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6OkRvdWJs
ZVN0cnVjazoKICAgICAgICAgICAgIG1hcFRhYmxlID0gYXJhYmljRG91YmxlTWFwVGFibGU7CiAg
ICAgICAgICAgICB0YWJsZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoYXJhYmljRG91YmxlTWFw
VGFibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NzIsOSArNDczLDkgQEAgc3RhdGljIFVD
aGFyMzIgbWF0aFZhcmlhbnQoVUNoYXIzMiBjb2RlUG9pbnQsIE1hdGhNTFN0eWxlOjpNYXRoVmFy
aWFudCBtYXRodmFyaWEKICAgICAgICAgbmV3Q2hhciA9IE1hdGhWYXJpYW50TWFwcGluZ1NlYXJj
aChjb2RlUG9pbnQsIG1hcFRhYmxlLCB0YWJsZUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gTXVzdCBiZSBMYXRpbgotICAgICAgICBpZiAobWF0aHZhcmlhbnQgPiBNYXRoTUxTdHls
ZTo6TW9ub3NwYWNlKQorICAgICAgICBpZiAobWF0aHZhcmlhbnQgPiBNYXRoTUxFbGVtZW50OjpN
YXRoVmFyaWFudDo6TW9ub3NwYWNlKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsgLy8g
TGF0aW4gZG9lc24ndCBzdXBwb3J0IHRoZSBBcmFiaWMgbWF0aHZhcmlhbnRzCi0gICAgICAgIG11
bHRpcGxpZXIgPSBtYXRodmFyaWFudCAtIDI7CisgICAgICAgIG11bHRpcGxpZXIgPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1hdGh2YXJpYW50KSAtIDI7CiAgICAgICAgIC8vIFRoaXMgaXMgcG9zc2libGUg
YmVjYXVzZSB0aGUgdmFsdWVzIGZvciBOU19NQVRITUxfTUFUSFZBUklBTlRfKiBhcmUgY2hvc2Vu
IHRvIGNvaW5jaWRlIHdpdGggdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBlbmNvZGVkIG1hdGh2YXJp
YW50IGNoYXJhY3RlcnMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZWlyIHVuaWNvZGUgYmxvY2sgKGxl
c3MgYW4gb2Zmc2V0IHRvIGF2b2lkIE5vbmUgYW5kIE5vcm1hbCB2YXJpYW50cykKICAgICAgICAg
Ly8gU2VlIHRoZSBOdW1iZXIgY2FzZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGZvbGxvd2lu
ZyBjYWxjdWxhdGlvbgogICAgICAgICB0ZW1wQ2hhciA9IGJhc2VDaGFyICsgbWF0aEJvbGRVcHBl
ckEgKyBtdWx0aXBsaWVyICogKG1hdGhJdGFsaWNVcHBlckEgLSBtYXRoQm9sZFVwcGVyQSk7CkBA
IC01MjMsOSArNTI0LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlh
bnRHbHlwaCgpCiAgICAgQXRvbWljU3RyaW5nIHRleHRDb250ZW50ID0gZWxlbWVudCgpLnRleHRD
b250ZW50KCkuc3RyaXBXaGl0ZVNwYWNlKCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAgICAgaWYg
KHRleHRDb250ZW50Lmxlbmd0aCgpID09IDEpIHsKICAgICAgICAgVUNoYXIzMiBjb2RlUG9pbnQg
PSB0ZXh0Q29udGVudFswXTsKLSAgICAgICAgTWF0aE1MU3R5bGU6Ok1hdGhWYXJpYW50IG1hdGh2
YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsKLSAgICAgICAgaWYgKG1hdGh2
YXJpYW50ID09IE1hdGhNTFN0eWxlOjpOb25lKQotICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0
b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MU3R5bGU6
Okl0YWxpYyA6IE1hdGhNTFN0eWxlOjpOb3JtYWw7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6Ok1h
dGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsKKyAg
ICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb25l
KQorICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShNYXRo
TUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYyA6IE1h
dGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAgICAgICAgIFVDaGFyMzIgdHJhbnNm
b3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9pbnQsIG1hdGh2YXJpYW50KTsKICAg
ICAgICAgaWYgKHRyYW5zZm9ybWVkQ29kZVBvaW50ICE9IGNvZGVQb2ludCkKICAgICAgICAgICAg
IG1fbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JD
aGFyYWN0ZXIodHJhbnNmb3JtZWRDb2RlUG9pbnQsICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSk7Ci0tIAoyLjguMQoK
</data>
<flag name="review"
          id="307961"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>