<?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>113273</bug_id>
          
          <creation_ts>2013-03-25 21:43:51 -0700</creation_ts>
          <short_desc>Refactoring: Replace Element::disabled and isEnabledFormControl with isDisabledFormControl</short_desc>
          <delta_ts>2013-03-28 11:37:01 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84635</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Falkenhagen">falken</reporter>
          <assigned_to name="Matt Falkenhagen">falken</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>jdiggs</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>863343</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-25 21:43:51 -0700</bug_when>
    <thetext>Continuing from bug 112993 and bug 112085. Element::disabled is for form controls, and Element::isEnabledFormControl is redundant with Element::disabled, so replace them with a single function Element::isDisabledFormControl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863350</commentid>
    <comment_count>1</comment_count>
      <attachid>194998</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-25 21:51:02 -0700</bug_when>
    <thetext>Created attachment 194998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863359</commentid>
    <comment_count>2</comment_count>
      <attachid>194998</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-25 22:06:49 -0700</bug_when>
    <thetext>Comment on attachment 194998
Patch

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

&gt; Source/WebCore/html/HTMLFormControlElement.h:67
&gt; +    virtual bool isDisabledFormControl() const;

It&apos;s time to add OVERRIDE.

&gt; Source/WebCore/html/HTMLOptGroupElement.h:-48
&gt; -    virtual bool isEnabledFormControl() const OVERRIDE { return !disabled(); }

I feel it worth having isEnabledFormControl() as a inlined shortcut  of !isDisabledFormControl().
Doing !isDisabledFormControl() feels like a confusing double-negative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863371</commentid>
    <comment_count>3</comment_count>
      <attachid>194998</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-03-25 22:34:11 -0700</bug_when>
    <thetext>Comment on attachment 194998
Patch

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

&gt; Source/WebCore/dom/Element.h:561
&gt; +    virtual bool isDisabledFormControl() const;

nit: If you follow the terminology in the standard, this should be called &quot;isActuallyDisabled.&quot;  http://www.whatwg.org/specs/web-apps/current-work/multipage/common-idioms.html#concept-element-disabled
&quot;actually disabled&quot; is applied to non-form controls too like &lt;menuitem&gt;.

You can ignore this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863374</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-25 22:43:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/html/HTMLOptGroupElement.h:-48
&gt; &gt; -    virtual bool isEnabledFormControl() const OVERRIDE { return !disabled(); }
&gt; 
&gt; I feel it worth having isEnabledFormControl() as a inlined shortcut  of !isDisabledFormControl().
&gt; Doing !isDisabledFormControl() feels like a confusing double-negative.

I think isEnabledFormControl() feels confusing since it returns true for elements that are not form controls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863375</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-25 22:45:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; &gt; Source/WebCore/html/HTMLOptGroupElement.h:-48
&gt; &gt; &gt; -    virtual bool isEnabledFormControl() const OVERRIDE { return !disabled(); }
&gt; &gt; 
&gt; &gt; I feel it worth having isEnabledFormControl() as a inlined shortcut  of !isDisabledFormControl().
&gt; &gt; Doing !isDisabledFormControl() feels like a confusing double-negative.
&gt; 
&gt; I think isEnabledFormControl() feels confusing since it returns true for elements that are not form controls.
Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864962</commentid>
    <comment_count>6</comment_count>
      <attachid>195428</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-27 16:16:42 -0700</bug_when>
    <thetext>Created attachment 195428
add OVERRIDE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865037</commentid>
    <comment_count>7</comment_count>
      <attachid>195428</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-03-27 17:20:10 -0700</bug_when>
    <thetext>Comment on attachment 195428
add OVERRIDE

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

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:389
&gt;      RefPtr&lt;HTMLInputElement&gt; input(static_cast&lt;HTMLInputElement*&gt;(shadowHost()));
&gt; -    if (!input || input-&gt;isDisabledOrReadOnly())
&gt;          return;

Looks very wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865071</commentid>
    <comment_count>8</comment_count>
      <attachid>195452</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-27 18:09:35 -0700</bug_when>
    <thetext>Created attachment 195452
fix bad merging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865078</commentid>
    <comment_count>9</comment_count>
      <attachid>195452</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-03-27 18:24:16 -0700</bug_when>
    <thetext>Comment on attachment 195452
fix bad merging

looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865659</commentid>
    <comment_count>10</comment_count>
      <attachid>195452</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 11:36:55 -0700</bug_when>
    <thetext>Comment on attachment 195452
fix bad merging

Clearing flags on attachment: 195452

Committed r147135: &lt;http://trac.webkit.org/changeset/147135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865661</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 11:37:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194998</attachid>
            <date>2013-03-25 21:51:02 -0700</date>
            <delta_ts>2013-03-27 16:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113273-20130326134645.patch</filename>
            <type>text/plain</type>
            <size>65345</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQyOTRlNWE2Nzc1OWRj
