<?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>168565</bug_id>
          
          <creation_ts>2017-02-18 16:22:28 -0800</creation_ts>
          <short_desc>Simple line layout: Implement positionForPoint.</short_desc>
          <delta_ts>2017-02-19 08:26:11 -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>Layout and Rendering</component>
          <version>WebKit 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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278678</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-02-18 16:22:28 -0800</bug_when>
    <thetext>for single RenderText only at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278679</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-18 16:23:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/30593370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278681</commentid>
    <comment_count>2</comment_count>
      <attachid>302061</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-18 16:43:29 -0800</bug_when>
    <thetext>Created attachment 302061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278682</commentid>
    <comment_count>3</comment_count>
      <attachid>302061</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-18 16:46:01 -0800</bug_when>
    <thetext>Comment on attachment 302061
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.cpp:217
&gt; +    if (it.lineIndex() &gt; lineIndex)
&gt; +        return --it;
&gt; +    // Now we have a candidate run.
&gt; +    // Find the last run that still contains this point (taking overlapping runs with odd word spacing values into account).
&gt; +    while (it != end() &amp;&amp; (*it).logicalLeft() &lt;= x &amp;&amp; lineIndex == it.lineIndex())

The if condition could be eliminated by changing the while to this
while (it != end() &amp;&amp; lineIndex == it.lineIndex() &amp;&amp; (*it).logicalLeft() &lt;= x)
but this way it&apos;s a bit more implicit. I don&apos;t really have a preference on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278684</commentid>
    <comment_count>4</comment_count>
      <attachid>302062</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-18 17:09:12 -0800</bug_when>
    <thetext>Created attachment 302062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278708</commentid>
    <comment_count>5</comment_count>
      <attachid>302062</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-02-19 00:47:36 -0800</bug_when>
    <thetext>Comment on attachment 302062
Patch

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

&gt; Source/WebCore/rendering/RenderBlockFlow.cpp:3553
&gt; +    if (!simpleLineLayout() || firstChild() != lastChild() || !is&lt;RenderText&gt;(firstChild()))

It might be good to have a comment explaining the tests (beyond just having !simpleLineLayout()).

&gt; Source/WebCore/rendering/SimpleLineLayoutFunctions.cpp:220
&gt; +unsigned positionForPoint(const LayoutPoint&amp; point, const RenderText&amp; renderer, const Layout&amp; layout)

Might be better to call this something else since it doesn&apos;t return a Position object (unlike the RenderText version). Maybe textOffsetForPoint or similar?

&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.cpp:204
&gt; +    auto it = Iterator(begin());

Can&apos;t this just be 

auto it = begin();

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278723</commentid>
    <comment_count>6</comment_count>
      <attachid>302076</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-19 07:31:37 -0800</bug_when>
    <thetext>Created attachment 302076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278727</commentid>
    <comment_count>7</comment_count>
      <attachid>302076</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-02-19 08:04:00 -0800</bug_when>
    <thetext>Comment on attachment 302076
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.cpp:201
&gt; +        return Iterator(end());

return end()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278728</commentid>
    <comment_count>8</comment_count>
      <attachid>302078</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-19 08:07:06 -0800</bug_when>
    <thetext>Created attachment 302078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278732</commentid>
    <comment_count>9</comment_count>
      <attachid>302078</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 08:26:04 -0800</bug_when>
    <thetext>Comment on attachment 302078
Patch

Clearing flags on attachment: 302078

Committed r212615: &lt;http://trac.webkit.org/changeset/212615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278733</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 08:26:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302061</attachid>
            <date>2017-02-18 16:43:29 -0800</date>
            <delta_ts>2017-02-18 17:09:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168565-20170218164047.patch</filename>
            <type>text/plain</type>
            <size>13116</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiZTkxNmNmZGNjZTUy
ODlhYTY3ZTg5YTAwZmE3NWJiZmI1M2JjYS4uMzY0YjEwZmVkZDA2NjhjYjM0MWIzNjEyOTAwYmU4
Yzc3ZGRlZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTAyLTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXBsZW1lbnQgcG9zaXRpb25Gb3JQb2ludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODU2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1
OTMzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBub3cgd2UgZG9uJ3QgbmVlZCB0byBzd2l0Y2ggb3ZlciB0byBsaW5l
IGJveCB0cmVlIGFueW1vcmUgd2hlbiBwb3NpdGlvbkZvclBvaW50KCkKKyAgICAgICAgaXMgY2Fs
bGVkIG9uIGEgc2luZ2xlIFJlbmRlclRleHQgY29udGVudCAod2hpY2ggaXMgdGhlIG1ham9yaXR5
IG9mIHRoZSBzaW1wbGUgbGluZSBjb250ZW50KS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFk
ZHMgYSBuZXcgcG9zaXRpb25Gb3JQb2ludCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFBvc2l0aW9u
IG9iamVjdCBpbnN0ZWFkIG9mIFZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgU29tZSBvZiB0aGUg
cG9zaXRpb25Gb3JQb2ludCgpIGNhbGxzaXRlcyBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBQ
b3NpdGlvbiBvYmplY3Qgc28gY29uc3RydWN0aW5nIGEgVmlzaWJsZVBvc2l0aW9uCisgICAgICAg
ICh3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBraWNrIG9mZiBhIGxheW91dCkgaXMgYSB3YXN0ZS4g
QXQgdGhpcyBwb2ludCB0aGUgbm9uLXNpbXBsZSBsaW5lIGxheW91dCBjb2RlcGF0aCBzdGlsbCBj
b25zdHJ1Y3RzCisgICAgICAgIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCB0aGF0IHNob3VsZCBiZSBh
ZGRyZXNzZXMgYXMgcGFydCBvZiB3ZWJraXQub3JnL2IvMTY4NTY2LgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6cnVuRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpSdW46OmxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxSaWdodCk6CisKIDIwMTctMDItMTYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlv
dXQ6IEFkZCBmb3JjZWQgbGluZSBsYXlvdXQgaW5mbyB0byBjb3ZlcmFnZSBwcmludC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDU1MGRlYTE4YTdhNGZiMDliZDVhOTllZDgzNDIwMWFhYTI2
MDExMmYuLmFkNTRkYjc2Y2JjMDE0MDFlODdjZTBmZjdkZTg2NDgxODYzOGIyZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTQyNyw3ICsxNDI3LDcgQEAgUmVmUHRyPFJhbmdlPiBEb2N1
bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQs
IG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Cisg
ICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZv
clBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChy
YW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBi
NzkwOTZmNDZmMTA0ZTk1YThkMTZmOWI5ODc0MGEwMDQ0ZTYzY2JhLi4yZjJiNmM5MjE0YTVlZTY1
MDVhZWQyMGI0N2Y3Yzk5OGJmZTNiZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzU0OCw2ICszNTQ4LDEzIEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29u
c3QgTGF5b3V0CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFN
KTsKIH0KIAorUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICBpZiAoIXNpbXBsZUxpbmVMYXlvdXQoKSB8fCBm
aXJzdENoaWxkKCkgIT0gbGFzdENoaWxkKCkgfHwgIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQo
KSkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKS5kZWVw
RXF1aXZhbGVudCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PigqZmlyc3RDaGls
ZCgpKS5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNv
bnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChhdXRvIGZyYWdtZW50ID0gcmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKQEAgLTM1NTUsNyArMzU2Miw2IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zCiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBv
aW50LCByZWdpb24pOwogfQogCi0KIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdS
ZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KikKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNGJlZGI1NWEzZjg4ZGI1OGMxNmJkMDhjZWIx
OTA1MzVkYTgwN2E2OS4uZjE2MTExNzViMDZiMjg2ZWMxMTljNmIzYjIxZTExYWNlYjBlYjlkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjg5LDYg
KzI4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlTGluZXMoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSwgYm9v
bCByZWNvbXB1dGVGbG9hdHMgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVn
aW9uKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5nT2JqZWN0cygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3MmI4NzZjYzcxZDE2
NWM2NWVhNTIxYTkyOTY5Njc5ZGQ5NGUwZDlkLi44MWU3NWU5ZTAzOTc2YTNhNGZiOGVlZmJlNThl
YWExZWU0ZjhkOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMTU0OSw2ICsxNTQ5LDExIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKICAg
ICBkZWxldGUgdGhpczsKIH0KIAorUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcG9zaXRpb25Gb3JQ
b2ludChwb2ludCwgbnVsbHB0cikuZGVlcEVxdWl2YWxlbnQoKTsKK30KKwogVmlzaWJsZVBvc2l0
aW9uIFJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihj
YXJldE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCAxOGU5ZjkwMTM0ZWViZjMzNTNlODQ1YTlkOTYyMmM2MzNjNDZmYzU2
Li5iNDFmMTYzNGIwYmRjMzRkODA0MzA5NTFmMDFlNGFjMTU0ZTc0YzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01ODcsNiArNTg3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0
VGVzdEFjdGlvbik7CiAKKyAgICB2aXJ0dWFsIFBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZmaW5pdHkp
IGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY29uc3Qg
UG9zaXRpb24mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApp
bmRleCAzNmM3OTIwNWNkMTFmMWMwNDk0M2VkOTA1ZGQ5NzYzMzg1YWU2OWJiLi5kN2EzNjY4ZjAw
OTA2OTMzYjBlYWRkN2YyZThjNWI1N2NjNGIxMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCkBAIC00MzcsMTAgKzQzNywxOSBAQCBWZWN0b3I8RmxvYXRRdWFkPiBS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGVuZAogICAgIHJldHVybiBtX2xpbmVCb3hlcy5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoKnRoaXMs
IHN0YXJ0LCBlbmQsIHVzZVNlbGVjdGlvbkhlaWdodCwgd2FzRml4ZWQpOwogfQogCitQb3NpdGlv
biBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkK
K3sKKyAgICBpZiAoYXV0byogbGF5b3V0ID0gc2ltcGxlTGluZUxheW91dCgpKSB7CisgICAgICAg
IGF1dG8gcG9zaXRpb24gPSBQb3NpdGlvbih0ZXh0Tm9kZSgpLCBTaW1wbGVMaW5lTGF5b3V0Ojpw
b3NpdGlvbkZvclBvaW50KHBvaW50LCAqdGhpcywgKmxheW91dCkpOworICAgICAgICBBU1NFUlQo
cG9zaXRpb24gPT0gcG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0cikuZGVlcEVxdWl2YWxl
bnQoKSk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICB9CisgICAgcmV0dXJuIHBvc2l0
aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCk7Cit9CisKIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAgICBlbnN1cmVMaW5lQm94ZXMoKTsK
LQogICAgIHJldHVybiBtX2xpbmVCb3hlcy5wb3NpdGlvbkZvclBvaW50KCp0aGlzLCBwb2ludCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGU3NTcxMmY3ZjU2
MmZiNjhmNjhhYzQxNTI5YjIzMDhiM2MyM2IzZGYuLjMxY2I0NzY4MDMwZjkyNTM2ZDQ0ZGM0ZmM3
NWMzZDFjMjVmY2EzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAt
NzgsNiArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1
YWRzQ2xpcHBlZFRvRWxsaXBzaXMoKSBjb25zdDsKIAorICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiop
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1w
bCgpLT5pczhCaXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IGY5NGM4ODJhZWYzZjRhZGQzNjAxM2Mx
YTA3NWVmZGE0NDZhN2U2N2QuLmU3ZWRiOTQ1N2E2Y2FmZjc4ZDM1MGQ3ODZhMTg5ZGNkNWE5ZDFm
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKQEAgLTIxNyw2ICsyMTcsMjEgQEAgVmVjdG9yPEZsb2F0UXVhZD4g
Y29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3Qg
TGF5b3UKICAgICByZXR1cm4gcXVhZHM7CiB9CiAKK3Vuc2lnbmVkIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29u
c3QgTGF5b3V0JiBsYXlvdXQpCit7CisgICAgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlckJs
b2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKTsKKyAgICBBU1NFUlQoZmxvdy5maXJzdENoaWxk
KCkgPT0gZmxvdy5sYXN0Q2hpbGQoKSk7CisgICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVy
KGZsb3csIGxheW91dCk7CisgICAgYXV0byBpdCA9IHJlc29sdmVyLnJ1bkZvclBvaW50KHBvaW50
KTsKKyAgICBpZiAoaXQgPT0gcmVzb2x2ZXIuZW5kKCkpCisgICAgICAgIHJldHVybiByZW5kZXJl
ci50ZXh0TGVuZ3RoKCk7CisgICAgYXV0byBydW4gPSAqaXQ7CisgICAgYXV0byYgc3R5bGUgPSBm
bG93LnN0eWxlKCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHJ1bi50ZXh0KCksIHJ1bi5sb2dpY2Fs
TGVmdCgpLCBydW4uZXhwYW5zaW9uKCksIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKTsKKyAgICB0
ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJT
aXplKCkpOworICAgIHJldHVybiBydW4uc3RhcnQoKSArIHN0eWxlLmZvbnRDYXNjYWRlKCkub2Zm
c2V0Rm9yUG9zaXRpb24odGV4dFJ1biwgcG9pbnQueCgpIC0gcnVuLmxvZ2ljYWxMZWZ0KCksIHRy
dWUpOworfQorCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogc3RhdGljIHZvaWQgcHJpbnRQ
cmVmaXgoaW50JiBwcmludGVkQ2hhcmFjdGVycywgaW50IGRlcHRoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXgg
YjVmZGY2ODgyZGYzMzEwOWMyNzRkOWMyZjc4ZTdkYjhlMDljNTg0Yi4uZDI1MmJmN2ZjYWM3N2Iy
NTc4NGNlMTA2ZDI0YTQ4MjJiMTE3YTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC01Nyw2ICs1Nyw3IEBAIElu
dFBvaW50IGNvbXB1dGVGaXJzdFJ1bkxvY2F0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IExheW91dCYpOwogCiBWZWN0b3I8SW50UmVjdD4gY29sbGVjdEFic29sdXRlUmVjdHMoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KTsKIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dCYsIGJvb2wqIHdhc0ZpeGVkKTsKK3Vuc2lnbmVk
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJUZXh0Jiwg
Y29uc3QgTGF5b3V0Jik7CiAKIExheW91dFVuaXQgbGluZUhlaWdodEZyb21GbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYpOwogTGF5b3V0VW5pdCBiYXNlbGluZUZyb21GbG93KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dFJlc29sdmVyLmNwcAppbmRleCBhZTE1MDA2NjE5OWZhOWU4ZmIwMzA4ZDQ4NmEy
YTdjYjQ4MWI3ZjY5Li5mNmQ2NTQ5NTg4ZTUyNGM1NjdiMzY0Y2Q5NGZhNTVlODZlNjI0ZmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJl
c29sdmVyLmNwcApAQCAtMTk1LDYgKzE5NSwzMCBAQCBSYW5nZTxSdW5SZXNvbHZlcjo6SXRlcmF0
b3I+IFJ1blJlc29sdmVyOjpyYW5nZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcgog
ICAgIHJldHVybiBSYW5nZTxJdGVyYXRvcj4ocmFuZ2VCZWdpbiwgcnVuKTsKIH0KIAorUnVuUmVz
b2x2ZXI6Okl0ZXJhdG9yIFJ1blJlc29sdmVyOjpydW5Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xpbmVIZWlnaHQpCisgICAgICAgIHJldHVy
biBJdGVyYXRvcihlbmQoKSk7CisgICAgdW5zaWduZWQgbGluZUluZGV4ID0gbGluZUluZGV4Rm9y
SGVpZ2h0KHBvaW50LnkoKSwgSW5kZXhUeXBlOjpMYXN0KTsKKyAgICBhdXRvIHggPSBwb2ludC54
KCkgLSBtX2JvcmRlckFuZFBhZGRpbmdCZWZvcmU7CisgICAgYXV0byBpdCA9IEl0ZXJhdG9yKGJl
Z2luKCkpOworICAgIGl0LmFkdmFuY2VMaW5lcyhsaW5lSW5kZXgpOworICAgIC8vIFBvaW50IGlz
IGF0IHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGZpcnN0IHJ1biBvbiB0aGlzIGxpbmUuCisgICAgaWYg
KCgqaXQpLmxvZ2ljYWxMZWZ0KCkgPiB4KQorICAgICAgICByZXR1cm4gaXQ7CisgICAgLy8gQWR2
YW5jZSB0byB0aGUgZmlyc3QgY2FuZGlkYXRlIHJ1biBvbiB0aGlzIGxpbmUuCisgICAgd2hpbGUg
KGl0ICE9IGVuZCgpICYmICgqaXQpLmxvZ2ljYWxSaWdodCgpIDwgeCAmJiBsaW5lSW5kZXggPT0g
aXQubGluZUluZGV4KCkpCisgICAgICAgICsraXQ7CisgICAgLy8gV2UganVtcGVkIHRvIHRoZSBu
ZXh0IGxpbmUgc28gdGhlIHBvaW50IGlzIGF0IHRoZSByaWdodCBzaWRlIG9mIHRoZSBwcmV2aW91
cyBsaW5lLgorICAgIGlmIChpdC5saW5lSW5kZXgoKSA+IGxpbmVJbmRleCkKKyAgICAgICAgcmV0
dXJuIC0taXQ7CisgICAgLy8gTm93IHdlIGhhdmUgYSBjYW5kaWRhdGUgcnVuLgorICAgIC8vIEZp
bmQgdGhlIGxhc3QgcnVuIHRoYXQgc3RpbGwgY29udGFpbnMgdGhpcyBwb2ludCAodGFraW5nIG92
ZXJsYXBwaW5nIHJ1bnMgd2l0aCBvZGQgd29yZCBzcGFjaW5nIHZhbHVlcyBpbnRvIGFjY291bnQp
LgorICAgIHdoaWxlIChpdCAhPSBlbmQoKSAmJiAoKml0KS5sb2dpY2FsTGVmdCgpIDw9IHggJiYg
bGluZUluZGV4ID09IGl0LmxpbmVJbmRleCgpKQorICAgICAgICArK2l0OworICAgIHJldHVybiAt
LWl0OworfQorCiBMaW5lUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVyYXRvcihSdW5SZXNvbHZlcjo6
SXRlcmF0b3IgcnVuSXRlcmF0b3IpCiAgICAgOiBtX3J1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oCmluZGV4IDczMzQ1YjY1MDM0YjE4N2I1MGVkNGU1YjJlNGI0Yzc2ODg5YjljNmYuLmIz
NjliYzcxNWQyZmUwNzg1MzYyYzNjY2ZlZjFhNTVhOGQzNzNmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKQEAgLTU4LDYg
KzU4LDggQEAgcHVibGljOgogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3Q7CiAgICAg
ICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0OworICAgICAgICBmbG9hdCBsb2dpY2FsTGVmdCgpIGNv
bnN0OworICAgICAgICBmbG9hdCBsb2dpY2FsUmlnaHQoKSBjb25zdDsKIAogICAgICAgICBGbG9h
dFJlY3QgcmVjdCgpIGNvbnN0OwogICAgICAgICBmbG9hdCBleHBhbnNpb24oKSBjb25zdDsKQEAg
LTExMyw2ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICBSYW5nZTxJdGVyYXRvcj4gcmFuZ2VGb3JS
ZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICBSYW5nZTxJdGVyYXRvcj4gcmFuZ2VG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICBJdGVyYXRvciBydW5G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGVudW0g
Y2xhc3MgSW5kZXhUeXBlIHsgRmlyc3QsIExhc3QgfTsKQEAgLTE3Myw2ICsxNzYsMTYgQEAgaW5s
aW5lIHVuc2lnbmVkIFJ1blJlc29sdmVyOjpSdW46OmVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aXRlcmF0b3Iuc2ltcGxlUnVuKCkuZW5kOwogfQogCitpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6
OlJ1bjo6bG9naWNhbExlZnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2l0ZXJhdG9yLnNpbXBs
ZVJ1bigpLmxvZ2ljYWxMZWZ0OworfQorCitpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6
bG9naWNhbFJpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pdGVyYXRvci5zaW1wbGVSdW4o
KS5sb2dpY2FsUmlnaHQ7Cit9CisKIGlubGluZSBmbG9hdCBSdW5SZXNvbHZlcjo6UnVuOjpleHBh
bnNpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2l0ZXJhdG9yLnNpbXBsZVJ1bigpLmV4cGFu
c2lvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302062</attachid>
            <date>2017-02-18 17:09:12 -0800</date>
            <delta_ts>2017-02-19 07:31:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168565-20170218170631.patch</filename>
            <type>text/plain</type>
            <size>13205</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiZTkxNmNmZGNjZTUy
ODlhYTY3ZTg5YTAwZmE3NWJiZmI1M2JjYS4uMzY0YjEwZmVkZDA2NjhjYjM0MWIzNjEyOTAwYmU4
Yzc3ZGRlZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTAyLTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXBsZW1lbnQgcG9zaXRpb25Gb3JQb2ludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODU2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1
OTMzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBub3cgd2UgZG9uJ3QgbmVlZCB0byBzd2l0Y2ggb3ZlciB0byBsaW5l
IGJveCB0cmVlIGFueW1vcmUgd2hlbiBwb3NpdGlvbkZvclBvaW50KCkKKyAgICAgICAgaXMgY2Fs
bGVkIG9uIGEgc2luZ2xlIFJlbmRlclRleHQgY29udGVudCAod2hpY2ggaXMgdGhlIG1ham9yaXR5
IG9mIHRoZSBzaW1wbGUgbGluZSBjb250ZW50KS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFk
ZHMgYSBuZXcgcG9zaXRpb25Gb3JQb2ludCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFBvc2l0aW9u
IG9iamVjdCBpbnN0ZWFkIG9mIFZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgU29tZSBvZiB0aGUg
cG9zaXRpb25Gb3JQb2ludCgpIGNhbGxzaXRlcyBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBQ
b3NpdGlvbiBvYmplY3Qgc28gY29uc3RydWN0aW5nIGEgVmlzaWJsZVBvc2l0aW9uCisgICAgICAg
ICh3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBraWNrIG9mZiBhIGxheW91dCkgaXMgYSB3YXN0ZS4g
QXQgdGhpcyBwb2ludCB0aGUgbm9uLXNpbXBsZSBsaW5lIGxheW91dCBjb2RlcGF0aCBzdGlsbCBj
b25zdHJ1Y3RzCisgICAgICAgIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCB0aGF0IHNob3VsZCBiZSBh
ZGRyZXNzZXMgYXMgcGFydCBvZiB3ZWJraXQub3JnL2IvMTY4NTY2LgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6cnVuRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpSdW46OmxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxSaWdodCk6CisKIDIwMTctMDItMTYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlv
dXQ6IEFkZCBmb3JjZWQgbGluZSBsYXlvdXQgaW5mbyB0byBjb3ZlcmFnZSBwcmludC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDU1MGRlYTE4YTdhNGZiMDliZDVhOTllZDgzNDIwMWFhYTI2
MDExMmYuLmFkNTRkYjc2Y2JjMDE0MDFlODdjZTBmZjdkZTg2NDgxODYzOGIyZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTQyNyw3ICsxNDI3LDcgQEAgUmVmUHRyPFJhbmdlPiBEb2N1
bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQs
IG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Cisg
ICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZv
clBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChy
YW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBi
NzkwOTZmNDZmMTA0ZTk1YThkMTZmOWI5ODc0MGEwMDQ0ZTYzY2JhLi4yZjJiNmM5MjE0YTVlZTY1
MDVhZWQyMGI0N2Y3Yzk5OGJmZTNiZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzU0OCw2ICszNTQ4LDEzIEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29u
c3QgTGF5b3V0CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFN
KTsKIH0KIAorUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICBpZiAoIXNpbXBsZUxpbmVMYXlvdXQoKSB8fCBm
aXJzdENoaWxkKCkgIT0gbGFzdENoaWxkKCkgfHwgIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQo
KSkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKS5kZWVw
RXF1aXZhbGVudCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PigqZmlyc3RDaGls
ZCgpKS5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNv
bnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChhdXRvIGZyYWdtZW50ID0gcmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKQEAgLTM1NTUsNyArMzU2Miw2IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zCiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBv
aW50LCByZWdpb24pOwogfQogCi0KIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdS
ZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KikKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNGJlZGI1NWEzZjg4ZGI1OGMxNmJkMDhjZWIx
OTA1MzVkYTgwN2E2OS4uZjE2MTExNzViMDZiMjg2ZWMxMTljNmIzYjIxZTExYWNlYjBlYjlkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjg5LDYg
KzI4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlTGluZXMoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSwgYm9v
bCByZWNvbXB1dGVGbG9hdHMgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVn
aW9uKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5nT2JqZWN0cygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3MmI4NzZjYzcxZDE2
NWM2NWVhNTIxYTkyOTY5Njc5ZGQ5NGUwZDlkLi42NWI4OWVjODUzYmZlNGMxZWRiYzdlYjQ0MmYz
MmIxMjA0ZmVkNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMTU0OSw2ICsxNTQ5LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKICAg
ICBkZWxldGUgdGhpczsKIH0KIAorUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQganVzdCBjcmVhdGUgYSBQb3NpdGlvbiBvYmplY3QgaW5zdGVhZCAod2Via2l0Lm9yZy9iLzE2
ODU2NikuIAorICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKS5kZWVw
RXF1aXZhbGVudCgpOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAg
ICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJF
QU0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDE4ZTlmOTAx
MzRlZWJmMzM1M2U4NDVhOWQ5NjIyYzYzM2M0NmZjNTYuLmI0MWYxNjM0YjBiZGMzNGQ4MDQzMDk1
MWYwMWU0YWMxNTRlNzRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKQEAgLTU4Nyw2ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhp
dFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmly
dHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKIAorICAgIHZpcnR1
YWwgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBSZW5kZXJSZWdpb24qKTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSkgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDM2Yzc5MjA1Y2QxMWYxYzA0OTQz
ZWQ5MDVkZDk3NjMzODVhZTY5YmIuLmQ3YTM2NjhmMDA5MDY5MzNiMGVhZGQ3ZjJlOGM1YjU3Y2M0
YjEyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTQzNywx
MCArNDM3LDE5IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNG
b3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAgcmV0dXJuIG1fbGluZUJv
eGVzLmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9u
SGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKK1Bvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQoreworICAgIGlmIChhdXRvKiBsYXlvdXQg
PSBzaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IFBvc2l0aW9u
KHRleHROb2RlKCksIFNpbXBsZUxpbmVMYXlvdXQ6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsICp0
aGlzLCAqbGF5b3V0KSk7CisgICAgICAgIEFTU0VSVChwb3NpdGlvbiA9PSBwb3NpdGlvbkZvclBv
aW50KHBvaW50LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgIH0KKyAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0
cikuZGVlcEVxdWl2YWxlbnQoKTsKK30KKwogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJSZWdp
b24qKQogewogICAgIGVuc3VyZUxpbmVCb3hlcygpOwotCiAgICAgcmV0dXJuIG1fbGluZUJveGVz
LnBvc2l0aW9uRm9yUG9pbnQoKnRoaXMsIHBvaW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKaW5kZXggZTc1NzEyZjdmNTYyZmI2OGY2OGFjNDE1MjliMjMwOGIzYzIz
YjNkZi4uMzFjYjQ3NjgwMzBmOTI1MzZkNDRkYzRmYzc1YzNkMWMyNWZjYTMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKIAog
ICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNv
bnN0OwogCisgICAgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAKaW5kZXggZjk0Yzg4MmFlZjNmNGFkZDM2MDEzYzFhMDc1ZWZkYTQ0NmE3ZTY3ZC4uZTdlZGI5
NDU3YTZjYWZmNzhkMzUwZDc4NmExODlkY2Q1YTlkMWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMjE3
LDYgKzIxNywyMSBAQCBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdQogICAgIHJldHVybiBxdWFkczsK
IH0KIAordW5zaWduZWQgcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkKK3sKKyAg
ICBhdXRvJiBmbG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50
KCkpOworICAgIEFTU0VSVChmbG93LmZpcnN0Q2hpbGQoKSA9PSBmbG93Lmxhc3RDaGlsZCgpKTsK
KyAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKKyAgICBhdXRv
IGl0ID0gcmVzb2x2ZXIucnVuRm9yUG9pbnQocG9pbnQpOworICAgIGlmIChpdCA9PSByZXNvbHZl
ci5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAgICBhdXRv
IHJ1biA9ICppdDsKKyAgICBhdXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUoKTsKKyAgICBUZXh0UnVu
IHRleHRSdW4ocnVuLnRleHQoKSwgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5leHBhbnNpb24oKSwg
cnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpOworICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUu
Y29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CisgICAgcmV0dXJuIHJ1bi5z
dGFydCgpICsgc3R5bGUuZm9udENhc2NhZGUoKS5vZmZzZXRGb3JQb3NpdGlvbih0ZXh0UnVuLCBw
b2ludC54KCkgLSBydW4ubG9naWNhbExlZnQoKSwgdHJ1ZSk7Cit9CisKICNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCiBzdGF0aWMgdm9pZCBwcmludFByZWZpeChpbnQmIHByaW50ZWRDaGFyYWN0
ZXJzLCBpbnQgZGVwdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAppbmRleCBiNWZkZjY4ODJkZjMzMTA5YzI3NGQ5YzJm
NzhlN2RiOGUwOWM1ODRiLi5kMjUyYmY3ZmNhYzc3YjI1Nzg0Y2UxMDZkMjRhNDgyMmIxMTdhMDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmgKQEAgLTU3LDYgKzU3LDcgQEAgSW50UG9pbnQgY29tcHV0ZUZpcnN0UnVuTG9j
YXRpb24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0Jik7CiAKIFZlY3RvcjxJbnRS
ZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlv
dXQmLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogVmVjdG9yPEZsb2F0
UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5
b3V0JiwgYm9vbCogd2FzRml4ZWQpOwordW5zaWduZWQgcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMYXlvdXQmKTsKIAogTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0RnJvbUZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiBMYXlvdXRV
bml0IGJhc2VsaW5lRnJvbUZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCmlu
ZGV4IGFlMTUwMDY2MTk5ZmE5ZThmYjAzMDhkNDg2YTJhN2NiNDgxYjdmNjkuLmY2ZDY1NDk1ODhl
NTI0YzU2N2IzNjRjZDk0ZmE1NWU4NmU2MjRmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCkBAIC0xOTUsNiArMTk1
LDMwIEBAIFJhbmdlPFJ1blJlc29sdmVyOjpJdGVyYXRvcj4gUnVuUmVzb2x2ZXI6OnJhbmdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByCiAgICAgcmV0dXJuIFJhbmdlPEl0ZXJhdG9y
PihyYW5nZUJlZ2luLCBydW4pOwogfQogCitSdW5SZXNvbHZlcjo6SXRlcmF0b3IgUnVuUmVzb2x2
ZXI6OnJ1bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fbGluZUhlaWdodCkKKyAgICAgICAgcmV0dXJuIEl0ZXJhdG9yKGVuZCgpKTsKKyAgICB1
bnNpZ25lZCBsaW5lSW5kZXggPSBsaW5lSW5kZXhGb3JIZWlnaHQocG9pbnQueSgpLCBJbmRleFR5
cGU6Okxhc3QpOworICAgIGF1dG8geCA9IHBvaW50LngoKSAtIG1fYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZTsKKyAgICBhdXRvIGl0ID0gSXRlcmF0b3IoYmVnaW4oKSk7CisgICAgaXQuYWR2YW5jZUxp
bmVzKGxpbmVJbmRleCk7CisgICAgLy8gUG9pbnQgaXMgYXQgdGhlIGxlZnQgc2lkZSBvZiB0aGUg
Zmlyc3QgcnVuIG9uIHRoaXMgbGluZS4KKyAgICBpZiAoKCppdCkubG9naWNhbExlZnQoKSA+IHgp
CisgICAgICAgIHJldHVybiBpdDsKKyAgICAvLyBBZHZhbmNlIHRvIHRoZSBmaXJzdCBjYW5kaWRh
dGUgcnVuIG9uIHRoaXMgbGluZS4KKyAgICB3aGlsZSAoaXQgIT0gZW5kKCkgJiYgKCppdCkubG9n
aWNhbFJpZ2h0KCkgPCB4ICYmIGxpbmVJbmRleCA9PSBpdC5saW5lSW5kZXgoKSkKKyAgICAgICAg
KytpdDsKKyAgICAvLyBXZSBqdW1wZWQgdG8gdGhlIG5leHQgbGluZSBzbyB0aGUgcG9pbnQgaXMg
YXQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHByZXZpb3VzIGxpbmUuCisgICAgaWYgKGl0LmxpbmVJ
bmRleCgpID4gbGluZUluZGV4KQorICAgICAgICByZXR1cm4gLS1pdDsKKyAgICAvLyBOb3cgd2Ug
aGF2ZSBhIGNhbmRpZGF0ZSBydW4uCisgICAgLy8gRmluZCB0aGUgbGFzdCBydW4gdGhhdCBzdGls
bCBjb250YWlucyB0aGlzIHBvaW50ICh0YWtpbmcgb3ZlcmxhcHBpbmcgcnVucyB3aXRoIG9kZCB3
b3JkIHNwYWNpbmcgdmFsdWVzIGludG8gYWNjb3VudCkuCisgICAgd2hpbGUgKGl0ICE9IGVuZCgp
ICYmICgqaXQpLmxvZ2ljYWxMZWZ0KCkgPD0geCAmJiBsaW5lSW5kZXggPT0gaXQubGluZUluZGV4
KCkpCisgICAgICAgICsraXQ7CisgICAgcmV0dXJuIC0taXQ7Cit9CisKIExpbmVSZXNvbHZlcjo6
SXRlcmF0b3I6Okl0ZXJhdG9yKFJ1blJlc29sdmVyOjpJdGVyYXRvciBydW5JdGVyYXRvcikKICAg
ICA6IG1fcnVuSXRlcmF0b3IocnVuSXRlcmF0b3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKaW5kZXggNzMzNDViNjUwMzRi
MTg3YjUwZWQ0ZTViMmU0YjRjNzY4ODliOWM2Zi4uYjM2OWJjNzE1ZDJmZTA3ODUzNjJjM2NjZmVm
MWE1NWE4ZDM3M2ZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0UmVzb2x2ZXIuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgZW5kKCkgY29uc3Q7
CisgICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0KCkgY29uc3Q7CisgICAgICAgIGZsb2F0IGxvZ2lj
YWxSaWdodCgpIGNvbnN0OwogCiAgICAgICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAgICAg
ICAgIGZsb2F0IGV4cGFuc2lvbigpIGNvbnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1YmxpYzoK
IAogICAgIFJhbmdlPEl0ZXJhdG9yPiByYW5nZUZvclJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNv
bnN0OwogICAgIFJhbmdlPEl0ZXJhdG9yPiByYW5nZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCYpIGNvbnN0OworICAgIEl0ZXJhdG9yIHJ1bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBJbmRleFR5cGUgeyBGaXJzdCwg
TGFzdCB9OwpAQCAtMTczLDYgKzE3NiwxNiBAQCBpbmxpbmUgdW5zaWduZWQgUnVuUmVzb2x2ZXI6
OlJ1bjo6ZW5kKCkgY29uc3QKICAgICByZXR1cm4gbV9pdGVyYXRvci5zaW1wbGVSdW4oKS5lbmQ7
CiB9CiAKK2lubGluZSBmbG9hdCBSdW5SZXNvbHZlcjo6UnVuOjpsb2dpY2FsTGVmdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXRlcmF0b3Iuc2ltcGxlUnVuKCkubG9naWNhbExlZnQ7Cit9CisK
K2lubGluZSBmbG9hdCBSdW5SZXNvbHZlcjo6UnVuOjpsb2dpY2FsUmlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2l0ZXJhdG9yLnNpbXBsZVJ1bigpLmxvZ2ljYWxSaWdodDsKK30KKwogaW5s
aW5lIGZsb2F0IFJ1blJlc29sdmVyOjpSdW46OmV4cGFuc2lvbigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1faXRlcmF0b3Iuc2ltcGxlUnVuKCkuZXhwYW5zaW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302076</attachid>
            <date>2017-02-19 07:31:37 -0800</date>
            <delta_ts>2017-02-19 08:07:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168565-20170219072855.patch</filename>
            <type>text/plain</type>
            <size>13330</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiZTkxNmNmZGNjZTUy
ODlhYTY3ZTg5YTAwZmE3NWJiZmI1M2JjYS4uZjQyNjczMGI5ZGI2NmUwMDc3ZDI3NDBhNjdjZDNi
ZWI2OTY3MTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTAyLTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXBsZW1lbnQgcG9zaXRpb25Gb3JQb2ludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODU2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1
OTMzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBub3cgd2UgZG9uJ3QgbmVlZCB0byBzd2l0Y2ggb3ZlciB0byBsaW5l
IGJveCB0cmVlIGFueW1vcmUgd2hlbiBwb3NpdGlvbkZvclBvaW50KCkKKyAgICAgICAgaXMgY2Fs
bGVkIG9uIGEgc2luZ2xlIFJlbmRlclRleHQgY29udGVudCAod2hpY2ggaXMgdGhlIG1ham9yaXR5
IG9mIHRoZSBzaW1wbGUgbGluZSBjb250ZW50KS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFk
ZHMgYSBuZXcgcG9zaXRpb25Gb3JQb2ludCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFBvc2l0aW9u
IG9iamVjdCBpbnN0ZWFkIG9mIFZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgU29tZSBvZiB0aGUg
cG9zaXRpb25Gb3JQb2ludCgpIGNhbGxzaXRlcyBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBQ
b3NpdGlvbiBvYmplY3Qgc28gY29uc3RydWN0aW5nIGEgVmlzaWJsZVBvc2l0aW9uCisgICAgICAg
ICh3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBraWNrIG9mZiBhIGxheW91dCkgaXMgYSB3YXN0ZS4g
QXQgdGhpcyBwb2ludCB0aGUgbm9uLXNpbXBsZSBsaW5lIGxheW91dCBjb2RlcGF0aCBzdGlsbCBj
b25zdHJ1Y3RzCisgICAgICAgIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCB0aGF0IHNob3VsZCBiZSBh
ZGRyZXNzZXMgYXMgcGFydCBvZiB3ZWJraXQub3JnL2IvMTY4NTY2LgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6cnVuRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpSdW46OmxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxSaWdodCk6CisKIDIwMTctMDItMTYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlv
dXQ6IEFkZCBmb3JjZWQgbGluZSBsYXlvdXQgaW5mbyB0byBjb3ZlcmFnZSBwcmludC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDU1MGRlYTE4YTdhNGZiMDliZDVhOTllZDgzNDIwMWFhYTI2
MDExMmYuLmFkNTRkYjc2Y2JjMDE0MDFlODdjZTBmZjdkZTg2NDgxODYzOGIyZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTQyNyw3ICsxNDI3LDcgQEAgUmVmUHRyPFJhbmdlPiBEb2N1
bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQs
IG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Cisg
ICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZv
clBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChy
YW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBi
NzkwOTZmNDZmMTA0ZTk1YThkMTZmOWI5ODc0MGEwMDQ0ZTYzY2JhLi44YWEyOWJjNjgzZTk5Mjhi
ZTllYzFiNGFhN2NhMjQ5NjdhYTViOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzU0OCw2ICszNTQ4LDE0IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29u
c3QgTGF5b3V0CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFN
KTsKIH0KIAorUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBGSVhNRTogSXQgc3VwcG9ydHMgc2luZ2xl
IHRleHQgY2hpbGQgb25seSAod2hpY2ggaXMgdGhlIG1ham9yaXR5IG9mIHNpbXBsZSBsaW5lIGxh
eW91dCBzdXBwb3J0ZWQgY29udGVudCBhdCB0aGlzIHBvaW50KS4KKyAgICBpZiAoIXNpbXBsZUxp
bmVMYXlvdXQoKSB8fCBmaXJzdENoaWxkKCkgIT0gbGFzdENoaWxkKCkgfHwgIWlzPFJlbmRlclRl
eHQ+KGZpcnN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50
LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqZmlyc3RDaGlsZCgpKS5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKK30KKwogVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChhdXRv
IGZyYWdtZW50ID0gcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKQEAgLTM1NTUsNyArMzU2Myw2
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zCiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogfQogCi0KIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KikKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNGJlZGI1NWEzZjg4
ZGI1OGMxNmJkMDhjZWIxOTA1MzVkYTgwN2E2OS4uZjE2MTExNzViMDZiMjg2ZWMxMTljNmIzYjIx
ZTExYWNlYjBlYjlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaApAQCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlTGluZXMo
KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IG9sZENsaWVu
dEFmdGVyRWRnZSwgYm9vbCByZWNvbXB1dGVGbG9hdHMgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAg
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5n
T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA3MmI4NzZjYzcxZDE2NWM2NWVhNTIxYTkyOTY5Njc5ZGQ5NGUwZDlkLi42NWI4OWVjODUzYmZl
NGMxZWRiYzdlYjQ0MmYzMmIxMjA0ZmVkNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0OSw2ICsxNTQ5LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpkZXN0cm95KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorUG9zaXRpb24gUmVuZGVyT2JqZWN0
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQganVzdCBjcmVhdGUgYSBQb3NpdGlvbiBvYmplY3QgaW5zdGVhZCAo
d2Via2l0Lm9yZy9iLzE2ODU2NikuIAorICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50
LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
T2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
UmVnaW9uKikKIHsKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWluT2Zm
c2V0KCksIERPV05TVFJFQU0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDE4ZTlmOTAxMzRlZWJmMzM1M2U4NDVhOWQ5NjIyYzYzM2M0NmZjNTYuLmI0MWYxNjM0
YjBiZGMzNGQ4MDQzMDk1MWYwMWU0YWMxNTRlNzRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU4Nyw2ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KTsKIAorICAgIHZpcnR1YWwgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYpOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSkgY29uc3Q7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDM2Yzc5
MjA1Y2QxMWYxYzA0OTQzZWQ5MDVkZDk3NjMzODVhZTY5YmIuLjYwMmI0ZWMwZDBiZjhmZGEwZDIz
ZTk1OWViOWRjZTMyMzA3MDEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTQzNywxMCArNDM3LDE5IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6
OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAg
cmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVu
ZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKK1Bvc2l0aW9uIFJlbmRlclRl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQoreworICAgIGlm
IChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAgYXV0byBwb3Np
dGlvbiA9IFBvc2l0aW9uKHRleHROb2RlKCksIFNpbXBsZUxpbmVMYXlvdXQ6OnRleHRPZmZzZXRG
b3JQb2ludChwb2ludCwgKnRoaXMsICpsYXlvdXQpKTsKKyAgICAgICAgQVNTRVJUKHBvc2l0aW9u
ID09IHBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkpOwor
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgfQorICAgIHJldHVybiBwb3NpdGlvbkZvclBv
aW50KHBvaW50LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworfQorCiBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgZW5zdXJlTGluZUJveGVzKCk7Ci0KICAgICBy
ZXR1cm4gbV9saW5lQm94ZXMucG9zaXRpb25Gb3JQb2ludCgqdGhpcywgcG9pbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBlNzU3MTJmN2Y1NjJmYjY4ZjY4
YWM0MTUyOWIyMzA4YjNjMjNiM2RmLi4zMWNiNDc2ODAzMGY5MjUzNmQ0NGRjNGZjNzVjM2QxYzI1
ZmNhMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTc4LDYgKzc4
LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVRdWFkc0NsaXBw
ZWRUb0VsbGlwc2lzKCkgY29uc3Q7CiAKKyAgICBQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+aXM4
Qml0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBmOTRjODgyYWVmM2Y0YWRkMzYwMTNjMWEwNzVlZmRh
NDQ2YTdlNjdkLi5iODQ2ZTFkYjdkNzkxZTdkNGUwNTg2NGI2MGNjMzkyNDc5N2ZiZDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCkBAIC0yMTcsNiArMjE3LDIxIEBAIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RB
YnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91CiAg
ICAgcmV0dXJuIHF1YWRzOwogfQogCit1bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5
b3V0JiBsYXlvdXQpCit7CisgICAgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyLnBhcmVudCgpKTsKKyAgICBBU1NFUlQoZmxvdy5maXJzdENoaWxkKCkgPT0g
Zmxvdy5sYXN0Q2hpbGQoKSk7CisgICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGZsb3cs
IGxheW91dCk7CisgICAgYXV0byBpdCA9IHJlc29sdmVyLnJ1bkZvclBvaW50KHBvaW50KTsKKyAg
ICBpZiAoaXQgPT0gcmVzb2x2ZXIuZW5kKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0
TGVuZ3RoKCk7CisgICAgYXV0byBydW4gPSAqaXQ7CisgICAgYXV0byYgc3R5bGUgPSBmbG93LnN0
eWxlKCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHJ1bi50ZXh0KCksIHJ1bi5sb2dpY2FsTGVmdCgp
LCBydW4uZXhwYW5zaW9uKCksIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKTsKKyAgICB0ZXh0UnVu
LnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkp
OworICAgIHJldHVybiBydW4uc3RhcnQoKSArIHN0eWxlLmZvbnRDYXNjYWRlKCkub2Zmc2V0Rm9y
UG9zaXRpb24odGV4dFJ1biwgcG9pbnQueCgpIC0gcnVuLmxvZ2ljYWxMZWZ0KCksIHRydWUpOwor
fQorCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogc3RhdGljIHZvaWQgcHJpbnRQcmVmaXgo
aW50JiBwcmludGVkQ2hhcmFjdGVycywgaW50IGRlcHRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggYjVmZGY2
ODgyZGYzMzEwOWMyNzRkOWMyZjc4ZTdkYjhlMDljNTg0Yi4uY2FjODcyOTdkMDRjMTRmNGMxMTQ5
ZGZmMGZmYzk0Y2I3YjE3YTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC01Nyw2ICs1Nyw3IEBAIEludFBvaW50
IGNvbXB1dGVGaXJzdFJ1bkxvY2F0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91
dCYpOwogCiBWZWN0b3I8SW50UmVjdD4gY29sbGVjdEFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IExheW91dCYsIGJvb2wqIHdhc0ZpeGVkKTsKK3Vuc2lnbmVkIHRleHRP
ZmZzZXRGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclRleHQmLCBjb25z
dCBMYXlvdXQmKTsKIAogTGF5b3V0VW5pdCBsaW5lSGVpZ2h0RnJvbUZsb3coY29uc3QgUmVuZGVy
QmxvY2tGbG93Jik7CiBMYXlvdXRVbml0IGJhc2VsaW5lRnJvbUZsb3coY29uc3QgUmVuZGVyQmxv
Y2tGbG93Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0UmVzb2x2ZXIuY3BwCmluZGV4IGFlMTUwMDY2MTk5ZmE5ZThmYjAzMDhkNDg2YTJhN2Ni
NDgxYjdmNjkuLmU3NjhmNGU1NTIwOTg4MDFmNWM0MDJiZDEzMjlhMTIyYWNkMzliZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuY3BwCkBAIC0xOTUsNiArMTk1LDMwIEBAIFJhbmdlPFJ1blJlc29sdmVyOjpJdGVyYXRvcj4g
UnVuUmVzb2x2ZXI6OnJhbmdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByCiAgICAg
cmV0dXJuIFJhbmdlPEl0ZXJhdG9yPihyYW5nZUJlZ2luLCBydW4pOwogfQogCitSdW5SZXNvbHZl
cjo6SXRlcmF0b3IgUnVuUmVzb2x2ZXI6OnJ1bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbGluZUhlaWdodCkKKyAgICAgICAgcmV0dXJuIEl0
ZXJhdG9yKGVuZCgpKTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSBsaW5lSW5kZXhGb3JIZWln
aHQocG9pbnQueSgpLCBJbmRleFR5cGU6Okxhc3QpOworICAgIGF1dG8geCA9IHBvaW50LngoKSAt
IG1fYm9yZGVyQW5kUGFkZGluZ0JlZm9yZTsKKyAgICBhdXRvIGl0ID0gYmVnaW4oKTsKKyAgICBp
dC5hZHZhbmNlTGluZXMobGluZUluZGV4KTsKKyAgICAvLyBQb2ludCBpcyBhdCB0aGUgbGVmdCBz
aWRlIG9mIHRoZSBmaXJzdCBydW4gb24gdGhpcyBsaW5lLgorICAgIGlmICgoKml0KS5sb2dpY2Fs
TGVmdCgpID4geCkKKyAgICAgICAgcmV0dXJuIGl0OworICAgIC8vIEFkdmFuY2UgdG8gdGhlIGZp
cnN0IGNhbmRpZGF0ZSBydW4gb24gdGhpcyBsaW5lLgorICAgIHdoaWxlIChpdCAhPSBlbmQoKSAm
JiAoKml0KS5sb2dpY2FsUmlnaHQoKSA8IHggJiYgbGluZUluZGV4ID09IGl0LmxpbmVJbmRleCgp
KQorICAgICAgICArK2l0OworICAgIC8vIFdlIGp1bXBlZCB0byB0aGUgbmV4dCBsaW5lIHNvIHRo
ZSBwb2ludCBpcyBhdCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgcHJldmlvdXMgbGluZS4KKyAgICBp
ZiAoaXQubGluZUluZGV4KCkgPiBsaW5lSW5kZXgpCisgICAgICAgIHJldHVybiAtLWl0OworICAg
IC8vIE5vdyB3ZSBoYXZlIGEgY2FuZGlkYXRlIHJ1bi4KKyAgICAvLyBGaW5kIHRoZSBsYXN0IHJ1
biB0aGF0IHN0aWxsIGNvbnRhaW5zIHRoaXMgcG9pbnQgKHRha2luZyBvdmVybGFwcGluZyBydW5z
IHdpdGggb2RkIHdvcmQgc3BhY2luZyB2YWx1ZXMgaW50byBhY2NvdW50KS4KKyAgICB3aGlsZSAo
aXQgIT0gZW5kKCkgJiYgKCppdCkubG9naWNhbExlZnQoKSA8PSB4ICYmIGxpbmVJbmRleCA9PSBp
dC5saW5lSW5kZXgoKSkKKyAgICAgICAgKytpdDsKKyAgICByZXR1cm4gLS1pdDsKK30KKwogTGlu
ZVJlc29sdmVyOjpJdGVyYXRvcjo6SXRlcmF0b3IoUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHJ1bkl0
ZXJhdG9yKQogICAgIDogbV9ydW5JdGVyYXRvcihydW5JdGVyYXRvcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAppbmRleCA3
MzM0NWI2NTAzNGIxODdiNTBlZDRlNWIyZTRiNGM3Njg4OWI5YzZmLi5iMzY5YmM3MTVkMmZlMDc4
NTM2MmMzY2NmZWYxYTU1YThkMzczZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCkBAIC01OCw2ICs1OCw4IEBAIHB1Ymxp
YzoKIAogICAgICAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBl
bmQoKSBjb25zdDsKKyAgICAgICAgZmxvYXQgbG9naWNhbExlZnQoKSBjb25zdDsKKyAgICAgICAg
ZmxvYXQgbG9naWNhbFJpZ2h0KCkgY29uc3Q7CiAKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoKSBj
b25zdDsKICAgICAgICAgZmxvYXQgZXhwYW5zaW9uKCkgY29uc3Q7CkBAIC0xMTMsNiArMTE1LDcg
QEAgcHVibGljOgogCiAgICAgUmFuZ2U8SXRlcmF0b3I+IHJhbmdlRm9yUmVjdChjb25zdCBMYXlv
dXRSZWN0JikgY29uc3Q7CiAgICAgUmFuZ2U8SXRlcmF0b3I+IHJhbmdlRm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CisgICAgSXRlcmF0b3IgcnVuRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEluZGV4VHlw
ZSB7IEZpcnN0LCBMYXN0IH07CkBAIC0xNzMsNiArMTc2LDE2IEBAIGlubGluZSB1bnNpZ25lZCBS
dW5SZXNvbHZlcjo6UnVuOjplbmQoKSBjb25zdAogICAgIHJldHVybiBtX2l0ZXJhdG9yLnNpbXBs
ZVJ1bigpLmVuZDsKIH0KIAoraW5saW5lIGZsb2F0IFJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxM
ZWZ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pdGVyYXRvci5zaW1wbGVSdW4oKS5sb2dpY2Fs
TGVmdDsKK30KKworaW5saW5lIGZsb2F0IFJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxSaWdodCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXRlcmF0b3Iuc2ltcGxlUnVuKCkubG9naWNhbFJpZ2h0
OworfQorCiBpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6ZXhwYW5zaW9uKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pdGVyYXRvci5zaW1wbGVSdW4oKS5leHBhbnNpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302078</attachid>
            <date>2017-02-19 08:07:06 -0800</date>
            <delta_ts>2017-02-19 08:26:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168565-20170219080424.patch</filename>
            <type>text/plain</type>
            <size>13320</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiZTkxNmNmZGNjZTUy
ODlhYTY3ZTg5YTAwZmE3NWJiZmI1M2JjYS4uZjQyNjczMGI5ZGI2NmUwMDc3ZDI3NDBhNjdjZDNi
ZWI2OTY3MTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTAyLTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXBsZW1lbnQgcG9zaXRpb25Gb3JQb2ludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODU2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1
OTMzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBub3cgd2UgZG9uJ3QgbmVlZCB0byBzd2l0Y2ggb3ZlciB0byBsaW5l
IGJveCB0cmVlIGFueW1vcmUgd2hlbiBwb3NpdGlvbkZvclBvaW50KCkKKyAgICAgICAgaXMgY2Fs
bGVkIG9uIGEgc2luZ2xlIFJlbmRlclRleHQgY29udGVudCAod2hpY2ggaXMgdGhlIG1ham9yaXR5
IG9mIHRoZSBzaW1wbGUgbGluZSBjb250ZW50KS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFk
ZHMgYSBuZXcgcG9zaXRpb25Gb3JQb2ludCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFBvc2l0aW9u
IG9iamVjdCBpbnN0ZWFkIG9mIFZpc2libGVQb3NpdGlvbi4KKyAgICAgICAgU29tZSBvZiB0aGUg
cG9zaXRpb25Gb3JQb2ludCgpIGNhbGxzaXRlcyBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBQ
b3NpdGlvbiBvYmplY3Qgc28gY29uc3RydWN0aW5nIGEgVmlzaWJsZVBvc2l0aW9uCisgICAgICAg
ICh3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBraWNrIG9mZiBhIGxheW91dCkgaXMgYSB3YXN0ZS4g
QXQgdGhpcyBwb2ludCB0aGUgbm9uLXNpbXBsZSBsaW5lIGxheW91dCBjb2RlcGF0aCBzdGlsbCBj
b25zdHJ1Y3RzCisgICAgICAgIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCB0aGF0IHNob3VsZCBiZSBh
ZGRyZXNzZXMgYXMgcGFydCBvZiB3ZWJraXQub3JnL2IvMTY4NTY2LgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6cnVuRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpSdW46OmxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpSdW46OmxvZ2ljYWxSaWdodCk6CisKIDIwMTctMDItMTYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlv
dXQ6IEFkZCBmb3JjZWQgbGluZSBsYXlvdXQgaW5mbyB0byBjb3ZlcmFnZSBwcmludC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDU1MGRlYTE4YTdhNGZiMDliZDVhOTllZDgzNDIwMWFhYTI2
MDExMmYuLmFkNTRkYjc2Y2JjMDE0MDFlODdjZTBmZjdkZTg2NDgxODYzOGIyZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTQyNyw3ICsxNDI3LDcgQEAgUmVmUHRyPFJhbmdlPiBEb2N1
bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQs
IG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7Cisg
ICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZv
clBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChy
YW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBi
NzkwOTZmNDZmMTA0ZTk1YThkMTZmOWI5ODc0MGEwMDQ0ZTYzY2JhLi44YWEyOWJjNjgzZTk5Mjhi
ZTllYzFiNGFhN2NhMjQ5NjdhYTViOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzU0OCw2ICszNTQ4LDE0IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29u
c3QgTGF5b3V0CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFN
KTsKIH0KIAorUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBGSVhNRTogSXQgc3VwcG9ydHMgc2luZ2xl
IHRleHQgY2hpbGQgb25seSAod2hpY2ggaXMgdGhlIG1ham9yaXR5IG9mIHNpbXBsZSBsaW5lIGxh
eW91dCBzdXBwb3J0ZWQgY29udGVudCBhdCB0aGlzIHBvaW50KS4KKyAgICBpZiAoIXNpbXBsZUxp
bmVMYXlvdXQoKSB8fCBmaXJzdENoaWxkKCkgIT0gbGFzdENoaWxkKCkgfHwgIWlzPFJlbmRlclRl
eHQ+KGZpcnN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50
LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqZmlyc3RDaGlsZCgpKS5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKK30KKwogVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChhdXRv
IGZyYWdtZW50ID0gcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKQEAgLTM1NTUsNyArMzU2Myw2
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zCiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogfQogCi0KIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KikKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNGJlZGI1NWEzZjg4
ZGI1OGMxNmJkMDhjZWIxOTA1MzVkYTgwN2E2OS4uZjE2MTExNzViMDZiMjg2ZWMxMTljNmIzYjIx
ZTExYWNlYjBlYjlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaApAQCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlTGluZXMo
KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IG9sZENsaWVu
dEFmdGVyRWRnZSwgYm9vbCByZWNvbXB1dGVGbG9hdHMgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAg
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5n
T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA3MmI4NzZjYzcxZDE2NWM2NWVhNTIxYTkyOTY5Njc5ZGQ5NGUwZDlkLi42NWI4OWVjODUzYmZl
NGMxZWRiYzdlYjQ0MmYzMmIxMjA0ZmVkNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0OSw2ICsxNTQ5LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpkZXN0cm95KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorUG9zaXRpb24gUmVuZGVyT2JqZWN0
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQganVzdCBjcmVhdGUgYSBQb3NpdGlvbiBvYmplY3QgaW5zdGVhZCAo
d2Via2l0Lm9yZy9iLzE2ODU2NikuIAorICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50KHBvaW50
LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworfQorCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
T2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
UmVnaW9uKikKIHsKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWluT2Zm
c2V0KCksIERPV05TVFJFQU0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDE4ZTlmOTAxMzRlZWJmMzM1M2U4NDVhOWQ5NjIyYzYzM2M0NmZjNTYuLmI0MWYxNjM0
YjBiZGMzNGQ4MDQzMDk1MWYwMWU0YWMxNTRlNzRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU4Nyw2ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KTsKIAorICAgIHZpcnR1YWwgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYpOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSkgY29uc3Q7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDM2Yzc5
MjA1Y2QxMWYxYzA0OTQzZWQ5MDVkZDk3NjMzODVhZTY5YmIuLjYwMmI0ZWMwZDBiZjhmZGEwZDIz
ZTk1OWViOWRjZTMyMzA3MDEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTQzNywxMCArNDM3LDE5IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6
OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAg
cmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVu
ZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKK1Bvc2l0aW9uIFJlbmRlclRl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQoreworICAgIGlm
IChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAgYXV0byBwb3Np
dGlvbiA9IFBvc2l0aW9uKHRleHROb2RlKCksIFNpbXBsZUxpbmVMYXlvdXQ6OnRleHRPZmZzZXRG
b3JQb2ludChwb2ludCwgKnRoaXMsICpsYXlvdXQpKTsKKyAgICAgICAgQVNTRVJUKHBvc2l0aW9u
ID09IHBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCkpOwor
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgfQorICAgIHJldHVybiBwb3NpdGlvbkZvclBv
aW50KHBvaW50LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOworfQorCiBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgZW5zdXJlTGluZUJveGVzKCk7Ci0KICAgICBy
ZXR1cm4gbV9saW5lQm94ZXMucG9zaXRpb25Gb3JQb2ludCgqdGhpcywgcG9pbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBlNzU3MTJmN2Y1NjJmYjY4ZjY4
YWM0MTUyOWIyMzA4YjNjMjNiM2RmLi4zMWNiNDc2ODAzMGY5MjUzNmQ0NGRjNGZjNzVjM2QxYzI1
ZmNhMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTc4LDYgKzc4
LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVRdWFkc0NsaXBw
ZWRUb0VsbGlwc2lzKCkgY29uc3Q7CiAKKyAgICBQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+aXM4
Qml0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBmOTRjODgyYWVmM2Y0YWRkMzYwMTNjMWEwNzVlZmRh
NDQ2YTdlNjdkLi5iODQ2ZTFkYjdkNzkxZTdkNGUwNTg2NGI2MGNjMzkyNDc5N2ZiZDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCkBAIC0yMTcsNiArMjE3LDIxIEBAIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RB
YnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91CiAg
ICAgcmV0dXJuIHF1YWRzOwogfQogCit1bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5
b3V0JiBsYXlvdXQpCit7CisgICAgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyLnBhcmVudCgpKTsKKyAgICBBU1NFUlQoZmxvdy5maXJzdENoaWxkKCkgPT0g
Zmxvdy5sYXN0Q2hpbGQoKSk7CisgICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGZsb3cs
IGxheW91dCk7CisgICAgYXV0byBpdCA9IHJlc29sdmVyLnJ1bkZvclBvaW50KHBvaW50KTsKKyAg
ICBpZiAoaXQgPT0gcmVzb2x2ZXIuZW5kKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0
TGVuZ3RoKCk7CisgICAgYXV0byBydW4gPSAqaXQ7CisgICAgYXV0byYgc3R5bGUgPSBmbG93LnN0
eWxlKCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHJ1bi50ZXh0KCksIHJ1bi5sb2dpY2FsTGVmdCgp
LCBydW4uZXhwYW5zaW9uKCksIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKTsKKyAgICB0ZXh0UnVu
LnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkp
OworICAgIHJldHVybiBydW4uc3RhcnQoKSArIHN0eWxlLmZvbnRDYXNjYWRlKCkub2Zmc2V0Rm9y
UG9zaXRpb24odGV4dFJ1biwgcG9pbnQueCgpIC0gcnVuLmxvZ2ljYWxMZWZ0KCksIHRydWUpOwor
fQorCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogc3RhdGljIHZvaWQgcHJpbnRQcmVmaXgo
aW50JiBwcmludGVkQ2hhcmFjdGVycywgaW50IGRlcHRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggYjVmZGY2
ODgyZGYzMzEwOWMyNzRkOWMyZjc4ZTdkYjhlMDljNTg0Yi4uY2FjODcyOTdkMDRjMTRmNGMxMTQ5
ZGZmMGZmYzk0Y2I3YjE3YTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC01Nyw2ICs1Nyw3IEBAIEludFBvaW50
IGNvbXB1dGVGaXJzdFJ1bkxvY2F0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91
dCYpOwogCiBWZWN0b3I8SW50UmVjdD4gY29sbGVjdEFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KTsKIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IExheW91dCYsIGJvb2wqIHdhc0ZpeGVkKTsKK3Vuc2lnbmVkIHRleHRP
ZmZzZXRGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclRleHQmLCBjb25z
dCBMYXlvdXQmKTsKIAogTGF5b3V0VW5pdCBsaW5lSGVpZ2h0RnJvbUZsb3coY29uc3QgUmVuZGVy
QmxvY2tGbG93Jik7CiBMYXlvdXRVbml0IGJhc2VsaW5lRnJvbUZsb3coY29uc3QgUmVuZGVyQmxv
Y2tGbG93Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0UmVzb2x2ZXIuY3BwCmluZGV4IGFlMTUwMDY2MTk5ZmE5ZThmYjAzMDhkNDg2YTJhN2Ni
NDgxYjdmNjkuLjMwYjQ0MDM3NmM1ZDI0NmFkMGJjODMyNGU4NjY5YWRjMmM0NTViMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuY3BwCkBAIC0xOTUsNiArMTk1LDMwIEBAIFJhbmdlPFJ1blJlc29sdmVyOjpJdGVyYXRvcj4g
UnVuUmVzb2x2ZXI6OnJhbmdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByCiAgICAg
cmV0dXJuIFJhbmdlPEl0ZXJhdG9yPihyYW5nZUJlZ2luLCBydW4pOwogfQogCitSdW5SZXNvbHZl
cjo6SXRlcmF0b3IgUnVuUmVzb2x2ZXI6OnJ1bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbGluZUhlaWdodCkKKyAgICAgICAgcmV0dXJuIGVu
ZCgpOworICAgIHVuc2lnbmVkIGxpbmVJbmRleCA9IGxpbmVJbmRleEZvckhlaWdodChwb2ludC55
KCksIEluZGV4VHlwZTo6TGFzdCk7CisgICAgYXV0byB4ID0gcG9pbnQueCgpIC0gbV9ib3JkZXJB
bmRQYWRkaW5nQmVmb3JlOworICAgIGF1dG8gaXQgPSBiZWdpbigpOworICAgIGl0LmFkdmFuY2VM
aW5lcyhsaW5lSW5kZXgpOworICAgIC8vIFBvaW50IGlzIGF0IHRoZSBsZWZ0IHNpZGUgb2YgdGhl
IGZpcnN0IHJ1biBvbiB0aGlzIGxpbmUuCisgICAgaWYgKCgqaXQpLmxvZ2ljYWxMZWZ0KCkgPiB4
KQorICAgICAgICByZXR1cm4gaXQ7CisgICAgLy8gQWR2YW5jZSB0byB0aGUgZmlyc3QgY2FuZGlk
YXRlIHJ1biBvbiB0aGlzIGxpbmUuCisgICAgd2hpbGUgKGl0ICE9IGVuZCgpICYmICgqaXQpLmxv
Z2ljYWxSaWdodCgpIDwgeCAmJiBsaW5lSW5kZXggPT0gaXQubGluZUluZGV4KCkpCisgICAgICAg
ICsraXQ7CisgICAgLy8gV2UganVtcGVkIHRvIHRoZSBuZXh0IGxpbmUgc28gdGhlIHBvaW50IGlz
IGF0IHRoZSByaWdodCBzaWRlIG9mIHRoZSBwcmV2aW91cyBsaW5lLgorICAgIGlmIChpdC5saW5l
SW5kZXgoKSA+IGxpbmVJbmRleCkKKyAgICAgICAgcmV0dXJuIC0taXQ7CisgICAgLy8gTm93IHdl
IGhhdmUgYSBjYW5kaWRhdGUgcnVuLgorICAgIC8vIEZpbmQgdGhlIGxhc3QgcnVuIHRoYXQgc3Rp
bGwgY29udGFpbnMgdGhpcyBwb2ludCAodGFraW5nIG92ZXJsYXBwaW5nIHJ1bnMgd2l0aCBvZGQg
d29yZCBzcGFjaW5nIHZhbHVlcyBpbnRvIGFjY291bnQpLgorICAgIHdoaWxlIChpdCAhPSBlbmQo
KSAmJiAoKml0KS5sb2dpY2FsTGVmdCgpIDw9IHggJiYgbGluZUluZGV4ID09IGl0LmxpbmVJbmRl
eCgpKQorICAgICAgICArK2l0OworICAgIHJldHVybiAtLWl0OworfQorCiBMaW5lUmVzb2x2ZXI6
Okl0ZXJhdG9yOjpJdGVyYXRvcihSdW5SZXNvbHZlcjo6SXRlcmF0b3IgcnVuSXRlcmF0b3IpCiAg
ICAgOiBtX3J1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCmluZGV4IDczMzQ1YjY1MDM0
YjE4N2I1MGVkNGU1YjJlNGI0Yzc2ODg5YjljNmYuLmIzNjliYzcxNWQyZmUwNzg1MzYyYzNjY2Zl
ZjFhNTVhOGQzNzNmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFJlc29sdmVyLmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0
OworICAgICAgICBmbG9hdCBsb2dpY2FsTGVmdCgpIGNvbnN0OworICAgICAgICBmbG9hdCBsb2dp
Y2FsUmlnaHQoKSBjb25zdDsKIAogICAgICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0OwogICAg
ICAgICBmbG9hdCBleHBhbnNpb24oKSBjb25zdDsKQEAgLTExMyw2ICsxMTUsNyBAQCBwdWJsaWM6
CiAKICAgICBSYW5nZTxJdGVyYXRvcj4gcmFuZ2VGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBj
b25zdDsKICAgICBSYW5nZTxJdGVyYXRvcj4gcmFuZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QmKSBjb25zdDsKKyAgICBJdGVyYXRvciBydW5Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgSW5kZXhUeXBlIHsgRmlyc3Qs
IExhc3QgfTsKQEAgLTE3Myw2ICsxNzYsMTYgQEAgaW5saW5lIHVuc2lnbmVkIFJ1blJlc29sdmVy
OjpSdW46OmVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXRlcmF0b3Iuc2ltcGxlUnVuKCkuZW5k
OwogfQogCitpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6bG9naWNhbExlZnQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2l0ZXJhdG9yLnNpbXBsZVJ1bigpLmxvZ2ljYWxMZWZ0OworfQor
CitpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6bG9naWNhbFJpZ2h0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pdGVyYXRvci5zaW1wbGVSdW4oKS5sb2dpY2FsUmlnaHQ7Cit9CisKIGlu
bGluZSBmbG9hdCBSdW5SZXNvbHZlcjo6UnVuOjpleHBhbnNpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBtX2l0ZXJhdG9yLnNpbXBsZVJ1bigpLmV4cGFuc2lvbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>