<?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>107080</bug_id>
          
          <creation_ts>2013-01-16 18:29:05 -0800</creation_ts>
          <short_desc>Remove a TextTrack.h include from the Element.h and move WebVTT related stuff outside the Element</short_desc>
          <delta_ts>2013-01-18 20:01:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dima Gorbik">dgorbik</reporter>
          <assigned_to name="Dima Gorbik">dgorbik</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dgorbik</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>silviapf</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>808948</commentid>
    <comment_count>0</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-16 18:29:05 -0800</bug_when>
    <thetext>We should try to keep hot include files light in terms of sub includes to reduce build times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810090</commentid>
    <comment_count>1</comment_count>
      <attachid>183349</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-17 18:52:17 -0800</bug_when>
    <thetext>Created attachment 183349
Proposed fix 0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810099</commentid>
    <comment_count>2</comment_count>
      <attachid>183349</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-17 19:01:08 -0800</bug_when>
    <thetext>Comment on attachment 183349
Proposed fix 0.1

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

&gt; Source/WebCore/css/SelectorChecker.cpp:948
&gt; +            return (element-&gt;isWebVTTElement() &amp;&amp; toWebVTTElement(element)-&gt;webVTTNodeType() == WebVTTNodeTypeFuture);

Instead of this incantation in multiple places it would be nicer to hide this in a method on Element, Element::webVTTNodeType() const { return isWebVTTElement(this) ? toWebVTTElement(this)-&gt;type() ? WebVTTNodeTypeNone; };

There&apos;s no reason for the method on WebVTTElement to be called webVTTNodeType, it should just be called type() or something.

&gt; Source/WebCore/html/track/WebVTTElement.h:32
&gt; +enum WebVTTNodeType {

WebVTTElementType ? And also fix the setters and such to be setWebVTTType() I don&apos;t really see a reason to repeat Node and Element so many times.

&gt; Source/WebCore/html/track/WebVTTElement.h:58
&gt; +    ASSERT(tagName.localName().impl());

This is a really weird assert to make. Shouldn&apos;t Element already assert about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810101</commentid>
    <comment_count>3</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-17 19:05:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 183349 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183349&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/SelectorChecker.cpp:948
&gt; &gt; +            return (element-&gt;isWebVTTElement() &amp;&amp; toWebVTTElement(element)-&gt;webVTTNodeType() == WebVTTNodeTypeFuture);
&gt; 
&gt; Instead of this incantation in multiple places it would be nicer to hide this in a method on Element, Element::webVTTNodeType() const { return isWebVTTElement(this) ? toWebVTTElement(this)-&gt;type() ? WebVTTNodeTypeNone; };

I will end up with an include in Element.h again, what&apos;s the purpose of the patch then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810202</commentid>
    <comment_count>4</comment_count>
      <attachid>183349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-17 21:18:29 -0800</bug_when>
    <thetext>Comment on attachment 183349
Proposed fix 0.1

Attachment 183349 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15947246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810754</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 09:58:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 183349 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183349&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/SelectorChecker.cpp:948
&gt; &gt; &gt; +            return (element-&gt;isWebVTTElement() &amp;&amp; toWebVTTElement(element)-&gt;webVTTNodeType() == WebVTTNodeTypeFuture);
&gt; &gt; 
&gt; &gt; Instead of this incantation in multiple places it would be nicer to hide this in a method on Element, Element::webVTTNodeType() const { return isWebVTTElement(this) ? toWebVTTElement(this)-&gt;type() ? WebVTTNodeTypeNone; };
&gt; 
&gt; I will end up with an include in Element.h again, what&apos;s the purpose of the patch then?

Not if you make it non-inline, or if you place the inline version in the WebVTTElement.h, it&apos;s not that big a deal. :)

It does occur to me that you&apos;re putting multiple virtual method calls in the middle of selector matching which is rather hot, you&apos;ll want to cache that value like we do for isFormControlElement() in that method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811092</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 15:23:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; ...
&gt; Not if you make it non-inline, or if you place the inline version in the WebVTTElement.h, it&apos;s not that big a deal. :)
&gt; 

Discussed this on IRC, I think we should just leave the patch the way it is in terms of the methods. Ignore my suggestion in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811239</commentid>
    <comment_count>7</comment_count>
      <attachid>183590</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-18 18:34:33 -0800</bug_when>
    <thetext>Created attachment 183590
Proposed fix 0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811242</commentid>
    <comment_count>8</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-18 18:37:49 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It does occur to me that you&apos;re putting multiple virtual method calls in the middle of selector matching which is rather hot, you&apos;ll want to cache that value like we do for isFormControlElement() in that method.

This code is located in the function that checks if we may share styles. It&apos;s not being called too often, so probably we don&apos;t have to do that kind of caching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811249</commentid>
    <comment_count>9</comment_count>
      <attachid>183590</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-18 18:45:43 -0800</bug_when>
    <thetext>Comment on attachment 183590
Proposed fix 0.2

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