MDg5N2Q0M2Y1YTk3MTllZjM3MmEyOTNkOS4uMWRiM2EwM2IxMDMyMTJhMWQ5YzAyY2M2ODBkYTE5
YTNmZWViZjg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAxMy0wMy0yNSAgTWF0
dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Jp
bmc6IFJlcGxhY2UgRWxlbWVudDo6ZGlzYWJsZWQgYW5kIGlzRW5hYmxlZEZvcm1Db250cm9sIHdp
dGggaXNEaXNhYmxlZEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMyNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbGVtZW50OjpkaXNhYmxlZCBpcyBhYm91dCBmb3JtIGNvbnRyb2xz
IGFuZCBFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBpcyByZWR1bmRhbnQg
d2l0aCBpdCwgc28gcmVwbGFjZSB0aGVtIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24KKyAgICAgICAg
RWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
dGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUxpc3RCb3g6OmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3Vz
QXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmlzRW5hYmxlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
Y3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2wpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNEaXNhYmxlZEZvcm1Db250cm9sKTogQWRkIGhlbHBlciBmdW5jdGlvbiBmb3IgY29u
dmVuaWVuY2UuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0dlc3R1cmVFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAqIGh0bWwv
QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lckRpc2FibGVkKToKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpET01Gb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVu
dDo6aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTWF0Y2hpbmdFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzdXBwb3J0c0Zv
Y3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6aXNEaXNhYmxlZE9yUmVhZE9ubHkpOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1N1
Y2Nlc3NmdWxTdWJtaXRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9wdEdyb3VwRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50Lmg6CisgICAgICAgIChIVE1MT3B0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRW
YWxpZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojps
aXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6b3B0aW9uQXRJbmRleCk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZh
dGVFdmVudCk6CisgICAgICAgICogaHRtbC9SZXNldElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNldElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAg
ICogaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5w
dXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1
bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnVwZGF0ZUltYWdlKToKKyAgICAgICAg
KiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0VuYWJsZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aXNFbmFibGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpnZXRNZWRpYVVJUGFydFN0YXRlRmxhZ3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hY1NoYXJlZC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjU2hh
cmVkOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjU2hhcmVkOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorCiAyMDEzLTAzLTI1ICBBbmRyZXkgS29z
eWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1Rp
bWVsaW5lXSBzZXQgZ2x1ZSByZWNvcmRzIG1vZGUgb2ZmIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IGM3MmE2MmI3N2ExODFkZmUwYzU2OWM4NjNiNDA0NjBjN2Iw
Mzc0ZDIuLmFkZDY5MzE4NzQyY2Y3NGYyNTUyNTk2ZjAzZmI1ZjExMjZiY2ExNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAzLTI1ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3Rvcmlu
ZzogUmVwbGFjZSBFbGVtZW50OjpkaXNhYmxlZCBhbmQgaXNFbmFibGVkRm9ybUNvbnRyb2wgd2l0
aCBpc0Rpc2FibGVkRm9ybUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVsZW1lbnQ6OmRpc2FibGVkIGlzIGFib3V0IGZvcm0gY29udHJvbHMg
YW5kIEVsZW1lbnQ6OmlzRW5hYmxlZEZvcm1Db250cm9sCisgICAgICAgIGlzIHJlZHVuZGFudCB3
aXRoIGl0LCBzbyByZXBsYWNlIHRoZW0gd2l0aCBhIHNpbmdsZSBmdW5jdGlvbgorICAgICAgICBF
bGVtZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsVHJhbnNmb3JtRGF0YTo6ZmluZFBhc3N3b3JkRm9ybUZpZWxkcyk6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RE9NU3VwcG9ydDo6aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OklucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBvcHVwKToKKwogMjAxMy0wMy0yMiAgTmlt
YSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkBibGFja2JlcnJ5LmNvbT4KIAogICAgICAgICBb
QmxhY2tCZXJyeV0gQnVpbGQgZml4IGluIElucHV0SGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCAxOGJmNTRiY2FiZGYxNWQ4ZWIwNGQ3ZjQ0MDIzMWYxNTM5M2U1MTQ0Li44OWRj
OTYzNzYxNjZlYWVmOTU4ZDlkZTZhZWRjOGZiOGJhNjA0MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTI1ICBNYXR0IEZhbGtlbmhhZ2VuICA8
ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvcmluZzogUmVwbGFjZSBFbGVt
ZW50OjpkaXNhYmxlZCBhbmQgaXNFbmFibGVkRm9ybUNvbnRyb2wgd2l0aCBpc0Rpc2FibGVkRm9y
bUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVsZW1lbnQ6OmRpc2FibGVkIGlzIGFib3V0IGZvcm0gY29udHJvbHMgYW5kIEVsZW1lbnQ6Omlz
RW5hYmxlZEZvcm1Db250cm9sCisgICAgICAgIGlzIHJlZHVuZGFudCB3aXRoIGl0LCBzbyByZXBs
YWNlIHRoZW0gd2l0aCBhIHNpbmdsZSBmdW5jdGlvbgorICAgICAgICBFbGVtZW50Ojppc0Rpc2Fi
bGVkRm9ybUNvbnRyb2wuCisKKyAgICAgICAgKiBzcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUNvbnRyb2xFbGVtZW50Ojppc0VuYWJsZWQpOgor
ICAgICAgICAqIHNyYy9XZWJPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
T3B0aW9uRWxlbWVudDo6aXNFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2ViUGFzc3dvcmRGb3Jt
VXRpbHMuY3BwOgorICAgICAgICAoV2ViS2l0OjpmaW5kUGFzc3dvcmRGb3JtRmllbGRzKToKKyAg
ICAgICAgKiBzcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcDoKKyAgICAgICAgKEhUTUxOYW1l
czo6ZmluZFN1aXRhYmxlU2VhcmNoSW5wdXRFbGVtZW50KToKKyAgICAgICAgKEhUTUxOYW1lczo6
YnVpbGRTZWFyY2hTdHJpbmcpOgorCiAyMDEzLTAzLTI1ICBBbGV4ZWkgRmlsaXBwb3YgIDxhbHBo
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb250cyByZWZhY3Rvcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDgxMzExYzI1OGYwMjExNjBlMTU2NjY2MzgwMzBhZWI0Nzc0
NDcwZmEuLjQ5YWM3ZTAwMmEwMjYzOTQxNjA3ZjliZDY2NmYwYTVhZGI3YmFkYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wMy0yNSAgTWF0dCBGYWxrZW5oYWdlbiAg
PGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlcGxhY2UgRWxl
bWVudDo6ZGlzYWJsZWQgYW5kIGlzRW5hYmxlZEZvcm1Db250cm9sIHdpdGggaXNEaXNhYmxlZEZv
cm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTMyNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbGVtZW50OjpkaXNhYmxlZCBpcyBhYm91dCBmb3JtIGNvbnRyb2xzIGFuZCBFbGVtZW50Ojpp
c0VuYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBpcyByZWR1bmRhbnQgd2l0aCBpdCwgc28gcmVw
bGFjZSB0aGVtIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24KKyAgICAgICAgRWxlbWVudDo6aXNEaXNh
YmxlZEZvcm1Db250cm9sLgorCisgICAgICAgICogRE9NSFRNTENsYXNzZXMuY3BwOgorICAgICAg
ICAoRE9NSFRNTElucHV0RWxlbWVudDo6ZGlzYWJsZWQpOgorCiAyMDEzLTAzLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBzZWNvbmQgcGFydCBvZiB0
aGUgYnVpbGQgZml4IGZvciByMTQ2NzAyLiBUaGlzIHNob3VsZCBkbyBpdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5k
ZXggNDc5NTg0OWJmMDRmMDQxM2UzZjgyZTY3ODE2NzQ0NDA5MzlkNzYyZC4uOWM0OTcwZWRiYTZh
ZDE2Yzg5OWFjNzJkZTM1MTA4MGZkYjJiYzk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3ROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgcmV0dXJuICF0b0hUTUxTZWxlY3RFbGVtZW50KHNlbGVjdE5vZGUpLT5kaXNh
YmxlZCgpOworICAgIHJldHVybiAhdG9IVE1MU2VsZWN0RWxlbWVudChzZWxlY3ROb2RlKS0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFk
ZENoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggMzA3NGYxZmNlYjdjMmMxODdj
YTNiYjI2YWQ3M2FhYmI4NzM4OWViOC4uZDcwOTMyYzMwM2JiMzRlY2RlYWZjMDc3NDEyMjNiYTcz
YmQyNDk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTEzOSwxMSArMTM5LDExIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkg
Y29uc3QKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fb3B0aW9uRWxlbWVudC0+ZGlz
YWJsZWQoKSkKKyAgICBpZiAobV9vcHRpb25FbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBz
ZWxlY3RFbGVtZW50ID0gbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0
RWxlbWVudCAmJiBzZWxlY3RFbGVtZW50LT5kaXNhYmxlZCgpKQorICAgIGlmIChzZWxlY3RFbGVt
ZW50ICYmIHNlbGVjdEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5kZXggMDVh
NTYzMjFjYWJmYmVmODQ4MDBmODFhZGJkZDU5NjA5MGRmZGNiNi4uOTk0YTMzNDY4MTA1ZDNlMDc5
ZjcxMDIwZTkwNjZiZDQyZDg5MTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtOTIsNyArOTIsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdAog
ICAgIGlmICghbm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9F
bGVtZW50KG5vZGUoKSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuICF0b0Vs
ZW1lbnQobm9kZSgpKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eU1lbnVMaXN0OjpkaWRVcGRhdGVBY3RpdmVPcHRpb24oaW50IG9wdGlvbkluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwCmluZGV4IDQ4MGUzNTcyNmEzOTY2ZGE4YjdiMTZlOTU4MDkx
OTNkN2JlZDIwY2UuLmNjNjJhMWFmMDZkZTY0YTM5ODRlNmM3ODc1ZTQ1OWU0ZTg3NzA1NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRWxlbWVudCogQWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uOjphY3Rpb25FbGVtZW50KCkgY29uc3QKICAgICAKIGJvb2wg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc0VuYWJsZWQoKSBjb25zdAogewotICAgIC8v
IGRpc2FibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgPHNlbGVjdD4gZWxlbWVudCBp
cyBkaXNhYmxlZCwKKyAgICAvLyBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSByZXR1cm5zIHRydWUg
aWYgdGhlIHBhcmVudCA8c2VsZWN0PiBlbGVtZW50IGlzIGRpc2FibGVkLAogICAgIC8vIHdoaWNo
IHdlIGRvbid0IHdhbnQuCiAgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dCo+KG1fZWxlbWVudC5nZXQoKSktPm93bkVsZW1lbnREaXNhYmxlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAppbmRleCBhNWM2ZjExODk4OGRjODQwNGQ0ZDM1ZjMyNmIyMzUyMDE5YzNiY2Q3Li44NDJm
OGEzOWEyODYyODQwNDQxOWVhNjNiYjRjZWVhMTZlZDcwOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApA
QCAtNTk4LDcgKzU5OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxl
ZCgpIGNvbnN0CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKS0+aXNFbmFibGVk
Rm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gIXRvRWxlbWVudChub2RlKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5kZXRl
cm1pbmF0ZSgpIGNvbnN0CkBAIC05MDksNyArOTA5LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFjdGlvbkVsZW1lbnQoKSBjb25zdAogCiAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoIWlucHV0LT5k
aXNhYmxlZCgpICYmIChpc0NoZWNrYm94T3JSYWRpbygpIHx8IGlucHV0LT5pc1RleHRCdXR0b24o
KSkpCisgICAgICAgIGlmICghaW5wdXQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIChpc0No
ZWNrYm94T3JSYWRpbygpIHx8IGlucHV0LT5pc1RleHRCdXR0b24oKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gaW5wdXQ7CiAgICAgfSBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKGJ1dHRvblRhZykp
CiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CkBAIC0xNzYwLDcgKzE3NjAsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmICF0b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9s
KCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbChub2RlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIG5vZGUtPnN1cHBvcnRzRm9jdXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZjU0ODNiMGU4Njg2ODBjMGY1OTdiZjA5MGY0
NDc4N2Q5ZDRhOGRiOS4uOGVmZTNlYjc5MTJhOGVmNWY4ZWVjZjkwMmM0YWU4YmNhNmY3YjYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTYwNyw3ICs2MDcsNyBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFNpYgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VuYWJsZWQ6CiAgICAgICAgICAgICBpZiAoZWxlbWVudCAm
JiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGlvblRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFBhZ2VN
ZWRpYToKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCkg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCk7CkBAIC02MTYsNyArNjE2
LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50
ICYmIGVsZW1lbnQtPmlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKTsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRGlzYWJsZWQ6CiAgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiAoZWxl
bWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlv
blRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvUmVhZE9ubHk6CiAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LT5tYXRjaGVzUmVhZE9ubHlQc2V1ZG9D
bGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGI4ODc0N2VlMTg2
NzU2ZDIxOTE0ZmRmNDE1YTQzNjU5MTE3MTA3ZTMuLmJjMzFkNGE1M2ZjODNkZWI1NjY0MDY4Zjcz
NmFkZjEzMDU5YzA2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU0
OCw3ICs1NDgsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoQ29udHJv
bChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIGlmICh0aGlzSW5wdXRFbGVtZW50
LT5pc1JlcXVpcmVkKCkgIT0gb3RoZXJJbnB1dEVsZW1lbnQtPmlzUmVxdWlyZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9s
KCkgIT0gc3RhdGUuZWxlbWVudCgpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChl
bGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAhPSBzdGF0ZS5lbGVtZW50KCktPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZWxl
bWVudC0+aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpICE9IHN0YXRlLmVsZW1lbnQoKS0+aXNEZWZh
dWx0QnV0dG9uRm9yRm9ybSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDRhMTcyMTI3ODVj
NTI1NDU2MTU0MDU3NzRmYjE1NGY1ZjVhOTY5YWMuLjNkYTI0MzkyYTYwYjU0MGJjNGMyZDVkMWRj
YmNmMWE2YTIzZWU5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTExNzYsNyArMTE3Niw3
IEBAIHZvaWQgRWxlbWVudDo6c2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZl
bnQoYm9vbCkKIHsKIH0KIAotYm9vbCBFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0Citib29sIEVs
ZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQogICAgIC8vIEZJWE1FOiBkaXNhYmxlZCBhbmQgaW5lcnQgYXJlIHNlcGFyYXRl
IGNvbmNlcHRzIGluIHRoZSBzcGVjLCBidXQgbm93IHdlIHRyZWF0IHRoZW0gYXMgdGhlIHNhbWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBmNDg3MGQwYmQ4Mjc4NjM0MTNjMTEwMGU2ZjZlNGI0ZDM5
MGVlMzIzLi5jYzcxYWMwMzljNzQwMjkyOGZiMmM0NTllZTEyODc4ZWIwMDM3ZTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTUzNiw3ICs1MzYsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTU5LDcgKzU1OCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFVzZWQgZm9yIGRpc2FibGVkIGZvcm0gZWxlbWVudHM7IGlmIHRydWUsIHByZXZl
bnRzIG1vdXNlIGV2ZW50cyBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKICAgICAvLyB0byBldmVudCBs
aXN0ZW5lcnMsIGFuZCBwcmV2ZW50cyBET01BY3RpdmF0ZSBldmVudHMgZnJvbSBiZWluZyBzZW50
IGF0IGFsbC4KLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCiAgICAgYm9vbCBpc0luZXJ0KCkgY29uc3Q7CkBAIC03NTIsNiArNzUxLDExIEBA
IGlubGluZSBjb25zdCBFbGVtZW50KiB0b0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIC8vIFRo
aXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9F
bGVtZW50KGNvbnN0IEVsZW1lbnQqKTsKIAoraW5saW5lIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250
cm9sKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOworfQorCiBpbmxp
bmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhpcyktPmhhc1Rh
Z05hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGEy
MWNmYjczMTAyNTlmZmFkNGQwYWE2ZGNjYjM1M2I5ZDhmMDFjMDUuLmFiMTk2OTk4YWQxMjFiMTcw
OTRiNTRkMzU1NDYxMjcyNzgzMDc5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNj
b3BlZEV2ZW50KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lCiAKIHZvaWQg
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqIG5vZGUsIEV2ZW50
KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgbW91c2VF
dmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQog
ewotICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wobm9kZSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VzdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCmluZGV4IDAxNTc1NWE3OTJmOGM0MmFmMDU3Y2U5MDk3
M2EwNjg1YjAzMDQ3ODkuLjRmYTgxNjM2NjczM2RmY2MzM2FhYjc0MTdjY2Q1NjJhMDBkNWI5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgR2Vz
dHVyZUV2ZW50KiBHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpIGNvbnN0CiAK
IGJvb2wgR2VzdHVyZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERp
c3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKGRpc3BhdGNoZXItPm5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChkaXNwYXRjaGVyLT5ub2RlKCkpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woZGlzcGF0Y2hlci0+bm9kZSgp
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCmluZGV4IDEwZjM5MjgyOTAzNTFiMDJjYWUxM2E0MGIw
YjFmY2Y5ODZmNmYyNjkuLmZhYTkxYTE1ZjYzNDc2MWRkZTViZDUyZThmZDI0ZDg3OWM1NjhkODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIE1v
dXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciog
ZGlzcGF0Y2hlcikgY29ucwogICAgICAgICByZXR1cm4gZGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsK
ICAgICB9CiAKLSAgICBpZiAoZGlzcGF0Y2hlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KGRpc3BhdGNoZXItPm5vZGUoKSktPmRpc2FibGVkKCkpIC8vIERvbid0IGV2ZW4g
c2VuZCBET00gZXZlbnRzIGZvciBkaXNhYmxlZCBjb250cm9scy4uCisgICAgaWYgKGlzRGlzYWJs
ZWRGb3JtQ29udHJvbChkaXNwYXRjaGVyLT5ub2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoZXZlbnQoKS0+dHlwZSgpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA3YjM3YzAxOGNlMmE2NmIzM2EwNTZkMTVjZmFhMWIwODA0MDM2OWIwLi4yOTkxZDNiZTU5YjZl
ZDExZGRlZDQyYmVkMTZjNTk4Y2Q5MmU3Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMzE4LDcg
KzIzMTgsNyBAQCB2b2lkIE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWhhc0V2ZW50VGFyZ2V0RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+ZGlzYWJsZWQoKSAmJiBldmVudC0+
aXNNb3VzZUV2ZW50KCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCh0aGlzKSAmJiBl
dmVudC0+aXNNb3VzZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCk7CkBAIC0yNTE3LDE0ICsyNTE3LDE0IEBAIHZvaWQgTm9kZTo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01v
dXNlTW92ZUV2ZW50cygpCiB7Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
dGhpcyktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCh0aGlzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNl
b3V0RXZlbnQpOwogfQogCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkKIHsKLSAgICBpZiAoaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+ZGlzYWJs
ZWQoKSkKKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKHRoaXMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxJc0Fs
d2F5c05vbkVkaXRhYmxlKSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQp
IHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8fCBoYXNFdmVu
dExpc3RlbmVycyhldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7CiB9CkBAIC0yNTMyLDcg
KzI1MzIsNyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIGJv
b2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkKIHsKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHRoaXMpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wodGhpcykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRv
dWNoc3RhcnRFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNobW92
ZUV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVu
dCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggODgxZjQ2YjcwODMyZjg2ZDNmY2Q3
Nzk5MDI1ZTJmZDRjZTI5MzRhOS4uN2M0MmQxNjgwM2UxYTQyMjgxYTBmYzVkMTg2NDNmNDRjMmIx
MDc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVs
dGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBi
b29sIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1
c0xvZ2ljKCkgY29uc3QKIAogYm9vbCBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0
VHlwZTo6aXNFZGl0Q29udHJvbE93bmVyRGlzYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBl
bGVtZW50KCktPmRpc2FibGVkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKIGJvb2wgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Gb3JtRGF0YS5jcHAKaW5kZXggNzAzYTY5ZGJkODA4ZGM2ZjQ1MjA4YzFkYzRmMDBlYzBhYmUx
MWU2ZC4uYmZkZTkxYjgzYTg5ODgzMmI2MWRmYjQyOTZiOWU5YTdiNWJkZWEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NRm9ybURhdGE6OkRP
TUZvcm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmb3JtLT5hc3NvY2lhdGVkRWxlbWVudHMoKS5zaXplKCk7ICsraSkgewogICAgICAg
ICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBmb3JtLT5hc3NvY2lhdGVkRWxlbWVu
dHMoKVtpXTsKLSAgICAgICAgaWYgKCF0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5kaXNhYmxlZCgp
KQorICAgICAgICBpZiAoIXRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpKQogICAgICAgICAgICAgZWxlbWVudC0+YXBwZW5kRm9ybURhdGEoKnRoaXMsIHRydWUp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDhiY2Mx
MDFkNjk1ZTZkNDNjOGE4NGRlNDlmMDBhNTJmNTNlMDE3ZWMuLmIwY2ZmODMyNzJkZWY3ZDljMGRi
ODhiY2U2OGI1ZTBkYWNhMmQ1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIFN0cmluZyBGaWxlSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmdU
ZXh0KCkgY29uc3QKIAogdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50
KEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpKQorICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQpAQCAt
MzEwLDcgKzMxMCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFu
Z2VkKCkKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3coKSk7CiAgICAgVXBsb2FkQnV0dG9u
RWxlbWVudCogYnV0dG9uID0gc3RhdGljX2Nhc3Q8VXBsb2FkQnV0dG9uRWxlbWVudCo+KGVsZW1l
bnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOwogICAgIGlmIChidXR0
b24pCi0gICAgICAgIGJ1dHRvbi0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVs
ZW1lbnQoKS0+ZGlzYWJsZWQoKSk7CisgICAgICAgIGJ1dHRvbi0+c2V0Qm9vbGVhbkF0dHJpYnV0
ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpOwogfQog
CiB2b2lkIEZpbGVJbnB1dFR5cGU6Om11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGMxMDJiMTk0MzBhNDRjYWUx
MzM3YzRiNjA3NGRmOGY3N2U0YjljNTUuLmIxM2I2YTY4ZmYyNTY0ZTkyNTU2YjQxZTczYzI2MTA3
MGM1OWNiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKIAogdm9pZCBIVE1MQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQgJiYgIWRpc2Fi
bGVkKCkpIHsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuRE9NQWN0aXZh
dGVFdmVudCAmJiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgaWYgKGZvcm0o
KSAmJiBtX3R5cGUgPT0gU1VCTUlUKSB7CiAgICAgICAgICAgICBtX2lzQWN0aXZhdGVkU3VibWl0
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZvcm0oKS0+cHJlcGFyZUZvclN1Ym1pc3Npb24oZXZlbnQp
OwpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiBib29sIEhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7Ci0gICAgaWYgKCFkaXNhYmxlZCgpICYmIGZvcm0o
KSAmJiAobV90eXBlID09IFNVQk1JVCB8fCBtX3R5cGUgPT0gUkVTRVQpKQorICAgIGlmICghaXNE
aXNhYmxlZEZvcm1Db250cm9sKCkgJiYgZm9ybSgpICYmIChtX3R5cGUgPT0gU1VCTUlUIHx8IG1f
dHlwZSA9PSBSRVNFVCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQpAQCAt
MTY0LDcgKzE2NCw3IEBAIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym1p
dEJ1dHRvbigpIGNvbnN0CiB7CiAgICAgLy8gSFRNTCBzcGVjIHNheXMgdGhhdCBidXR0b25zIG11
c3QgaGF2ZSBuYW1lcyB0byBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwuCiAgICAgLy8gSG93ZXZl
ciwgb3RoZXIgYnJvd3NlcnMgZG8gbm90IGltcG9zZSB0aGlzIGNvbnN0cmFpbnQuCi0gICAgcmV0
dXJuIG1fdHlwZSA9PSBTVUJNSVQgJiYgIWRpc2FibGVkKCk7CisgICAgcmV0dXJuIG1fdHlwZSA9
PSBTVUJNSVQgJiYgIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBib29sIEhUTUxCdXR0
b25FbGVtZW50Ojppc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uY3BwCmluZGV4IDhhZDBiYjc4YTQxZDgzOTIyOGUyODk2YzcwY2QwZWFmNGE5
NGZkYTguLjRjMjY1ODIzNzY5MWUxYWZkOWE4YjM0NDgzYmNlODc5Yzk0NDhiZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24q
IGh0bWxDb2xsZWN0aW9uLAogICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgogICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykpIHsKICAgICAgICAgICAgIEhUTUxPcHRp
b25FbGVtZW50KiBvcHRpb24gPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KGVsZW1l
bnQpOwotICAgICAgICAgICAgaWYgKCFvcHRpb24tPmRpc2FibGVkKCkgJiYgIW9wdGlvbi0+dmFs
dWUoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoIW9wdGlvbi0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgJiYgIW9wdGlvbi0+dmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZTYwYjc0MzQy
MWFiMjIxN2E0ODBlMDdkNWUwODAyYmNjZTc2ODFiNy4uOTE5MjliMTc1YmU5ZWNkY2NmYjE1YjU4
MzIxMTIxMzJlZDA4OGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVBbmNlc3RvckRpc2FibGVkU3RhdGUoKSBjb25zdAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSAo
ZmllbGRTZXRBbmNlc3RvciAmJiBmaWVsZFNldEFuY2VzdG9yLT5kaXNhYmxlZCgpICYmICEobGVn
ZW5kQW5jZXN0b3IgJiYgbGVnZW5kQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci0+bGVnZW5k
KCkpKSA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkIDogQW5jZXN0b3JEaXNhYmxlZFN0
YXRlRW5hYmxlZDsKKyAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9IChmaWVsZFNldEFuY2Vz
dG9yICYmIGZpZWxkU2V0QW5jZXN0b3ItPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICEobGVn
ZW5kQW5jZXN0b3IgJiYgbGVnZW5kQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci0+bGVnZW5k
KCkpKSA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkIDogQW5jZXN0b3JEaXNhYmxlZFN0
YXRlRW5hYmxlZDsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphbmNlc3RvckRp
c2FibGVkU3RhdGVXYXNDaGFuZ2VkKCkKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9ybUNvbnRyb2xJbnB1dEV2ZW50KCkKICAgICBIVE1M
RWxlbWVudDo6ZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CiAKLWJvb2wgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdAogewogICAgIGlmIChtX2Rpc2FibGVkKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKICAgICAgICAgdXBkYXRlQW5jZXN0b3JEaXNhYmxl
ZFN0YXRlKCk7CiAgICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlID09IEFuY2VzdG9yRGlz
YWJsZWRTdGF0ZURpc2FibGVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmRpc2FibGVkKCk7CisgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlcXVp
cmVkKCkgY29uc3QKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewotICAgIHJldHVybiAhZGlzYWJsZWQoKTsK
KyAgICByZXR1cm4gIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBib29sIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggN2I0ZDFmZjA2YWVlMTQ3YzBjMjYwNzQ2
NDlhZDc1Y2I5NTViOTQ0ZC4uN2RkNTg4NDk2M2QwZGFiYzYyYzFlYzU2NzJlNTQ0NTI2MDEwOTBm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb3JtQ29udHJvbElu
cHV0RXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03NCw3ICs3NCw2IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBmb3JtQ29udHJvbFR5
cGUoKTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IE9WRVJSSURFID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNv
bnRyb2woKSBjb25zdCB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQogCiAgICAgdmlydHVhbCBib29s
IGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CkBAIC05NSw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICBib29sIHJlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQotICAgIGJvb2wgaXNEaXNhYmxlZE9yUmVhZE9ubHko
KSBjb25zdCB7IHJldHVybiBkaXNhYmxlZCgpIHx8IG1fcmVhZE9ubHk7IH0KKyAgICBib29sIGlz
RGlzYWJsZWRPclJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gaXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgfHwgbV9yZWFkT25seTsgfQogCiAgICAgYm9vbCBoYXNBdXRvZm9jdXNlZCgpIHsgcmV0dXJu
IG1faGFzQXV0b2ZvY3VzZWQ7IH0KICAgICB2b2lkIHNldEF1dG9mb2N1c2VkKCkgeyBtX2hhc0F1
dG9mb2N1c2VkID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggY2Q1Y2YwOTQ1N2Q4NjAyZjYyMTgyMDI1NjE2NTE5MDU0MWE2YTYzMy4uY2NlNzEz
M2ZlNGM0YmNiOTYzMWM0YTAzY2M1YThiMWNmZDRmYTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04NDEsNyArODQxLDcgQEAgYm9vbCBIVE1MSW5wdXRF
bGVtZW50Ojppc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25zdAogewogICAgIC8vIEhUTUwg
c3BlYyBzYXlzIHRoYXQgYnV0dG9ucyBtdXN0IGhhdmUgbmFtZXMgdG8gYmUgY29uc2lkZXJlZCBz
dWNjZXNzZnVsLgogICAgIC8vIEhvd2V2ZXIsIG90aGVyIGJyb3dzZXJzIGRvIG5vdCBpbXBvc2Ug
dGhpcyBjb25zdHJhaW50LiBTbyB3ZSBkbyBub3QuCi0gICAgcmV0dXJuICFkaXNhYmxlZCgpICYm
IG1faW5wdXRUeXBlLT5jYW5CZVN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKTsKKyAgICByZXR1cm4g
IWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIG1faW5wdXRUeXBlLT5jYW5CZVN1Y2Nlc3NmdWxT
dWJtaXRCdXR0b24oKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc0FjdGl2YXRlZFN1
Ym1pdCgpIGNvbnN0CkBAIC0xMjIyLDcgKzEyMjIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBpbXBsZW1lbnRpbmcgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBpbiBJbnB1dFR5
cGUgaWYgbW9yZSBhY2N1cmF0ZSByZXN1bHRzIGFyZSBuZWNlc3NhcnkuCi0gICAgaWYgKCFkaXNh
YmxlZCgpKQorICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAKaW5kZXggMTI3MWI1MjJlM2VlYmQ1N2QxOTZkMjM0MTZmOTE1NTU2NDlh
ZjYzZS4uYTkwNzk5Y2IwOWZiNGIwNGY3ZTg1N2YxZDVkMDgwYzY2MDcwZmJkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IFBhc3NSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9wdEdyb3VwRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0
R3JvdXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTE9wdEdyb3Vw
RWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAorYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSBjb25zdAogewogICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRl
KGRpc2FibGVkQXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5oCmluZGV4IDFiZmIxNDA2YmQ5N2RkYjU1ZGYwNjY2ZmM5OTFmZGY4ZmZiMTlmM2QuLmZlMTgx
ZjdjNTIyZDE1ZjI5ZjA4YTQ5ZDhhOTMxNGMwNWFkZDI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEhUTUxPcHRH
cm91cEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVS
UklERTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7
CiAgICAgCiAgICAgU3RyaW5nIGdyb3VwTGFiZWxUZXh0KCkgY29uc3Q7CkBAIC00NSw3ICs0NSw2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlz
RW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWRpc2FibGVkKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCmluZGV4IGRhY2JkYjE0ZGUzYjFlODY4MDU5NjdlMzliZDVhOTBiNDBhOTk1
YzUuLjRhODhjMGI5YmFmYWU2MDI0ODI0MWNjZGJmZTNhM2M1OWNjNzJmNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgU3Ry
aW5nIEhUTUxPcHRpb25FbGVtZW50Ojp0ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCkg
Y29uc3QKICAgICByZXR1cm4gdGV4dCgpOwogfQogCi1ib29sIEhUTUxPcHRpb25FbGVtZW50Ojpk
aXNhYmxlZCgpIGNvbnN0Citib29sIEhUTUxPcHRpb25FbGVtZW50Ojppc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSBjb25zdAogewogICAgIGlmIChvd25FbGVtZW50RGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0zNTUsNyArMzU1LDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6
ZGlzYWJsZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBIVE1MRWxlbWVu
dCogcGFyZW50RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ocGFyZW50Tm9kZSgp
KTsKLSAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykgJiYg
cGFyZW50RWxlbWVudC0+ZGlzYWJsZWQoKTsKKyAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+aGFz
VGFnTmFtZShvcHRncm91cFRhZykgJiYgcGFyZW50RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE9wdGlv
bkVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCAxOWY1NjliOTc2MDgxZjE5
YTg0NTk2YTU4ODQ0MjgxM2ExNTY4MzFiLi42NzNmMDc3ZjMyMmFjZjY3YWY3MzlhNWI2NjJkNzA4
YWQ4NTRjOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC01
OCwxMCArNTgsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRG
b3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFkaXNhYmxlZCgpOyB9CiAgICAg
Ym9vbCBvd25FbGVtZW50RGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNE
aXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBTdHJpbmcgdGV4dElu
ZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDcyNmFiNDQzNDBmYTIxODVlOWZkN2FmNjIxNTIw
ZTZkYWYxOTI5NzMuLjVmN2NkMjYxMmUwMWNkN2I1ZTAzNzgzZDBhNzgzMTA3YzIyYmIzN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OmNhblByb2Nlc3NEcmFnKCkgY29uc3QKIAogYm9v
bCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewot
ICAgIGlmIChkaXNhYmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRl
eCAxYmE4YWUzNGMxOTZmMTg4YzBlOTQ5YzM4YTc3NDMwNWRlOTliODQyLi5kYzE2MTVhMTFmY2U0
MDkwYWM1ZGEyNGY1ZTg3MDRmMzFmMDgzMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVu
dDo6bmV4dFZhbGlkSW5kZXgoaW50IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24s
IGluCiAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOwogICAgIGZvciAobGlzdEluZGV4
ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdElu
ZGV4ICs9IGRpcmVjdGlvbikgewogICAgICAgICAtLXNraXA7Ci0gICAgICAgIGlmICghbGlzdEl0
ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmhhc1Rh
Z05hbWUob3B0aW9uVGFnKSkgeworICAgICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiBsaXN0SXRlbXNbbGlzdEluZGV4XS0+aGFzVGFnTmFt
ZShvcHRpb25UYWcpKSB7CiAgICAgICAgICAgICBsYXN0R29vZEluZGV4ID0gbGlzdEluZGV4Owog
ICAgICAgICAgICAgaWYgKHNraXAgPD0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYx
NSw3ICs2MTUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0
aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVt
ZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRl
bXNbaV07Ci0gICAgICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpIHx8IHRv
SFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmRpc2FibGVkKCkpCisgICAgICAgIGlmICghZWxl
bWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpIHx8IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVu
dCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKGkgPj0gc3RhcnQgJiYgaSA8PSBlbmQpCkBAIC03NjcsNyArNzY3LDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKGJvb2wgdXBkYXRlU2VsZWN0ZWRT
dGF0ZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNlbGVjdGVkKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZm91bmRTZWxlY3RlZC0+c2V0U2VsZWN0ZWRTdGF0ZShmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2VsZWN0ZWQgPSBvcHRpb247Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX3NpemUgPD0gMSAmJiAhZm91bmRTZWxlY3RlZCAmJiAhb3B0
aW9uLT5kaXNhYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3NpemUgPD0g
MSAmJiAhZm91bmRTZWxlY3RlZCAmJiAhb3B0aW9uLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkg
ewogICAgICAgICAgICAgICAgICAgICBmb3VuZFNlbGVjdGVkID0gb3B0aW9uOwogICAgICAgICAg
ICAgICAgICAgICBmb3VuZFNlbGVjdGVkLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTEwMjAsNyArMTAyMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6
OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCkKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IGl0ZW1zW2ldOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShv
cHRpb25UYWcpICYmIHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnNlbGVjdGVkKCkgJiYg
IXRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmRpc2FibGVkKCkpIHsKKyAgICAgICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGVs
ZW1lbnQpLT5zZWxlY3RlZCgpICYmICF0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICAgICAgbGlzdC5hcHBlbmREYXRhKG5hbWUs
IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnZhbHVlKCkpOwogICAgICAgICAgICAgc3Vj
Y2Vzc2Z1bCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBt
dWx0aSwgYm9vbCBzaGlmCiAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KHNl
bGVjdGVkSW5kZXgoKSk7CiAKICAgICAvLyBTZXQgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUg
Y2xpY2tlZCBvcHRpb24uCi0gICAgaWYgKGNsaWNrZWRFbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlv
blRhZykgJiYgIXRvSFRNTE9wdGlvbkVsZW1lbnQoY2xpY2tlZEVsZW1lbnQpLT5kaXNhYmxlZCgp
KQorICAgIGlmIChjbGlja2VkRWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpICYmICF0b0hU
TUxPcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
CiAgICAgICAgIHRvSFRNTE9wdGlvbkVsZW1lbnQoY2xpY2tlZEVsZW1lbnQpLT5zZXRTZWxlY3Rl
ZFN0YXRlKHRydWUpOwogCiAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIHNlbGVjdGVkSW5kZXgoKSBm
b3IgdGhlIHByZXZpb3VzIGluaXRpYWxpemF0aW9uLCBvciBJZgpAQCAtMTI5Miw3ICsxMjkyLDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogICAgICAgICBJbnRQb2ludCBsb2NhbE9mZnNldCA9IHJvdW5kZWRJbnRQb2lu
dChyZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlv
bigpLCBVc2VUcmFuc2Zvcm1zKSk7CiAgICAgICAgIGludCBsaXN0SW5kZXggPSB0b1JlbmRlckxp
c3RCb3gocmVuZGVyZXIoKSktPmxpc3RJbmRleEF0T2Zmc2V0KHRvSW50U2l6ZShsb2NhbE9mZnNl
dCkpOwogICAgICAgICBpZiAobGlzdEluZGV4ID49IDApIHsKLSAgICAgICAgICAgIGlmICghZGlz
YWJsZWQoKSkgeworICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgewog
I2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQog
ICAgICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkU3RhdGUobGlzdEluZGV4LCBtb3VzZUV2ZW50
LT5tZXRhS2V5KCksIG1vdXNlRXZlbnQtPnNoaWZ0S2V5KCkpOwogI2Vsc2UKQEAgLTEzMTIsNyAr
MTMxMiw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgSW50UG9pbnQgbG9jYWxPZmZzZXQgPSByb3VuZGVk
SW50UG9pbnQocmVuZGVyZXIoKS0+YWJzb2x1dGVUb0xvY2FsKG1vdXNlRXZlbnQtPmFic29sdXRl
TG9jYXRpb24oKSwgVXNlVHJhbnNmb3JtcykpOwogICAgICAgICBpbnQgbGlzdEluZGV4ID0gdG9S
ZW5kZXJMaXN0Qm94KHJlbmRlcmVyKCkpLT5saXN0SW5kZXhBdE9mZnNldCh0b0ludFNpemUobG9j
YWxPZmZzZXQpKTsKICAgICAgICAgaWYgKGxpc3RJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBp
ZiAoIWRpc2FibGVkKCkpIHsKKyAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9s
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9tdWx0aXBsZSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBPbmx5IGV4dGVuZCBzZWxlY3Rpb24gaWYgdGhlcmUgaXMgc29tZXRoaW5nIHNlbGVj
dGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCA8IDApCkBAIC0xNDQwLDcgKzE0NDAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChkaXNhYmxlZCgpKSB7CisgICAgaWYgKGlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTQ4OSw3ICsxNDg5LDcgQEAgU3RyaW5nIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25BdEluZGV4
KGludCBpbmRleCkgY29uc3QKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKICAgICAKICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGl0ZW1zW2lu
ZGV4XTsKLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8fCB0b0hUTUxP
cHRpb25FbGVtZW50KGVsZW1lbnQpLT5kaXNhYmxlZCgpKQorICAgIGlmICghZWxlbWVudC0+aGFz
VGFnTmFtZShvcHRpb25UYWcpIHx8IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJu
IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKaW5kZXggYjkz
NWRmMGFjZTZjMDhkYWFkZDVkMjZjNjMwMGU0MzNjMGJmZDdjNC4uZGI1N2FhNGMzNzNkM2NiODAw
NzFiNTZmOWE2M2MzYWM0YTU1YzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6c3VwcG9ydHNWYWxp
ZGF0aW9uKCkgY29uc3QKIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZl
bnQoRXZlbnQqIGV2ZW50KQogewogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50
ID0gdGhpcy0+ZWxlbWVudCgpOwotICAgIGlmIChlbGVtZW50LT5kaXNhYmxlZCgpIHx8ICFlbGVt
ZW50LT5mb3JtKCkpCisgICAgaWYgKGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIHx8
ICFlbGVtZW50LT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50LT5zZXRBY3Rp
dmF0ZWRTdWJtaXQodHJ1ZSk7CiAgICAgaWYgKGV2ZW50LT51bmRlcmx5aW5nRXZlbnQoKSAmJiBl
dmVudC0+dW5kZXJseWluZ0V2ZW50KCktPmlzTW91c2VFdmVudCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmVzZXRJbnB1dFR5cGUuY3BwCmluZGV4IDhmZWMwZmY3NTVjMjAxZDZkOWVhYjVlNTBkYjQ5
ZjNmYjZlMzVmN2IuLmJiY2M2YzdmODA2MTNjNjc0ODc4YWEyZTA2MDU3OWE5Zjc4NzYwMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJv
b2wgUmVzZXRJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0CiAKIHZvaWQgUmVz
ZXRJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAg
IGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgIWVsZW1lbnQoKS0+Zm9ybSgpKQorICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIHx8ICFlbGVtZW50KCktPmZvcm0o
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGVsZW1lbnQoKS0+Zm9ybSgpLT5yZXNldCgpOwogICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1
dFR5cGUuY3BwCmluZGV4IDQ4OWQ5YTFmODFmNGY4Yzk5M2JkYWVmMTkzMWU3ZmIxYjk3MDgxOTUu
Ljg3MjRmZmI1NGQ1NWZkYTM1MjM3NTQ3MTlhMTVlMzg5MDUwNWQ5ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBTdWJtaXRJ
bnB1dFR5cGU6OnN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdAogdm9pZCBTdWJtaXRJbnB1dFR5cGU6
OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewogICAgIFJlZlB0cjxIVE1M
SW5wdXRFbGVtZW50PiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpOwotICAgIGlmIChlbGVtZW50
LT5kaXNhYmxlZCgpIHx8ICFlbGVtZW50LT5mb3JtKCkpCisgICAgaWYgKGVsZW1lbnQtPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpIHx8ICFlbGVtZW50LT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBlbGVtZW50LT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7CiAgICAgZWxlbWVudC0+Zm9y
bSgpLT5wcmVwYXJlRm9yU3VibWlzc2lvbihldmVudCk7IC8vIEV2ZW50IGhhbmRsZXJzIGNhbiBy
dW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCAwMjE2MGY4ODg0Y2NlMTgzYTMzY2Q4YTZhMDY2ZGYwY2Y0Y2MzNjU2Li5hZWMw
MTE1ZTdjNzEyODlhNjkxNjM1OThmMGU5ZTk0NDI2ZTBhNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTIyMSwxNCArMjIx
LDkgQEAgUmVuZGVyT2JqZWN0KiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU2xpZGVyVGh1bWIodGhpcyk7CiB9CiAKLWJvb2wgU2xpZGVyVGh1bWJFbGVtZW50OjpkaXNh
YmxlZCgpIGNvbnN0Citib29sIFNsaWRlclRodW1iRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaG9zdElucHV0KCktPmRpc2FibGVkKCk7Ci19Ci0K
LWJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFkaXNhYmxlZCgpOworICAgIHJldHVybiBob3N0SW5wdXQoKS0+aXNEaXNh
YmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50OjptYXRjaGVz
UmVhZE9ubHlQc2V1ZG9DbGFzcygpIGNvbnN0CkBAIC0zNDQsNyArMzM5LDcgQEAgdm9pZCBTbGlk
ZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8v
IEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoaXMgcmVhZG9ubHkvZGlzYWJsZWQgY2hlY2sgaW4gbW9y
ZSBnZW5lcmFsIHdheS4KICAgICAvLyBNaXNzaW5nIHRoaXMga2luZCBvZiBjaGVjayBpcyBsaWtl
bHkgdG8gb2NjdXIgZWxzZXdoZXJlIGlmIGFkZGluZyBpdCBpbiBlYWNoIHNoYWRvdyBlbGVtZW50
LgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gaG9zdElucHV0KCk7Ci0gICAgaWYgKCFp
bnB1dCB8fCBpbnB1dC0+cmVhZE9ubHkoKSB8fCAhaW5wdXQtPmlzRW5hYmxlZEZvcm1Db250cm9s
KCkpIHsKKyAgICBpZiAoIWlucHV0IHx8IGlucHV0LT5yZWFkT25seSgpIHx8IGlucHV0LT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICBzdG9wRHJhZ2dpbmcoKTsKICAgICAgICAg
SFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICByZXR1
cm47CkBAIC0zNzUsNyArMzcwLDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogYm9vbCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQogewogICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0ID0gaG9zdElucHV0KCk7Ci0gICAgaWYgKGlucHV0ICYmICFpbnB1dC0+cmVhZE9ubHko
KSAmJiBpbnB1dC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSAmJiBtX2luRHJhZ01vZGUpCisgICAg
aWYgKGlucHV0ICYmICFpbnB1dC0+cmVhZE9ubHkoKSAmJiAhaW5wdXQtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpICYmIG1faW5EcmFnTW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gSFRNTERpdkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKTsKQEAg
LTM4NCw3ICszNzksNyBAQCBib29sIFNsaWRlclRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlTW92ZUV2ZW50cygpCiBib29sIFNsaWRlclRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogewogICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
aG9zdElucHV0KCk7Ci0gICAgaWYgKGlucHV0ICYmICFpbnB1dC0+cmVhZE9ubHkoKSAmJiBpbnB1
dC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICBpZiAoaW5wdXQgJiYgIWlucHV0LT5yZWFk
T25seSgpICYmICFpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuaAppbmRleCBkZTUxMDM3OGVlZDU1ODNkZjkyOThkODcyNGI5NDY4NGZiNTU3ZTRm
Li5iMTQ2MGVjYTcxMTU0MzM5NjNlYTRjYWU2YWJkMWM0MmRmMDk1ZmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNjUsOCArNjUs
NyBAQCBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkT25seVBzZXVkb0Ns
YXNzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQ
c2V1ZG9DbGFzcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgTm9kZSogZm9jdXNEZWxl
Z2F0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50
LmgKaW5kZXggNTQ5YWU0NDkwODdkZmMxZmI1ODBmNWY4MDhlY2QyOTZkODcyMzE1ZS4uYjIyMzQ0
MDUzZDA2ZWVjYmI2NmFmNDVmYjA3OGMzZGE3MDViN2Y5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCkBAIC03Miw4ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5C
dXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBk
aXNhYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHNoYWRvd0hvc3QoKSAmJiBzaGFkb3dI
b3N0KCktPmRpc2FibGVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRy
b2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzaGFk
b3dIb3N0KCkgJiYgc2hhZG93SG9zdCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZE9ubHlQc2V1ZG9DbGFzcygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKaW5kZXggNmM0NzdhNTIyNGU4YTIyMTMzNzNmNjBkNjU1YmVmZGZlNWM5NjFm
YS4uZmRjZTIxMWFkYjczYzM3YThkNDdiZWE3MGJkYWQ0MGNhNDVjOTZjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiBib29sIElucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAg
Y29uc3QgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oc2hhZG93SG9zdCgpKTsKLSAgICBpZiAoaW5wdXQgJiYgIWlucHV0LT5kaXNhYmxlZCgp
ICYmICFpbnB1dC0+cmVhZE9ubHkoKSkKKyAgICBpZiAoaW5wdXQgJiYgIWlucHV0LT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSAmJiAhaW5wdXQtPnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgU3BlZWNoSW5wdXRSCiAg
ICAgLy8gcmVtb3ZlIHRoZSBpbnB1dCBlbGVtZW50IGZyb20gRE9NLiBUbyBtYWtlIHN1cmUgaXQg
cmVtYWlucyB2YWxpZCB1bnRpbCB3ZSBmaW5pc2ggb3VyIHdvcmsKICAgICAvLyBoZXJlLCB3ZSB0
YWtlIGEgdGVtcG9yYXJ5IHJlZmVyZW5jZS4KICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4g
aW5wdXQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0hvc3QoKSkpOwotICAg
IGlmICghaW5wdXQgfHwgaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPnJlYWRPbmx5KCkpCisg
ICAgaWYgKCFpbnB1dCB8fCBpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwgaW5wdXQt
PnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudD4gaG9sZFJlZkJ1dHRvbih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcApp
bmRleCBkZDNlMTUyMDJhYmI0NjgzMGZiN2RjZDBhNWMzODc5ZmZkNWE2Y2EyLi5hOTdjM2Q2Yzg0
N2IxYjI1NjlmODViNWE3MWE5NzZhZGY1NzMwOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgdm9pZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6dXBkYXRlSW1h
Z2UoKQogICAgICAgICByZXR1cm47CiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVzb3VyY2Ug
PSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCk7CiAgICAgQ2FjaGVk
SW1hZ2UqIGltYWdlOwotICAgIGlmIChob3N0SW5wdXQoKS0+ZGlzYWJsZWQoKSkKKyAgICBpZiAo
aG9zdElucHV0KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICBpbWFnZSA9IG1f
dGV4dEZpZWxkRGVjb3JhdG9yLT5pbWFnZUZvckRpc2FibGVkU3RhdGUoKTsKICAgICBlbHNlIGlm
IChob3N0SW5wdXQoKS0+cmVhZE9ubHkoKSkKICAgICAgICAgaW1hZ2UgPSBtX3RleHRGaWVsZERl
Y29yYXRvci0+aW1hZ2VGb3JSZWFkb25seVN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmNwcAppbmRleCA1ZDQwZTc4NDFhM2I1MzkxN2VlNjg4NDhiNDFmY2ViMmM0
ODU2NjZmLi43OTcyMWJhYzA4Nzk2YzQxZjM4Mzc3NzU5MTA1YjRkOTJlOTFjYmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBQ
YXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3Jt
RWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3Jt
LT5hc3NvY2lhdGVkRWxlbWVudHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqIGNvbnRyb2wgPSBmb3JtLT5hc3NvY2lhdGVkRWxlbWVudHMoKVtpXTsKICAg
ICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNvbnRyb2wpOwotICAg
ICAgICBpZiAoIWVsZW1lbnQtPmRpc2FibGVkKCkpCisgICAgICAgIGlmICghZWxlbWVudC0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICBjb250cm9sLT5hcHBlbmRGb3JtRGF0
YSgqZG9tRm9ybURhdGEsIGlzTXVsdGlQYXJ0Rm9ybSk7CiAgICAgICAgIGlmIChlbGVtZW50LT5o
YXNMb2NhbE5hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb250cm9sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMDQwNDU5NDBmMzVmY2ZkYzY4ZmVjODUy
OTBkYzA4YzUzZjk3ZWVjNi4uOGU5MzZmMTBkYjVhMjI0MjQ1MDFmOGNiMThhOTMxY2I4ZWYwMWY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM3MSw3ICszNzEs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoRHJhZ0RhdGEqIGRyYWdE
YXRhLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYQogCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
RmlsZXMgPSBkcmFnRGF0YS0+bnVtYmVyT2ZGaWxlcygpOwogICAgICAgICBpZiAobV9maWxlSW5w
dXRFbGVtZW50VW5kZXJNb3VzZSkgewotICAgICAgICAgICAgaWYgKG1fZmlsZUlucHV0RWxlbWVu
dFVuZGVyTW91c2UtPmRpc2FibGVkKCkpCisgICAgICAgICAgICBpZiAobV9maWxlSW5wdXRFbGVt
ZW50VW5kZXJNb3VzZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICAgICAg
ZHJhZ1Nlc3Npb24ubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9IDA7CiAgICAgICAgICAgICBl
bHNlIGlmIChtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5tdWx0aXBsZSgpKQogICAgICAg
ICAgICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSBudW1iZXJP
ZkZpbGVzOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRl
RWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICAvLyBmaWxlSW5wdXQgc2hvdWxk
IGJlIHRoZSBlbGVtZW50IHdlIGhpdCB0ZXN0ZWQgZm9yLCB1bmxlc3MgaXQgd2FzIG1hZGUKICAg
ICAgICAgLy8gZGlzcGxheTpub25lIGluIGEgZHJvcCBldmVudCBoYW5kbGVyLgogICAgICAgICBB
U1NFUlQoZmlsZUlucHV0ID09IGVsZW1lbnQgfHwgIWZpbGVJbnB1dC0+cmVuZGVyZXIoKSk7Ci0g
ICAgICAgIGlmIChmaWxlSW5wdXQtPmRpc2FibGVkKCkpCisgICAgICAgIGlmIChmaWxlSW5wdXQt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIHJldHVybiBmaWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDFmZDg4Nzg3
OGJjMjQ2ZWE3MzdkOWZjMTAzMTMwYTllOWFiOTE0NDAuLjRhM2Q4MGE3OTc0M2UxYzY2Y2I0ZmMy
YTg0NGEzYmJlOTRhOGU5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JgogICAg
IGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3QtPmxpc3RJdGVt
cygpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEhUTUxF
bGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShvcHRpb25UYWcpICYmICF0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5kaXNh
YmxlZCgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgJiYg
IWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICByZWN0cy5h
cHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxP
ZmZzZXQsIGkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQxNCw3ICs0
MTQsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBpZiAoZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2Rl
KCkgPT0gbm9kZSgpKQogICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgICAgICAvLyBIb25vciB0aGUgZm9y
ZWdyb3VuZCBjb2xvciBmb3IgZGlzYWJsZWQgaXRlbXMKLSAgICAgICAgZWxzZSBpZiAoIWVsZW1l
bnQtPmRpc2FibGVkKCkgJiYgIXNlbGVjdC0+ZGlzYWJsZWQoKSkKKyAgICAgICAgZWxzZSBpZiAo
IWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFzZWxlY3QtPmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQogICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS0+aW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA0NzVjN2Q3Mjg5MzQyYWVhYTdl
YzAyOWI3MTY1YzBlOWMzODI4YzMxLi41YTRlMzZhNDVlNzQ5OWVkODZkYmQ3NmQ1NzNhOGFjODI0
MGExMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
QEAgLTQ1MywxMiArNDUzLDEyIEBAIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0VuYWJsZWQo
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIGJvb2wgZ3JvdXBFbmFibGVkID0gdHJ1ZTsK
ICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgewogICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykp
Ci0gICAgICAgICAgICBncm91cEVuYWJsZWQgPSAhc3RhdGljX2Nhc3Q8SFRNTE9wdEdyb3VwRWxl
bWVudCo+KHBhcmVudEVsZW1lbnQpLT5kaXNhYmxlZCgpOworICAgICAgICAgICAgZ3JvdXBFbmFi
bGVkID0gIXBhcmVudEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KICAg
ICBpZiAoIWdyb3VwRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IGVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuICFlbGVtZW50LT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxp
c3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCAxYzk1NTQxNDQ4MTczOGQ1
MjI4NDMyMTViZDQyMDllNTRlZDIzNzhmLi42ZDA2MTMxYTNhYzRjYjNiYWVlNmM3MmFlZjRlN2Yz
YWExOTlkZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKQEAgLTc2LDE3ICs3NiwxNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkoTm9kZSogbm9kZSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGJvb2wgaXNFbmFibGVkID0gdHJ1ZTsKKyAgICBib29s
IGlzRGlzYWJsZWQgPSBmYWxzZTsKICAgICBib29sIGlzUmVhZE9ubHlDb250cm9sID0gZmFsc2U7
CiAKICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgIGlzRW5hYmxlZCA9IGVsZW1lbnQtPmlz
RW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAgICAgIGlzRGlzYWJsZWQgPSBlbGVtZW50LT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgaXNSZWFkT25seUNvbnRyb2wgPSBlbGVtZW50
LT5pc1RleHRGb3JtQ29udHJvbCgpICYmIHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoZWxl
bWVudCktPnJlYWRPbmx5KCk7CiAgICAgfQogCi0gICAgc3R5bGUtPnNldFVzZXJNb2RpZnkoKGlz
UmVhZE9ubHlDb250cm9sIHx8ICFpc0VuYWJsZWQpID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9Q
TEFJTlRFWFRfT05MWSk7Ci0gICAgcmV0dXJuICFpc0VuYWJsZWQ7CisgICAgc3R5bGUtPnNldFVz
ZXJNb2RpZnkoKGlzUmVhZE9ubHlDb250cm9sIHx8IGlzRGlzYWJsZWQpID8gUkVBRF9PTkxZIDog
UkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7CisgICAgcmV0dXJuIGlzRGlzYWJsZWQ7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHlsZSogdGV4dEJsb2NrU3R5bGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA5NWY2OWU1YTBlZTNk
ZTExZDRkOWFiMDNmNDhkOGI5NTAyZmQ2ODkxLi5jYjNmN2RlNTU4MzVkY2JhNmVmNjhlNDYwOWFk
ZjlmMmRkYTJhOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
QEAgLTc4OCw3ICs3ODgsNyBAQCBib29sIFJlbmRlclRoZW1lOjppc0VuYWJsZWQoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvKSBjb25zdAogICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7CiAgICAgaWYg
KCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAg
cmV0dXJuICF0b0VsZW1lbnQobm9kZSktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBi
b29sIFJlbmRlclRoZW1lOjppc0ZvY3VzZWQoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDFhY2NlNWE2
NjhiYzZlNGZlNzNmMjBlZjJjMGNiNTZmOGFhZDZkNTYuLjJlOGQ1NmVmMzYwNTZhYTNlNjBkNDZk
MWNlY2ZiNmVmOWNlMzg5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0TWVkaWFVSVBh
cnRTdGF0ZUZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQgZmxhZ3MgPSAwOwogCi0g
ICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmRpc2FibGVk
KCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbChub2RlKSkKICAgICAgICAgZmxhZ3Mg
fD0gTWVkaWFVSVBhcnREaXNhYmxlZEZsYWc7CiAgICAgZWxzZSBpZiAobm9kZS0+YWN0aXZlKCkp
CiAgICAgICAgIGZsYWdzIHw9IE1lZGlhVUlQYXJ0UHJlc3NlZEZsYWc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWNTaGFyZWQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWNTaGFyZWQubW0KaW5kZXggOTY3Y2Y5YTVj
NGUxMjBkZmEyZmFhOGFjMGMwNTRlNWE4ZGJhNWYzZS4uYTI2NjEyMjU5MzFmNjY5ZTZiZjgwZmFh
Y2U5Y2U5NmUxNzg3MWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjU2hhcmVkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hY1NoYXJlZC5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hY1NoYXJlZDo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyLCBSZW4KIAogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFjayBvciBn
cmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIC8vIENhc3QgdG8gUkdCMzIgaXMg
dG8gd29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0gICAgc3R5bGUtPnNldENvbG9yKGUgJiYg
ZS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJs
YWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CisgICAgc3R5bGUtPnNldENvbG9yKGUgJiYgIWUtPmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMyPihDb2xvcjo6YmxhY2sp
IDogQ29sb3I6OmRhcmtHcmF5KTsKIAogICAgIC8vIFNldCB0aGUgYnV0dG9uJ3MgdmVydGljYWwg
c2l6ZS4KICAgICBzZXRTaXplRnJvbUZvbnQoc3R5bGUsIG1lbnVMaXN0QnV0dG9uU2l6ZXMoKSk7
CkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjU2hhcmVkOjpwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUAogCiAgICAgTlNT
ZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwogCi0gICAgaWYgKGlucHV0
LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpICYmIChpbnB1dC0+aXNUZXh0Rm9ybUNvbnRyb2woKSAm
JiAhc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihpbnB1dCktPnJlYWRP
bmx5KCkpKSB7CisgICAgaWYgKCFpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgKGlu
cHV0LT5pc1RleHRGb3JtQ29udHJvbCgpICYmICFzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCo+KGlucHV0KS0+cmVhZE9ubHkoKSkpIHsKICAgICAgICAgdXBkYXRlQWN0aXZl
U3RhdGUoW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSwgbyk7CiAgICAgICAgIHVwZGF0ZVByZXNz
ZWRTdGF0ZShbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdLCBvKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCAwZTIzZmRlY2E2
ODQyN2FkMjRlNzM3NjA0MzM5OWJmNjBiYzM1NWQ0Li5mMzAxZWFjZjNmZTBiYzYzMDBkODZkZGVm
OGZjMTdhMTk1MmJmYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJp
OjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRl
cgogCiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJsYWNrIG9yIGdyYXkgd2hl
biB3ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgLy8gQ2FzdCB0byBSR0IzMiBpcyB0byB3b3Jr
IGFyb3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLSAgICBzdHlsZS0+c2V0Q29sb3IoZSAmJiBlLT5pc0Vu
YWJsZWRGb3JtQ29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMyPihDb2xvcjo6YmxhY2spIDog
Q29sb3I6OmRhcmtHcmF5KTsKKyAgICBzdHlsZS0+c2V0Q29sb3IoZSAmJiAhZS0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KENvbG9yOjpibGFjaykgOiBDb2xv
cjo6ZGFya0dyYXkpOwogCiAgICAgLy8gU2V0IHRoZSBidXR0b24ncyB2ZXJ0aWNhbCBzaXplLgog
ICAgIHNldEJ1dHRvblNpemUoc3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0
YS5jcHAKaW5kZXggOTJiNTU4ZGYyOWJlMTJkNTNjOWE0OTQwODNhYmYzNzYyOGRiNGM4NC4uZmE0
ZGVjMGVkMzRhNjkzMDRiNjM5Njg3YTIxN2FiYTc0MGI4NjRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGEuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBDcmVkZW50aWFs
VHJhbnNmb3JtRGF0YTo6ZmluZFBhc3N3b3JkRm9ybUZpZWxkcyhIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQgPSBmb3JtRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICAgICAgaWYg
KCFpbnB1dEVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9sKCkpCisgICAgICAgIGlmIChpbnB1
dEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKChwYXNzd29yZHMuc2l6ZSgpIDwgbWF4UGFzc3dvcmRzKQpAQCAtMjE3
LDcgKzIxNyw3IEBAIGJvb2wgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OmZpbmRQYXNzd29yZEZv
cm1GaWVsZHMoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBmb3JtRWxl
bWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmICghaW5wdXRFbGVtZW50LT5p
c0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIC8vIFZhcmlvdXMgaW5wdXQgdHlwZXMgc3VjaCBhcyB0ZXh0LCB1cmwsIGVtYWlsIGNh
biBiZSBhIHVzZXJuYW1lIGZpZWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCA1NjMwMGE3MzBiYmQ2YTU3Y2E5
OWZiYzA3NGViMDk4NzAyYWU5NzRmLi5iNzc5MjEyZTAxNjI0ZjhlMWE3MWRkMGFkNzFmNzU3YTg2
NDYyMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIGJvb2wgaXNUZXh0QmFzZWRD
b250ZW50RWRpdGFibGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZWxlbWVudC0+aXNSZWFkT25seU5v
ZGUoKSB8fCAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICBpZiAoZWxlbWVu
dC0+aXNSZWFkT25seU5vZGUoKSB8fCBlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzUG9wdXBJbnB1dEZpZWxkKGVsZW1l
bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAKaW5kZXggNjk5ODlmODEzNzFmZTc1MDc5MzAxMDQyZGQyNTcxYjky
YWNhYWVjOC4uN2RkZTJiOTM3OGI0NGNjYjA0M2IwYTUwZjg3OWNjZjFlY2U0YjIzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCkBAIC0xOTAxLDcgKzE5MDEsNyBAQCBib29sIElucHV0SGFuZGxlcjo6ZGlkTm9k
ZU9wZW5Qb3B1cChOb2RlKiBub2RlKQogCiBib29sIElucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBv
cHVwKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiB7Ci0gICAgaWYgKCFzZWxlY3QgfHwgc2Vs
ZWN0LT5kaXNhYmxlZCgpKQorICAgIGlmICghc2VsZWN0IHx8IHNlbGVjdC0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIHRoZXJlJ3Mg
bm8gdmlldywgZG8gbm90aGluZyBhbmQgcmV0dXJuLgpAQCAtMTkzNiwxMyArMTkzNiwxMyBAQCBi
b29sIElucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBvcHVwKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxl
Y3QpCiAgICAgICAgICAgICBpZiAobGlzdEl0ZW1zW2ldLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
b3B0aW9uVGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24g
PSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KGxpc3RJdGVtc1tpXSk7CiAgICAgICAg
ICAgICAgICAgbGFiZWxzW2ldID0gb3B0aW9uLT50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExh
YmVsKCk7Ci0gICAgICAgICAgICAgICAgZW5hYmxlZHNbaV0gPSBvcHRpb24tPmRpc2FibGVkKCkg
PyAwIDogMTsKKyAgICAgICAgICAgICAgICBlbmFibGVkc1tpXSA9IG9wdGlvbi0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgPyAwIDogMTsKICAgICAgICAgICAgICAgICBzZWxlY3RlZHNbaV0gPSBv
cHRpb24tPnNlbGVjdGVkKCk7CiAgICAgICAgICAgICAgICAgaXRlbVR5cGVzW2ldID0gb3B0aW9u
LT5wYXJlbnROb2RlKCkgJiYgb3B0aW9uLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpvcHRncm91cFRhZykgPyBUeXBlT3B0aW9uSW5Hcm91cCA6IFR5cGVPcHRpb247CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGxpc3RJdGVtc1tpXS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9w
dGdyb3VwVGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxPcHRHcm91cEVsZW1lbnQqIG9wdEdy
b3VwID0gc3RhdGljX2Nhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudCo+KGxpc3RJdGVtc1tpXSk7CiAg
ICAgICAgICAgICAgICAgbGFiZWxzW2ldID0gb3B0R3JvdXAtPmdyb3VwTGFiZWxUZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgZW5hYmxlZHNbaV0gPSBvcHRHcm91cC0+ZGlzYWJsZWQoKSA/IDAgOiAx
OworICAgICAgICAgICAgICAgIGVuYWJsZWRzW2ldID0gb3B0R3JvdXAtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpID8gMCA6IDE7CiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRzW2ldID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgaXRlbVR5cGVzW2ldID0gVHlwZUdyb3VwOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChsaXN0SXRlbXNbaV0tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoclRhZykpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCmluZGV4IGE4OTc3MzVkMTAzMjZmYWY0YTZkNWIxOTFiMzA5NDZmODQ1MTc4MWMuLjJh
ZDljZmQzNjFmN2EyZWRmYjhjNDE5ZmUxZTM5NTI5YWNhZTdhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBXZWJGb3JtQ29udHJvbEVsZW1l
bnQ6OmlzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+KCktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuICFj
b25zdFVud3JhcDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpLT5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKTsKIH0KIAogYm9vbCBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmlzUmVhZE9ubHkoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViT3B0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJPcHRpb25FbGVtZW50LmNwcApp
bmRleCBiNTExNjk3YjQwMjhjZGQ0YmRjMjJiZmRhZjNjMDExYjJhZDc5N2VjLi5lZGM1NjhlODhl
NzViNDlkYzg0NThmMzIxYjg0ZDg5MjNmYWUzNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJPcHRpb25FbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBXZWJTdHJp
bmcgV2ViT3B0aW9uRWxlbWVudDo6bGFiZWwoKSBjb25zdAogCiBib29sIFdlYk9wdGlvbkVsZW1l
bnQ6OmlzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEoY29uc3RVbndyYXA8SFRNTE9w
dGlvbkVsZW1lbnQ+KCktPmRpc2FibGVkKCkpOworICAgIHJldHVybiAhKGNvbnN0VW53cmFwPEhU
TUxPcHRpb25FbGVtZW50PigpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSk7CiB9CiAKIFdlYk9w
dGlvbkVsZW1lbnQ6OldlYk9wdGlvbkVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MT3B0aW9u
RWxlbWVudD4mIGVsZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYXNzd29yZEZvcm1VdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
YXNzd29yZEZvcm1VdGlscy5jcHAKaW5kZXggYWUzOTk5NDI1YjdhYmM0OTUwNzczMjBhMDU0MzFk
YjgwYzZiOWEzMi4uNWFkNGExZTY0N2MyZWFiY2UzMDg0N2Y1ZjVlZDVmN2JkMzgwYWQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFzc3dvcmRGb3JtVXRpbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhc3N3b3JkRm9ybVV0aWxz
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIGZpbmRQYXNzd29yZEZvcm1GaWVsZHMoSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBQYXNzd29yZEZvcm1GaWVsZHMqIGZpZWxkcykKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRv
SFRNTElucHV0RWxlbWVudChmb3JtRWxlbWVudCk7Ci0gICAgICAgIGlmICghaW5wdXRFbGVtZW50
LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlm
ICgoZmllbGRzLT5wYXNzd29yZHMuc2l6ZSgpIDwgbWF4UGFzc3dvcmRzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKaW5kZXgg
YzM4NTI5MWY3OTZkZjIxYTY1ODEyNjRlYWMzNzU5ZTJhOWUzMWQ3Mi4uZDBkOWM2NTNiZDZlODhl
NTU4Yjg4ZGE0OGExNGNkZjE4YmVkNzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAg
SFRNTElucHV0RWxlbWVudCogZmluZFN1aXRhYmxlU2VhcmNoSW5wdXRFbGVtZW50KGNvbnN0IEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKIAogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBm
b3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPigqaSk7CiAK
LSAgICAgICAgaWYgKGZvcm1FbGVtZW50LT5kaXNhYmxlZCgpIHx8IGZvcm1FbGVtZW50LT5uYW1l
KCkuaXNOdWxsKCkpCisgICAgICAgIGlmIChmb3JtRWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgfHwgZm9ybUVsZW1lbnQtPm5hbWUoKS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGlmICghSXNJbkRlZmF1bHRTdGF0ZShmb3JtRWxlbWVudCkgfHwgZm9y
bUVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykpCkBAIC0yMDUsNyAr
MjA1LDcgQEAgYm9vbCBidWlsZFNlYXJjaFN0cmluZyhjb25zdCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0sIFZlY3RvcjxjaGFyPiogZW5jb2RlZFN0cmluZywKIAogICAgICAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KiBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqPigqaSk7CiAKLSAgICAgICAgaWYgKGZvcm1FbGVtZW50LT5kaXNhYmxlZCgpIHx8IGZvcm1F
bGVtZW50LT5uYW1lKCkuaXNOdWxsKCkpCisgICAgICAgIGlmIChmb3JtRWxlbWVudC0+aXNEaXNh
YmxlZEZvcm1Db250cm9sKCkgfHwgZm9ybUVsZW1lbnQtPm5hbWUoKS5pc051bGwoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEZvcm1EYXRhTGlzdCBkYXRhTGlzdCgqZW5jb2Rp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDA1ZGI1NWE2NDFiOTFj
NDM5MjdhZGExMDQ5MDMyMjQ5NWQ1NTljNzYuLjlmM2JlMzMyZWU4YjMzNDc3OTk4OTJlNzM5YTdh
NWJlYmMwZjkzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTEwNzks
NyArMTA3OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVu
dDo6ZGlzYWJsZWQoCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obV9lbGVtZW50KTsKLSAgICAqcmVzdWx0ID0g
aW5wdXRFbGVtZW50LT5kaXNhYmxlZCgpID8gVFJVRSA6IEZBTFNFOworICAgICpyZXN1bHQgPSBp
bnB1dEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpID8gVFJVRSA6IEZBTFNFOwogICAg
IHJldHVybiBTX09LOwogfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195428</attachid>
            <date>2013-03-27 16:16:42 -0700</date>
            <delta_ts>2013-03-27 18:09:30 -0700</delta_ts>
            <desc>add OVERRIDE</desc>
            <filename>bug-113273-20130328081640.patch</filename>
            <type>text/plain</type>
            <size>63403</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkxYjI2ODE4ZjMzMGFk
MTViZTA0NzAxY2E4ZjAyOGM4MmI0ZmZmMy4uYTZlZWNhODA3ZmUyMTZjMGExOWFkODhiYmI5ZjUy
NjU4NTkwMTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAxMy0wMy0yNyAgTWF0
dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Jp
bmc6IFJlcGxhY2UgRWxlbWVudDo6ZGlzYWJsZWQgYW5kIGlzRW5hYmxlZEZvcm1Db250cm9sIHdp
dGggaXNEaXNhYmxlZEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMyNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbGVtZW50OjpkaXNhYmxlZCBpcyBhYm91dCBmb3JtIGNvbnRyb2xz
IGFuZCBFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBpcyByZWR1bmRhbnQg
d2l0aCBpdCwgc28gcmVwbGFjZSB0aGVtIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24KKyAgICAgICAg
RWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
dGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUxpc3RCb3g6OmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3Vz
QXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmlzRW5hYmxlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
Y3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2wpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNEaXNhYmxlZEZvcm1Db250cm9sKTogQWRkIGhlbHBlciBmdW5jdGlvbiBmb3IgY29u
dmVuaWVuY2UuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0dlc3R1cmVFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAqIGh0bWwv
QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lckRpc2FibGVkKToKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpET01Gb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVu
dDo6aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTWF0Y2hpbmdFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzdXBwb3J0c0Zv
Y3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6aXNEaXNhYmxlZE9yUmVhZE9ubHkpOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1N1
Y2Nlc3NmdWxTdWJtaXRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9wdEdyb3VwRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50Lmg6CisgICAgICAgIChIVE1MT3B0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRW
YWxpZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojps
aXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6b3B0aW9uQXRJbmRleCk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZh
dGVFdmVudCk6CisgICAgICAgICogaHRtbC9SZXNldElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNldElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAg
ICogaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5w
dXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1
bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OnVwZGF0ZUltYWdlKToKKyAgICAgICAg
KiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0VuYWJsZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aXNFbmFibGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpnZXRNZWRpYVVJUGFydFN0YXRlRmxhZ3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hY1NoYXJlZC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjU2hh
cmVkOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjU2hhcmVkOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorCiAyMDEzLTAzLTI3ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
UFUgcHJvZmlsZXIuIFN3YXAgRmxhbWVDaGFydCB3aXRoIERhdGEgR3JpZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDNiODE5MzkxZDAxMGUzNDk2NGI3YWI3NzdhNTc2ZWFkOGVi
ODQ3YmMuLmQwY2M3ZmJiZTIzNDAxOGU2MmU2ODgyZDE3ODY3M2UxY2U2NThhZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAzLTI3ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3Rvcmlu
ZzogUmVwbGFjZSBFbGVtZW50OjpkaXNhYmxlZCBhbmQgaXNFbmFibGVkRm9ybUNvbnRyb2wgd2l0
aCBpc0Rpc2FibGVkRm9ybUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVsZW1lbnQ6OmRpc2FibGVkIGlzIGFib3V0IGZvcm0gY29udHJvbHMg
YW5kIEVsZW1lbnQ6OmlzRW5hYmxlZEZvcm1Db250cm9sCisgICAgICAgIGlzIHJlZHVuZGFudCB3
aXRoIGl0LCBzbyByZXBsYWNlIHRoZW0gd2l0aCBhIHNpbmdsZSBmdW5jdGlvbgorICAgICAgICBF
bGVtZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsVHJhbnNmb3JtRGF0YTo6ZmluZFBhc3N3b3JkRm9ybUZpZWxkcyk6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RE9NU3VwcG9ydDo6aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OklucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBvcHVwKToKKwogMjAxMy0wMy0yNiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWxsb3cgU2hhZG93Q29u
dGVudHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMTA1YjVkMGQ1ZDEzNzg0ZTIyZDdhMjAwOTFiN2I4MTJmMDNkYjU4MS4uYjM0ZWI2OTQ1YmUz
YmZmMjMwZGExMmMyZGYzNjNjOThhNTFjNDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMy0yNyAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IFJlcGxhY2UgRWxlbWVudDo6ZGlz
YWJsZWQgYW5kIGlzRW5hYmxlZEZvcm1Db250cm9sIHdpdGggaXNEaXNhYmxlZEZvcm1Db250cm9s
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMyNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbGVtZW50
OjpkaXNhYmxlZCBpcyBhYm91dCBmb3JtIGNvbnRyb2xzIGFuZCBFbGVtZW50Ojppc0VuYWJsZWRG
b3JtQ29udHJvbAorICAgICAgICBpcyByZWR1bmRhbnQgd2l0aCBpdCwgc28gcmVwbGFjZSB0aGVt
IHdpdGggYSBzaW5nbGUgZnVuY3Rpb24KKyAgICAgICAgRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1D
b250cm9sLgorCisgICAgICAgICogc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZvcm1Db250cm9sRWxlbWVudDo6aXNFbmFibGVkKToKKyAgICAgICAg
KiBzcmMvV2ViT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wdGlvbkVs
ZW1lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlBhc3N3b3JkRm9ybVV0aWxzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6ZmluZFBhc3N3b3JkRm9ybUZpZWxkcyk6CisgICAgICAgICog
c3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHA6CisgICAgICAgIChIVE1MTmFtZXM6OmZpbmRT
dWl0YWJsZVNlYXJjaElucHV0RWxlbWVudCk6CisgICAgICAgIChIVE1MTmFtZXM6OmJ1aWxkU2Vh
cmNoU3RyaW5nKToKKwogMjAxMy0wMy0yNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmVuYW1lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5IHRv
IGlzUmVhZE9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBlNWIxMmNhN2IxNjUyYmFhYWMyNmZiNGZk
NjQ5MjE2YjcwNTdlNDViLi43MjIyZjg2ZTY5MWM1MmEyZDdhYzhmZTYwMjRjNGU5YTlhZjUzNzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDMtMjcgIE1hdHQgRmFs
a2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBS
ZXBsYWNlIEVsZW1lbnQ6OmRpc2FibGVkIGFuZCBpc0VuYWJsZWRGb3JtQ29udHJvbCB3aXRoIGlz
RGlzYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEzMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRWxlbWVudDo6ZGlzYWJsZWQgaXMgYWJvdXQgZm9ybSBjb250cm9scyBhbmQg
RWxlbWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2wKKyAgICAgICAgaXMgcmVkdW5kYW50IHdpdGgg
aXQsIHNvIHJlcGxhY2UgdGhlbSB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uCisgICAgICAgIEVsZW1l
bnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbC4KKworICAgICAgICAqIERPTUhUTUxDbGFzc2VzLmNw
cDoKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmRpc2FibGVkKToKKwogMjAxMy0wMy0y
NyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5IHRvIGlzUmVhZE9ubHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5k
ZXggNDc5NTg0OWJmMDRmMDQxM2UzZjgyZTY3ODE2NzQ0NDA5MzlkNzYyZC4uOWM0OTcwZWRiYTZh
ZDE2Yzg5OWFjNzJkZTM1MTA4MGZkYjJiYzk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3ROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgcmV0dXJuICF0b0hUTUxTZWxlY3RFbGVtZW50KHNlbGVjdE5vZGUpLT5kaXNh
YmxlZCgpOworICAgIHJldHVybiAhdG9IVE1MU2VsZWN0RWxlbWVudChzZWxlY3ROb2RlKS0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFk
ZENoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggMzA3NGYxZmNlYjdjMmMxODdj
YTNiYjI2YWQ3M2FhYmI4NzM4OWViOC4uZDcwOTMyYzMwM2JiMzRlY2RlYWZjMDc3NDEyMjNiYTcz
YmQyNDk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTEzOSwxMSArMTM5LDExIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkg
Y29uc3QKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fb3B0aW9uRWxlbWVudC0+ZGlz
YWJsZWQoKSkKKyAgICBpZiAobV9vcHRpb25FbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBz
ZWxlY3RFbGVtZW50ID0gbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0
RWxlbWVudCAmJiBzZWxlY3RFbGVtZW50LT5kaXNhYmxlZCgpKQorICAgIGlmIChzZWxlY3RFbGVt
ZW50ICYmIHNlbGVjdEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5kZXggMDVh
NTYzMjFjYWJmYmVmODQ4MDBmODFhZGJkZDU5NjA5MGRmZGNiNi4uOTk0YTMzNDY4MTA1ZDNlMDc5
ZjcxMDIwZTkwNjZiZDQyZDg5MTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtOTIsNyArOTIsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdAog
ICAgIGlmICghbm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9F
bGVtZW50KG5vZGUoKSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuICF0b0Vs
ZW1lbnQobm9kZSgpKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eU1lbnVMaXN0OjpkaWRVcGRhdGVBY3RpdmVPcHRpb24oaW50IG9wdGlvbkluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwCmluZGV4IDQ4MGUzNTcyNmEzOTY2ZGE4YjdiMTZlOTU4MDkx
OTNkN2JlZDIwY2UuLmNjNjJhMWFmMDZkZTY0YTM5ODRlNmM3ODc1ZTQ1OWU0ZTg3NzA1NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRWxlbWVudCogQWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uOjphY3Rpb25FbGVtZW50KCkgY29uc3QKICAgICAKIGJvb2wg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc0VuYWJsZWQoKSBjb25zdAogewotICAgIC8v
IGRpc2FibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgPHNlbGVjdD4gZWxlbWVudCBp
cyBkaXNhYmxlZCwKKyAgICAvLyBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSByZXR1cm5zIHRydWUg
aWYgdGhlIHBhcmVudCA8c2VsZWN0PiBlbGVtZW50IGlzIGRpc2FibGVkLAogICAgIC8vIHdoaWNo
IHdlIGRvbid0IHdhbnQuCiAgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dCo+KG1fZWxlbWVudC5nZXQoKSktPm93bkVsZW1lbnREaXNhYmxlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAppbmRleCAxMWU2MGYxOWMzN2I4OGJkMmU4NDdlMWNhNDg2MTY3OTUxYjczMDdiLi4yNmUx
YWI0ZjhkYjE3YmJmMjk4ZTBjMjQ0Nzg4ODc5MzRhZTIxOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApA
QCAtNTk4LDcgKzU5OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxl
ZCgpIGNvbnN0CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIHRvRWxlbWVudChub2RlKS0+aXNFbmFibGVk
Rm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gIXRvRWxlbWVudChub2RlKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5kZXRl
cm1pbmF0ZSgpIGNvbnN0CkBAIC05MDksNyArOTA5LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFjdGlvbkVsZW1lbnQoKSBjb25zdAogCiAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoIWlucHV0LT5k
aXNhYmxlZCgpICYmIChpc0NoZWNrYm94T3JSYWRpbygpIHx8IGlucHV0LT5pc1RleHRCdXR0b24o
KSkpCisgICAgICAgIGlmICghaW5wdXQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIChpc0No
ZWNrYm94T3JSYWRpbygpIHx8IGlucHV0LT5pc1RleHRCdXR0b24oKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gaW5wdXQ7CiAgICAgfSBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKGJ1dHRvblRhZykp
CiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CkBAIC0xNzYwLDcgKzE3NjAsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmICF0b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9s
KCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbChub2RlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIG5vZGUtPnN1cHBvcnRzRm9jdXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMGIzZWRmM2E5ZGMwZGU3MDkwYmZmNjYwMzA3
YmZjNzdkZmRmOWE3Mi4uMzE0YzdkYjA4OWE3MmFjMTI1N2ZlZTJjNjdiOWEzMTNkNzAzMmJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTYwNyw3ICs2MDcsNyBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFNpYgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VuYWJsZWQ6CiAgICAgICAgICAgICBpZiAoZWxlbWVudCAm
JiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGlvblRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFBhZ2VN
ZWRpYToKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCkg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCk7CkBAIC02MTYsNyArNjE2
LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50
ICYmIGVsZW1lbnQtPmlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKTsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRGlzYWJsZWQ6CiAgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiAoZWxl
bWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlv
blRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvUmVhZE9ubHk6CiAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LT5tYXRjaGVzUmVhZE9ubHlQc2V1ZG9D
bGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDhkNjhjNGU5ZWIz
NDNiNTlhZTI5MzhkYjU0NGQ0MTczYTk3ZDkyYzIuLmE5NzZkNmZkMGVlNWNkMzEzMjgxNjM2OWEw
MmNjYTJjMTJmNjcxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU0
OCw3ICs1NDgsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoQ29udHJv
bChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIGlmICh0aGlzSW5wdXRFbGVtZW50
LT5pc1JlcXVpcmVkKCkgIT0gb3RoZXJJbnB1dEVsZW1lbnQtPmlzUmVxdWlyZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9s
KCkgIT0gc3RhdGUuZWxlbWVudCgpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChl
bGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAhPSBzdGF0ZS5lbGVtZW50KCktPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZWxl
bWVudC0+aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpICE9IHN0YXRlLmVsZW1lbnQoKS0+aXNEZWZh
dWx0QnV0dG9uRm9yRm9ybSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQzNzQ3MWQ4MzY1
ZGUxYjE5NGZkZjA4MTkzNTg2ZTg4MDZkY2I0MjguLjYxMDE1YzY0YjJiY2JlM2EzZDNjMjBjZDMy
YzJhMDU4YWY0YmU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTExNzYsNyArMTE3Niw3
IEBAIHZvaWQgRWxlbWVudDo6c2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZl
bnQoYm9vbCkKIHsKIH0KIAotYm9vbCBFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0Citib29sIEVs
ZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQogICAgIC8vIEZJWE1FOiBkaXNhYmxlZCBhbmQgaW5lcnQgYXJlIHNlcGFyYXRl
IGNvbmNlcHRzIGluIHRoZSBzcGVjLCBidXQgbm93IHdlIHRyZWF0IHRoZW0gYXMgdGhlIHNhbWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBkZDg2MGYwNmM2NDdlNmU3ZDkzMDMxNDlhNDM0OTM0MmU5
Zjk1OWZmLi4xNGQ1ZjEyNTE4OWVkYWVlYmE1ZTk3NDI5YjQ3ZWY0ZGVlNDIxNTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTUzNyw3ICs1MzcsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTYwLDcgKzU1OSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFVzZWQgZm9yIGRpc2FibGVkIGZvcm0gZWxlbWVudHM7IGlmIHRydWUsIHByZXZl
bnRzIG1vdXNlIGV2ZW50cyBmcm9tIGJlaW5nIGRpc3BhdGNoZWQKICAgICAvLyB0byBldmVudCBs
aXN0ZW5lcnMsIGFuZCBwcmV2ZW50cyBET01BY3RpdmF0ZSBldmVudHMgZnJvbSBiZWluZyBzZW50
IGF0IGFsbC4KLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCiAgICAgYm9vbCBpc0luZXJ0KCkgY29uc3Q7CkBAIC03NTQsNiArNzUzLDExIEBA
IGlubGluZSBjb25zdCBFbGVtZW50KiB0b0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIC8vIFRo
aXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9F
bGVtZW50KGNvbnN0IEVsZW1lbnQqKTsKIAoraW5saW5lIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250
cm9sKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOworfQorCiBpbmxp
bmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhpcyktPmhhc1Rh
Z05hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGEy
MWNmYjczMTAyNTlmZmFkNGQwYWE2ZGNjYjM1M2I5ZDhmMDFjMDUuLmFiMTk2OTk4YWQxMjFiMTcw
OTRiNTRkMzU1NDYxMjcyNzgzMDc5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNj
b3BlZEV2ZW50KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lCiAKIHZvaWQg
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqIG5vZGUsIEV2ZW50
KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgbW91c2VF
dmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQog
ewotICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wobm9kZSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VzdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCmluZGV4IDAxNTc1NWE3OTJmOGM0MmFmMDU3Y2U5MDk3
M2EwNjg1YjAzMDQ3ODkuLjRmYTgxNjM2NjczM2RmY2MzM2FhYjc0MTdjY2Q1NjJhMDBkNWI5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgR2Vz
dHVyZUV2ZW50KiBHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpIGNvbnN0CiAK
IGJvb2wgR2VzdHVyZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERp
c3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKGRpc3BhdGNoZXItPm5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChkaXNwYXRjaGVyLT5ub2RlKCkpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woZGlzcGF0Y2hlci0+bm9kZSgp
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCmluZGV4IDEwZjM5MjgyOTAzNTFiMDJjYWUxM2E0MGIw
YjFmY2Y5ODZmNmYyNjkuLmZhYTkxYTE1ZjYzNDc2MWRkZTViZDUyZThmZDI0ZDg3OWM1NjhkODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIE1v
dXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciog
ZGlzcGF0Y2hlcikgY29ucwogICAgICAgICByZXR1cm4gZGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsK
ICAgICB9CiAKLSAgICBpZiAoZGlzcGF0Y2hlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KGRpc3BhdGNoZXItPm5vZGUoKSktPmRpc2FibGVkKCkpIC8vIERvbid0IGV2ZW4g
c2VuZCBET00gZXZlbnRzIGZvciBkaXNhYmxlZCBjb250cm9scy4uCisgICAgaWYgKGlzRGlzYWJs
ZWRGb3JtQ29udHJvbChkaXNwYXRjaGVyLT5ub2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoZXZlbnQoKS0+dHlwZSgpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA5NjZmZTcyNDRkNjExMmUxNWVjMDVmN2Y4YjE0YmQzYzQ5ZWJmMGI5Li4yZjI1ZjBlNTQ2Yjcz
NzE5NjFmNThmYmQ1OWE1YmFhNjU5MDM5ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMzI0LDcg
KzIzMjQsNyBAQCB2b2lkIE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWhhc0V2ZW50VGFyZ2V0RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+ZGlzYWJsZWQoKSAmJiBldmVudC0+
aXNNb3VzZUV2ZW50KCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCh0aGlzKSAmJiBl
dmVudC0+aXNNb3VzZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZpcmVFdmVudExp
c3RlbmVycyhldmVudCk7CkBAIC0yNTIzLDE0ICsyNTIzLDE0IEBAIHZvaWQgTm9kZTo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01v
dXNlTW92ZUV2ZW50cygpCiB7Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
dGhpcyktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCh0aGlzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNl
b3V0RXZlbnQpOwogfQogCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkKIHsKLSAgICBpZiAoaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+ZGlzYWJs
ZWQoKSkKKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKHRoaXMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxJc0Fs
d2F5c05vbkVkaXRhYmxlKSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQp
IHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8fCBoYXNFdmVu
dExpc3RlbmVycyhldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7CiB9CkBAIC0yNTM4LDcg
KzI1MzgsNyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIGJv
b2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkKIHsKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHRoaXMpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wodGhpcykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRv
dWNoc3RhcnRFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNobW92
ZUV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVu
dCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMzBlYjk5N2QyMWU0ODM2YjU1ODE0
N2U5YmYyZGEwNzk2ZGJjYmY1Ni4uYzM3OTgzZjM3OWYwYzBiYmM4ZjY1NzVhNWE5MGFkMzFiMjY3
MWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVs
dGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBi
b29sIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYXNDdXN0b21Gb2N1
c0xvZ2ljKCkgY29uc3QKIAogYm9vbCBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0
VHlwZTo6aXNFZGl0Q29udHJvbE93bmVyRGlzYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBl
bGVtZW50KCktPmRpc2FibGVkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKIGJvb2wgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmlzRWRpdENvbnRyb2xPd25lclJlYWRPbmx5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Gb3JtRGF0YS5jcHAKaW5kZXggNzAzYTY5ZGJkODA4ZGM2ZjQ1MjA4YzFkYzRmMDBlYzBhYmUx
MWU2ZC4uYmZkZTkxYjgzYTg5ODgzMmI2MWRmYjQyOTZiOWU5YTdiNWJkZWEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NRm9ybURhdGE6OkRP
TUZvcm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmb3JtLT5hc3NvY2lhdGVkRWxlbWVudHMoKS5zaXplKCk7ICsraSkgewogICAgICAg
ICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBmb3JtLT5hc3NvY2lhdGVkRWxlbWVu
dHMoKVtpXTsKLSAgICAgICAgaWYgKCF0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5kaXNhYmxlZCgp
KQorICAgICAgICBpZiAoIXRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpKQogICAgICAgICAgICAgZWxlbWVudC0+YXBwZW5kRm9ybURhdGEoKnRoaXMsIHRydWUp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDhiY2Mx
MDFkNjk1ZTZkNDNjOGE4NGRlNDlmMDBhNTJmNTNlMDE3ZWMuLmIwY2ZmODMyNzJkZWY3ZDljMGRi
ODhiY2U2OGI1ZTBkYWNhMmQ1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIFN0cmluZyBGaWxlSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmdU
ZXh0KCkgY29uc3QKIAogdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50
KEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpKQorICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQpAQCAt
MzEwLDcgKzMxMCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFu
Z2VkKCkKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3coKSk7CiAgICAgVXBsb2FkQnV0dG9u
RWxlbWVudCogYnV0dG9uID0gc3RhdGljX2Nhc3Q8VXBsb2FkQnV0dG9uRWxlbWVudCo+KGVsZW1l
bnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOwogICAgIGlmIChidXR0
b24pCi0gICAgICAgIGJ1dHRvbi0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVs
ZW1lbnQoKS0+ZGlzYWJsZWQoKSk7CisgICAgICAgIGJ1dHRvbi0+c2V0Qm9vbGVhbkF0dHJpYnV0
ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpOwogfQog
CiB2b2lkIEZpbGVJbnB1dFR5cGU6Om11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGMxMDJiMTk0MzBhNDRjYWUx
MzM3YzRiNjA3NGRmOGY3N2U0YjljNTUuLmIxM2I2YTY4ZmYyNTY0ZTkyNTU2YjQxZTczYzI2MTA3
MGM1OWNiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKIAogdm9pZCBIVE1MQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQgJiYgIWRpc2Fi
bGVkKCkpIHsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuRE9NQWN0aXZh
dGVFdmVudCAmJiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgaWYgKGZvcm0o
KSAmJiBtX3R5cGUgPT0gU1VCTUlUKSB7CiAgICAgICAgICAgICBtX2lzQWN0aXZhdGVkU3VibWl0
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZvcm0oKS0+cHJlcGFyZUZvclN1Ym1pc3Npb24oZXZlbnQp
OwpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiBib29sIEhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7Ci0gICAgaWYgKCFkaXNhYmxlZCgpICYmIGZvcm0o
KSAmJiAobV90eXBlID09IFNVQk1JVCB8fCBtX3R5cGUgPT0gUkVTRVQpKQorICAgIGlmICghaXNE
aXNhYmxlZEZvcm1Db250cm9sKCkgJiYgZm9ybSgpICYmIChtX3R5cGUgPT0gU1VCTUlUIHx8IG1f
dHlwZSA9PSBSRVNFVCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQpAQCAt
MTY0LDcgKzE2NCw3IEBAIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym1p
dEJ1dHRvbigpIGNvbnN0CiB7CiAgICAgLy8gSFRNTCBzcGVjIHNheXMgdGhhdCBidXR0b25zIG11
c3QgaGF2ZSBuYW1lcyB0byBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwuCiAgICAgLy8gSG93ZXZl
ciwgb3RoZXIgYnJvd3NlcnMgZG8gbm90IGltcG9zZSB0aGlzIGNvbnN0cmFpbnQuCi0gICAgcmV0
dXJuIG1fdHlwZSA9PSBTVUJNSVQgJiYgIWRpc2FibGVkKCk7CisgICAgcmV0dXJuIG1fdHlwZSA9
PSBTVUJNSVQgJiYgIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBib29sIEhUTUxCdXR0
b25FbGVtZW50Ojppc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uY3BwCmluZGV4IDhhZDBiYjc4YTQxZDgzOTIyOGUyODk2YzcwY2QwZWFmNGE5
NGZkYTguLjRjMjY1ODIzNzY5MWUxYWZkOWE4YjM0NDgzYmNlODc5Yzk0NDhiZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24q
IGh0bWxDb2xsZWN0aW9uLAogICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgogICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykpIHsKICAgICAgICAgICAgIEhUTUxPcHRp
b25FbGVtZW50KiBvcHRpb24gPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KGVsZW1l
bnQpOwotICAgICAgICAgICAgaWYgKCFvcHRpb24tPmRpc2FibGVkKCkgJiYgIW9wdGlvbi0+dmFs
dWUoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoIW9wdGlvbi0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgJiYgIW9wdGlvbi0+dmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMTU1ZGU0ZjU3
OWVlNzE1OTU5ODRhNjc0NDdkYzNlODc0NzQ0ODYwMi4uNTBkOGY1ZGYzMzEzN2UyMDQ2NDUzZjBj
NzQyMzkxZTE5NWIyYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVBbmNlc3RvckRpc2FibGVkU3RhdGUoKSBjb25zdAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSAo
ZmllbGRTZXRBbmNlc3RvciAmJiBmaWVsZFNldEFuY2VzdG9yLT5kaXNhYmxlZCgpICYmICEobGVn
ZW5kQW5jZXN0b3IgJiYgbGVnZW5kQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci0+bGVnZW5k
KCkpKSA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkIDogQW5jZXN0b3JEaXNhYmxlZFN0
YXRlRW5hYmxlZDsKKyAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9IChmaWVsZFNldEFuY2Vz
dG9yICYmIGZpZWxkU2V0QW5jZXN0b3ItPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICEobGVn
ZW5kQW5jZXN0b3IgJiYgbGVnZW5kQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci0+bGVnZW5k
KCkpKSA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkIDogQW5jZXN0b3JEaXNhYmxlZFN0
YXRlRW5hYmxlZDsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphbmNlc3RvckRp
c2FibGVkU3RhdGVXYXNDaGFuZ2VkKCkKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9ybUNvbnRyb2xJbnB1dEV2ZW50KCkKICAgICBIVE1M
RWxlbWVudDo6ZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CiAKLWJvb2wgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdAogewogICAgIGlmIChtX2Rpc2FibGVkKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKICAgICAgICAgdXBkYXRlQW5jZXN0b3JEaXNhYmxl
ZFN0YXRlKCk7CiAgICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlID09IEFuY2VzdG9yRGlz
YWJsZWRTdGF0ZURpc2FibGVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmRpc2FibGVkKCk7CisgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlcXVp
cmVkKCkgY29uc3QKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewotICAgIHJldHVybiAhZGlzYWJsZWQoKTsK
KyAgICByZXR1cm4gIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBib29sIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMThjNTkzZWE5Y2E4ZTdlOTg4M2RlZWEy
MDZhYjQ5N2ViYmY2OGRmZi4uMDhiODViMjMwNWRlNTg1ZmUwNzFjOTVlZWUyZGNkYWNkODcyYzBh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb3JtQ29udHJvbElu
cHV0RXZlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Vu
dW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03NCw3ICs3NCw2IEBAIHB1
YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBmb3Jt
Q29udHJvbFR5cGUoKTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFi
bGVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQogCiAgICAgdmly
dHVhbCBib29sIGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC05NSw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICBib29sIGlzUmVh
ZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2lzUmVhZE9ubHk7IH0KLSAgICBib29sIGlzRGlzYWJs
ZWRPclJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gZGlzYWJsZWQoKSB8fCBtX2lzUmVhZE9ubHk7
IH0KKyAgICBib29sIGlzRGlzYWJsZWRPclJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gaXNEaXNh
YmxlZEZvcm1Db250cm9sKCkgfHwgbV9pc1JlYWRPbmx5OyB9CiAKICAgICBib29sIGhhc0F1dG9m
b2N1c2VkKCkgeyByZXR1cm4gbV9oYXNBdXRvZm9jdXNlZDsgfQogICAgIHZvaWQgc2V0QXV0b2Zv
Y3VzZWQoKSB7IG1faGFzQXV0b2ZvY3VzZWQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzN2M2YmY3YThmMWY2MDM5M2JiYmJhNTM5NGM4YmVh
OTcxMmNiZWJjLi5mYTg2ZjI5Njc2YTFmNjk4ZTNmMzdkZmVmOGMxOGVhNzVlMTQyMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg0MSw3ICs4NDEsNyBA
QCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpIGNvbnN0
CiB7CiAgICAgLy8gSFRNTCBzcGVjIHNheXMgdGhhdCBidXR0b25zIG11c3QgaGF2ZSBuYW1lcyB0
byBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwuCiAgICAgLy8gSG93ZXZlciwgb3RoZXIgYnJvd3Nl
cnMgZG8gbm90IGltcG9zZSB0aGlzIGNvbnN0cmFpbnQuIFNvIHdlIGRvIG5vdC4KLSAgICByZXR1
cm4gIWRpc2FibGVkKCkgJiYgbV9pbnB1dFR5cGUtPmNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRv
bigpOworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgbV9pbnB1dFR5cGUt
PmNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OmlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIGltcGxlbWVudGluZyB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIGluIElucHV0VHlwZSBpZiBtb3JlIGFjY3VyYXRlIHJlc3VsdHMgYXJlIG5lY2Vzc2Fy
eS4KLSAgICBpZiAoIWRpc2FibGVkKCkpCisgICAgaWYgKCFpc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCAxMjcxYjUyMmUzZWViZDU3ZDE5
NmQyMzQxNmY5MTU1NTY0OWFmNjNlLi5hOTA3OTljYjA5ZmI0YjA0ZjdlODU3ZjFkNWQwODBjNjYw
NzBmYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUGFzc1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50PiBIVE1MT3B0
R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxPcHRHcm91cEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
Ym9vbCBIVE1MT3B0R3JvdXBFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0Citib29sIEhUTUxPcHRH
cm91cEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0R3JvdXBFbGVtZW50LmgKaW5kZXggMWJmYjE0MDZiZDk3ZGRiNTVkZjA2NjZmYzk5MWZk
ZjhmZmIxOWYzZC4uZmUxODFmN2M1MjJkMTVmMjlmMDhhNDlkOGE5MzE0YzA1YWRkMjRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAgY2xhc3MgSFRNTE9wdEdyb3VwRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGRpc2Fi
bGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBvd25lclNlbGVj
dEVsZW1lbnQoKSBjb25zdDsKICAgICAKICAgICBTdHJpbmcgZ3JvdXBMYWJlbFRleHQoKSBjb25z
dDsKQEAgLTQ1LDcgKzQ1LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
Rm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAhZGlzYWJsZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggZGFjYmRiMTRkZTNiMWU4NjgwNTk2
N2UzOWJkNWE5MGI0MGE5OTVjNS4uNGE4OGMwYjliYWZhZTYwMjQ4MjQxY2NkYmZlM2EzYzU5Y2M3
MmY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTM0
Niw3ICszNDYsNyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHRJbmRlbnRlZFRvUmVz
cGVjdEdyb3VwTGFiZWwoKSBjb25zdAogICAgIHJldHVybiB0ZXh0KCk7CiB9CiAKLWJvb2wgSFRN
TE9wdGlvbkVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKK2Jvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6
OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7CiAgICAgaWYgKG93bkVsZW1lbnREaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBib29sIEhU
TUxPcHRpb25FbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIEhUTUxFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1l
bnQqPihwYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBwYXJlbnRFbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGdyb3VwVGFnKSAmJiBwYXJlbnRFbGVtZW50LT5kaXNhYmxlZCgpOworICAgIHJldHVybiBw
YXJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSAmJiBwYXJlbnRFbGVtZW50LT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGlu
c2VydGlvblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4
IDE5ZjU2OWI5NzYwODFmMTlhODQ1OTZhNTg4NDQyODEzYTE1NjgzMWIuLjY3M2YwNzdmMzIyYWNm
NjdhZjczOWE1YjY2MmQ3MDhhZDg1NGM5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmgKQEAgLTU4LDEwICs1OCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbGFiZWwo
KSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVh
bCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWRp
c2FibGVkKCk7IH0KICAgICBib29sIG93bkVsZW1lbnREaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzYWJsZWQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIFN0cmluZyB0ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNzI2YWI0NDM0MGZh
MjE4NWU5ZmQ3YWY2MjE1MjBlNmRhZjE5Mjk3My4uNWY3Y2QyNjEyZTAxY2Q3YjVlMDM3ODNkMGE3
ODMxMDdjMjJiYjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0Ry
YWcoKSBjb25zdAogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpCiB7Ci0gICAgaWYgKGRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ID0gcmVuZGVyZXIoKTsKICAgICBpZiAoIXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IDFiYThhZTM0YzE5NmYxODhjMGU5NDljMzhhNzc0MzA1ZGU5OWI4
NDIuLmRjMTYxNWExMWZjZTQwOTBhYzVkYTI0ZjVlODcwNGYzMWYwODMxMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgaW50
IEhUTUxTZWxlY3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleChpbnQgbGlzdEluZGV4LCBTa2lwRGly
ZWN0aW9uIGRpcmVjdGlvbiwgaW4KICAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7CiAg
ICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5k
ZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7CiAgICAgICAgIC0tc2tpcDsKLSAg
ICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSAmJiBsaXN0SXRlbXNb
bGlzdEluZGV4XS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7CisgICAgICAgIGlmICghbGlzdEl0
ZW1zW2xpc3RJbmRleF0tPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIGxpc3RJdGVtc1tsaXN0
SW5kZXhdLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKICAgICAgICAgICAgIGxhc3RHb29kSW5k
ZXggPSBsaXN0SW5kZXg7CiAgICAgICAgICAgICBpZiAoc2tpcCA8PSAwKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVw
ZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucykKICAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGlvblRhZykgfHwgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+ZGlzYWJsZWQoKSkK
KyAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgfHwgdG9IVE1MT3B0
aW9uRWxlbWVudChlbGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaSA+PSBzdGFydCAmJiBpIDw9IGVuZCkKQEAgLTc2
Nyw3ICs3NjcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoYm9v
bCB1cGRhdGVTZWxlY3RlZFN0YXRlcykgY29uc3QKICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kU2VsZWN0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNlbGVjdGVkLT5zZXRT
ZWxlY3RlZFN0YXRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgZm91bmRTZWxlY3RlZCA9
IG9wdGlvbjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc2l6ZSA8PSAxICYmICFmb3Vu
ZFNlbGVjdGVkICYmICFvcHRpb24tPmRpc2FibGVkKCkpIHsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKG1fc2l6ZSA8PSAxICYmICFmb3VuZFNlbGVjdGVkICYmICFvcHRpb24tPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2VsZWN0ZWQgPSBv
cHRpb247CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2VsZWN0ZWQtPnNldFNlbGVjdGVkU3Rh
dGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgYm9vbCBI
VE1MU2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBsaXN0LCBib29s
KQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGlmIChlbGVt
ZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KS0+c2VsZWN0ZWQoKSAmJiAhdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+ZGlzYWJsZWQo
KSkgeworICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpICYmIHRvSFRN
TE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnNlbGVjdGVkKCkgJiYgIXRvSFRNTE9wdGlvbkVsZW1l
bnQoZWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICBsaXN0
LmFwcGVuZERhdGEobmFtZSwgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+dmFsdWUoKSk7
CiAgICAgICAgICAgICBzdWNjZXNzZnVsID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTI2Myw3ICsx
MjYzLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQg
bGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0
aW9uQW5jaG9ySW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKIAogICAgIC8vIFNldCB0aGUgc2VsZWN0
aW9uIHN0YXRlIG9mIHRoZSBjbGlja2VkIG9wdGlvbi4KLSAgICBpZiAoY2xpY2tlZEVsZW1lbnQt
Pmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiAhdG9IVE1MT3B0aW9uRWxlbWVudChjbGlja2VkRWxl
bWVudCktPmRpc2FibGVkKCkpCisgICAgaWYgKGNsaWNrZWRFbGVtZW50LT5oYXNUYWdOYW1lKG9w
dGlvblRhZykgJiYgIXRvSFRNTE9wdGlvbkVsZW1lbnQoY2xpY2tlZEVsZW1lbnQpLT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgdG9IVE1MT3B0aW9uRWxlbWVudChjbGlja2VkRWxl
bWVudCktPnNldFNlbGVjdGVkU3RhdGUodHJ1ZSk7CiAKICAgICAvLyBJZiB0aGVyZSB3YXMgbm8g
c2VsZWN0ZWRJbmRleCgpIGZvciB0aGUgcHJldmlvdXMgaW5pdGlhbGl6YXRpb24sIG9yIElmCkBA
IC0xMjkyLDcgKzEyOTIsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIEludFBvaW50IGxvY2FsT2Zmc2V0
ID0gcm91bmRlZEludFBvaW50KHJlbmRlcmVyKCktPmFic29sdXRlVG9Mb2NhbChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCksIFVzZVRyYW5zZm9ybXMpKTsKICAgICAgICAgaW50IGxpc3RJ
bmRleCA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+bGlzdEluZGV4QXRPZmZzZXQodG9J
bnRTaXplKGxvY2FsT2Zmc2V0KSk7CiAgICAgICAgIGlmIChsaXN0SW5kZXggPj0gMCkgewotICAg
ICAgICAgICAgaWYgKCFkaXNhYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAoIWlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0p
ICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRTdGF0ZShsaXN0
SW5kZXgsIG1vdXNlRXZlbnQtPm1ldGFLZXkoKSwgbW91c2VFdmVudC0+c2hpZnRLZXkoKSk7CiAj
ZWxzZQpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJv
eERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBJbnRQb2ludCBsb2Nh
bE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwobW91
c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBVc2VUcmFuc2Zvcm1zKSk7CiAgICAgICAgIGlu
dCBsaXN0SW5kZXggPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIoKSktPmxpc3RJbmRleEF0T2Zm
c2V0KHRvSW50U2l6ZShsb2NhbE9mZnNldCkpOwogICAgICAgICBpZiAobGlzdEluZGV4ID49IDAp
IHsKLSAgICAgICAgICAgIGlmICghZGlzYWJsZWQoKSkgeworICAgICAgICAgICAgaWYgKCFpc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICAgICAgICAgIGlmIChtX211bHRpcGxlKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgZXh0ZW5kIHNlbGVjdGlvbiBpZiB0aGVyZSBp
cyBzb21ldGhpbmcgc2VsZWN0ZWQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZVNl
bGVjdGlvbkFuY2hvckluZGV4IDwgMCkKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICgh
cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRpc2FibGVkKCkpIHsKKyAg
ICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNDg5LDcgKzE0ODksNyBAQCBTdHJpbmcgSFRNTFNlbGVjdEVsZW1l
bnQ6Om9wdGlvbkF0SW5kZXgoaW50IGluZGV4KSBjb25zdAogICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIAogICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gaXRlbXNbaW5kZXhdOwotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShvcHRp
b25UYWcpIHx8IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmRpc2FibGVkKCkpCisgICAg
aWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgfHwgdG9IVE1MT3B0aW9uRWxlbWVu
dChlbGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICByZXR1cm4gdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+dGV4dEluZGVu
dGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRU
eXBlLmNwcAppbmRleCBiOTM1ZGYwYWNlNmMwOGRhYWRkNWQyNmM2MzAwZTQzM2MwYmZkN2M0Li5k
YjU3YWE0YzM3M2QzY2I4MDA3MWI1NmY5YTYzYzNhYzRhNTVjMmU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIEltYWdlSW5wdXRU
eXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogdm9pZCBJbWFnZUlucHV0VHlwZTo6aGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZlbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQtPmRp
c2FibGVkKCkgfHwgIWVsZW1lbnQtPmZvcm0oKSkKKyAgICBpZiAoZWxlbWVudC0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgfHwgIWVsZW1lbnQtPmZvcm0oKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGVsZW1lbnQtPnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKICAgICBpZiAoZXZlbnQtPnVuZGVy
bHlpbmdFdmVudCgpICYmIGV2ZW50LT51bmRlcmx5aW5nRXZlbnQoKS0+aXNNb3VzZUV2ZW50KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKaW5kZXggOGZlYzBmZjc1NWMy
MDFkNmQ5ZWFiNWU1MGRiNDlmM2ZiNmUzNWY3Yi4uYmJjYzZjN2Y4MDYxM2M2NzQ4NzhhYTJlMDYw
NTc5YTlmNzg3NjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgYm9vbCBSZXNldElucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkg
Y29uc3QKIAogdm9pZCBSZXNldElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVu
dCogZXZlbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCAhZWxlbWVudCgp
LT5mb3JtKCkpCisgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwg
IWVsZW1lbnQoKS0+Zm9ybSgpKQogICAgICAgICByZXR1cm47CiAgICAgZWxlbWVudCgpLT5mb3Jt
KCktPnJlc2V0KCk7CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAKaW5kZXggNDg5ZDlhMWY4MWY0ZjhjOTkzYmRhZWYx
OTMxZTdmYjFiOTcwODE5NS4uODcyNGZmYjU0ZDU1ZmRhMzUyMzc1NDcxOWExNWUzODkwNTA1ZDll
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcApAQCAtNjgsNyArNjgs
NyBAQCBib29sIFN1Ym1pdElucHV0VHlwZTo6c3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0CiB2b2lk
IFN1Ym1pdElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZlbnQpCiB7
CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7
Ci0gICAgaWYgKGVsZW1lbnQtPmRpc2FibGVkKCkgfHwgIWVsZW1lbnQtPmZvcm0oKSkKKyAgICBp
ZiAoZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwgIWVsZW1lbnQtPmZvcm0oKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGVsZW1lbnQtPnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsK
ICAgICBlbGVtZW50LT5mb3JtKCktPnByZXBhcmVGb3JTdWJtaXNzaW9uKGV2ZW50KTsgLy8gRXZl
bnQgaGFuZGxlcnMgY2FuIHJ1bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDQ5MDQ5ZTNhMDRlY2MyZWQwMWU4YmE1NWQzYjVl
YmE4ZDI0ZWI3YTkuLjk5ZmUwNWY4NjE3NTIxMjk4NzFlZTNjNWUxYzZjMGI0ZDI3ODVlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cApAQCAtMjIxLDE0ICsyMjEsOSBAQCBSZW5kZXJPYmplY3QqIFNsaWRlclRodW1iRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZQogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXJUaHVtYih0aGlzKTsKIH0KIAotYm9vbCBTbGlkZXJU
aHVtYkVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKK2Jvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojpp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdAogewotICAgIHJldHVybiBob3N0SW5wdXQoKS0+
ZGlzYWJsZWQoKTsKLX0KLQotYm9vbCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmlzRW5hYmxlZEZvcm1D
b250cm9sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWRpc2FibGVkKCk7CisgICAgcmV0dXJuIGhv
c3RJbnB1dCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogYm9vbCBTbGlkZXJUaHVt
YkVsZW1lbnQ6Om1hdGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggZGU1MTAzNzhl
ZWQ1NTgzZGY5Mjk4ZDg3MjRiOTQ2ODRmYjU1N2U0Zi4uYjE0NjBlY2E3MTE1NDMzOTYzZWE0Y2Fl
NmFiZDFjNDJkZjA5NWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKQEAgLTY1LDggKzY1LDcgQEAgcHJpdmF0ZToKICAgICBTbGlkZXJU
aHVtYkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCk7
Ci0gICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBtYXRjaGVzUmVhZE9ubHlQc2V1ZG9DbGFzcygpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIE5vZGUqIGZvY3VzRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCmluZGV4IDU0OWFlNDQ5MDg3ZGZjMWZi
NTgwZjVmODA4ZWNkMjk2ZDg3MjMxNWUuLmIyMjM0NDA1M2QwNmVlY2JiNjZhZjQ1ZmIwNzhjM2Rh
NzA1YjdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuaApAQCAtNzIsOCArNzIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBzaGFkb3dIb3N0KCkgJiYgc2hhZG93SG9zdCgpLT5kaXNhYmxlZCgpOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gIWRpc2FibGVkKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc2hhZG93SG9zdCgpICYmIHNoYWRvd0hvc3QoKS0+
aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRP
bmx5UHNldWRvQ2xhc3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hl
c1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDBjNzQ4Nzdi
NTBlYThmODg2ZDVlYTc5ZTM2MjgyYzY2NWNmNDFlYTIuLjE3N2QyZDM5Y2U0MDBhMmViYmE5MzUx
NmVjZWIyMDIwMzI3MWYzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMzg2LDcgKzM4Niw2IEBAIHZv
aWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGlu
dCwgY29uc3QgU3BlZWNoSW5wdXRSCiAgICAgLy8gcmVtb3ZlIHRoZSBpbnB1dCBlbGVtZW50IGZy
b20gRE9NLiBUbyBtYWtlIHN1cmUgaXQgcmVtYWlucyB2YWxpZCB1bnRpbCB3ZSBmaW5pc2ggb3Vy
IHdvcmsKICAgICAvLyBoZXJlLCB3ZSB0YWtlIGEgdGVtcG9yYXJ5IHJlZmVyZW5jZS4KICAgICBS
ZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KHNoYWRvd0hvc3QoKSkpOwotICAgIGlmICghaW5wdXQgfHwgaW5wdXQtPmlzRGlzYWJsZWRP
clJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudD4gaG9sZFJlZkJ1dHRvbih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcApp
bmRleCBmYTJmMTc5YzMxYjQxNmM5ODRiNDczNmM0NGFlYmMyZTk5MjU2OGI2Li5lZmI1MDFmMDVi
NDE5NDg4MzUzZDc2MTkzMzhjYTk0NjQ1ZGM0YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgdm9pZCBUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6dXBkYXRlSW1h
Z2UoKQogICAgICAgICByZXR1cm47CiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVzb3VyY2Ug
PSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCk7CiAgICAgQ2FjaGVk
SW1hZ2UqIGltYWdlOwotICAgIGlmIChob3N0SW5wdXQoKS0+ZGlzYWJsZWQoKSkKKyAgICBpZiAo
aG9zdElucHV0KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICBpbWFnZSA9IG1f
dGV4dEZpZWxkRGVjb3JhdG9yLT5pbWFnZUZvckRpc2FibGVkU3RhdGUoKTsKICAgICBlbHNlIGlm
IChob3N0SW5wdXQoKS0+aXNSZWFkT25seSgpKQogICAgICAgICBpbWFnZSA9IG1fdGV4dEZpZWxk
RGVjb3JhdG9yLT5pbWFnZUZvclJlYWRvbmx5U3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDVkNDBlNzg0MWEzYjUzOTE3ZWU2ODg0OGI0MWZjZWIy
YzQ4NTY2NmYuLjc5NzIxYmFjMDg3OTZjNDFmMzgzNzc3NTkxMDViNGQ5MmU5MWNiYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBjb25zdCBBCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZv
cm0tPmFzc29jaWF0ZWRFbGVtZW50cygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCogY29udHJvbCA9IGZvcm0tPmFzc29jaWF0ZWRFbGVtZW50cygpW2ldOwog
ICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoY29udHJvbCk7Ci0g
ICAgICAgIGlmICghZWxlbWVudC0+ZGlzYWJsZWQoKSkKKyAgICAgICAgaWYgKCFlbGVtZW50LT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIGNvbnRyb2wtPmFwcGVuZEZvcm1E
YXRhKCpkb21Gb3JtRGF0YSwgaXNNdWx0aVBhcnRGb3JtKTsKICAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc0xvY2FsTmFtZShpbnB1dFRhZykpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBmYjViYTUyOTI5Y2NiMGY5NDM1MTZh
M2YxYzdkYzhjOGJhOWI0ZjVjLi42YzBjYjgzYmJmODEyYjZhYjA3MjZhMmIwZDk4NzAzOWM3OGQ2
YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMzcxLDcgKzM3
MSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhEcmFnRGF0YSogZHJh
Z0RhdGEsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhCiAKICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGaWxlcyA9IGRyYWdEYXRhLT5udW1iZXJPZkZpbGVzKCk7CiAgICAgICAgIGlmIChtX2ZpbGVJ
bnB1dEVsZW1lbnRVbmRlck1vdXNlKSB7Ci0gICAgICAgICAgICBpZiAobV9maWxlSW5wdXRFbGVt
ZW50VW5kZXJNb3VzZS0+ZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIGlmIChtX2ZpbGVJbnB1dEVs
ZW1lbnRVbmRlck1vdXNlLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgICAg
ICBkcmFnU2Vzc2lvbi5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkID0gMDsKICAgICAgICAgICAg
IGVsc2UgaWYgKG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UtPm11bHRpcGxlKCkpCiAgICAg
ICAgICAgICAgICAgZHJhZ1Nlc3Npb24ubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9IG51bWJl
ck9mRmlsZXM7CkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1
ZGVFZGl0RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgICAgIC8vIGZpbGVJbnB1dCBzaG91
bGQgYmUgdGhlIGVsZW1lbnQgd2UgaGl0IHRlc3RlZCBmb3IsIHVubGVzcyBpdCB3YXMgbWFkZQog
ICAgICAgICAvLyBkaXNwbGF5Om5vbmUgaW4gYSBkcm9wIGV2ZW50IGhhbmRsZXIuCiAgICAgICAg
IEFTU0VSVChmaWxlSW5wdXQgPT0gZWxlbWVudCB8fCAhZmlsZUlucHV0LT5yZW5kZXJlcigpKTsK
LSAgICAgICAgaWYgKGZpbGVJbnB1dC0+ZGlzYWJsZWQoKSkKKyAgICAgICAgaWYgKGZpbGVJbnB1
dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgcmV0dXJuIGZpbGVJbnB1dC0+cmVjZWl2ZURyb3BwZWRGaWxlcyhkcmFnRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMWZkODg3
ODc4YmMyNDZlYTczN2Q5ZmMxMDMxMzBhOWU5YWI5MTQ0MC4uNGEzZDgwYTc5NzQzZTFjNjZjYjRm
YzJhODQ0YTNiYmU5NGE4ZTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmCiAg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0
ZW1zKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5o
YXNUYWdOYW1lKG9wdGlvblRhZykgJiYgIXRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmRp
c2FibGVkKCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAm
JiAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgICAgIHJlY3Rz
LmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGl0ZW1Cb3VuZGluZ0JveFJlY3QoYWRkaXRpb25h
bE9mZnNldCwgaSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDE0LDcg
KzQxNCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGlmIChmcmFtZSgpLT5z
ZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKSA9PSBub2RlKCkpCiAgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIC8vIEhvbm9yIHRoZSBm
b3JlZ3JvdW5kIGNvbG9yIGZvciBkaXNhYmxlZCBpdGVtcwotICAgICAgICBlbHNlIGlmICghZWxl
bWVudC0+ZGlzYWJsZWQoKSAmJiAhc2VsZWN0LT5kaXNhYmxlZCgpKQorICAgICAgICBlbHNlIGlm
ICghZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIXNlbGVjdC0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLT5pbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDQ3NWM3ZDcyODkzNDJhZWFh
N2VjMDI5YjcxNjVjMGU5YzM4MjhjMzEuLjVhNGUzNmE0NWU3NDk5ZWQ4NmRiZDc2ZDU3M2E4YWM4
MjQwYTEwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cApAQCAtNDUzLDEyICs0NTMsMTIgQEAgYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxl
ZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgYm9vbCBncm91cEVuYWJsZWQgPSB0cnVl
OwogICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpKSB7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFn
KSkKLSAgICAgICAgICAgIGdyb3VwRW5hYmxlZCA9ICFzdGF0aWNfY2FzdDxIVE1MT3B0R3JvdXBF
bGVtZW50Kj4ocGFyZW50RWxlbWVudCktPmRpc2FibGVkKCk7CisgICAgICAgICAgICBncm91cEVu
YWJsZWQgPSAhcGFyZW50RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgfQog
ICAgIGlmICghZ3JvdXBFbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gIWVsZW1lbnQt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51
TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDhiZDU5ZjVlYzFmMjAx
ZTUxYjFlN2ZhMzI5OTM5MjZjZmRhODFhMGEuLmRjZjU0N2E4NGNjZjU3MmIzY2RmZmUxODI2NDhm
MzAyN2E1YzQxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcApAQCAtNzYsMTcgKzc2LDE3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSoKIAog
c3RhdGljIGlubGluZSBib29sIHVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eShOb2RlKiBub2RlLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgYm9vbCBpc0VuYWJsZWQgPSB0cnVlOworICAgIGJv
b2wgaXNEaXNhYmxlZCA9IGZhbHNlOwogICAgIGJvb2wgaXNSZWFkT25seUNvbnRyb2wgPSBmYWxz
ZTsKIAogICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKLSAgICAgICAgaXNFbmFibGVkID0gZWxlbWVudC0+
aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKKyAgICAgICAgaXNEaXNhYmxlZCA9IGVsZW1lbnQtPmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgICAgICBpc1JlYWRPbmx5Q29udHJvbCA9IGVsZW1l
bnQtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChl
bGVtZW50KS0+aXNSZWFkT25seSgpOwogICAgIH0KIAotICAgIHN0eWxlLT5zZXRVc2VyTW9kaWZ5
KChpc1JlYWRPbmx5Q29udHJvbCB8fCAhaXNFbmFibGVkKSA/IFJFQURfT05MWSA6IFJFQURfV1JJ
VEVfUExBSU5URVhUX09OTFkpOwotICAgIHJldHVybiAhaXNFbmFibGVkOworICAgIHN0eWxlLT5z
ZXRVc2VyTW9kaWZ5KChpc1JlYWRPbmx5Q29udHJvbCB8fCBpc0Rpc2FibGVkKSA/IFJFQURfT05M
WSA6IFJFQURfV1JJVEVfUExBSU5URVhUX09OTFkpOworICAgIHJldHVybiBpc0Rpc2FibGVkOwog
fQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSogc3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggZTQ1ZGUxNTc0
MDIzYzYwNGE2MzQ1Nzc3NzUxZjFmMGMxZjA5NzVjZi4uOTcyYmU5MDY0MzI0NDkwYjliMzQ3OWRh
Mjc5ZGRjMjAxNjE2NjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCkBAIC03ODgsNyArNzg4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNFbmFibGVkKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKICAgICBOb2RlKiBub2RlID0gby0+bm9kZSgpOwogICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOwor
ICAgIHJldHVybiAhdG9FbGVtZW50KG5vZGUpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZTo6aXNGb2N1c2VkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAxYWNj
ZTVhNjY4YmM2ZTRmZTczZjIwZWYyYzBjYjU2ZjhhYWQ2ZDU2Li4yZThkNTZlZjM2MDU2YWEzZTYw
ZDQ2ZDFjZWNmYjZlZjljZTM4OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGdldE1lZGlh
VUlQYXJ0U3RhdGVGbGFncyhOb2RlKiBub2RlKQogewogICAgIHVuc2lnbmVkIGZsYWdzID0gMDsK
IAotICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5kaXNh
YmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wobm9kZSkpCiAgICAgICAgIGZs
YWdzIHw9IE1lZGlhVUlQYXJ0RGlzYWJsZWRGbGFnOwogICAgIGVsc2UgaWYgKG5vZGUtPmFjdGl2
ZSgpKQogICAgICAgICBmbGFncyB8PSBNZWRpYVVJUGFydFByZXNzZWRGbGFnOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tCmluZGV4IGIwMWRh
MTg0NWM2MDg1MjU5ZThhZmE0OTc2ODEzOWQzODYwODAyNmIuLjJkOTE2MTVlZjE0MTg2NzQ1ZDcz
YjgxNjBlYmMwNDQ3MWU4YjcwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWNTaGFyZWQubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWNTaGFyZWQ6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlciwgUmVuCiAKICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3IgdG8gYmxhY2sg
b3IgZ3JheSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4KICAgICAvLyBDYXN0IHRvIFJHQjMy
IGlzIHRvIHdvcmsgYXJvdW5kIGEgY29tcGlsZXIgYnVnLgotICAgIHN0eWxlLT5zZXRDb2xvcihl
ICYmIGUtPmlzRW5hYmxlZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KENvbG9y
OjpibGFjaykgOiBDb2xvcjo6ZGFya0dyYXkpOworICAgIHN0eWxlLT5zZXRDb2xvcihlICYmICFl
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJs
YWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CiAKICAgICAvLyBTZXQgdGhlIGJ1dHRvbidzIHZlcnRp
Y2FsIHNpemUuCiAgICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCBtZW51TGlzdEJ1dHRvblNpemVz
KCkpOwpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hY1NoYXJlZDo6cGFp
bnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFAKIAogICAg
IE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKIAotICAgIGlmIChp
bnB1dC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSAmJiAoaW5wdXQtPmlzVGV4dEZvcm1Db250cm9s
KCkgJiYgIXRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoaW5wdXQpLT5pc1JlYWRPbmx5KCkp
KSB7CisgICAgaWYgKCFpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgKGlucHV0LT5p
c1RleHRGb3JtQ29udHJvbCgpICYmICFzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCo+KGlucHV0KS0+aXNSZWFkT25seSgpKSkgewogICAgICAgICB1cGRhdGVBY3RpdmVTdGF0
ZShbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdLCBvKTsKICAgICAgICAgdXBkYXRlUHJlc3NlZFN0
YXRlKFtzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0sIG8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDBlMjNmZGVjYTY4NDI3
YWQyNGU3Mzc2MDQzMzk5YmY2MGJjMzU1ZDQuLmYzMDFlYWNmM2ZlMGJjNjMwMGQ4NmRkZWY4ZmMx
N2ExOTUyYmZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyCiAK
ICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3JheSB3aGVuIHdl
IGhhdmUgdGhlIGFxdWEgbG9vay4KICAgICAvLyBDYXN0IHRvIFJHQjMyIGlzIHRvIHdvcmsgYXJv
dW5kIGEgY29tcGlsZXIgYnVnLgotICAgIHN0eWxlLT5zZXRDb2xvcihlICYmIGUtPmlzRW5hYmxl
ZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KENvbG9yOjpibGFjaykgOiBDb2xv
cjo6ZGFya0dyYXkpOworICAgIHN0eWxlLT5zZXRDb2xvcihlICYmICFlLT5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJsYWNrKSA6IENvbG9yOjpk
YXJrR3JheSk7CiAKICAgICAvLyBTZXQgdGhlIGJ1dHRvbidzIHZlcnRpY2FsIHNpemUuCiAgICAg
c2V0QnV0dG9uU2l6ZShzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNw
cAppbmRleCA5MmI1NThkZjI5YmUxMmQ1M2M5YTQ5NDA4M2FiZjM3NjI4ZGI0Yzg0Li5mYTRkZWMw
ZWQzNGE2OTMwNGI2Mzk2ODdhMjE3YWJhNzQwYjg2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
VHJhbnNmb3JtRGF0YS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIENyZWRlbnRpYWxUcmFu
c2Zvcm1EYXRhOjpmaW5kUGFzc3dvcmRGb3JtRmllbGRzKEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGZvcm1FbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgICAgICBpZiAoIWlu
cHV0RWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgaWYgKGlucHV0RWxl
bWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBpZiAoKHBhc3N3b3Jkcy5zaXplKCkgPCBtYXhQYXNzd29yZHMpCkBAIC0yMTcsNyAr
MjE3LDcgQEAgYm9vbCBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YTo6ZmluZFBhc3N3b3JkRm9ybUZp
ZWxkcyhIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGZvcm1FbGVtZW50
LT50b0lucHV0RWxlbWVudCgpOwotICAgICAgICAgICAgaWYgKCFpbnB1dEVsZW1lbnQtPmlzRW5h
YmxlZEZvcm1Db250cm9sKCkpCisgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgLy8gVmFyaW91cyBpbnB1dCB0eXBlcyBzdWNoIGFzIHRleHQsIHVybCwgZW1haWwgY2FuIGJl
IGEgdXNlcm5hbWUgZmllbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IDU2MzAwYTczMGJiZDZhNTdjYTk5ZmJj
MDc0ZWIwOTg3MDJhZTk3NGYuLmI3NzkyMTJlMDE2MjRmOGUxYTcxZGQwYWQ3MWY3NTdhODY0NjIw
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RP
TVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0RPTVN1cHBvcnQuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBpc1RleHRCYXNlZENvbnRl
bnRFZGl0YWJsZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlbGVtZW50LT5pc1JlYWRPbmx5Tm9kZSgp
IHx8ICFlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChlbGVtZW50LT5p
c1JlYWRPbmx5Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNQb3B1cElucHV0RmllbGQoZWxlbWVudCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcAppbmRleCA2OTk4OWY4MTM3MWZlNzUwNzkzMDEwNDJkZDI1NzFiOTJhY2Fh
ZWM4Li43ZGRlMmI5Mzc4YjQ0Y2NiMDQzYjBhNTBmODc5Y2NmMWVjZTRiMjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKQEAgLTE5MDEsNyArMTkwMSw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpkaWROb2RlT3Bl
blBvcHVwKE5vZGUqIG5vZGUpCiAKIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuU2VsZWN0UG9wdXAo
SFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKIHsKLSAgICBpZiAoIXNlbGVjdCB8fCBzZWxlY3Qt
PmRpc2FibGVkKCkpCisgICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0LT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgdGhlcmUncyBubyB2
aWV3LCBkbyBub3RoaW5nIGFuZCByZXR1cm4uCkBAIC0xOTM2LDEzICsxOTM2LDEzIEBAIGJvb2wg
SW5wdXRIYW5kbGVyOjpvcGVuU2VsZWN0UG9wdXAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkK
ICAgICAgICAgICAgIGlmIChsaXN0SXRlbXNbaV0tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRp
b25UYWcpKSB7CiAgICAgICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHN0
YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4obGlzdEl0ZW1zW2ldKTsKICAgICAgICAgICAg
ICAgICBsYWJlbHNbaV0gPSBvcHRpb24tPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwo
KTsKLSAgICAgICAgICAgICAgICBlbmFibGVkc1tpXSA9IG9wdGlvbi0+ZGlzYWJsZWQoKSA/IDAg
OiAxOworICAgICAgICAgICAgICAgIGVuYWJsZWRzW2ldID0gb3B0aW9uLT5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKSA/IDAgOiAxOwogICAgICAgICAgICAgICAgIHNlbGVjdGVkc1tpXSA9IG9wdGlv
bi0+c2VsZWN0ZWQoKTsKICAgICAgICAgICAgICAgICBpdGVtVHlwZXNbaV0gPSBvcHRpb24tPnBh
cmVudE5vZGUoKSAmJiBvcHRpb24tPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
Om9wdGdyb3VwVGFnKSA/IFR5cGVPcHRpb25Jbkdyb3VwIDogVHlwZU9wdGlvbjsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobGlzdEl0ZW1zW2ldLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0Z3Jv
dXBUYWcpKSB7CiAgICAgICAgICAgICAgICAgSFRNTE9wdEdyb3VwRWxlbWVudCogb3B0R3JvdXAg
PSBzdGF0aWNfY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50Kj4obGlzdEl0ZW1zW2ldKTsKICAgICAg
ICAgICAgICAgICBsYWJlbHNbaV0gPSBvcHRHcm91cC0+Z3JvdXBMYWJlbFRleHQoKTsKLSAgICAg
ICAgICAgICAgICBlbmFibGVkc1tpXSA9IG9wdEdyb3VwLT5kaXNhYmxlZCgpID8gMCA6IDE7Cisg
ICAgICAgICAgICAgICAgZW5hYmxlZHNbaV0gPSBvcHRHcm91cC0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgPyAwIDogMTsKICAgICAgICAgICAgICAgICBzZWxlY3RlZHNbaV0gPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBpdGVtVHlwZXNbaV0gPSBUeXBlR3JvdXA7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGxpc3RJdGVtc1tpXS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmhyVGFnKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDlkYzcwYzg3NDdmZDA0MTNkNzNlNTdiOTcyMzM5Njc5MzBlNTBlNC4uZGQ0NDVj
MDY5NGM2ZTg5NGQ3ZGNiZDk5NjNjNWFjMjNjMTJmNDRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIFdlYkZvcm1Db250cm9sRWxlbWVudDo6
aXNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RVbndyYXA8SFRNTEZvcm1Db250
cm9sRWxlbWVudD4oKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gIWNvbnN0
VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
OwogfQogCiBib29sIFdlYkZvcm1Db250cm9sRWxlbWVudDo6aXNSZWFkT25seSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJPcHRpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk9wdGlvbkVsZW1lbnQuY3BwCmluZGV4
IGI1MTE2OTdiNDAyOGNkZDRiZGMyMmJmZGFmM2MwMTFiMmFkNzk3ZWMuLmVkYzU2OGU4OGU3NWI0
OWRjODQ1OGYzMjFiODRkODkyM2ZhZTM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk9wdGlvbkVsZW1lbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFdlYlN0cmluZyBX
ZWJPcHRpb25FbGVtZW50OjpsYWJlbCgpIGNvbnN0CiAKIGJvb2wgV2ViT3B0aW9uRWxlbWVudDo6
aXNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIShjb25zdFVud3JhcDxIVE1MT3B0aW9u
RWxlbWVudD4oKS0+ZGlzYWJsZWQoKSk7CisgICAgcmV0dXJuICEoY29uc3RVbndyYXA8SFRNTE9w
dGlvbkVsZW1lbnQ+KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKTsKIH0KIAogV2ViT3B0aW9u
RWxlbWVudDo6V2ViT3B0aW9uRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVt
ZW50PiYgZWxlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBh
c3N3b3JkRm9ybVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhc3N3
b3JkRm9ybVV0aWxzLmNwcAppbmRleCBhZTM5OTk0MjViN2FiYzQ5NTA3NzMyMGEwNTQzMWRiODBj
NmI5YTMyLi41YWQ0YTFlNjQ3YzJlYWJjZTMwODQ3ZjVmNWVkNWY3YmQzODBhZDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYXNzd29yZEZvcm1VdGlscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFzc3dvcmRGb3JtVXRpbHMuY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgZmluZFBhc3N3b3JkRm9ybUZpZWxkcyhIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0sIFBhc3N3b3JkRm9ybUZpZWxkcyogZmllbGRzKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9IVE1M
SW5wdXRFbGVtZW50KGZvcm1FbGVtZW50KTsKLSAgICAgICAgaWYgKCFpbnB1dEVsZW1lbnQtPmlz
RW5hYmxlZEZvcm1Db250cm9sKCkpCisgICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKChm
aWVsZHMtPnBhc3N3b3Jkcy5zaXplKCkgPCBtYXhQYXNzd29yZHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAppbmRleCBjMzg1
MjkxZjc5NmRmMjFhNjU4MTI2NGVhYzM3NTllMmE5ZTMxZDcyLi5kMGQ5YzY1M2JkNmU4OGU1NThi
ODhkYTQ4YTE0Y2RmMThiZWQ3ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBIVE1M
SW5wdXRFbGVtZW50KiBmaW5kU3VpdGFibGVTZWFyY2hJbnB1dEVsZW1lbnQoY29uc3QgSFRNTEZv
cm1FbGVtZW50KiBmb3JtKQogCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1F
bGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KCppKTsKIAotICAg
ICAgICBpZiAoZm9ybUVsZW1lbnQtPmRpc2FibGVkKCkgfHwgZm9ybUVsZW1lbnQtPm5hbWUoKS5p
c051bGwoKSkKKyAgICAgICAgaWYgKGZvcm1FbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KSB8fCBmb3JtRWxlbWVudC0+bmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKCFJc0luRGVmYXVsdFN0YXRlKGZvcm1FbGVtZW50KSB8fCBmb3JtRWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkKQEAgLTIwNSw3ICsyMDUs
NyBAQCBib29sIGJ1aWxkU2VhcmNoU3RyaW5nKGNvbnN0IEhUTUxGb3JtRWxlbWVudCogZm9ybSwg
VmVjdG9yPGNoYXI+KiBlbmNvZGVkU3RyaW5nLAogCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+
KCppKTsKIAotICAgICAgICBpZiAoZm9ybUVsZW1lbnQtPmRpc2FibGVkKCkgfHwgZm9ybUVsZW1l
bnQtPm5hbWUoKS5pc051bGwoKSkKKyAgICAgICAgaWYgKGZvcm1FbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSB8fCBmb3JtRWxlbWVudC0+bmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgRm9ybURhdGFMaXN0IGRhdGFMaXN0KCplbmNvZGluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKaW5kZXggODdmYjg5OWVhOWUwZTI5OThi
YTVjYjFiZDdlNDViNGZmMjMwOGE4ZC4uM2ZhMTE3MWQ1ZmJkMWRhN2ZjODc3OWM5YTAxN2E1OWU3
Y2I1YmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcApAQCAtMTA3OSw3ICsx
MDc5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojpk
aXNhYmxlZCgKIHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aGFzVGFnTmFt
ZShpbnB1dFRhZykpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihtX2VsZW1lbnQpOwotICAgICpyZXN1bHQgPSBpbnB1
dEVsZW1lbnQtPmRpc2FibGVkKCkgPyBUUlVFIDogRkFMU0U7CisgICAgKnJlc3VsdCA9IGlucHV0
RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBUUlVFIDogRkFMU0U7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195452</attachid>
            <date>2013-03-27 18:09:35 -0700</date>
            <delta_ts>2013-03-28 11:36:55 -0700</delta_ts>
            <desc>fix bad merging</desc>
            <filename>bug-113273-20130328100934.patch</filename>
            <type>text/plain</type>
            <size>62376</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkxYjI2ODE4ZjMzMGFk