&gt; Source/WebCore/html/track/WebVTTElement.h:32
&gt; +enum WebVTTNodeType {

This should probably be WebVTTElementType, no?

&gt; Source/WebCore/html/track/WebVTTElement.h:48
&gt; +    WebVTTElement(const QualifiedName&amp; tagName, Document*);

No need for tagName here.  This should probably be private.

&gt; Source/WebCore/html/track/WebVTTElement.h:56
&gt; +: HTMLElement(tagName, document)
&gt; +, m_webVTTNodeType(WebVTTNodeTypeNone)

These should be indented.  Does this need to be in the header?

&gt; Source/WebCore/html/track/WebVTTElement.h:60
&gt; +inline WebVTTElement* toWebVTTElement(Node* node)

You should probably also add a 

// This will catch anyone doing an unnecessary cast.
void toWebVTTElement(const WebVTTElement*); 

without an implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811260</commentid>
    <comment_count>10</comment_count>
      <attachid>183593</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-18 19:11:09 -0800</bug_when>
    <thetext>Created attachment 183593
Proposed fix 0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811261</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-18 19:13:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/13047516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811269</commentid>
    <comment_count>12</comment_count>
      <attachid>183593</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 20:01:17 -0800</bug_when>
    <thetext>Comment on attachment 183593
Proposed fix 0.3

Clearing flags on attachment: 183593

Committed r140231: &lt;http://trac.webkit.org/changeset/140231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811270</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 20:01:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183349</attachid>
            <date>2013-01-17 18:52:17 -0800</date>
            <delta_ts>2013-01-18 18:34:33 -0800</delta_ts>
            <desc>Proposed fix 0.1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22206</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2Y2ZWE4NS4uNGM2MjIyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1ODEsNiArMTU4MSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCiAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAg
ICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAorICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICBodG1sL3RyYWNrL1dl
YlZUVFRva2VuaXplci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY3YzExMzcuLjAwM2ViMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMy0wMS0xNyAgRGltYSBHb3JiaWsgIDxkZ29yYmlr
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBUZXh0VHJhY2suaCBpbmNsdWRlIGZyb20g
dGhlIEVsZW1lbnQuaCBhbmQgbW92ZSBXZWJWVFQgcmVsYXRlZCBzdHVmZiBvdXRzaWRlIHRoZSBF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDcwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJWVFQgb2JqZWN0cyBhcmUgbm93IHN1YmNsYXNzZXMgb2YgdGhlIEVsZW1lbnQuIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSBtYWpvciBXZWJWVFQgY2h1bmtzIG9mIGNvZGUgZnJvbQorICAgICAg
ICBFbGVtZW50LmggYW5kIE5vZGVSYXJlRGF0YS4gQXMgYSBzaWRlIGVmZmVjdCBvZiB0aGlzIHdl
IHdpbGwgdW5hYmxlIHRvIHJldXNlIGV4aXN0aW5nIEhUTUxFbGVtZW50cyB0bworICAgICAgICBt
aW1pYyB0aGUgYmVoYXZpb3IgcmVxdWlyZWQgYnkgV2ViVlRUIHNwZWNzIHdpdGhvdXQgc3ViY2xh
c3NpbmcgdGhlbSBhcyB3ZWxsLiBXaXRoIHRoaXMgY2hhbmdlIDxpPiwgPGI+LAorICAgICAgICA8
cnVieT4gYW5kIDx1PiBvYmplY3RzIHdpbGwgbm90IGJlIHJlbmRlcmVkIGNvcnJlY3RseS4gVGhp
cyBzaG91bGQgYmUgZml4ZWQgaW4gYSB3YXkgc3BlY3MgcmVxdWlyZSB0aGlzOgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjE0LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YgdGhlIGV4aXN0aW5n
IGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmlzV2ViVlRURWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9UZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKTog
Y29uc3RydWN0IEhUTUxFbGVtZW50cyB0byBidWlsZCB0aGUgRE9NIHRyZWUgY29ycmVjdGx5Cisg
ICAgICAgIGZvciA8aT4sIDxiPiwgPHU+IGFuZCA8cnVieT4gV2ViVlRUIG5vZGVzLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVt
ZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRFbGVtZW50OjpzZXRXZWJWVFROb2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
VFRFbGVtZW50Ojp3ZWJWVFROb2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVt
ZW50OjpXZWJWVFRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvV2ViVlRURWxlbWVudCk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKwogMjAxMy0wMS0xNiAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgTm9kZUxp
c3RzTm9kZURhdGEgd2hlbiBpdCdzIG5vIGxvbmdlciBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBhMDM0ZjVkLi43MjY4YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDQ4LDYgKzM0NDgsOCBA
QAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9U
cmFja0V2ZW50LmNwcCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgnLAogICAgICAgICAg
ICAgJ2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRUb2tlbi5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjNmMyY2I5Li40MmIwMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzEwLDYgKzYzMTAsOCBAQAogCQlFRDUw
MURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVk
aXRvck1hYy5tbSAqLzsgfTsKIAkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREUzQTRG
RjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFREVDOTgwMzBBRUQ3RTE3MDA1OTEzN0YgLyogV2Vi
Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLzsgfTsKKwkJ
RjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjEyMTcxRjMxNkE4QkM2MzAwMDA1
M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwICovOyB9OworCQlGMTIxNzFGNjE2QThDRjBCMDAwMDUz
Q0EgLyogV2ViVlRURWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjEyMTcxRjQxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCAq
LzsgfTsKIAkJRjI5M0IyN0U1NkMxMTJGMzczRkZGMjdFIC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzYwMTI4MDYw
MDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLzsgfTsKIAkJRjMxNjM5NkIx
MzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2OTEzMjk0ODFBMDBBNjQ5
Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRjMxNjM5NkMxMzI5NDgx
QTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwpAQCAtMTM5MDAsNiArMTM5MDIsOCBAQAogCQlF
RDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRvck1hYy5tbTsgcGF0aCA9IG1hYy9FZGl0b3JN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xv
ck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREVDOTgwMjBBRUQ3RTE3MDA1
OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29yZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7
IHVzZXNUYWJzID0gMDsgfTsKKwkJRjEyMTcxRjMxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVlRURWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYxMjE3MUY0MTZBOEJDNjMw
MDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlZUVEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMxNjM5
NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzE2Mzk2QTEzMjk0ODFBMDBBNjQ5Q0IgLyog
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
MzE2Mzk2RDEzMjk0ODc2MDBBNjQ5Q0IgLyogSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk3MTgsNiArMTk3MjIsOCBA
QAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAv
KiBXZWJWVFRFbGVtZW50LmNwcCAqLywKKwkJCQlGMTIxNzFGNDE2QThCQzYzMDAwMDUzQ0EgLyog
V2ViVlRURWxlbWVudC5oICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJh
bmRUZXh0VHJhY2suY3BwICovLAogCQkJCTA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJh
bmRUZXh0VHJhY2suaCAqLywKIAkJCQk5NzU5RTkzNDE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFi
bGVUZXh0VHJhY2suY3BwICovLApAQCAtMjYyNTMsNiArMjYyNTksNyBAQAogCQkJCUUxQkU1MTJF
MENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUYxMjE3MUY2MTZBOENGMEIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI5NDAxLDYgKzI5NDA4LDcgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBF
MTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
NTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGMTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMmU4NzRmNC4u
ZmMzNjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTUzLDYg
KzUzLDEwIEBACiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIK
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJXZWJWVFRFbGVtZW50LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtOTQxLDcgKzk0NSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25z
dCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2liCiAgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudC0+aXNPdXRPZlJhbmdlKCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdXR1cmVDdWU6Ci0gICAgICAgICAg
ICByZXR1cm4gZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSA9PSBXZWJWVFROb2RlVHlwZUZ1dHVy
ZTsKKyAgICAgICAgICAgIHJldHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9X
ZWJWVFRFbGVtZW50KGVsZW1lbnQpLT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBl
RnV0dXJlKTsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvcml6
b250YWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYTNkMTdlYy4uZTNm
NzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTc3LDYgKzE3Nywx
MCBAQAogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2VTZXQuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIldlYlZUVEVsZW1lbnQuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTY1NSw3ICs2NTksNyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVx
dWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmCiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotICAgIGlmIChtX2VsZW1lbnQtPndlYlZUVE5vZGVUeXBlKCkpCisgICAgaWYgKG1fZWxlbWVu
dC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCktPndlYlZU
VE5vZGVUeXBlKCkpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJl
cXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJ
bmRleCwgbGFzdFJ1bGVJbmRleCk7CiAjZW5kaWYKICAgICAvLyBDaGVjayB3aGV0aGVyIG90aGVy
IHR5cGVzIG9mIHJ1bGVzIGFyZSBhcHBsaWNhYmxlIGluIHRoZSBjdXJyZW50IHRyZWUgc2NvcGUu
IENyaXRlcmlhIGZvciB0aGlzOgpAQCAtMTI0Miw3ICsxMjQ2LDExIEBAIGJvb2wgU3R5bGVSZXNv
bHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBpZiAoZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSAhPSBtX2VsZW1lbnQtPndlYlZUVE5vZGVU
eXBlKCkpCisgICAgLy8gRGVueSBzaGFyaW5nIHN0eWxlcyBiZXR3ZWVuIFdlYlZUVCBhbmQgbm9u
LVdlYlZUVCBub2Rlcy4KKyAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgIT0gbV9l
bGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIG1fZWxlbWVudC0+aXNXZWJWVFRFbGVt
ZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT53ZWJWVFROb2RlVHlwZSgpICE9IHRv
V2ViVlRURWxlbWVudChtX2VsZW1lbnQpLT53ZWJWVFROb2RlVHlwZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGM2OWVhM2IuLjAw
YWY0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzNDUsMTggKzIzNDUsNiBAQCBib29s
IEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNoaWxkQ29udGV4dAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci1XZWJWVFROb2RlVHlwZSBFbGVtZW50Ojp3ZWJWVFROb2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+d2ViVlRUTm9kZVR5cGUo
KSA6IFdlYlZUVE5vZGVUeXBlTm9uZTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRXZWJWVFROb2Rl
VHlwZShXZWJWVFROb2RlVHlwZSB0eXBlKQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
LT5zZXRXZWJWVFROb2RlVHlwZSh0eXBlKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogdm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAppbmRleCAzOGZlMmZiLi42ZDE4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24u
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgotI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1MiwxMSArNDQ5LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIFdlYlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2RlVHlwZSk7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBlbnVtIHsKICAgICAgICAgQUxMT1df
S0VZQk9BUkRfSU5QVVQgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
aW5kZXggOGFiNTk0NC4uYjM0N2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aApAQCAtNjAsMTEgKzYwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUo
KSBjb25zdCB7IHJldHVybiBtX2lzSW5DYW52YXNTdWJ0cmVlOyB9CiAgICAgdm9pZCBzZXRJc0lu
Q2FudmFzU3VidHJlZShib29sIHZhbHVlKSB7IG1faXNJbkNhbnZhc1N1YnRyZWUgPSB2YWx1ZTsg
fQogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUo
V2ViVlRUTm9kZVR5cGUgdHlwZSkgeyBtX3dlYlZUVE5vZGVUeXBlID0gdHlwZTsgfQotICAgIFdl
YlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7
IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2b2lkIHNldENvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnQgPSB2YWx1ZTsgfQpAQCAtMTU3LDkgKzE1Miw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzIDogMTsKICAgICB1bnNp
Z25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwogICAg
IHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAx
OwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB1bnNpZ25lZCBtX3dlYlZUVE5vZGVUeXBl
IDogMjsgLy8gV2ViVlRUTm9kZVR5cGUKLSNlbmRpZgogCiAgICAgTGF5b3V0U2l6ZSBtX21pbmlt
dW1TaXplRm9yUmVzaXppbmc7CiAgICAgSW50U2l6ZSBtX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQ7
CkBAIC0yMDcsOSArMTk5LDYgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVE
YXRhKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAs
IG1fd2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGVOb25lKQotI2VuZGlmCiAgICAgLCBtX21p
bmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IGNlNTA1YTIuLmFlZDNmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjM2
LDYgKzIzNiw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlh
Q29udHJvbHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJWVFRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyNlbmRpZgogICAgIGJvb2wgaXNTdHlsZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
Z2V0RmxhZyhJc1N0eWxlZEVsZW1lbnRGbGFnKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dHJp
YnV0ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0No
YXJhY3RlckRhdGFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDY2M2QwNDkuLjE4ZWE2MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaApAQCAtNTMsMTIgKzUzLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KSA9IDA7CiB9OwogCi1lbnVtIFdlYlZUVE5vZGVUeXBlIHsKLSAgICBXZWJWVFRO
b2RlVHlwZU5vbmUgPSAwLAotICAgIFdlYlZUVE5vZGVUeXBlRnV0dXJlLAotICAgIFdlYlZUVE5v
ZGVUeXBlUGFzdAotfTsKLQogY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IEF0
b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcAppbmRleCA1MzlhNjc5Li5lOGU5ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNp
bmNsdWRlICJXZWJWVFRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CkBAIC00OTYsNiArNDk3LDkgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmNvcHlXZWJWVFROb2Rl
VG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZUVE5vZGUsIENvbnRhaW5lck4KICAgICAgICAg
ICAgIGNsb25lZE5vZGUgPSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgICAgICAgICAg
dG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCB0b0Vs
ZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpKTsKICAgICAgICAgICAgIHRvRWxl
bWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKHRpdGxlQXR0ciwgdG9FbGVtZW50
KG5vZGUpLT5nZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgV2ViVlRUUGFyc2VyOjppc1JlY29nbml6
ZWRUYWcodG9FbGVtZW50KG5vZGUpLT50YWdOYW1lKCkpKSB7CisgICAgICAgICAgICBjbG9uZWRO
b2RlID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZSh0b0VsZW1lbnQobm9kZSktPnRhZ1FOYW1lKCksIHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgICAg
ICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIs
IHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBub2RlLT5jbG9uZU5vZGUoZmFsc2UpOwogCkBA
IC02OTUsOCArNjk5LDggQEAgdm9pZCBUZXh0VHJhY2tDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9k
ZXMoQ29udGFpbmVyTm9kZSogcm9vdCwgZG91YmxlIHByZXZpb3VzVGkKICAgICAgICAgICAgICAg
ICBpc1Bhc3ROb2RlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChj
aGlsZC0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2hpbGQpLT5z
ZXRXZWJWVFROb2RlVHlwZShpc1Bhc3ROb2RlID8gV2ViVlRUTm9kZVR5cGVQYXN0IDogV2ViVlRU
Tm9kZVR5cGVGdXR1cmUpOworICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgpKSB7
CisgICAgICAgICAgICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRXZWJWVFROb2RlVHlwZShp
c1Bhc3ROb2RlID8gV2ViVlRUTm9kZVR5cGVQYXN0IDogV2ViVlRUTm9kZVR5cGVGdXR1cmUpOwog
ICAgICAgICAgICAgLy8gTWFrZSBhbiBlbGVtZW5ldCBpZCBtYXRjaCBhIGN1ZSBpZCBmb3Igc3R5
bGUgbWF0Y2hpbmcgcHVycG9zZXMuCiAgICAgICAgICAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHRvRWxlbWVudChjaGlsZCktPnNldElkQXR0cmlidXRlKEF0b21pY1N0
cmluZyhtX2lkLmNoYXJhY3RlcnMoKSwgbV9pZC5sZW5ndGgoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2IyMWRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIldl
YlZUVEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZUVEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
K30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlKHRhZ1FOYW1l
KCksIGRvY3VtZW50KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43YmViNzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBXZWJWVFROb2RlVHlwZSB7CisgICAgV2ViVlRUTm9k
ZVR5cGVOb25lID0gMCwKKyAgICBXZWJWVFROb2RlVHlwZUZ1dHVyZSwKKyAgICBXZWJWVFROb2Rl
VHlwZVBhc3QKK307CisKK2NsYXNzIFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBP
VkVSUklERTsKKworICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGUgdHlw
ZSkgeyBtX3dlYlZUVE5vZGVUeXBlID0gdHlwZTsgfQorICAgIFdlYlZUVE5vZGVUeXBlIHdlYlZU
VE5vZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJWVFROb2RlVHlwZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1dlYlZUVEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBXZWJWVFRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgV2ViVlRUTm9kZVR5cGUgbV93ZWJW
VFROb2RlVHlwZTsKK307CisKK2lubGluZSBXZWJWVFRFbGVtZW50OjpXZWJWVFRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKzogRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKKywgbV93ZWJWVFROb2RlVHlwZShX
ZWJWVFROb2RlVHlwZU5vbmUpCit7CisgICAgQVNTRVJUKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKK30KKworaW5saW5lIFdlYlZUVEVsZW1lbnQqIHRvV2ViVlRURWxlbWVudChOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1dlYlZUVEVsZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlZUVEVsZW1lbnQqPihub2RlKTsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IDJlYzlkNTUuLjQxZTU0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiV2ViVlRURWxlbWVudC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNTUsMTMg
KzM1NiwxMyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYlZUVFRv
a2VuVHlwZXM6OlN0YXJ0VGFnOiB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaGlsZDsKKyAg
ICAgICAgUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNoaWxkOwogICAgICAgICBpZiAoaXNSZWNvZ25p
emVkVGFnKHRva2VuVGFnTmFtZSkpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50Ojpj
cmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVt
ZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOwogICAgICAgICBlbHNlIGlmIChtX3Rva2Vu
Lm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAnYycpCi0gICAgICAg
ICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRh
Z05hbWUoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50Ojpj
cmVhdGUoVGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKICAg
ICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1l
KClbMF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBFbGVtZW50OjpjcmVhdGUoVGV4dFRy
YWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNo
aWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKFRleHRUcmFja0N1ZTo6dm9pY2VFbGVtZW50VGFn
TmFtZSgpLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CiAgICAgICAgICAgICBp
ZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkK
</data>
<flag name="commit-queue"
          id="201686"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183590</attachid>
            <date>2013-01-18 18:34:33 -0800</date>
            <delta_ts>2013-01-18 19:11:09 -0800</delta_ts>
            <desc>Proposed fix 0.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21588</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTlmYzcyYS4uOWI0NGNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1ODQsNiArMTU4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCiAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAg
ICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAorICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICBodG1sL3RyYWNrL1dl
YlZUVFRva2VuaXplci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkNDE0ZGMuLmMwZjg1MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMy0wMS0xOCAgRGltYSBHb3JiaWsgIDxkZ29yYmlr
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBUZXh0VHJhY2suaCBpbmNsdWRlIGZyb20g
dGhlIEVsZW1lbnQuaCBhbmQgbW92ZSBXZWJWVFQgcmVsYXRlZCBzdHVmZiBvdXRzaWRlIHRoZSBF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDcwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJWVFQgb2JqZWN0cyBhcmUgbm93IHN1YmNsYXNzZXMgb2YgdGhlIEVsZW1lbnQuIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSBtYWpvciBXZWJWVFQgY2h1bmtzIG9mIGNvZGUgZnJvbQorICAgICAg
ICBFbGVtZW50LmggYW5kIE5vZGVSYXJlRGF0YS4gV2ViVlRURWxlbWVudCBpcyBkZXJpdmluZyBm
cm9tIEhUTUxFbGVtZW50IGFuZCBub3QgRWxlbWVudCB0byBwcmV2ZW50IHBvc3NpYmxlCisgICAg
ICAgIHByb2JsZW1zIHRoYXQgY291bGQgaGFwcGVuIGJlY2F1c2Ugd2UgcmV1c2UgcVRhZ3MgdGhh
dCBhcmUgYmVpbmcgdXNlZCBpbiBIVE1MIGxpa2UgPGI+LCA8aT4gYW5kIDx1Pi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIG9mIHRoZSBleGlzdGlu
ZyBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjppc1dlYlZUVEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMp
OgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgor
ICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlZUVEVsZW1lbnQ6OnNldFdlYlZUVE5vZGVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlZUVEVsZW1lbnQ6OndlYlZUVE5vZGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJWVFRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorCiAyMDEz
LTAxLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IGZpeGVkIGJhY2tncm91bmQgbGF5ZXJzIHRvIGJlIG1vdmVkIGJ5IHRoZSBTY3JvbGxp
bmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE1NWYwMTcuLmUyNjg5Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM0NDcsNiArMzQ0Nyw4IEBACiAgICAgICAgICAgICAnaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwJywKKyAgICAgICAgICAgICdodG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oJywKICAgICAg
ICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFRva2VuLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMzU5YmU4Li5lZGJjNDM4MyAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MjQxLDYg
KzY1MjQxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVEVsZW1lbnQuY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xXZWJWVFRF
bGVtZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVFBhcnNlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjc1ZmRlYi4uNjJmMGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjMwOCw2ICs2MzA4LDggQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYx
MjE3MUY1MTZBOENFRDIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMjE3MUYzMTZBOEJDNjMwMDAwNTND
QSAvKiBXZWJWVFRFbGVtZW50LmNwcCAqLzsgfTsKKwkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NB
IC8qIFdlYlZUVEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYxMjE3MUY0MTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi87
IH07CiAJCUYyOTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3
OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMy
OTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNC
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEw
MEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKQEAgLTEzODk4LDYgKzEzOTAwLDggQEAKIAkJRUQ1
MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFQzk4MDIwQUVEN0UxNzAwNTkx
MzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1
c2VzVGFicyA9IDA7IH07CisJCUYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlZUVEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMTIxNzFGNDE2QThCQzYzMDAw
MDUzQ0EgLyogV2ViVlRURWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWVFRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzMTYzOTY5
MTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMx
NjM5NkQxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzE4LDYgKzE5NzIyLDggQEAK
IAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGMTIxNzFGMzE2QThCQzYzMDAwMDUzQ0EgLyog
V2ViVlRURWxlbWVudC5jcHAgKi8sCisJCQkJRjEyMTcxRjQxNkE4QkM2MzAwMDA1M0NBIC8qIFdl
YlZUVEVsZW1lbnQuaCAqLywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5k
VGV4dFRyYWNrLmNwcCAqLywKIAkJCQkwNzk0MTc5MDE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5k
VGV4dFRyYWNrLmggKi8sCiAJCQkJOTc1OUU5MzQxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxl
VGV4dFRyYWNrLmNwcCAqLywKQEAgLTI2MjU0LDYgKzI2MjYwLDcgQEAKIAkJCQk5NzdFMkUwRjEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Mzcz
NTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjQ5
QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUYxMjE3MUY2MTZBOENGMEIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI5NDAzLDYgKzI5NDEwLDcgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI0OUMzOUExNjc4NDkz
MjAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYxMjE3MUY1
MTZBOENFRDIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAyZTg3NGY0Li5mYzM2M2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNTMsNiArNTMsMTAgQEAK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIldlYlZUVEVsZW1lbnQuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05NDEs
NyArOTQ1LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LT5pc091dE9mUmFuZ2UoKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1dHVyZUN1ZToKLSAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBlRnV0dXJlOworICAgICAg
ICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1l
bnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVGdXR1cmUpOwog
I2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG9yaXpvbnRhbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkY2NhM2U0Li5iZjk2MGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzgsNiArMTc4LDEwIEBACiAjaW5j
bHVkZSAiU3R5bGVDYWNoZWRJbWFnZVNldC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisjaW5jbHVkZSAiV2ViVlRURWxlbWVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNjU2LDcgKzY2MCw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRj
aFJlcXVlc3QsIGludCYKICAgICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KG1fZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSkKKyAgICBpZiAobV9lbGVtZW50LT5pc1dlYlZU
VEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+d2ViVlRUTm9kZVR5cGUo
KSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxl
U2V0LT5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4KTsKICNlbmRpZgogICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2Yg
cnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEg
Zm9yIHRoaXM6CkBAIC0xMjQzLDcgKzEyNDcsMTEgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjYW5T
aGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChlbGVt
ZW50LT53ZWJWVFROb2RlVHlwZSgpICE9IG1fZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSkKKyAg
ICAvLyBEZW55IHNoYXJpbmcgc3R5bGVzIGJldHdlZW4gV2ViVlRUIGFuZCBub24tV2ViVlRUIG5v
ZGVzLgorICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAhPSBtX2VsZW1lbnQtPmlz
V2ViVlRURWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZWxlbWVu
dC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0
b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgIT0gdG9XZWJWVFRFbGVt
ZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZmQwNjk2Yi4uNzRlOTJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjM0NSwxOCArMjM0NSw2IEBAIGJvb2wgRWxlbWVudDo6
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hp
bGRDb250ZXh0CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLVdlYlZUVE5v
ZGVUeXBlIEVsZW1lbnQ6OndlYlZUVE5vZGVUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT53ZWJWVFROb2RlVHlwZSgpIDogV2ViVlRU
Tm9kZVR5cGVOb25lOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFdlYlZUVE5vZGVUeXBlKFdlYlZU
VE5vZGVUeXBlIHR5cGUpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFdlYlZU
VE5vZGVUeXBlKHR5cGUpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDM4ZmUyZmIuLjZkMThkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzEsOSAr
MzEsNiBAQAogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCi0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotI2luY2x1ZGUgIlRleHRUcmFjay5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDUyLDExICs0NDksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdDsKLSAgICB2
b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGVudW0gewogICAgICAgICBBTExPV19LRVlCT0FSRF9J
TlBVVCA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA4YWI1
OTQ0Li5iMzQ3YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC02MCwx
MSArNjAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbkNhbnZhc1N1YnRyZWU7IH0KICAgICB2b2lkIHNldElzSW5DYW52YXNTdWJ0
cmVlKGJvb2wgdmFsdWUpIHsgbV9pc0luQ2FudmFzU3VidHJlZSA9IHZhbHVlOyB9CiAKLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2Rl
VHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUgPSB0eXBlOyB9Ci0gICAgV2ViVlRUTm9kZVR5
cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJWVFROb2Rl
VHlwZT4obV93ZWJWVFROb2RlVHlwZSk7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1f
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZh
bHVlOyB9CkBAIC0xNTcsOSArMTUyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7CiAgICAgdW5zaWduZWQg
bV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIHVuc2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiAyOyAvLyBX
ZWJWVFROb2RlVHlwZQotI2VuZGlmCiAKICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JS
ZXNpemluZzsKICAgICBJbnRTaXplIG1fc2F2ZWRMYXllclNjcm9sbE9mZnNldDsKQEAgLTIwNyw5
ICsxOTksNiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNl
bnRSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICwgbV93ZWJWVFRO
b2RlVHlwZShXZWJWVFROb2RlVHlwZU5vbmUpCi0jZW5kaWYKICAgICAsIG1fbWluaW11bVNpemVG
b3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMjYyZTkyMS4uMmQyMGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yMzYsNiArMjM2LDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9scygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZp
cnR1YWwgYm9vbCBpc1dlYlZUVEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCiAgICAgYm9vbCBpc1N0eWxlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElz
U3R5bGVkRWxlbWVudEZsYWcpOyB9CiAgICAgdmlydHVhbCBib29sIGlzQXR0cmlidXRlTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hhcmFjdGVyRGF0
YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmgKaW5kZXggNjYzZDA0OS4uMThlYTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5oCkBAIC01MywxMiArNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
ID0gMDsKIH07CiAKLWVudW0gV2ViVlRUTm9kZVR5cGUgewotICAgIFdlYlZUVE5vZGVUeXBlTm9u
ZSA9IDAsCi0gICAgV2ViVlRUTm9kZVR5cGVGdXR1cmUsCi0gICAgV2ViVlRUTm9kZVR5cGVQYXN0
Ci19OwotCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4
IDUzOWE2NzkuLmExMmZmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIldl
YlZUVEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY5
NSw4ICs2OTYsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhD
b250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaQogICAgICAgICAgICAgICAgIGlz
UGFzdE5vZGUgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxk
LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIHRvRWxlbWVudChjaGlsZCktPnNldFdl
YlZUVE5vZGVUeXBlKGlzUGFzdE5vZGUgPyBXZWJWVFROb2RlVHlwZVBhc3QgOiBXZWJWVFROb2Rl
VHlwZUZ1dHVyZSk7CisgICAgICAgIGlmIChjaGlsZC0+aXNXZWJWVFRFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIHRvV2ViVlRURWxlbWVudChjaGlsZCktPnNldFdlYlZUVE5vZGVUeXBlKGlzUGFz
dE5vZGUgPyBXZWJWVFROb2RlVHlwZVBhc3QgOiBXZWJWVFROb2RlVHlwZUZ1dHVyZSk7CiAgICAg
ICAgICAgICAvLyBNYWtlIGFuIGVsZW1lbmV0IGlkIG1hdGNoIGEgY3VlIGlkIGZvciBzdHlsZSBt
YXRjaGluZyBwdXJwb3Nlcy4KICAgICAgICAgICAgIGlmICghbV9pZC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+c2V0SWRBdHRyaWJ1dGUoQXRvbWljU3RyaW5n
KG1faWQuY2hhcmFjdGVycygpLCBtX2lkLmxlbmd0aCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43YjIxZGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiV2ViVlRU
RWxlbWVudC5oIgorCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQor
CitQYXNzUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQoreworICAgIHJldHVybiBjcmVhdGUodGFnUU5hbWUoKSwg
ZG9jdW1lbnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ1NmEyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBXZWJWVFROb2RlVHlwZSB7CisgICAgV2ViVlRUTm9k
ZVR5cGVOb25lID0gMCwKKyAgICBXZWJWVFROb2RlVHlwZUZ1dHVyZSwKKyAgICBXZWJWVFROb2Rl
VHlwZVBhc3QKK307CisKK2NsYXNzIFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVu
KCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBl
IHR5cGUpIHsgbV93ZWJWVFROb2RlVHlwZSA9IHR5cGU7IH0KKyAgICBXZWJWVFROb2RlVHlwZSB3
ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVlRUTm9kZVR5cGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNXZWJWVFRFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViVlRURWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFdlYlZUVE5vZGVUeXBlIG1f
d2ViVlRUTm9kZVR5cGU7Cit9OworCitpbmxpbmUgV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCis6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorLCBtX3dlYlZUVE5vZGVUeXBlKFdlYlZUVE5v
ZGVUeXBlTm9uZSkKK3sKK30KKworaW5saW5lIFdlYlZUVEVsZW1lbnQqIHRvV2ViVlRURWxlbWVu
dChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1dlYlZUVEVsZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlZUVEVsZW1lbnQqPihub2RlKTsKK30K
KworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDJlYzlkNTUuLjQxZTU0OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJTZWdtZW50ZWRT
dHJpbmcuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiV2ViVlRURWxlbWVudC5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNTUsMTMgKzM1NiwxMyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21U
b2tlbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IFdlYlZUVFRva2VuVHlwZXM6OlN0YXJ0VGFnOiB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBj
aGlsZDsKKyAgICAgICAgUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNoaWxkOwogICAgICAgICBpZiAo
aXNSZWNvZ25pemVkVGFnKHRva2VuVGFnTmFtZSkpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxF
bGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBX
ZWJWVFRFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOwogICAgICAgICBlbHNlIGlm
IChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAnYycp
Ci0gICAgICAgICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmNsYXNz
RWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRF
bGVtZW50OjpjcmVhdGUoVGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKCksIGRvY3Vt
ZW50KTsKICAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90
b2tlbi5uYW1lKClbMF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBFbGVtZW50OjpjcmVh
dGUoVGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKKyAgICAg
ICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKFRleHRUcmFja0N1ZTo6dm9pY2VF
bGVtZW50VGFnTmFtZSgpLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CiAgICAg
ICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkK
</data>
<flag name="review"
          id="202009"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183593</attachid>
            <date>2013-01-18 19:11:09 -0800</date>
            <delta_ts>2013-01-18 20:01:16 -0800</delta_ts>
            <desc>Proposed fix 0.3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21660</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTlmYzcyYS4uOWI0NGNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1ODQsNiArMTU4NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCiAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAg
ICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAorICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICBodG1sL3RyYWNrL1dl
YlZUVFRva2VuaXplci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkNDE0ZGMuLmMwZjg1MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMy0wMS0xOCAgRGltYSBHb3JiaWsgIDxkZ29yYmlr
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYSBUZXh0VHJhY2suaCBpbmNsdWRlIGZyb20g
dGhlIEVsZW1lbnQuaCBhbmQgbW92ZSBXZWJWVFQgcmVsYXRlZCBzdHVmZiBvdXRzaWRlIHRoZSBF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDcwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJWVFQgb2JqZWN0cyBhcmUgbm93IHN1YmNsYXNzZXMgb2YgdGhlIEVsZW1lbnQuIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSBtYWpvciBXZWJWVFQgY2h1bmtzIG9mIGNvZGUgZnJvbQorICAgICAg
ICBFbGVtZW50LmggYW5kIE5vZGVSYXJlRGF0YS4gV2ViVlRURWxlbWVudCBpcyBkZXJpdmluZyBm
cm9tIEhUTUxFbGVtZW50IGFuZCBub3QgRWxlbWVudCB0byBwcmV2ZW50IHBvc3NpYmxlCisgICAg
ICAgIHByb2JsZW1zIHRoYXQgY291bGQgaGFwcGVuIGJlY2F1c2Ugd2UgcmV1c2UgcVRhZ3MgdGhh
dCBhcmUgYmVpbmcgdXNlZCBpbiBIVE1MIGxpa2UgPGI+LCA8aT4gYW5kIDx1Pi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIG9mIHRoZSBleGlzdGlu
ZyBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjppc1dlYlZUVEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMp
OgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgor
ICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlZUVEVsZW1lbnQ6OnNldFdlYlZUVE5vZGVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlZUVEVsZW1lbnQ6OndlYlZUVE5vZGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJWVFRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorCiAyMDEz
LTAxLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IGZpeGVkIGJhY2tncm91bmQgbGF5ZXJzIHRvIGJlIG1vdmVkIGJ5IHRoZSBTY3JvbGxp
bmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE1NWYwMTcuLmUyNjg5Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM0NDcsNiArMzQ0Nyw4IEBACiAgICAgICAgICAgICAnaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwJywKKyAgICAgICAgICAgICdodG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oJywKICAgICAg
ICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFRva2VuLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMzU5YmU4Li5lZGJjNDM4MyAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MjQxLDYg
KzY1MjQxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVEVsZW1lbnQuY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xXZWJWVFRF
bGVtZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVFBhcnNlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjc1ZmRlYi4uNjJmMGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjMwOCw2ICs2MzA4LDggQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYx
MjE3MUY1MTZBOENFRDIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMjE3MUYzMTZBOEJDNjMwMDAwNTND
QSAvKiBXZWJWVFRFbGVtZW50LmNwcCAqLzsgfTsKKwkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NB
IC8qIFdlYlZUVEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYxMjE3MUY0MTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi87
IH07CiAJCUYyOTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3
OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMy
OTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNC
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEw
MEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKQEAgLTEzODk4LDYgKzEzOTAwLDggQEAKIAkJRUQ1
MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFQzk4MDIwQUVEN0UxNzAwNTkx
MzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1
c2VzVGFicyA9IDA7IH07CisJCUYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlZUVEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMTIxNzFGNDE2QThCQzYzMDAw
MDUzQ0EgLyogV2ViVlRURWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWVFRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzMTYzOTY5
MTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMx
NjM5NkQxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzE4LDYgKzE5NzIyLDggQEAK
IAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGMTIxNzFGMzE2QThCQzYzMDAwMDUzQ0EgLyog
V2ViVlRURWxlbWVudC5jcHAgKi8sCisJCQkJRjEyMTcxRjQxNkE4QkM2MzAwMDA1M0NBIC8qIFdl
YlZUVEVsZW1lbnQuaCAqLywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5k
VGV4dFRyYWNrLmNwcCAqLywKIAkJCQkwNzk0MTc5MDE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5k
VGV4dFRyYWNrLmggKi8sCiAJCQkJOTc1OUU5MzQxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxl
VGV4dFRyYWNrLmNwcCAqLywKQEAgLTI2MjU0LDYgKzI2MjYwLDcgQEAKIAkJCQk5NzdFMkUwRjEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Mzcz
NTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjQ5
QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUYxMjE3MUY2MTZBOENGMEIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI5NDAzLDYgKzI5NDEwLDcgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI0OUMzOUExNjc4NDkz
MjAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYxMjE3MUY1
MTZBOENFRDIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAyZTg3NGY0Li5mYzM2M2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNTMsNiArNTMsMTAgQEAK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIldlYlZUVEVsZW1lbnQuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05NDEs
NyArOTQ1LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LT5pc091dE9mUmFuZ2UoKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1dHVyZUN1ZToKLSAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBlRnV0dXJlOworICAgICAg
ICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1l
bnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVGdXR1cmUpOwog
I2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG9yaXpvbnRhbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkY2NhM2U0Li5iZjk2MGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzgsNiArMTc4LDEwIEBACiAjaW5j
bHVkZSAiU3R5bGVDYWNoZWRJbWFnZVNldC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisjaW5jbHVkZSAiV2ViVlRURWxlbWVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNjU2LDcgKzY2MCw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRj
aFJlcXVlc3QsIGludCYKICAgICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KG1fZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSkKKyAgICBpZiAobV9lbGVtZW50LT5pc1dlYlZU
VEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+d2ViVlRUTm9kZVR5cGUo
KSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxl
U2V0LT5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4KTsKICNlbmRpZgogICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2Yg
cnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEg
Zm9yIHRoaXM6CkBAIC0xMjQzLDcgKzEyNDcsMTEgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjYW5T
aGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChlbGVt
ZW50LT53ZWJWVFROb2RlVHlwZSgpICE9IG1fZWxlbWVudC0+d2ViVlRUTm9kZVR5cGUoKSkKKyAg
ICAvLyBEZW55IHNoYXJpbmcgc3R5bGVzIGJldHdlZW4gV2ViVlRUIGFuZCBub24tV2ViVlRUIG5v
ZGVzLgorICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAhPSBtX2VsZW1lbnQtPmlz
V2ViVlRURWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZWxlbWVu
dC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0
b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgIT0gdG9XZWJWVFRFbGVt
ZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZmQwNjk2Yi4uNzRlOTJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjM0NSwxOCArMjM0NSw2IEBAIGJvb2wgRWxlbWVudDo6
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hp
bGRDb250ZXh0CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLVdlYlZUVE5v
ZGVUeXBlIEVsZW1lbnQ6OndlYlZUVE5vZGVUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT53ZWJWVFROb2RlVHlwZSgpIDogV2ViVlRU
Tm9kZVR5cGVOb25lOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFdlYlZUVE5vZGVUeXBlKFdlYlZU
VE5vZGVUeXBlIHR5cGUpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFdlYlZU
VE5vZGVUeXBlKHR5cGUpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDM4ZmUyZmIuLjZkMThkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzEsOSAr
MzEsNiBAQAogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCi0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotI2luY2x1ZGUgIlRleHRUcmFjay5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDUyLDExICs0NDksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdDsKLSAgICB2
b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGVudW0gewogICAgICAgICBBTExPV19LRVlCT0FSRF9J
TlBVVCA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA4YWI1
OTQ0Li5iMzQ3YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC02MCwx
MSArNjAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbkNhbnZhc1N1YnRyZWU7IH0KICAgICB2b2lkIHNldElzSW5DYW52YXNTdWJ0
cmVlKGJvb2wgdmFsdWUpIHsgbV9pc0luQ2FudmFzU3VidHJlZSA9IHZhbHVlOyB9CiAKLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2Rl
VHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUgPSB0eXBlOyB9Ci0gICAgV2ViVlRUTm9kZVR5
cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJWVFROb2Rl
VHlwZT4obV93ZWJWVFROb2RlVHlwZSk7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1f
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZh
bHVlOyB9CkBAIC0xNTcsOSArMTUyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7CiAgICAgdW5zaWduZWQg
bV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIHVuc2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiAyOyAvLyBX
ZWJWVFROb2RlVHlwZQotI2VuZGlmCiAKICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JS
ZXNpemluZzsKICAgICBJbnRTaXplIG1fc2F2ZWRMYXllclNjcm9sbE9mZnNldDsKQEAgLTIwNyw5
ICsxOTksNiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNl
bnRSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICwgbV93ZWJWVFRO
b2RlVHlwZShXZWJWVFROb2RlVHlwZU5vbmUpCi0jZW5kaWYKICAgICAsIG1fbWluaW11bVNpemVG
b3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMjYyZTkyMS4uMmQyMGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yMzYsNiArMjM2LDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9scygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZp
cnR1YWwgYm9vbCBpc1dlYlZUVEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCiAgICAgYm9vbCBpc1N0eWxlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElz
U3R5bGVkRWxlbWVudEZsYWcpOyB9CiAgICAgdmlydHVhbCBib29sIGlzQXR0cmlidXRlTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hhcmFjdGVyRGF0
YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmgKaW5kZXggNjYzZDA0OS4uMThlYTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5oCkBAIC01MywxMiArNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
ID0gMDsKIH07CiAKLWVudW0gV2ViVlRUTm9kZVR5cGUgewotICAgIFdlYlZUVE5vZGVUeXBlTm9u
ZSA9IDAsCi0gICAgV2ViVlRUTm9kZVR5cGVGdXR1cmUsCi0gICAgV2ViVlRUTm9kZVR5cGVQYXN0
Ci19OwotCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4
IDUzOWE2NzkuLmExMmZmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIldl
YlZUVEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY5
NSw4ICs2OTYsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhD
b250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaQogICAgICAgICAgICAgICAgIGlz
UGFzdE5vZGUgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxk
LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIHRvRWxlbWVudChjaGlsZCktPnNldFdl
YlZUVE5vZGVUeXBlKGlzUGFzdE5vZGUgPyBXZWJWVFROb2RlVHlwZVBhc3QgOiBXZWJWVFROb2Rl
VHlwZUZ1dHVyZSk7CisgICAgICAgIGlmIChjaGlsZC0+aXNXZWJWVFRFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIHRvV2ViVlRURWxlbWVudChjaGlsZCktPnNldFdlYlZUVE5vZGVUeXBlKGlzUGFz
dE5vZGUgPyBXZWJWVFROb2RlVHlwZVBhc3QgOiBXZWJWVFROb2RlVHlwZUZ1dHVyZSk7CiAgICAg
ICAgICAgICAvLyBNYWtlIGFuIGVsZW1lbmV0IGlkIG1hdGNoIGEgY3VlIGlkIGZvciBzdHlsZSBt
YXRjaGluZyBwdXJwb3Nlcy4KICAgICAgICAgICAgIGlmICghbV9pZC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+c2V0SWRBdHRyaWJ1dGUoQXRvbWljU3RyaW5n
KG1faWQuY2hhcmFjdGVycygpLCBtX2lkLmxlbmd0aCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZTg5N2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiV2ViVlRU
RWxlbWVudC5oIgorCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKKyAgICAsIG1fd2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGVOb25lKQorewor
fQorCitQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJWVFRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisK
K1Bhc3NSZWZQdHI8RWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpCit7CisgICAgcmV0dXJuIGNyZWF0ZSh0YWdRTmFtZSgpLCBk
b2N1bWVudCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDNmZTFiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFdlYlZUVE5vZGVUeXBlIHsKKyAgICBXZWJWVFROb2Rl
VHlwZU5vbmUgPSAwLAorICAgIFdlYlZUVE5vZGVUeXBlRnV0dXJlLAorICAgIFdlYlZUVE5vZGVU
eXBlUGFzdAorfTsKKworY2xhc3MgV2ViVlRURWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxF
bGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgT1ZFUlJJ
REU7CisKKyAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlIHR5cGUpIHsg
bV93ZWJWVFROb2RlVHlwZSA9IHR5cGU7IH0KKyAgICBXZWJWVFROb2RlVHlwZSB3ZWJWVFROb2Rl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVlRUTm9kZVR5cGU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJWVFRFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCitw
cml2YXRlOgorICAgIFdlYlZUVEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CisgICAgV2ViVlRUTm9kZVR5cGUgbV93ZWJWVFROb2RlVHlwZTsKK307CisKK2lubGluZSBX
ZWJWVFRFbGVtZW50KiB0b1dlYlZUVEVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNXZWJWVFRFbGVtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJWVFRFbGVtZW50Kj4obm9kZSk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUg
ZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9XZWJWVFRFbGVtZW50KGNvbnN0IFdl
YlZUVEVsZW1lbnQqKTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDJlYzlkNTUuLjQx
ZTU0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNs
dWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiV2Vi
VlRURWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNTUsMTMgKzM1NiwxMyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29u
c3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OlN0YXJ0VGFnOiB7Ci0gICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBjaGlsZDsKKyAgICAgICAgUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNoaWxk
OwogICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnKHRva2VuVGFnTmFtZSkpCi0gICAgICAgICAg
ICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOworICAgICAg
ICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOwog
ICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5h
bWUoKVswXSA9PSAnYycpCi0gICAgICAgICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0ZShUZXh0
VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAg
Y2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUoVGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRU
YWdOYW1lKCksIGRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6
ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQg
PSBFbGVtZW50OjpjcmVhdGUoVGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRv
Y3VtZW50KTsKKyAgICAgICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKFRleHRU
cmFja0N1ZTo6dm9pY2VFbGVtZW50VGFnTmFtZSgpLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYg
KGNoaWxkKSB7CiAgICAgICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>