MTViZTA0NzAxY2E4ZjAyOGM4MmI0ZmZmMy4uZDJjOTM0MDUzYTEwYjllNzIyODNhMTkxODFkZmFi
MmY5NWE5MDZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxMy0wMy0yNyAgTWF0
dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmYWN0b3Jp
bmc6IFJlcGxhY2UgRWxlbWVudDo6ZGlzYWJsZWQgYW5kIGlzRW5hYmxlZEZvcm1Db250cm9sIHdp
dGggaXNEaXNhYmxlZEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTMyNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbGVtZW50OjpkaXNhYmxlZCBpcyBhYm91dCBmb3JtIGNvbnRyb2xz
IGFuZCBFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBpcyByZWR1bmRhbnQg
d2l0aCBpdCwgc28gcmVwbGFjZSB0aGVtIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24KKyAgICAgICAg
RWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
dGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUxpc3RCb3g6OmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3Vz
QXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmlzRW5hYmxlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
Y3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2wpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNEaXNhYmxlZEZvcm1Db250cm9sKTogQWRkIGhlbHBlciBmdW5jdGlvbiBmb3IgY29u
dmVuaWVuY2UuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0dlc3R1cmVFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAqIGh0bWwv
QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzRWRpdENvbnRy
b2xPd25lckRpc2FibGVkKToKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjpET01Gb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmhhbmRs
ZURPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVu
dDo6aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTWF0Y2hpbmdFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzdXBwb3J0c0Zv
Y3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6aXNEaXNhYmxlZE9yUmVhZE9ubHkpOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1N1
Y2Nlc3NmdWxTdWJtaXRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9wdEdyb3VwRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50Lmg6CisgICAgICAgIChIVE1MT3B0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRW
YWxpZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojps
aXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6b3B0aW9uQXRJbmRleCk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZh
dGVFdmVudCk6CisgICAgICAgICogaHRtbC9SZXNldElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNldElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAg
ICogaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5w
dXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1
bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAg
KFNsaWRlclRodW1iRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudDo6dXBk
YXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlEb2N1
bWVudERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51
TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjppc0VuYWJsZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldE1lZGlhVUlQYXJ0U3RhdGVGbGFncyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWNTaGFyZWQ6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWNTaGFyZWQ6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisKIDIw
MTMtMDMtMjcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENQVSBwcm9maWxlci4gU3dhcCBGbGFtZUNoYXJ0IHdpdGggRGF0
YSBHcmlkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggM2I4MTkzOTFkMDEwZTM0
OTY0YjdhYjc3N2E1NzZlYWQ4ZWI4NDdiYy4uZDBjYzdmYmJlMjM0MDE4ZTYyZTY4ODJkMTc4Njcz
ZTFjZTY1OGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTMtMDMtMjcgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJlZmFjdG9yaW5nOiBSZXBsYWNlIEVsZW1lbnQ6OmRpc2FibGVkIGFuZCBpc0Vu
YWJsZWRGb3JtQ29udHJvbCB3aXRoIGlzRGlzYWJsZWRGb3JtQ29udHJvbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxlbWVudDo6ZGlzYWJsZWQgaXMg
YWJvdXQgZm9ybSBjb250cm9scyBhbmQgRWxlbWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2wKKyAg
ICAgICAgaXMgcmVkdW5kYW50IHdpdGggaXQsIHNvIHJlcGxhY2UgdGhlbSB3aXRoIGEgc2luZ2xl
IGZ1bmN0aW9uCisgICAgICAgIEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpmaW5kUGFzc3dvcmRGb3JtRmll
bGRzKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpET01TdXBwb3J0Ojppc1RleHRCYXNlZENvbnRlbnRFZGl0YWJs
ZUVsZW1lbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpvcGVuU2VsZWN0UG9wdXAp
OgorCiAyMDEzLTAzLTI2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAxMDViNWQwZDVkMTM3ODRlMjJkN2EyMDA5MWI3YjgxMmYw
M2RiNTgxLi5iMzRlYjY5NDViZTNiZmYyMzBkYTEyYzJkZjM2M2M5OGE1MWM0M2U3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTI3ICBNYXR0IEZh
bGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvcmluZzog
UmVwbGFjZSBFbGVtZW50OjpkaXNhYmxlZCBhbmQgaXNFbmFibGVkRm9ybUNvbnRyb2wgd2l0aCBp
c0Rpc2FibGVkRm9ybUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVsZW1lbnQ6OmRpc2FibGVkIGlzIGFib3V0IGZvcm0gY29udHJvbHMgYW5k
IEVsZW1lbnQ6OmlzRW5hYmxlZEZvcm1Db250cm9sCisgICAgICAgIGlzIHJlZHVuZGFudCB3aXRo
IGl0LCBzbyByZXBsYWNlIHRoZW0gd2l0aCBhIHNpbmdsZSBmdW5jdGlvbgorICAgICAgICBFbGVt
ZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2wuCisKKyAgICAgICAgKiBzcmMvV2ViRm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUNvbnRyb2xFbGVtZW50Ojpp
c0VuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViT3B0aW9uRWxlbWVudDo6aXNFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2Vi
UGFzc3dvcmRGb3JtVXRpbHMuY3BwOgorICAgICAgICAoV2ViS2l0OjpmaW5kUGFzc3dvcmRGb3Jt
RmllbGRzKToKKyAgICAgICAgKiBzcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKEhUTUxOYW1lczo6ZmluZFN1aXRhYmxlU2VhcmNoSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KEhUTUxOYW1lczo6YnVpbGRTZWFyY2hTdHJpbmcpOgorCiAyMDEzLTAzLTI3ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6cmVhZE9ubHkgdG8gaXNSZWFkT25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGU1YjEy
Y2E3YjE2NTJiYWFhYzI2ZmI0ZmQ2NDkyMTZiNzA1N2U0NWIuLjcyMjJmODZlNjkxYzUyYTJkN2Fj
OGZlNjAyNGM0ZTlhOWFmNTM3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMy0wMy0yNyAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVmYWN0b3Jpbmc6IFJlcGxhY2UgRWxlbWVudDo6ZGlzYWJsZWQgYW5kIGlzRW5hYmxl
ZEZvcm1Db250cm9sIHdpdGggaXNEaXNhYmxlZEZvcm1Db250cm9sCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMyNzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbGVtZW50OjpkaXNhYmxlZCBpcyBhYm91
dCBmb3JtIGNvbnRyb2xzIGFuZCBFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbAorICAgICAg
ICBpcyByZWR1bmRhbnQgd2l0aCBpdCwgc28gcmVwbGFjZSB0aGVtIHdpdGggYSBzaW5nbGUgZnVu
Y3Rpb24KKyAgICAgICAgRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sLgorCisgICAgICAg
ICogRE9NSFRNTENsYXNzZXMuY3BwOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6ZGlz
YWJsZWQpOgorCiAyMDEzLTAzLTI3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW5hbWUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHkgdG8gaXNS
ZWFkT25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmNwcAppbmRleCA0Nzk1ODQ5YmYwNGYwNDEzZTNmODJlNjc4MTY3NDQ0MDkz
OWQ3NjJkLi45YzQ5NzBlZGJhNmFkMTZjODk5YWM3MmRlMzUxMDgwZmRiMmJjOTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpjYW5TZXRT
ZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3QKICAgICBpZiAoIXNlbGVjdE5vZGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gIXRvSFRNTFNlbGVjdEVsZW1l
bnQoc2VsZWN0Tm9kZSktPmRpc2FibGVkKCk7CisgICAgcmV0dXJuICF0b0hUTUxTZWxlY3RFbGVt
ZW50KHNlbGVjdE5vZGUpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogdm9pZCBBY2Nl
c3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRl
eCAzMDc0ZjFmY2ViN2MyYzE4N2NhM2JiMjZhZDczYWFiYjg3Mzg5ZWI4Li5kNzA5MzJjMzAzYmIz
NGVjZGVhZmMwNzc0MTIyM2JhNzNiZDI0OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAt
MTM5LDExICsxMzksMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50LT5oYXNU
YWdOYW1lKG9wdGlvblRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
bV9vcHRpb25FbGVtZW50LT5kaXNhYmxlZCgpKQorICAgIGlmIChtX29wdGlvbkVsZW1lbnQtPmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAg
SFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdEVsZW1lbnQgPSBsaXN0Qm94T3B0aW9uUGFyZW50Tm9k
ZSgpOwotICAgIGlmIChzZWxlY3RFbGVtZW50ICYmIHNlbGVjdEVsZW1lbnQtPmRpc2FibGVkKCkp
CisgICAgaWYgKHNlbGVjdEVsZW1lbnQgJiYgc2VsZWN0RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcAppbmRleCAwNWE1NjMyMWNhYmZiZWY4NDgwMGY4MWFkYmRkNTk2MDkwZGZkY2I2
Li45OTRhMzM0NjgxMDVkM2UwNzlmNzEwMjBlOTA2NmJkNDJkODkxMmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpjYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKCFub2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+aXNFbmFibGVkRm9ybUNvbnRyb2wo
KTsKKyAgICByZXR1cm4gIXRvRWxlbWVudChub2RlKCkpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlv
bihpbnQgb3B0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKaW5kZXggNDgwZTM1NzI2
YTM5NjZkYThiN2IxNmU5NTgwOTE5M2Q3YmVkMjBjZS4uY2M2MmExYWYwNmRlNjRhMzk4NGU2Yzc4
NzVlNDU5ZTRlODc3MDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmFjdGlvbkVsZW1lbnQo
KSBjb25zdAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgLy8gZGlzYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIHBhcmVu
dCA8c2VsZWN0PiBlbGVtZW50IGlzIGRpc2FibGVkLAorICAgIC8vIGlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IDxzZWxlY3Q+IGVsZW1lbnQgaXMgZGlz
YWJsZWQsCiAgICAgLy8gd2hpY2ggd2UgZG9uJ3Qgd2FudC4KICAgICByZXR1cm4gIXN0YXRpY19j
YXN0PEhUTUxPcHRpb25FbGVtZW50Kj4obV9lbGVtZW50LmdldCgpKS0+b3duRWxlbWVudERpc2Fi
bGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDExZTYwZjE5YzM3Yjg4YmQyZTg0N2UxY2E0
ODYxNjc5NTFiNzMwN2IuLjI2ZTFhYjRmOGRiMTdiYmYyOThlMGMyNDQ3ODg4NzkzNGFlMjE5NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCkBAIC01OTgsNyArNTk4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNFbmFibGVkKCkgY29uc3QKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gdG9FbGVt
ZW50KG5vZGUpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVybiAhdG9FbGVtZW50
KG5vZGUpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKQEAgLTkwOSw3ICs5MDksNyBAQCBF
bGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWN0aW9uRWxlbWVudCgpIGNvbnN0CiAK
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKICAgICAgICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7Ci0g
ICAgICAgIGlmICghaW5wdXQtPmRpc2FibGVkKCkgJiYgKGlzQ2hlY2tib3hPclJhZGlvKCkgfHwg
aW5wdXQtPmlzVGV4dEJ1dHRvbigpKSkKKyAgICAgICAgaWYgKCFpbnB1dC0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkgJiYgKGlzQ2hlY2tib3hPclJhZGlvKCkgfHwgaW5wdXQtPmlzVGV4dEJ1dHRv
bigpKSkKICAgICAgICAgICAgIHJldHVybiBpbnB1dDsKICAgICB9IGVsc2UgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoYnV0dG9uVGFnKSkKICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKQEAg
LTE3NjAsNyArMTc2MCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhblNldEZv
Y3VzQXR0cmlidXRlKCkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIXRvRWxlbWVudChub2RlKS0+
aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKG5v
ZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbm9kZS0+c3VwcG9ydHNG
b2N1cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAwYjNlZGYz
YTlkYzBkZTcwOTBiZmY2NjAzMDdiZmM3N2RmZGY5YTcyLi4zMTRjN2RiMDg5YTcyYWMxMjU3ZmVl
MmM2N2I5YTMxM2Q3MDMyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cApAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25z
dCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2liCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW5hYmxlZDoKICAgICAg
ICAgICAgIGlmIChlbGVtZW50ICYmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9w
dGdyb3VwVGFnKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzRW5hYmxlZEZv
cm1Db250cm9sKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9GdWxsUGFnZU1lZGlhOgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYg
ZWxlbWVudC0+ZG9jdW1lbnQoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1l
bnQoKTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUo
Y29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNpYgogICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgp
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZDoKICAgICAgICAgICAg
IGlmIChlbGVtZW50ICYmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpIHx8IGVsZW1l
bnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3Vw
VGFnKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29u
dHJvbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9SZWFkT25seToKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPm1h
dGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggOGQ2OGM0ZTllYjM0M2I1OWFlMjkzOGRiNTQ0ZDQxNzNhOTdkOTJjMi4uYTk3NmQ2
ZmQwZWU1Y2QzMTMyODE2MzY5YTAyY2NhMmMxMmY2NzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2Fu
U2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAg
aWYgKHRoaXNJbnB1dEVsZW1lbnQtPmlzUmVxdWlyZWQoKSAhPSBvdGhlcklucHV0RWxlbWVudC0+
aXNSZXF1aXJlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZWxlbWVudC0+
aXNFbmFibGVkRm9ybUNvbnRyb2woKSAhPSBzdGF0ZS5lbGVtZW50KCktPmlzRW5hYmxlZEZvcm1D
b250cm9sKCkpCisgICAgaWYgKGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICE9IHN0
YXRlLmVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChlbGVtZW50LT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgIT0gc3Rh
dGUuZWxlbWVudCgpLT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggNDM3NDcxZDgzNjVkZTFiMTk0ZmRmMDgxOTM1ODZlODgwNmRjYjQyOC4uNjEwMTVj
NjRiMmJjYmUzYTNkM2MyMGNkMzJjMmEwNThhZjRiZTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMTE3Niw3ICsxMTc2LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRDaGFuZ2VkU2luY2VMYXN0
Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChib29sKQogewogfQogCi1ib29sIEVsZW1lbnQ6OmRpc2Fi
bGVkKCkgY29uc3QKK2Jvb2wgRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QK
IHsKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgLy8gRklYTUU6IGRpc2FibGVkIGFu
ZCBpbmVydCBhcmUgc2VwYXJhdGUgY29uY2VwdHMgaW4gdGhlIHNwZWMsIGJ1dCBub3cgd2UgdHJl
YXQgdGhlbSBhcyB0aGUgc2FtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRkODYwZjA2YzY0N2U2
ZTdkOTMwMzE0OWE0MzQ5MzQyZTlmOTU5ZmYuLjE0ZDVmMTI1MTg5ZWRhZWViYTVlOTc0MjliNDdl
ZjRkZWU0MjE1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTM3LDcgKzUzNyw2IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01NjAs
NyArNTU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBmb3IgZGlzYWJsZWQgZm9ybSBlbGVt
ZW50czsgaWYgdHJ1ZSwgcHJldmVudHMgbW91c2UgZXZlbnRzIGZyb20gYmVpbmcgZGlzcGF0Y2hl
ZAogICAgIC8vIHRvIGV2ZW50IGxpc3RlbmVycywgYW5kIHByZXZlbnRzIERPTUFjdGl2YXRlIGV2
ZW50cyBmcm9tIGJlaW5nIHNlbnQgYXQgYWxsLgotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdDsK
IAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBib29sIGlzSW5lcnQoKSBjb25zdDsK
QEAgLTc1NCw2ICs3NTMsMTEgQEAgaW5saW5lIGNvbnN0IEVsZW1lbnQqIHRvRWxlbWVudChjb25z
dCBOb2RlKiBub2RlKQogLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vz
c2FyeSBjYXN0Lgogdm9pZCB0b0VsZW1lbnQoY29uc3QgRWxlbWVudCopOwogCitpbmxpbmUgYm9v
bCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4g
bm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCk7Cit9CisKIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaXNFbGVtZW50Tm9kZSgpICYmIHRv
RWxlbWVudCh0aGlzKS0+aGFzVGFnTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHAKaW5kZXggYTIxY2ZiNzMxMDI1OWZmYWQ0ZDBhYTZkY2NiMzUzYjlkOGYwMWMw
NS4uYWIxOTY5OThhZDEyMWIxNzA5NGI1NGQzNTU0NjEyNzI3ODMwNzlkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoU2NvcGVkRXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVu
dERpc3BhdGNoTWUKIAogdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xp
Y2soTm9kZSogbm9kZSwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3Vz
ZUV2ZW50T3B0aW9ucyBtb3VzZUV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRp
b25zIHZpc3VhbE9wdGlvbnMpCiB7Ci0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0
b0VsZW1lbnQobm9kZSktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJv
bChub2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFnTm9kZXNEaXNwYXRjaGluZ1Np
bXVsYXRlZENsaWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlc3R1cmVFdmVudC5jcHAKaW5kZXggMDE1NzU1
YTc5MmY4YzQyYWYwNTdjZTkwOTczYTA2ODViMDMwNDc4OS4uNGZhODE2MzY2NzMzZGZjYzMzYWFi
NzQxN2NjZDU2MmEwMGQ1YjlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dlc3R1
cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlc3R1cmVFdmVudC5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCBHZXN0dXJlRXZlbnQqIEdlc3R1cmVFdmVudERpc3BhdGNoTWVkaWF0
b3I6OmV2ZW50KCkgY29uc3QKIAogYm9vbCBHZXN0dXJlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpk
aXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciogZGlzcGF0Y2hlcikgY29uc3QKIHsKLSAgICBp
ZiAoZGlzcGF0Y2hlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KGRpc3Bh
dGNoZXItPm5vZGUoKSktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJv
bChkaXNwYXRjaGVyLT5ub2RlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGRpc3Bh
dGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggMTBmMzky
ODI5MDM1MWIwMmNhZTEzYTQwYjBiMWZjZjk4NmY2ZjI2OS4uZmFhOTFhMTVmNjM0NzYxZGRlNWJk
NTJlOGZkMjRkODc5YzU2OGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtMzAw
LDcgKzMwMCw3IEBAIGJvb2wgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZl
bnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zCiAgICAgICAgIHJldHVybiBkaXNw
YXRjaGVyLT5kaXNwYXRjaCgpOwogICAgIH0KIAotICAgIGlmIChkaXNwYXRjaGVyLT5ub2RlKCkt
PmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQoZGlzcGF0Y2hlci0+bm9kZSgpKS0+ZGlzYWJs
ZWQoKSkgLy8gRG9uJ3QgZXZlbiBzZW5kIERPTSBldmVudHMgZm9yIGRpc2FibGVkIGNvbnRyb2xz
Li4KKyAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKGRpc3BhdGNoZXItPm5vZGUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChldmVudCgpLT50eXBlKCkuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IDk2NmZlNzI0NGQ2MTEyZTE1ZWMwNWY3ZjhiMTRiZDNjNDll
YmYwYjkuLjJmMjVmMGU1NDZiNzM3MTk2MWY1OGZiZDU5YTViYWE2NTkwMzlkNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTIzMjQsNyArMjMyNCw3IEBAIHZvaWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVu
dHMoRXZlbnQqIGV2ZW50KQogICAgIGlmICghaGFzRXZlbnRUYXJnZXREYXRhKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHRoaXMpLT5k
aXNhYmxlZCgpICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSkKKyAgICBpZiAoaXNEaXNhYmxlZEZv
cm1Db250cm9sKHRoaXMpICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50KTsKQEAgLTI1MjMsMTQgKzI1MjMsMTQg
QEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogYm9vbCBO
b2RlOjp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKIHsKLSAgICBpZiAoaXNFbGVtZW50
Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+ZGlzYWJsZWQoKSkKKyAgICBpZiAoaXNEaXNhYmxl
ZEZvcm1Db250cm9sKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGhh
c0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgfHwgaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCk7CiB9CiAKIGJvb2wgTm9kZTo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewotICAgIGlmIChpc0VsZW1lbnROb2RlKCkgJiYgdG9F
bGVtZW50KHRoaXMpLT5kaXNhYmxlZCgpKQorICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2wo
dGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gaXNDb250ZW50RWRpdGFi
bGUoVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpIHx8IGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2
ZW50KTsKIH0KQEAgLTI1MzgsNyArMjUzOCw3IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQog
ewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiB0
b0VsZW1lbnQodGhpcyktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJv
bCh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkudG91Y2hzdGFydEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS50b3VjaGNhbmNlbEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
dG91Y2hlbmRFdmVudCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCAz
MGViOTk3ZDIxZTQ4MzZiNTU4MTQ3ZTliZjJkYTA3OTZkYmNiZjU2Li5jMzc5ODNmMzc5ZjBjMGJi
YzhmNjU3NWE1YTkwYWQzMWIyNjcxY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApA
QCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdAogCiBib29sIEJhc2VNdWx0aXBsZUZp
ZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0VkaXRDb250cm9sT3duZXJEaXNhYmxlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+ZGlzYWJsZWQoKTsKKyAgICByZXR1cm4gZWxl
bWVudCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogYm9vbCBCYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6aXNFZGl0Q29udHJvbE93bmVyUmVhZE9ubHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcAppbmRleCA3MDNhNjlkYmQ4MDhkYzZm
NDUyMDhjMWRjNGYwMGVjMGFiZTExZTZkLi5iZmRlOTFiODNhODk4ODMyYjYxZGZiNDI5NmI5ZTlh
N2I1YmRlYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBET01Gb3JtRGF0YTo6RE9NRm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm0tPmFzc29jaWF0ZWRFbGVtZW50cygpLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCA9IGZv
cm0tPmFzc29jaWF0ZWRFbGVtZW50cygpW2ldOwotICAgICAgICBpZiAoIXRvSFRNTEVsZW1lbnQo
ZWxlbWVudCktPmRpc2FibGVkKCkpCisgICAgICAgIGlmICghdG9IVE1MRWxlbWVudChlbGVtZW50
KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICBlbGVtZW50LT5hcHBlbmRG
b3JtRGF0YSgqdGhpcywgdHJ1ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAKaW5kZXggOGJjYzEwMWQ2OTVlNmQ0M2M4YTg0ZGU0OWYwMGE1MmY1M2UwMTdlYy4u
YjBjZmY4MzI3MmRlZjdkOWMwZGI4OGJjZTY4YjVlMGRhY2EyZDVlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgU3RyaW5nIEZpbGVJbnB1
dFR5cGU6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdAogCiB2b2lkIEZpbGVJbnB1dFR5cGU6Omhh
bmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIGlmIChlbGVtZW50KCkt
PmRpc2FibGVkKCkpCisgICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpk
aXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvdygp
KTsKICAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2FzdDxVcGxvYWRC
dXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hp
bGQoKSk7CiAgICAgaWYgKGJ1dHRvbikKLSAgICAgICAgYnV0dG9uLT5zZXRCb29sZWFuQXR0cmli
dXRlKGRpc2FibGVkQXR0ciwgZWxlbWVudCgpLT5kaXNhYmxlZCgpKTsKKyAgICAgICAgYnV0dG9u
LT5zZXRCb29sZWFuQXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZWxlbWVudCgpLT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6bXVsdGlwbGVBdHRyaWJ1
dGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5k
ZXggYzEwMmIxOTQzMGE0NGNhZTEzMzdjNGI2MDc0ZGY4Zjc3ZTRiOWM1NS4uYjEzYjZhNjhmZjI1
NjRlOTI1NTZiNDFlNzNjMjYxMDcwYzU5Y2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdAogCiB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuRE9NQWN0
aXZhdGVFdmVudCAmJiAhZGlzYWJsZWQoKSkgeworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50ICYmICFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkg
ewogICAgICAgICBpZiAoZm9ybSgpICYmIG1fdHlwZSA9PSBTVUJNSVQpIHsKICAgICAgICAgICAg
IG1faXNBY3RpdmF0ZWRTdWJtaXQgPSB0cnVlOwogICAgICAgICAgICAgZm9ybSgpLT5wcmVwYXJl
Rm9yU3VibWlzc2lvbihldmVudCk7CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBIVE1MQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIGJvb2wgSFRNTEJ1
dHRvbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKLSAgICBpZiAo
IWRpc2FibGVkKCkgJiYgZm9ybSgpICYmIChtX3R5cGUgPT0gU1VCTUlUIHx8IG1fdHlwZSA9PSBS
RVNFVCkpCisgICAgaWYgKCFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiBmb3JtKCkgJiYgKG1f
dHlwZSA9PSBTVUJNSVQgfHwgbV90eXBlID09IFJFU0VUKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCk7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBIVE1MQnV0dG9uRWxlbWVu
dDo6aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3QKIHsKICAgICAvLyBIVE1MIHNwZWMg
c2F5cyB0aGF0IGJ1dHRvbnMgbXVzdCBoYXZlIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgc3VjY2Vz
c2Z1bC4KICAgICAvLyBIb3dldmVyLCBvdGhlciBicm93c2VycyBkbyBub3QgaW1wb3NlIHRoaXMg
Y29uc3RyYWludC4KLSAgICByZXR1cm4gbV90eXBlID09IFNVQk1JVCAmJiAhZGlzYWJsZWQoKTsK
KyAgICByZXR1cm4gbV90eXBlID09IFNVQk1JVCAmJiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CiAKIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOGFkMGJiNzhhNDFkODM5
MjI4ZTI4OTZjNzBjZDBlYWY0YTk0ZmRhOC4uNGMyNjU4MjM3NjkxZTFhZmQ5YThiMzQ0ODNiY2U4
NzljOTQ0OGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChj
b25zdCBIVE1MQ29sbGVjdGlvbiogaHRtbENvbGxlY3Rpb24sCiAgICAgY2FzZSBEYXRhTGlzdE9w
dGlvbnM6CiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUob3B0aW9uVGFnKSkgewog
ICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxP
cHRpb25FbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIW9wdGlvbi0+ZGlzYWJs
ZWQoKSAmJiAhb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmICghb3B0
aW9uLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCAxNTVkZTRmNTc5ZWU3MTU5NTk4NGE2NzQ0N2RjM2U4NzQ3NDQ4NjAyLi41MGQ4
ZjVkZjMzMTM3ZTIwNDY0NTNmMGM3NDIzOTFlMTk1YjJiN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZUFuY2VzdG9yRGlzYWJsZWRTdGF0ZSgp
IGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2FuY2Vz
dG9yRGlzYWJsZWRTdGF0ZSA9IChmaWVsZFNldEFuY2VzdG9yICYmIGZpZWxkU2V0QW5jZXN0b3It
PmRpc2FibGVkKCkgJiYgIShsZWdlbmRBbmNlc3RvciAmJiBsZWdlbmRBbmNlc3RvciA9PSBmaWVs
ZFNldEFuY2VzdG9yLT5sZWdlbmQoKSkpID8gQW5jZXN0b3JEaXNhYmxlZFN0YXRlRGlzYWJsZWQg
OiBBbmNlc3RvckRpc2FibGVkU3RhdGVFbmFibGVkOworICAgIG1fYW5jZXN0b3JEaXNhYmxlZFN0
YXRlID0gKGZpZWxkU2V0QW5jZXN0b3IgJiYgZmllbGRTZXRBbmNlc3Rvci0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkgJiYgIShsZWdlbmRBbmNlc3RvciAmJiBsZWdlbmRBbmNlc3RvciA9PSBmaWVs
ZFNldEFuY2VzdG9yLT5sZWdlbmQoKSkpID8gQW5jZXN0b3JEaXNhYmxlZFN0YXRlRGlzYWJsZWQg
OiBBbmNlc3RvckRpc2FibGVkU3RhdGVFbmFibGVkOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmFuY2VzdG9yRGlzYWJsZWRTdGF0ZVdhc0NoYW5nZWQoKQpAQCAtMjc0LDcgKzI3
NCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb3JtQ29udHJvbElu
cHV0RXZlbnQoKQogICAgIEhUTUxFbGVtZW50OjpkaXNwYXRjaElucHV0RXZlbnQoKTsKIH0KIAot
Ym9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0Citib29sIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI4Myw3IEBA
IGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogICAgICAgICB1
cGRhdGVBbmNlc3RvckRpc2FibGVkU3RhdGUoKTsKICAgICBpZiAobV9hbmNlc3RvckRpc2FibGVk
U3RhdGUgPT0gQW5jZXN0b3JEaXNhYmxlZFN0YXRlRGlzYWJsZWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzYWJsZWQoKTsKKyAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBib29sIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCiAKIGJv
b2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICFkaXNhYmxlZCgpOworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAxOGM1
OTNlYTljYThlN2U5ODgzZGVlYTIwNmFiNDk3ZWJiZjY4ZGZmLi4wOGI4NWIyMzA1ZGU1ODVmZTA3
MWM5NWVlZTJkY2RhY2Q4NzJjMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEZvcm1Db250cm9sSW5wdXRFdmVudCgpOwogCi0gICAgdmlydHVhbCBib29sIGRpc2Fi
bGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTc0LDcgKzc0LDYgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGZvcm1Db250cm9sVHlwZSgpOyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREUgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuICFkaXNh
YmxlZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTk1LDcgKzk0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSBPVkVSUklE
RTsKIAogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWFkT25seTsg
fQotICAgIGJvb2wgaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBkaXNhYmxl
ZCgpIHx8IG1faXNSZWFkT25seTsgfQorICAgIGJvb2wgaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSBj
b25zdCB7IHJldHVybiBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8fCBtX2lzUmVhZE9ubHk7IH0K
IAogICAgIGJvb2wgaGFzQXV0b2ZvY3VzZWQoKSB7IHJldHVybiBtX2hhc0F1dG9mb2N1c2VkOyB9
CiAgICAgdm9pZCBzZXRBdXRvZm9jdXNlZCgpIHsgbV9oYXNBdXRvZm9jdXNlZCA9IHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDM3YzZiZjdhOGYx
ZjYwMzkzYmJiYmE1Mzk0YzhiZWE5NzEyY2JlYmMuLmZhODZmMjk2NzZhMWY2OThlM2YzN2RmZWY4
YzE4ZWE3NWUxNDIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtODQxLDcgKzg0MSw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNTdWNjZXNzZnVs
U3VibWl0QnV0dG9uKCkgY29uc3QKIHsKICAgICAvLyBIVE1MIHNwZWMgc2F5cyB0aGF0IGJ1dHRv
bnMgbXVzdCBoYXZlIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bC4KICAgICAvLyBI
b3dldmVyLCBvdGhlciBicm93c2VycyBkbyBub3QgaW1wb3NlIHRoaXMgY29uc3RyYWludC4gU28g
d2UgZG8gbm90LgotICAgIHJldHVybiAhZGlzYWJsZWQoKSAmJiBtX2lucHV0VHlwZS0+Y2FuQmVT
dWNjZXNzZnVsU3VibWl0QnV0dG9uKCk7CisgICAgcmV0dXJuICFpc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSAmJiBtX2lucHV0VHlwZS0+Y2FuQmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCk7CiB9CiAK
IGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdApAQCAtMTIy
Miw3ICsxMjIyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldnQpCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkKIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgaW1wbGVtZW50aW5nIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgaW4gSW5wdXRUeXBlIGlmIG1vcmUgYWNjdXJhdGUg
cmVzdWx0cyBhcmUgbmVjZXNzYXJ5LgotICAgIGlmICghZGlzYWJsZWQoKSkKKyAgICBpZiAoIWlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4
IDEyNzFiNTIyZTNlZWJkNTdkMTk2ZDIzNDE2ZjkxNTU1NjQ5YWY2M2UuLmE5MDc5OWNiMDlmYjRi
MDRmN2U4NTdmMWQ1ZDA4MGM2NjA3MGZiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBQYXNzUmVmUHRyPEhUTUxPcHRH
cm91cEVsZW1lbnQ+IEhUTUxPcHRHcm91cEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9wdEdyb3VwRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmRpc2FibGVkKCkg
Y29uc3QKK2Jvb2wgSFRNTE9wdEdyb3VwRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAppbmRleCAxYmZiMTQwNmJk
OTdkZGI1NWRmMDY2NmZjOTkxZmRmOGZmYjE5ZjNkLi5mZTE4MWY3YzUyMmQxNWYyOWYwOGE0OWQ4
YTkzMTRjMDVhZGQyNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBIVE1MT3B0R3JvdXBFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MT3B0R3Jv
dXBFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgSFRNTFNlbGVj
dEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIFN0cmluZyBn
cm91cExhYmVsVGV4dCgpIGNvbnN0OwpAQCAtNDUsNyArNDUsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Zv
Y3VzYWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFkaXNhYmxlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCBk
YWNiZGIxNGRlM2IxZTg2ODA1OTY3ZTM5YmQ1YTkwYjQwYTk5NWM1Li40YTg4YzBiOWJhZmFlNjAy
NDgyNDFjY2RiZmUzYTNjNTljYzcyZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVu
dDo6dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpIGNvbnN0CiAgICAgcmV0dXJuIHRl
eHQoKTsKIH0KIAotYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAorYm9v
bCBIVE1MT3B0aW9uRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QKIHsKICAg
ICBpZiAob3duRWxlbWVudERpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzU1
LDcgKzM1NSw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KHBhcmVudE5vZGUoKSk7Ci0gICAgcmV0dXJuIHBhcmVu
dEVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpICYmIHBhcmVudEVsZW1lbnQtPmRpc2Fi
bGVkKCk7CisgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcp
ICYmIHBhcmVudEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogfQogCiBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxPcHRpb25FbGVtZW50OjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmgKaW5kZXggMTlmNTY5Yjk3NjA4MWYxOWE4NDU5NmE1ODg0NDI4MTNhMTU2
ODMxYi4uNjczZjA3N2YzMjJhY2Y2N2FmNzM5YTViNjYyZDcwOGFkODU0YzkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNTgsMTAgKzU4LDkgQEAgcHVibGlj
OgogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3Ry
aW5nJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQogICAgIGJvb2wgb3duRWxlbWVudERpc2Fi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZDsgfQogCi0gICAgdmlydHVhbCBib29sIGRp
c2FibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgU3RyaW5nIHRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAppbmRleCA3MjZhYjQ0MzQwZmEyMTg1ZTlmZDdhZjYyMTUyMGU2ZGFmMTkyOTczLi41ZjdjZDI2
MTJlMDFjZDdiNWUwMzc4M2QwYTc4MzEwN2MyMmJiMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEhUTUxQbHVnSW5F
bGVtZW50OjpjYW5Qcm9jZXNzRHJhZygpIGNvbnN0CiAKIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6
OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKLSAgICBpZiAoZGlzYWJsZWQoKSkK
KyAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwogICAgIGlmICghcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMWJhOGFlMzRjMTk2ZjE4OGMw
ZTk0OWMzOGE3NzQzMDVkZTk5Yjg0Mi4uZGMxNjE1YTExZmNlNDA5MGFjNWRhMjRmNWU4NzA0ZjMx
ZjA4MzExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAg
LTQ5OCw3ICs0OTgsNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRWYWxpZEluZGV4KGlu
dCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbgogICAgIGludCBzaXplID0g
bGlzdEl0ZW1zLnNpemUoKTsKICAgICBmb3IgKGxpc3RJbmRleCArPSBkaXJlY3Rpb247IGxpc3RJ
bmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemU7IGxpc3RJbmRleCArPSBkaXJlY3Rpb24pIHsK
ICAgICAgICAgLS1za2lwOwotICAgICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNh
YmxlZCgpICYmIGxpc3RJdGVtc1tsaXN0SW5kZXhdLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsK
KyAgICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgJiYgbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewogICAg
ICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKICAgICAgICAgICAgIGlmIChza2lw
IDw9IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbihib29sIGRlc2VsZWN0T3Ro
ZXJPcHRpb25zKQogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGl0ZW1zW2ldOwotICAgICAgICBpZiAo
IWVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8fCB0b0hUTUxPcHRpb25FbGVtZW50KGVs
ZW1lbnQpLT5kaXNhYmxlZCgpKQorICAgICAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUob3B0
aW9uVGFnKSB8fCB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpID49IHN0YXJ0
ICYmIGkgPD0gZW5kKQpAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAg
ICAgICAgICAgICAgICBpZiAoZm91bmRTZWxlY3RlZCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kU2VsZWN0ZWQtPnNldFNlbGVjdGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAg
ICAgICBmb3VuZFNlbGVjdGVkID0gb3B0aW9uOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bV9zaXplIDw9IDEgJiYgIWZvdW5kU2VsZWN0ZWQgJiYgIW9wdGlvbi0+ZGlzYWJsZWQoKSkgewor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zaXplIDw9IDEgJiYgIWZvdW5kU2VsZWN0ZWQg
JiYgIW9wdGlvbi0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgZm91bmRTZWxlY3RlZCA9IG9wdGlvbjsKICAgICAgICAgICAgICAgICAgICAgZm91bmRTZWxl
Y3RlZC0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDIw
LDcgKzEwMjAsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmIGxpc3QsIGJvb2wpCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tp
XTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiB0b0hUTUxP
cHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpICYmICF0b0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpLT5kaXNhYmxlZCgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGlvblRhZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKSAm
JiAhdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
IHsKICAgICAgICAgICAgIGxpc3QuYXBwZW5kRGF0YShuYW1lLCB0b0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpLT52YWx1ZSgpKTsKICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAg
ICAgICBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCiAg
ICAgLy8gU2V0IHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgdGhlIGNsaWNrZWQgb3B0aW9uLgotICAg
IGlmIChjbGlja2VkRWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpICYmICF0b0hUTUxPcHRp
b25FbGVtZW50KGNsaWNrZWRFbGVtZW50KS0+ZGlzYWJsZWQoKSkKKyAgICBpZiAoY2xpY2tlZEVs
ZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiAhdG9IVE1MT3B0aW9uRWxlbWVudChjbGlj
a2VkRWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICB0b0hUTUxPcHRp
b25FbGVtZW50KGNsaWNrZWRFbGVtZW50KS0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKIAogICAg
IC8vIElmIHRoZXJlIHdhcyBubyBzZWxlY3RlZEluZGV4KCkgZm9yIHRoZSBwcmV2aW91cyBpbml0
aWFsaXphdGlvbiwgb3IgSWYKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
SW50UG9pbnQgbG9jYWxPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocmVuZGVyZXIoKS0+YWJzb2x1
dGVUb0xvY2FsKG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgVXNlVHJhbnNmb3Jtcykp
OwogICAgICAgICBpbnQgbGlzdEluZGV4ID0gdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKCkpLT5s
aXN0SW5kZXhBdE9mZnNldCh0b0ludFNpemUobG9jYWxPZmZzZXQpKTsKICAgICAgICAgaWYgKGxp
c3RJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBpZiAoIWRpc2FibGVkKCkpIHsKKyAgICAgICAg
ICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICNpZiBQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICAgICB1cGRh
dGVTZWxlY3RlZFN0YXRlKGxpc3RJbmRleCwgbW91c2VFdmVudC0+bWV0YUtleSgpLCBtb3VzZUV2
ZW50LT5zaGlmdEtleSgpKTsKICNlbHNlCkBAIC0xMzEyLDcgKzEzMTIsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAg
ICAgICAgIEludFBvaW50IGxvY2FsT2Zmc2V0ID0gcm91bmRlZEludFBvaW50KHJlbmRlcmVyKCkt
PmFic29sdXRlVG9Mb2NhbChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIFVzZVRyYW5z
Zm9ybXMpKTsKICAgICAgICAgaW50IGxpc3RJbmRleCA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJl
cigpKS0+bGlzdEluZGV4QXRPZmZzZXQodG9JbnRTaXplKGxvY2FsT2Zmc2V0KSk7CiAgICAgICAg
IGlmIChsaXN0SW5kZXggPj0gMCkgewotICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbXVsdGlwbGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBleHRlbmQg
c2VsZWN0aW9uIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBzZWxlY3RlZC4KICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAwKQpAQCAtMTQ0MCw3ICsx
NDQwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoZGlzYWJsZWQoKSkgeworICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgewogICAg
ICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0ODksNyArMTQ4OSw3IEBAIFN0
cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CiAg
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAg
CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpbmRleF07Ci0gICAgaWYgKCFlbGVt
ZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgfHwgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KS0+ZGlzYWJsZWQoKSkKKyAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8
fCB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiB0b0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpLT50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGI5MzVkZjBhY2U2YzA4ZGFhZGQ1ZDI2
YzYzMDBlNDMzYzBiZmQ3YzQuLmRiNTdhYTRjMzczZDNjYjgwMDcxYjU2ZjlhNjNjM2FjNGE1NWMy
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0CiB2b2lk
IEltYWdlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIHsK
ICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsK
LSAgICBpZiAoZWxlbWVudC0+ZGlzYWJsZWQoKSB8fCAhZWxlbWVudC0+Zm9ybSgpKQorICAgIGlm
IChlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8fCAhZWxlbWVudC0+Zm9ybSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgZWxlbWVudC0+c2V0QWN0aXZhdGVkU3VibWl0KHRydWUpOwog
ICAgIGlmIChldmVudC0+dW5kZXJseWluZ0V2ZW50KCkgJiYgZXZlbnQtPnVuZGVybHlpbmdFdmVu
dCgpLT5pc01vdXNlRXZlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9S
ZXNldElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNw
cAppbmRleCA4ZmVjMGZmNzU1YzIwMWQ2ZDllYWI1ZTUwZGI0OWYzZmI2ZTM1ZjdiLi5iYmNjNmM3
ZjgwNjEzYzY3NDg3OGFhMmUwNjA1NzlhOWY3ODc2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jl
c2V0SW5wdXRUeXBlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIFJlc2V0SW5wdXRUeXBlOjpz
dXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogCiB2b2lkIFJlc2V0SW5wdXRUeXBlOjpoYW5kbGVE
T01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5kaXNh
YmxlZCgpIHx8ICFlbGVtZW50KCktPmZvcm0oKSkKKyAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSB8fCAhZWxlbWVudCgpLT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBlbGVtZW50KCktPmZvcm0oKS0+cmVzZXQoKTsKICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAppbmRleCA0ODlk
OWExZjgxZjRmOGM5OTNiZGFlZjE5MzFlN2ZiMWI5NzA4MTk1Li44NzI0ZmZiNTRkNTVmZGEzNTIz
NzU0NzE5YTE1ZTM4OTA1MDVkOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1
Ym1pdElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5
cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU3VibWl0SW5wdXRUeXBlOjpzdXBwb3J0c1Jl
cXVpcmVkKCkgY29uc3QKIHZvaWQgU3VibWl0SW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2
ZW50KEV2ZW50KiBldmVudCkKIHsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gZWxlbWVu
dCA9IHRoaXMtPmVsZW1lbnQoKTsKLSAgICBpZiAoZWxlbWVudC0+ZGlzYWJsZWQoKSB8fCAhZWxl
bWVudC0+Zm9ybSgpKQorICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8
fCAhZWxlbWVudC0+Zm9ybSgpKQogICAgICAgICByZXR1cm47CiAgICAgZWxlbWVudC0+c2V0QWN0
aXZhdGVkU3VibWl0KHRydWUpOwogICAgIGVsZW1lbnQtPmZvcm0oKS0+cHJlcGFyZUZvclN1Ym1p
c3Npb24oZXZlbnQpOyAvLyBFdmVudCBoYW5kbGVycyBjYW4gcnVuLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNDkwNDllM2Ew
NGVjYzJlZDAxZThiYTU1ZDNiNWViYThkMjRlYjdhOS4uOTlmZTA1Zjg2MTc1MjEyOTg3MWVlM2M1
ZTFjNmMwYjRkMjc4NWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0yMjEsMTQgKzIyMSw5IEBAIFJlbmRlck9iamVjdCog
U2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNsaWRlclRodW1iKHRoaXMp
OwogfQogCi1ib29sIFNsaWRlclRodW1iRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAorYm9vbCBT
bGlkZXJUaHVtYkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGhvc3RJbnB1dCgpLT5kaXNhYmxlZCgpOwotfQotCi1ib29sIFNsaWRlclRodW1iRWxl
bWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdAotewotICAgIHJldHVybiAhZGlzYWJs
ZWQoKTsKKyAgICByZXR1cm4gaG9zdElucHV0KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwog
fQogCiBib29sIFNsaWRlclRodW1iRWxlbWVudDo6bWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3Mo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuaAppbmRleCBkZTUxMDM3OGVlZDU1ODNkZjkyOThkODcyNGI5NDY4NGZiNTU3ZTRmLi5iMTQ2
MGVjYTcxMTU0MzM5NjNlYTRjYWU2YWJkMWM0MmRmMDk1ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtNjUsOCArNjUsNyBAQCBw
cml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9D
bGFzcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgTm9kZSogZm9jdXNEZWxlZ2F0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKaW5k
ZXggNTQ5YWU0NDkwODdkZmMxZmI1ODBmNWY4MDhlY2QyOTZkODcyMzE1ZS4uYjIyMzQ0MDUzZDA2
ZWVjYmI2NmFmNDVmYjA3OGMzZGE3MDViN2Y5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCkBAIC03Miw4ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHNoYWRvd0hvc3QoKSAmJiBzaGFkb3dIb3N0KCkt
PmRpc2FibGVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAhZGlzYWJsZWQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzaGFkb3dIb3N0
KCkgJiYgc2hhZG93SG9zdCgpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBtYXRjaGVzUmVhZE9ubHlQc2V1ZG9DbGFzcygpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IGZhMmYxNzljMzFiNDE2Yzk4NGI0NzM2YzQ0YWViYzJlOTkyNTY4YjYu
LmVmYjUwMWYwNWI0MTk0ODgzNTNkNzYxOTMzOGNhOTQ2NDVkYzRjMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVu
dC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50
Ojp1cGRhdGVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKICAgICBSZW5kZXJJbWFnZVJlc291cmNl
KiByZXNvdXJjZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKTsK
ICAgICBDYWNoZWRJbWFnZSogaW1hZ2U7Ci0gICAgaWYgKGhvc3RJbnB1dCgpLT5kaXNhYmxlZCgp
KQorICAgIGlmIChob3N0SW5wdXQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAg
IGltYWdlID0gbV90ZXh0RmllbGREZWNvcmF0b3ItPmltYWdlRm9yRGlzYWJsZWRTdGF0ZSgpOwog
ICAgIGVsc2UgaWYgKGhvc3RJbnB1dCgpLT5pc1JlYWRPbmx5KCkpCiAgICAgICAgIGltYWdlID0g
bV90ZXh0RmllbGREZWNvcmF0b3ItPmltYWdlRm9yUmVhZG9ubHlTdGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggNWQ0MGU3ODQxYTNiNTM5MTdlZTY4
ODQ4YjQxZmNlYjJjNDg1NjY2Zi4uNzk3MjFiYWMwODc5NmM0MWYzODM3Nzc1OTEwNWI0ZDkyZTkx
Y2JiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0xODcs
NyArMTg3LDcgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNy
ZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZm9ybS0+YXNzb2NpYXRlZEVsZW1lbnRzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sID0gZm9ybS0+YXNzb2NpYXRlZEVsZW1l
bnRzKClbaV07CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChj
b250cm9sKTsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5kaXNhYmxlZCgpKQorICAgICAgICBpZiAo
IWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udHJvbC0+
YXBwZW5kRm9ybURhdGEoKmRvbUZvcm1EYXRhLCBpc011bHRpUGFydEZvcm0pOwogICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKGlucHV0VGFnKSkgewogICAgICAgICAgICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29udHJv
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGZiNWJhNTI5Mjlj
Y2IwZjk0MzUxNmEzZjFjN2RjOGM4YmE5YjRmNWMuLjZjMGNiODNiYmY4MTJiNmFiMDcyNmEyYjBk
OTg3MDM5Yzc4ZDZjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0zNzEsNyArMzcxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKERy
YWdEYXRhKiBkcmFnRGF0YSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGEKIAogICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkZpbGVzID0gZHJhZ0RhdGEtPm51bWJlck9mRmlsZXMoKTsKICAgICAgICAg
aWYgKG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UpIHsKLSAgICAgICAgICAgIGlmIChtX2Zp
bGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5kaXNhYmxlZCgpKQorICAgICAgICAgICAgaWYgKG1f
ZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAg
ICAgICAgICAgICAgIGRyYWdTZXNzaW9uLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAwOwog
ICAgICAgICAgICAgZWxzZSBpZiAobV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+bXVsdGlw
bGUoKSkKICAgICAgICAgICAgICAgICBkcmFnU2Vzc2lvbi5udW1iZXJPZkl0ZW1zVG9CZUFjY2Vw
dGVkID0gbnVtYmVyT2ZGaWxlczsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBib29sIERyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgLy8gZmls
ZUlucHV0IHNob3VsZCBiZSB0aGUgZWxlbWVudCB3ZSBoaXQgdGVzdGVkIGZvciwgdW5sZXNzIGl0
IHdhcyBtYWRlCiAgICAgICAgIC8vIGRpc3BsYXk6bm9uZSBpbiBhIGRyb3AgZXZlbnQgaGFuZGxl
ci4KICAgICAgICAgQVNTRVJUKGZpbGVJbnB1dCA9PSBlbGVtZW50IHx8ICFmaWxlSW5wdXQtPnJl
bmRlcmVyKCkpOwotICAgICAgICBpZiAoZmlsZUlucHV0LT5kaXNhYmxlZCgpKQorICAgICAgICBp
ZiAoZmlsZUlucHV0LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICByZXR1cm4gZmlsZUlucHV0LT5yZWNlaXZlRHJvcHBlZEZpbGVz
KGRyYWdEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAxZmQ4ODc4NzhiYzI0NmVhNzM3ZDlmYzEwMzEzMGE5ZTlhYjkxNDQwLi40YTNkODBhNzk3
NDNlMWM2NmNiNGZjMmE4NDRhM2JiZTk0YThlOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBSZW5kZXJMaXN0
Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2Vs
ZWN0LT5saXN0SXRlbXMoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewog
ICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKLSAgICAgICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiAhdG9IVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KS0+ZGlzYWJsZWQoKSkgeworICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShv
cHRpb25UYWcpICYmICFlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAg
ICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVj
dChhZGRpdGlvbmFsT2Zmc2V0LCBpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3Jv
dW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgaWYg
KGZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpID09IG5vZGUoKSkKICAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1l
KCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgLy8g
SG9ub3IgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVkIGl0ZW1zCi0gICAgICAgIGVs
c2UgaWYgKCFlbGVtZW50LT5kaXNhYmxlZCgpICYmICFzZWxlY3QtPmRpc2FibGVkKCkpCisgICAg
ICAgIGVsc2UgaWYgKCFlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhc2VsZWN0
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1l
KCktPmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNDc1Yzdk
NzI4OTM0MmFlYWE3ZWMwMjliNzE2NWMwZTljMzgyOGMzMS4uNWE0ZTM2YTQ1ZTc0OTllZDg2ZGJk
NzZkNTczYThhYzgyNDBhMTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCkBAIC00NTMsMTIgKzQ1MywxMiBAQCBib29sIFJlbmRlck1lbnVMaXN0Ojpp
dGVtSXNFbmFibGVkKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICBib29sIGdyb3VwRW5h
YmxlZCA9IHRydWU7CiAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUo
b3B0Z3JvdXBUYWcpKQotICAgICAgICAgICAgZ3JvdXBFbmFibGVkID0gIXN0YXRpY19jYXN0PEhU
TUxPcHRHcm91cEVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+ZGlzYWJsZWQoKTsKKyAgICAgICAg
ICAgIGdyb3VwRW5hYmxlZCA9ICFwYXJlbnRFbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KTsKICAgICB9CiAgICAgaWYgKCFncm91cEVuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVy
biAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKIFBvcHVwTWVudVN0eWxl
IFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggOGJk
NTlmNWVjMWYyMDFlNTFiMWU3ZmEzMjk5MzkyNmNmZGE4MWEwYS4uZGNmNTQ3YTg0Y2NmNTcyYjNj
ZGZmZTE4MjY0OGYzMDI3YTVjNDFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC03NiwxNyArNzYsMTcgQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRl
clN0eWxlKgogCiBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KE5v
ZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBib29sIGlzRW5hYmxlZCA9IHRy
dWU7CisgICAgYm9vbCBpc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgYm9vbCBpc1JlYWRPbmx5Q29u
dHJvbCA9IGZhbHNlOwogCiAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwotICAgICAgICBpc0VuYWJsZWQg
PSBlbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgICAgICBpc0Rpc2FibGVkID0g
ZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgICAgIGlzUmVhZE9ubHlDb250
cm9sID0gZWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSAmJiB0b0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50KGVsZW1lbnQpLT5pc1JlYWRPbmx5KCk7CiAgICAgfQogCi0gICAgc3R5bGUtPnNl
dFVzZXJNb2RpZnkoKGlzUmVhZE9ubHlDb250cm9sIHx8ICFpc0VuYWJsZWQpID8gUkVBRF9PTkxZ
IDogUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7Ci0gICAgcmV0dXJuICFpc0VuYWJsZWQ7Cisg
ICAgc3R5bGUtPnNldFVzZXJNb2RpZnkoKGlzUmVhZE9ubHlDb250cm9sIHx8IGlzRGlzYWJsZWQp
ID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7CisgICAgcmV0dXJuIGlz
RGlzYWJsZWQ7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHlsZSogdGV4dEJsb2Nr
U3R5bGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRl
eCBlNDVkZTE1NzQwMjNjNjA0YTYzNDU3Nzc3NTFmMWYwYzFmMDk3NWNmLi45NzJiZTkwNjQzMjQ0
OTBiOWIzNDc5ZGEyNzlkZGMyMDE2MTY2MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKQEAgLTc4OCw3ICs3ODgsNyBAQCBib29sIFJlbmRlclRoZW1lOjppc0Vu
YWJsZWQoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogICAgIE5vZGUqIG5vZGUgPSBvLT5u
b2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1D
b250cm9sKCk7CisgICAgcmV0dXJuICF0b0VsZW1lbnQobm9kZSktPmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpOwogfQogCiBib29sIFJlbmRlclRoZW1lOjppc0ZvY3VzZWQoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CmluZGV4IDFhY2NlNWE2NjhiYzZlNGZlNzNmMjBlZjJjMGNiNTZmOGFhZDZkNTYuLjJlOGQ1NmVm
MzYwNTZhYTNlNjBkNDZkMWNlY2ZiNmVmOWNlMzg5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgZ2V0TWVkaWFVSVBhcnRTdGF0ZUZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQg
ZmxhZ3MgPSAwOwogCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSktPmRpc2FibGVkKCkpCisgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbChub2RlKSkK
ICAgICAgICAgZmxhZ3MgfD0gTWVkaWFVSVBhcnREaXNhYmxlZEZsYWc7CiAgICAgZWxzZSBpZiAo
bm9kZS0+YWN0aXZlKCkpCiAgICAgICAgIGZsYWdzIHw9IE1lZGlhVUlQYXJ0UHJlc3NlZEZsYWc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWNTaGFy
ZWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWNTaGFyZWQubW0K
aW5kZXggYjAxZGExODQ1YzYwODUyNTllOGFmYTQ5NzY4MTM5ZDM4NjA4MDI2Yi4uOGE5ZjY2Y2I0
MWFhNDQ3YmNkMTczMjk1MDljMThhNjNkMTYwMWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAg
dm9pZCBSZW5kZXJUaGVtZU1hY1NoYXJlZDo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBSZW4KIAogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xv
ciB0byBibGFjayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIC8vIENh
c3QgdG8gUkdCMzIgaXMgdG8gd29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0gICAgc3R5bGUt
PnNldENvbG9yKGUgJiYgZS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJH
QkEzMj4oQ29sb3I6OmJsYWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CisgICAgc3R5bGUtPnNldENv
bG9yKGUgJiYgIWUtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMy
PihDb2xvcjo6YmxhY2spIDogQ29sb3I6OmRhcmtHcmF5KTsKIAogICAgIC8vIFNldCB0aGUgYnV0
dG9uJ3MgdmVydGljYWwgc2l6ZS4KICAgICBzZXRTaXplRnJvbUZvbnQoc3R5bGUsIG1lbnVMaXN0
QnV0dG9uU2l6ZXMoKSk7CkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
U2hhcmVkOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29u
c3QgUAogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwog
Ci0gICAgaWYgKGlucHV0LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpICYmIChpbnB1dC0+aXNUZXh0
Rm9ybUNvbnRyb2woKSAmJiAhdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChpbnB1dCktPmlz
UmVhZE9ubHkoKSkpIHsKKyAgICBpZiAoIWlucHV0LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAm
JiAoaW5wdXQtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgIXRvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQoaW5wdXQpLT5pc1JlYWRPbmx5KCkpKSB7CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVN0YXRl
KFtzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0sIG8pOwogICAgICAgICB1cGRhdGVQcmVzc2VkU3Rh
dGUoW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSwgbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggMGUyM2ZkZWNhNjg0Mjdh
ZDI0ZTczNzYwNDMzOTliZjYwYmMzNTVkNC4uZjMwMWVhY2YzZmUwYmM2MzAwZDg2ZGRlZjhmYzE3
YTE5NTJiZmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXIKIAog
ICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFjayBvciBncmF5IHdoZW4gd2Ug
aGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIC8vIENhc3QgdG8gUkdCMzIgaXMgdG8gd29yayBhcm91
bmQgYSBjb21waWxlciBidWcuCi0gICAgc3R5bGUtPnNldENvbG9yKGUgJiYgZS0+aXNFbmFibGVk
Rm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJsYWNrKSA6IENvbG9y
OjpkYXJrR3JheSk7CisgICAgc3R5bGUtPnNldENvbG9yKGUgJiYgIWUtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMyPihDb2xvcjo6YmxhY2spIDogQ29sb3I6OmRh
cmtHcmF5KTsKIAogICAgIC8vIFNldCB0aGUgYnV0dG9uJ3MgdmVydGljYWwgc2l6ZS4KICAgICBz
ZXRCdXR0b25TaXplKHN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuY3Bw
CmluZGV4IDkyYjU1OGRmMjliZTEyZDUzYzlhNDk0MDgzYWJmMzc2MjhkYjRjODQuLmZhNGRlYzBl
ZDM0YTY5MzA0YjYzOTY4N2EyMTdhYmE3NDBiODY0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxU
cmFuc2Zvcm1EYXRhLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGE6OmZpbmRQYXNzd29yZEZvcm1GaWVsZHMoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50ID0gZm9ybUVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgICAgIGlmICghaW5w
dXRFbGVtZW50LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgICAgICBpZiAoaW5wdXRFbGVt
ZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGlmICgocGFzc3dvcmRzLnNpemUoKSA8IG1heFBhc3N3b3JkcykKQEAgLTIxNyw3ICsy
MTcsNyBAQCBib29sIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpmaW5kUGFzc3dvcmRGb3JtRmll
bGRzKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZm9ybUVsZW1lbnQt
PnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNFbmFi
bGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICAvLyBWYXJpb3VzIGlucHV0IHR5cGVzIHN1Y2ggYXMgdGV4dCwgdXJsLCBlbWFpbCBjYW4gYmUg
YSB1c2VybmFtZSBmaWVsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5kZXggNTYzMDBhNzMwYmJkNmE1N2NhOTlmYmMw
NzRlYjA5ODcwMmFlOTc0Zi4uYjc3OTIxMmUwMTYyNGY4ZTFhNzFkZDBhZDcxZjc1N2E4NjQ2MjAz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9N
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RE9NU3VwcG9ydC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIGlzVGV4dEJhc2VkQ29udGVu
dEVkaXRhYmxlRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVsZW1lbnQtPmlzUmVhZE9ubHlOb2RlKCkg
fHwgIWVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9sKCkpCisgICAgaWYgKGVsZW1lbnQtPmlz
UmVhZE9ubHlOb2RlKCkgfHwgZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpc1BvcHVwSW5wdXRGaWVsZChlbGVtZW50KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwCmluZGV4IDY5OTg5ZjgxMzcxZmU3NTA3OTMwMTA0MmRkMjU3MWI5MmFjYWFl
YzguLjdkZGUyYjkzNzhiNDRjY2IwNDNiMGE1MGY4NzljY2YxZWNlNGIyMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcApAQCAtMTkwMSw3ICsxOTAxLDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OmRpZE5vZGVPcGVu
UG9wdXAoTm9kZSogbm9kZSkKIAogYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cChI
VE1MU2VsZWN0RWxlbWVudCogc2VsZWN0KQogewotICAgIGlmICghc2VsZWN0IHx8IHNlbGVjdC0+
ZGlzYWJsZWQoKSkKKyAgICBpZiAoIXNlbGVjdCB8fCBzZWxlY3QtPmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIHZp
ZXcsIGRvIG5vdGhpbmcgYW5kIHJldHVybi4KQEAgLTE5MzYsMTMgKzE5MzYsMTMgQEAgYm9vbCBJ
bnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0KQog
ICAgICAgICAgICAgaWYgKGxpc3RJdGVtc1tpXS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlv
blRhZykpIHsKICAgICAgICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gc3Rh
dGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihsaXN0SXRlbXNbaV0pOwogICAgICAgICAgICAg
ICAgIGxhYmVsc1tpXSA9IG9wdGlvbi0+dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgp
OwotICAgICAgICAgICAgICAgIGVuYWJsZWRzW2ldID0gb3B0aW9uLT5kaXNhYmxlZCgpID8gMCA6
IDE7CisgICAgICAgICAgICAgICAgZW5hYmxlZHNbaV0gPSBvcHRpb24tPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpID8gMCA6IDE7CiAgICAgICAgICAgICAgICAgc2VsZWN0ZWRzW2ldID0gb3B0aW9u
LT5zZWxlY3RlZCgpOwogICAgICAgICAgICAgICAgIGl0ZW1UeXBlc1tpXSA9IG9wdGlvbi0+cGFy
ZW50Tm9kZSgpICYmIG9wdGlvbi0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
b3B0Z3JvdXBUYWcpID8gVHlwZU9wdGlvbkluR3JvdXAgOiBUeXBlT3B0aW9uOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChsaXN0SXRlbXNbaV0tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRncm91
cFRhZykpIHsKICAgICAgICAgICAgICAgICBIVE1MT3B0R3JvdXBFbGVtZW50KiBvcHRHcm91cCA9
IHN0YXRpY19jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQqPihsaXN0SXRlbXNbaV0pOwogICAgICAg
ICAgICAgICAgIGxhYmVsc1tpXSA9IG9wdEdyb3VwLT5ncm91cExhYmVsVGV4dCgpOwotICAgICAg
ICAgICAgICAgIGVuYWJsZWRzW2ldID0gb3B0R3JvdXAtPmRpc2FibGVkKCkgPyAwIDogMTsKKyAg
ICAgICAgICAgICAgICBlbmFibGVkc1tpXSA9IG9wdEdyb3VwLT5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSA/IDAgOiAxOwogICAgICAgICAgICAgICAgIHNlbGVjdGVkc1tpXSA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGl0ZW1UeXBlc1tpXSA9IFR5cGVHcm91cDsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAobGlzdEl0ZW1zW2ldLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHJUYWcpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBkOWRjNzBjODc0N2ZkMDQxM2Q3M2U1N2I5NzIzMzk2NzkzMGU1MGU0Li5kZDQ0NWMw
Njk0YzZlODk0ZDdkY2JkOTk2M2M1YWMyM2MxMmY0NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojpp
c0VuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PigpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVybiAhY29uc3RV
bndyYXA8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CiAKIGJvb2wgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlYWRPbmx5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk9wdGlvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViT3B0aW9uRWxlbWVudC5jcHAKaW5kZXgg
YjUxMTY5N2I0MDI4Y2RkNGJkYzIyYmZkYWYzYzAxMWIyYWQ3OTdlYy4uZWRjNTY4ZTg4ZTc1YjQ5
ZGM4NDU4ZjMyMWI4NGQ4OTIzZmFlMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViT3B0aW9uRWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgV2ViU3RyaW5nIFdl
Yk9wdGlvbkVsZW1lbnQ6OmxhYmVsKCkgY29uc3QKIAogYm9vbCBXZWJPcHRpb25FbGVtZW50Ojpp
c0VuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiAhKGNvbnN0VW53cmFwPEhUTUxPcHRpb25F
bGVtZW50PigpLT5kaXNhYmxlZCgpKTsKKyAgICByZXR1cm4gIShjb25zdFVud3JhcDxIVE1MT3B0
aW9uRWxlbWVudD4oKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpOwogfQogCiBXZWJPcHRpb25F
bGVtZW50OjpXZWJPcHRpb25FbGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+JiBlbGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFz
c3dvcmRGb3JtVXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFzc3dv
cmRGb3JtVXRpbHMuY3BwCmluZGV4IGFlMzk5OTQyNWI3YWJjNDk1MDc3MzIwYTA1NDMxZGI4MGM2
YjlhMzIuLjVhZDRhMWU2NDdjMmVhYmNlMzA4NDdmNWY1ZWQ1ZjdiZDM4MGFkNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhc3N3b3JkRm9ybVV0aWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYXNzd29yZEZvcm1VdGlscy5jcHAK
QEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBmaW5kUGFzc3dvcmRGb3JtRmllbGRzKEhUTUxGb3JtRWxl
bWVudCogZm9ybSwgUGFzc3dvcmRGb3JtRmllbGRzKiBmaWVsZHMpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJ
bnB1dEVsZW1lbnQoZm9ybUVsZW1lbnQpOwotICAgICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNF
bmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoKGZp
ZWxkcy0+cGFzc3dvcmRzLnNpemUoKSA8IG1heFBhc3N3b3JkcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCmluZGV4IGMzODUy
OTFmNzk2ZGYyMWE2NTgxMjY0ZWFjMzc1OWUyYTllMzFkNzIuLmQwZDljNjUzYmQ2ZTg4ZTU1OGI4
OGRhNDhhMTRjZGYxOGJlZDc4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIEhUTUxJ
bnB1dEVsZW1lbnQqIGZpbmRTdWl0YWJsZVNlYXJjaElucHV0RWxlbWVudChjb25zdCBIVE1MRm9y
bUVsZW1lbnQqIGZvcm0pCiAKICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oKmkpOwogCi0gICAg
ICAgIGlmIChmb3JtRWxlbWVudC0+ZGlzYWJsZWQoKSB8fCBmb3JtRWxlbWVudC0+bmFtZSgpLmlz
TnVsbCgpKQorICAgICAgICBpZiAoZm9ybUVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IHx8IGZvcm1FbGVtZW50LT5uYW1lKCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoIUlzSW5EZWZhdWx0U3RhdGUoZm9ybUVsZW1lbnQpIHx8IGZvcm1FbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKQpAQCAtMjA1LDcgKzIwNSw3
IEBAIGJvb2wgYnVpbGRTZWFyY2hTdHJpbmcoY29uc3QgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBW
ZWN0b3I8Y2hhcj4qIGVuY29kZWRTdHJpbmcsCiAKICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxl
bWVudCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4o
KmkpOwogCi0gICAgICAgIGlmIChmb3JtRWxlbWVudC0+ZGlzYWJsZWQoKSB8fCBmb3JtRWxlbWVu
dC0+bmFtZSgpLmlzTnVsbCgpKQorICAgICAgICBpZiAoZm9ybUVsZW1lbnQtPmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpIHx8IGZvcm1FbGVtZW50LT5uYW1lKCkuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBGb3JtRGF0YUxpc3QgZGF0YUxpc3QoKmVuY29kaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCA4N2ZiODk5ZWE5ZTBlMjk5OGJh
NWNiMWJkN2U0NWI0ZmYyMzA4YThkLi4zZmExMTcxZDVmYmQxZGE3ZmM4Nzc5YzlhMDE3YTU5ZTdj
YjViZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC0xMDc5LDcgKzEw
NzksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmRp
c2FibGVkKAogewogICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5oYXNUYWdOYW1l
KGlucHV0VGFnKSk7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fZWxlbWVudCk7Ci0gICAgKnJlc3VsdCA9IGlucHV0
RWxlbWVudC0+ZGlzYWJsZWQoKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAqcmVzdWx0ID0gaW5wdXRF
bGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>