<?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>142759</bug_id>
          
          <creation_ts>2015-03-16 18:10:17 -0700</creation_ts>
          <short_desc>Compile character ranges targeting the same state as range check in the bytecode</short_desc>
          <delta_ts>2015-03-17 13:48:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>achristensen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077669</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-16 18:10:17 -0700</bug_when>
    <thetext>Compile character ranges targeting the same state as range check in the bytecode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077673</commentid>
    <comment_count>1</comment_count>
      <attachid>248774</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-16 18:18:33 -0700</bug_when>
    <thetext>Created attachment 248774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077685</commentid>
    <comment_count>2</comment_count>
      <attachid>248774</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-16 19:02:55 -0700</bug_when>
    <thetext>Comment on attachment 248774
Patch

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

LGTM.  r- because there are a few small things to address.

&gt; Source/WebCore/contentextensions/DFABytecode.h:47
&gt; +    // The index to jump to if the values are equal (4 bytes).

&quot;if the value is in the range&quot;

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:117
&gt; +    uint16_t lowValueKey;

I think either this should be a uint8_t or compileCheckForRange should take a uint16_t.  It&apos;s not easy to see where the type changes.
Also, I think rangeMin would be a better name for this variable.

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:118
&gt; +    unsigned lowValueDestination = 0;

lowValueDestination -&gt; rangeDestination?

&gt; Source/WebCore/contentextensions/NFAToDFA.cpp:344
&gt; +        if (!dfaNode.hasFallbackTransition &amp;&amp; dfaNode.transitions.size() &gt;= 126) {

This code is quite generalized.  I think it could be simplified:
If size==127, then everything goes to the fallback transition.  
If size==126, then we only have to find the one transition that is missing.

&gt; Source/WebCore/contentextensions/NFAToDFA.cpp:362
&gt; +            ASSERT_WITH_MESSAGE(bestTargetScore, &quot;There should be a list one valid target since having transitions is a precondition to enter this path.&quot;);

&quot;a list&quot; -&gt; &quot;at least&quot;
They sound the same with a Belgian accent :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077721</commentid>
    <comment_count>3</comment_count>
      <attachid>248793</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-16 20:24:28 -0700</bug_when>
    <thetext>Created attachment 248793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077729</commentid>
    <comment_count>4</comment_count>
      <attachid>248797</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-16 20:39:44 -0700</bug_when>
    <thetext>Created attachment 248797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077908</commentid>
    <comment_count>5</comment_count>
      <attachid>248797</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 10:32:07 -0700</bug_when>
    <thetext>Comment on attachment 248797
Patch

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

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:116
&gt; +    bool hasrangeMin = false;

hasRangeMin

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:156
&gt; +void DFABytecodeCompiler::compileCheckForRange(uint16_t lowValue, uint16_t highValue, unsigned destinationNodeIndex)

I think it would be good to assert lowValue and highValue are less than 128 here because we cast them to 8-bit integers.

&gt; Source/WebCore/contentextensions/NFAToDFA.cpp:346
&gt; +            &amp;&amp; ((dfaNode.transitions.size() == 126 &amp;&amp; !dfaNode.transitions.contains(0))
&gt; +                || (dfaNode.transitions.size() == 127 &amp;&amp; dfaNode.transitions.contains(0)))) {

I&apos;m not sure I understand why the null character is a special case here.  Isn&apos;t it just another transition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077960</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-17 13:48:15 -0700</bug_when>
    <thetext>Committed r181663: &lt;http://trac.webkit.org/changeset/181663&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248774</attachid>
            <date>2015-03-16 18:18:33 -0700</date>
            <delta_ts>2015-03-16 20:24:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142759-20150316181804.patch</filename>
            <type>text/plain</type>
            <size>18729</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU5ZDYyYjA4MGRmMTgw
MmJlZTE4ZWU5Mjk4ZmU4ZGIwZmJmNjBmMS4uY2QyMjkzYzY3NDI4NWNlYzk0YWQ2NzMzZDIxZWVl
MGQ0OWUwMDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTAzLTE2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGUgY2hh
cmFjdGVyIHJhbmdlcyB0YXJnZXRpbmcgdGhlIHNhbWUgc3RhdGUgYXMgcmFuZ2UgY2hlY2sgaW4g
dGhlIGJ5dGVjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDI3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2aW91c2x5LCBjaGFyYWN0ZXIgcmFuZ2VzIHdvdWxkIGJlIGNvbXBpbGVkIGFzIG1h
bnkgaW5kaXZpZHVhbCBjaGFyYWN0ZXIgY2hlY2tzLgorICAgICAgICBGb3IgZXhhbXBsZSwgYSB0
cmFuc2l0aW9uIG9uICJbYS16XSIgd291bGQgZG8gMjYgY2hhcmFjdGVyIGNoZWNrcyArIGp1bXAs
IHdoaWNoIGxlYWRzCisgICAgICAgIHRvIGVub3Jtb3VzIG1hdGNoaW5lcy4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIHdlIGZpbmQgdGhlIHJhbmdlcyBhdCBsb3dlcmluZyB0aW1lIGFuZCBn
ZW5lcmF0ZSBhIHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICBmb3IgdGhlbTogIkNoZWNrVmFs
dWVSYW5nZSIuIFRoaXMgaGVscHMgbWFraW5nIHRoZSBtYWNoaW5lIGRlbnNlciB3aGVuIHRoZSBp
bnB1dAorICAgICAgICB1c2UgY2hhcmFjdGVyIHNldHMuCisKKyAgICAgICAgVGhlIHNlY29uZCBw
YXJ0IG9mIHRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB0cmFu
c2l0aW9ucyBvdXQgb2YKKyAgICAgICAgYSBzdGF0ZSBjb3ZlciB0aGUgZW50aXJlIGFscGhhYmV0
LiBJbiB0aGF0IGNhc2UsIHdlIGNyZWF0ZSBhIGZhbGxiYWNrIHRyYW5zaXRpb24KKyAgICAgICAg
b24gdGhlIGZseSBhbmQgcmVtb3ZlIGFsbCB0aGUgcmFuZ2VzIG1hZGUgdXNlbGVzcy4KKyAgICAg
ICAgVGhhdCBjYXNlIGlzIGNvbW1vbiB3aGVuIHJhbmdlcyBhcmUgdXNlZCB3aXRoIGludmVyc2Ug
Y2hhcmFjdGVyIHNldCAoZS5nLiBbXmFdK2EpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpp
bnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZVJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpjb21w
aWxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZUNoZWNrRm9yUmFu
Z2UpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaDoK
KyAgICAgICAgRXh0ZW5kIHRoZSBjb21waWxlciB0byBkZXRlY3QgcmFuZ2VzIGFuZCBsb3dlciB0
aGVtIGFzIENoZWNrVmFsdWVSYW5nZS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIFJhbmdl
IGNoZWNrcyBpbiB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6c2V0
RmluYWwpOgorICAgICAgICBUaGlzIGFzc2VydGlvbiBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGgg
dGhlIGN1cnJlbnQgY29kZWJhc2UuIEFjdGlvbnMgYXJlICJjb21wcmVzc2VkIiwKKyAgICAgICAg
aXQgaXMgcG9zc2libGUgdG8gaGF2ZSB0d28gcGF0dGVybnMgd2l0aCB0aGUgc2FtZSBhY3Rpb24u
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2ltcGxpZnlUcmFuc2l0aW9ucyk6CisgICAgICAg
IEEgdmVyeSBzaW1wbGUgREZBIG9wdGltaXphdGlvbiBmdW5jdGlvbjogaXQgb25seSByZWR1Y2Ug
dGhlIHN0cmVuZ3RoIG9mIHJhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKwogMjAxNS0wMy0xMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKaW5kZXggNjMxNDQ0Y2ZhNDlkNjM0ZTBjZDg5NDNhZDQxMjgzZjY1ZGU5ZDA5Ny4u
YjU5Y2IwMzcyZDM1NTFhOThmODExZjM3ZTQ5OTE2ZTYyMGFkMjcxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC00MSw2ICs0MSwxMiBA
QCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICAvLyBU
aGUgaW5kZXggdG8ganVtcCB0byBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbCAoNCBieXRlcykuCiAg
ICAgQ2hlY2tWYWx1ZSwKIAorICAgIC8vIEp1bXAgdG8gYW4gb2Zmc2V0IGlmIHRoZSBpbnB1dCB2
YWx1ZSBpcyB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLgorICAgIC8vIFRoZSBsb3dlciB2YWx1ZSAo
MSBieXRlKS4KKyAgICAvLyBUaGUgaGlnaGVyIHZhbHVlICgxIGJ5dGUpLgorICAgIC8vIFRoZSBp
bmRleCB0byBqdW1wIHRvIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWFsICg0IGJ5dGVzKS4KKyAgICBD
aGVja1ZhbHVlUmFuZ2UsCisKICAgICAvLyBBcHBlbmRBY3Rpb24gaGFzIG9uZSBhcmd1bWVudDoK
ICAgICAvLyBUaGUgYWN0aW9uIHRvIGFwcGVuZCAoNCBieXRlcykuCiAgICAgQXBwZW5kQWN0aW9u
LApAQCAtNjMsNiArNjksOCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBpbnN0cnVjdGlvblNpemVX
aXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1YwogICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24pIHsKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFs
dWU6CiAgICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXpl
b2YodWludDhfdCkgKyBzaXplb2YodW5zaWduZWQpOworICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlOgorICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24pICsgc2l6ZW9mKHVpbnQ4X3QpICsgc2l6ZW9mKHVpbnQ4X3QpICsgc2l6
ZW9mKHVuc2lnbmVkKTsKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFj
dGlvbjoKICAgICAgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNp
emVvZih1bnNpZ25lZCk7CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCmluZGV4IDBhNjg2YzZkN2NmZGJlZjU2
YjczZjI1M2NjYjFmYTJlYmIwZDEyZjcuLjM2NDdmNDNhYmU5YjZmZTgzMjA5MGVhY2E2NjM1NDEx
MTEzNzdkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QUJ5dGVjb2RlQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUgIkRGQS5oIgorI2luY2x1ZGUgIkRG
QU5vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNzYsNiArNzcsMTggQEAg
dm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZSh1aW50OF90IHZhbHVlLCB1
bnNpZ25lZCBkZXN0aW5hdGlvbk5vZGUKICAgICBhcHBlbmQ8dW5zaWduZWQ+KG1fYnl0ZWNvZGUs
IDApOyAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgc2V0IHdoZW4gbGlua2luZy4KIH0KIAordm9pZCBE
RkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZVJhbmdlKHVpbnQ4X3QgbG93VmFsdWUs
IHVpbnQ4X3QgaGlnaFZhbHVlLCB1bnNpZ25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCkKK3sKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGxvd1ZhbHVlICE9IGhpZ2hWYWx1ZSwgIkEgc2luZ2xlIHZh
bHVlIGNoZWNrIHNob3VsZCBiZSBlbWl0dGVkIGZvciBzaW5nbGUgdmFsdWVzLiIpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobG93VmFsdWUgPCBoaWdoVmFsdWUsICJUaGUgaW5zdHJ1Y3Rpb24g
c2VtYW50aWMgaW1wb3NlIGxvd1ZhbHVlIGlzIHNtYWxsZXIgdGhhbiBoaWdoVmFsdWUuIik7CisK
KyAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlKTsKKyAgICBhcHBlbmQ8dWludDhfdD4obV9i
eXRlY29kZSwgbG93VmFsdWUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBoaWdo
VmFsdWUpOworICAgIG1fbGlua1JlY29yZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1fYnl0ZWNv
ZGUuc2l6ZSgpLCBkZXN0aW5hdGlvbk5vZGVJbmRleCkpOworICAgIGFwcGVuZDx1bnNpZ25lZD4o
bV9ieXRlY29kZSwgMCk7Cit9CisKIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6ZW1pdFRlcm1p
bmF0ZSgpCiB7CiAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUs
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZSk7CkBAIC05NSwxNiArMTA4LDU5IEBA
IHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZU5vZGUodW5zaWduZWQgaW5kZXgpCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGVtaXRBcHBlbmRBY3Rpb24oc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGFjdGlvbikpOwogICAgIH0KLSAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5z
aXRpb24gOiBub2RlLnRyYW5zaXRpb25zKQotICAgICAgICBlbWl0Q2hlY2tWYWx1ZSh0cmFuc2l0
aW9uLmtleSwgdHJhbnNpdGlvbi52YWx1ZSk7Ci0gICAgCisgICAgY29tcGlsZU5vZGVUcmFuc2l0
aW9ucyhub2RlKTsKK30KKwordm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlTm9kZVRy
YW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpCit7CisgICAgYm9vbCBoYXNMb3dWYWx1ZUtl
eSA9IGZhbHNlOworICAgIHVpbnQxNl90IGxvd1ZhbHVlS2V5OworICAgIHVuc2lnbmVkIGxvd1Zh
bHVlRGVzdGluYXRpb24gPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBjaGFyIGkgPSAwOyBpIDwg
MTI4OyArK2kpIHsKKyAgICAgICAgYXV0byB0cmFuc2l0aW9uSXRlcmF0b3IgPSBub2RlLnRyYW5z
aXRpb25zLmZpbmQoaSk7CisgICAgICAgIGlmICh0cmFuc2l0aW9uSXRlcmF0b3IgPT0gbm9kZS50
cmFuc2l0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgaWYgKGhhc0xvd1ZhbHVlS2V5KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKG5vZGUuaGFzRmFsbGJhY2tUcmFu
c2l0aW9uICYmIG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uID09IGxvd1ZhbHVlRGVzdGluYXRpb24p
LCAiSW5kaXZpZHVhbCB0cmFuc2l0aW9ucyB0byB0aGUgZmFsbGJhY2sgdHJhbnNpdGlvbnMgc2hv
dWxkIGhhdmUgYmVlbiBlbGltaW5hdGVkIGJ5IHRoZSBvcHRpbWl6ZXIuIik7CisKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGxhc3RIaWdoVmFsdWUgPSBpIC0gMTsKKyAgICAgICAgICAg
ICAgICBjb21waWxlQ2hlY2tGb3JSYW5nZShsb3dWYWx1ZUtleSwgbGFzdEhpZ2hWYWx1ZSwgbG93
VmFsdWVEZXN0aW5hdGlvbik7CisgICAgICAgICAgICAgICAgaGFzTG93VmFsdWVLZXkgPSBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFoYXNMb3dWYWx1ZUtleSkgeworICAgICAgICAgICAgaGFzTG93VmFsdWVLZXkg
PSB0cnVlOworICAgICAgICAgICAgbG93VmFsdWVLZXkgPSB0cmFuc2l0aW9uSXRlcmF0b3ItPmtl
eTsKKyAgICAgICAgICAgIGxvd1ZhbHVlRGVzdGluYXRpb24gPSB0cmFuc2l0aW9uSXRlcmF0b3It
PnZhbHVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25JdGVy
YXRvci0+dmFsdWUgPT0gbG93VmFsdWVEZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBsYXN0SGlnaFZhbHVlID0gaSAtIDE7
CisgICAgICAgICAgICBjb21waWxlQ2hlY2tGb3JSYW5nZShsb3dWYWx1ZUtleSwgbGFzdEhpZ2hW
YWx1ZSwgbG93VmFsdWVEZXN0aW5hdGlvbik7CisgICAgICAgICAgICBsb3dWYWx1ZUtleSA9IGk7
CisgICAgICAgICAgICBsb3dWYWx1ZURlc3RpbmF0aW9uID0gdHJhbnNpdGlvbkl0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaGFzTG93VmFsdWVLZXkpCisgICAgICAg
IGNvbXBpbGVDaGVja0ZvclJhbmdlKGxvd1ZhbHVlS2V5LCAxMjcsIGxvd1ZhbHVlRGVzdGluYXRp
b24pOworCiAgICAgaWYgKG5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKQogICAgICAgICBlbWl0
SnVtcChub2RlLmZhbGxiYWNrVHJhbnNpdGlvbik7CiAgICAgZWxzZQogICAgICAgICBlbWl0VGVy
bWluYXRlKCk7CiB9Ci0gICAgCisKK3ZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZUNo
ZWNrRm9yUmFuZ2UodWludDE2X3QgbG93VmFsdWUsIHVpbnQxNl90IGhpZ2hWYWx1ZSwgdW5zaWdu
ZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpCit7CisgICAgaWYgKGxvd1ZhbHVlID09IGhpZ2hWYWx1
ZSkKKyAgICAgICAgZW1pdENoZWNrVmFsdWUobG93VmFsdWUsIGRlc3RpbmF0aW9uTm9kZUluZGV4
KTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRDaGVja1ZhbHVlUmFuZ2UobG93VmFsdWUsIGhpZ2hW
YWx1ZSwgZGVzdGluYXRpb25Ob2RlSW5kZXgpOworfQorCiB2b2lkIERGQUJ5dGVjb2RlQ29tcGls
ZXI6OmNvbXBpbGUoKQogewogICAgIEFTU0VSVCghbV9ieXRlY29kZS5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxl
ci5oCmluZGV4IDEwNzI5N2VkNGMxNTVlMDJkYzY0MDlkNmM0N2EwZTNkZjBmYjY5NjYuLjQ2NjU5
YmZjYWQ4NmI1YWQ5YzY2MzAwZDIzMjJhNzllMWIxZWJhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmgKQEAgLTI5
LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogCiAjaW5jbHVkZSAi
REZBQnl0ZWNvZGUuaCIKLSNpbmNsdWRlICJERkFOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIERGQTsKK2Ns
YXNzIERGQU5vZGU7CiAKIGNsYXNzIERGQUJ5dGVjb2RlQ29tcGlsZXIgewogcHVibGljOgpAQCAt
NTAsMTEgKzUwLDE0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVOb2Rl
KHVuc2lnbmVkKTsKKyAgICB2b2lkIGNvbXBpbGVOb2RlVHJhbnNpdGlvbnMoY29uc3QgREZBTm9k
ZSYpOworICAgIHZvaWQgY29tcGlsZUNoZWNrRm9yUmFuZ2UodWludDE2X3QgbG93VmFsdWUsIHVp
bnQxNl90IGhpZ2hWYWx1ZSwgdW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogCiAgICAg
dm9pZCBlbWl0QXBwZW5kQWN0aW9uKHVuc2lnbmVkKTsKICAgICB2b2lkIGVtaXRUZXN0RmxhZ3NB
bmRBcHBlbmRBY3Rpb24odWludDE2X3QgZmxhZ3MsIHVuc2lnbmVkKTsKICAgICB2b2lkIGVtaXRK
dW1wKHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZUluZGV4KTsKICAgICB2b2lkIGVtaXRDaGVja1Zh
bHVlKHVpbnQ4X3QgdmFsdWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZUluZGV4KTsKKyAgICB2
b2lkIGVtaXRDaGVja1ZhbHVlUmFuZ2UodWludDhfdCBsb3dWYWx1ZSwgdWludDhfdCBoaWdoVmFs
dWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZUluZGV4KTsKICAgICB2b2lkIGVtaXRUZXJtaW5h
dGUoKTsKIAogICAgIFZlY3RvcjxERkFCeXRlY29kZT4mIG1fYnl0ZWNvZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IDA3M2FlNjQ2MGEwZTZlMDY3MmViMjIyZTc1OGVmYWVmYTc5NDg3Mjku
LmI0NWM3MWY2ZTBmODVjMjdlNmU2NzNjYWUyODRmY2ZjN2IwZWZiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIuY3BwCkBAIC03Myw2ICs3MywyMiBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rp
b25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAg
ICAgICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVu
dHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZSk7CiAgICAgICAgICAgICBicmVh
azsKIAorICAgICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5n
ZTogeworICAgICAgICAgICAgaWYgKHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nKQorICAgICAg
ICAgICAgICAgIHJldHVybiBhY3Rpb25zOworCisgICAgICAgICAgICBjaGFyIGNoYXJhY3RlciA9
IHVybFt1cmxJbmRleF07CisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXpl
b2YoREZBQnl0ZWNvZGUpKQorICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRz
PHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyICsg
c2l6ZW9mKERGQUJ5dGVjb2RlKSArIHNpemVvZih1aW50OF90KSkpIHsKKyAgICAgICAgICAgICAg
ICBwcm9ncmFtQ291bnRlciA9IGdldEJpdHM8dW5zaWduZWQ+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNv
ZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlKSArIHNpemVvZih1
aW50OF90KSArIHNpemVvZih1aW50OF90KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0
ZXIpCisgICAgICAgICAgICAgICAgICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB1cmxJbmRleCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRn
ZSBpbiB0aGUgREZBLgorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcHJvZ3Jh
bUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXA6CiAgICAgICAgICAg
ICBpZiAoIXVybFt1cmxJbmRleF0gfHwgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTkZBLmNwcAppbmRleCA3Y2YyNjExNDljNzAyOWQxMmU1NjZjMDk4MTg5NzQ0NjJmNDEzOTcy
Li45ZWFhMzBiNTlhM2FkNWNjOTcwZjIxNjZkNzZmNDkxNjkyNzA4NWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBORkE6
OmFkZFRyYW5zaXRpb25zT25BbnlDaGFyYWN0ZXIodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8p
CiAKIHZvaWQgTkZBOjpzZXRGaW5hbCh1bnNpZ25lZCBub2RlLCB1aW50NjRfdCBydWxlSWQpCiB7
Ci0gICAgQVNTRVJUKCFtX25vZGVzW25vZGVdLmZpbmFsUnVsZUlkcy5jb250YWlucyhydWxlSWQp
KTsKLSAgICBtX25vZGVzW25vZGVdLmZpbmFsUnVsZUlkcy5hcHBlbmQocnVsZUlkKTsKKyAgICBp
ZiAoIW1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmNvbnRhaW5zKHJ1bGVJZCkpCisgICAgICAg
IG1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmFwcGVuZChydWxlSWQpOwogfQogCiB1bnNpZ25l
ZCBORkE6OmdyYXBoU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ORkFUb0RGQS5jcHAKaW5kZXggZTkxODFjNWQ2ZTk3YTY4YTY2ZjM3YjFjZTQzMjJiZjY5
MDc2ZWNkNy4uMDAyMWI5ZDgwMGVmM2EwYjZiN2U3MTYwYmM0ZWZjMTNmZjYzNDE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAtMzM4LDYg
KzMzOCw0NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBnZXRPckNyZWF0ZURGQU5v
ZGUoY29uc3QgTm9kZUlkU2V0JiBuZmFOb2RlU2V0LCBjbwogICAgIHJldHVybiB1bmlxdWVOb2Rl
SWRBZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKS0+bV9kZmFOb2RlSWQ7CiB9CiAKK3N0YXRpYyB2
b2lkIHNpbXBsaWZ5VHJhbnNpdGlvbnMoVmVjdG9yPERGQU5vZGU+JiBkZmFHcmFwaCkKK3sKKyAg
ICBmb3IgKERGQU5vZGUmIGRmYU5vZGUgOiBkZmFHcmFwaCkgeworICAgICAgICBpZiAoIWRmYU5v
ZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uICYmIGRmYU5vZGUudHJhbnNpdGlvbnMuc2l6ZSgpID49
IDEyNikgeworICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdldCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJlc3RUYXJnZXRT
Y29yZSA9IDA7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCB1bnNpZ25lZCwgRGVmYXVs
dEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gdGFyZ2V0SGlzdG9ncmFtOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
IHRyYW5zaXRpb24gOiBkZmFOb2RlLnRyYW5zaXRpb25zKSB7CisgICAgICAgICAgICAgICAgaWYg
KCF0cmFuc2l0aW9uLmtleSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uVGFyZ2V0ID0gdHJhbnNpdGlvbi52YWx1ZTsK
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHRhcmdldEhpc3RvZ3JhbS5hZGQodHJh
bnNpdGlvblRhcmdldCwgMSk7CisgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOwor
CisgICAgICAgICAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPiBiZXN0VGFy
Z2V0U2NvcmUpIHsKKyAgICAgICAgICAgICAgICAgICAgYmVzdFRhcmdldFNjb3JlID0gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgYmVzdFRhcmdldCA9IHRy
YW5zaXRpb25UYXJnZXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZXN0VGFyZ2V0U2NvcmUsICJUaGVyZSBzaG91bGQg
YmUgYSBsaXN0IG9uZSB2YWxpZCB0YXJnZXQgc2luY2UgaGF2aW5nIHRyYW5zaXRpb25zIGlzIGEg
cHJlY29uZGl0aW9uIHRvIGVudGVyIHRoaXMgcGF0aC4iKTsKKworICAgICAgICAgICAgZGZhTm9k
ZS5oYXNGYWxsYmFja1RyYW5zaXRpb24gPSB0cnVlOworICAgICAgICAgICAgZGZhTm9kZS5mYWxs
YmFja1RyYW5zaXRpb24gPSBiZXN0VGFyZ2V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRm
YU5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDE2
X3QsIDEyOD4ga2V5czsKKyAgICAgICAgICAgIERGQU5vZGVUcmFuc2l0aW9ucyYgdHJhbnNpdGlv
bnMgPSBkZmFOb2RlLnRyYW5zaXRpb25zOworICAgICAgICAgICAgY29weUtleXNUb1ZlY3Rvcih0
cmFuc2l0aW9ucywga2V5cyk7CisKKyAgICAgICAgICAgIGZvciAodWludDE2X3Qga2V5IDoga2V5
cykgeworICAgICAgICAgICAgICAgIGF1dG8gdHJhbnNpdGlvbkl0ZXJhdG9yID0gdHJhbnNpdGlv
bnMuZmluZChrZXkpOworICAgICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uSXRlcmF0b3ItPnZh
bHVlID09IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICB0
cmFuc2l0aW9ucy5yZW1vdmUodHJhbnNpdGlvbkl0ZXJhdG9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwogREZBIE5GQVRvREZBOjpjb252ZXJ0KE5GQSYgbmZhKQogewog
ICAgIFZlY3RvcjxORkFOb2RlPiYgbmZhR3JhcGggPSBuZmEubV9ub2RlczsKQEAgLTM4Nyw2ICs0
MjgsNyBAQCBERkEgTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiBuZmEpCiAgICAgICAgIH0KICAgICB9
IHdoaWxlICghdW5wcm9jZXNzZWROb2Rlcy5pc0VtcHR5KCkpOwogCisgICAgc2ltcGxpZnlUcmFu
c2l0aW9ucyhkZmFHcmFwaCk7CiAgICAgcmV0dXJuIERGQShXVEY6Om1vdmUoZGZhR3JhcGgpLCAw
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGY0Zjg2NTNhZWU5NDU0NGNlZGQ5YmRhNWE5ODM3YzA1YzczMzc3NmUuLjI1M2IxOTllNWIw
OTIwMWNjYWE2YTQ1MTk2ZmY0ZDAzMjQzNTc3MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMy0xNiAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBDb21waWxlIGNo
YXJhY3RlciByYW5nZXMgdGFyZ2V0aW5nIHRoZSBzYW1lIHN0YXRlIGFzIHJhbmdlIGNoZWNrIGlu
IHRoZSBieXRlY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyNzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxNS0wMy0xMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFdlYktpdCB0
ZXN0IGluZnJhc3RydWN0dXJlIHNob3VsZCBhdXRvbWF0ZSB0aGUgcHJvY2VzcyBvZiBjbG9uaW5n
IFczQyB0ZXN0IHN1aXRlIGFuZCBpbXBvcnRpbmcgdGVzdHMgZnJvbSBpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAK
aW5kZXggYzYzMDdjN2RlMDVmODZhNTE2NGE0MTU2NDU0OTdiNjc3MWIxYTNmMi4uZmNkZTE1OTYx
ZWM1ZTllMmZlZTQwNmQwZTc3NTZlODFmOTIzMDczOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0xMjIs
NiArMTIyLDU2IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQmFzaWMpCiAgICAgdGVz
dFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKIH0KIAor
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBSYW5nZUJhc2ljKQoreworICAgIGNvbnN0IGNo
YXIqIHJhbmdlQmFzaWNGaWx0ZXIgPSAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qd1swLTldY1wiLCBcInVybC1maWx0ZXIt
aXMtY2FzZS1zZW5zaXRpdmVcIjp0cnVlfX0se1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2st
Y29va2llc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKltBLUhdW2Etel1ja29c
IiwgXCJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlXCI6dHJ1ZX19XSI7CisgICAgYXV0byBl
eHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyYW5nZUJh
c2ljRmlsdGVyKTsKKyAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAgIENvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAgICBiYWNr
ZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oIlBhdHRlcm5OZXN0ZWRHcm91cHNGaWx0ZXIiLCBleHRl
bnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL3czYy5vcmciKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIncy
YzovL3doYXR3Zy5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2Nr
TG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vd2Via2l0Lm9yZy93MGMiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHA6Ly93ZWJraXQub3JnL3dhYyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3dBYyIpLCB7IH0pOwor
CisgICAgLy8gTm90ZTogVVJMIHBhcnNpbmcgYW5kIGNhbm9uaWNhbGl6YXRpb24gbG93ZXJjYXNl
IHRoZSBzY2hlbWUgYW5kIGhvc3RuYW1lLgorICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoIkFhY2tvOi8vd2Via2l0Lm9yZyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImFhY2tvOi8vd2Via2l0Lm9yZyIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6
Ly9nQ2Nrby5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL2djY2tvLm9yZy8iKSwgeyB9KTsKKworICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL0dlY2tvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrQ29va2llcyB9KTsKKyAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9y
Zy9nZWNrbyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL0dFY2tvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250
ZW50RXh0ZW5zaW9uVGVzdCwgUmFuZ2VFeGNsdXNpb25HZW5lcmF0aW5nVW5pdmVyc2FsVHJhbnNp
dGlvbikKK3sKKyAgICAvLyBUcmFuc2l0aW9uIG9mIHRoZSB0eXBlIChbXlhdWCkgZWZmaWN0aXZl
bHkgdHJhbnNpdGlvbiBvbiBldmVyeSBpbnB1dC4KKyAgICBjb25zdCBjaGFyKiByYW5nZUV4Y2x1
c2lvbkdlbmVyYXRpbmdVbml2ZXJzYWxUcmFuc2l0aW9uRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKlteYV0r
YWZvb2JhclwifX1dIjsKKyAgICBhdXRvIGV4dGVuc2lvbkRhdGEgPSBDb250ZW50RXh0ZW5zaW9u
czo6Y29tcGlsZVJ1bGVMaXN0KHJhbmdlRXhjbHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRyYW5z
aXRpb25GaWx0ZXIpOworICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRl
bnRFeHRlbnNpb246OmNyZWF0ZShXVEY6Om1vdmUoZXh0ZW5zaW9uRGF0YSkpOworCisgICAgQ29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCBiYWNrZW5kOworICAgIGJh
Y2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbigiUGF0dGVybk5lc3RlZEdyb3Vwc0ZpbHRlciIsIGV4
dGVuc2lvbik7CisKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vdzNjLm9yZyIpLCB7IH0pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcvZm9vYmFmb29iYXIiKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnL2Zvb2JhcmZvb2JhciIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHA6Ly93M2Mub3JnL0ZPT0JBRk9PQkFSIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vdzNjLm9yZy9GT09CQVJGT09CQVIiKSwgeyB9KTsKKworICAgIC8vIFRo
ZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAiYSIgcHJlZml4IGNhbm5vdCBiZSBhbm90aGVyICJhIi4K
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vdzNj
Lm9yZy9hYWZvb2JhciIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnL0FhZm9vYmFyIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcvYUFmb29i
YXIiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vdzNjLm9yZy9BQWZvb2JhciIpLCB7IH0pOworfQorCiBjb25zdCBjaGFyKiBwYXR0
ZXJuc1N0YXJ0aW5nV2l0aEdyb3VwRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoaHR0cDovL3doYXR3Z1xcXFwu
b3JnLyk/d2Via2l0XDEzNFwxMzQub3JnXCJ9fV0iOwogCiBURVNUX0YoQ29udGVudEV4dGVuc2lv
blRlc3QsIFBhdHRlcm5TdGFydGluZ1dpdGhHcm91cCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248793</attachid>
            <date>2015-03-16 20:24:28 -0700</date>
            <delta_ts>2015-03-16 20:39:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142759-20150316202358.patch</filename>
            <type>text/plain</type>
            <size>18676</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU5ZDYyYjA4MGRmMTgw
MmJlZTE4ZWU5Mjk4ZmU4ZGIwZmJmNjBmMS4uY2QyMjkzYzY3NDI4NWNlYzk0YWQ2NzMzZDIxZWVl
MGQ0OWUwMDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTAzLTE2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGUgY2hh
cmFjdGVyIHJhbmdlcyB0YXJnZXRpbmcgdGhlIHNhbWUgc3RhdGUgYXMgcmFuZ2UgY2hlY2sgaW4g
dGhlIGJ5dGVjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDI3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2aW91c2x5LCBjaGFyYWN0ZXIgcmFuZ2VzIHdvdWxkIGJlIGNvbXBpbGVkIGFzIG1h
bnkgaW5kaXZpZHVhbCBjaGFyYWN0ZXIgY2hlY2tzLgorICAgICAgICBGb3IgZXhhbXBsZSwgYSB0
cmFuc2l0aW9uIG9uICJbYS16XSIgd291bGQgZG8gMjYgY2hhcmFjdGVyIGNoZWNrcyArIGp1bXAs
IHdoaWNoIGxlYWRzCisgICAgICAgIHRvIGVub3Jtb3VzIG1hdGNoaW5lcy4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIHdlIGZpbmQgdGhlIHJhbmdlcyBhdCBsb3dlcmluZyB0aW1lIGFuZCBn
ZW5lcmF0ZSBhIHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICBmb3IgdGhlbTogIkNoZWNrVmFs
dWVSYW5nZSIuIFRoaXMgaGVscHMgbWFraW5nIHRoZSBtYWNoaW5lIGRlbnNlciB3aGVuIHRoZSBp
bnB1dAorICAgICAgICB1c2UgY2hhcmFjdGVyIHNldHMuCisKKyAgICAgICAgVGhlIHNlY29uZCBw
YXJ0IG9mIHRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB0cmFu
c2l0aW9ucyBvdXQgb2YKKyAgICAgICAgYSBzdGF0ZSBjb3ZlciB0aGUgZW50aXJlIGFscGhhYmV0
LiBJbiB0aGF0IGNhc2UsIHdlIGNyZWF0ZSBhIGZhbGxiYWNrIHRyYW5zaXRpb24KKyAgICAgICAg
b24gdGhlIGZseSBhbmQgcmVtb3ZlIGFsbCB0aGUgcmFuZ2VzIG1hZGUgdXNlbGVzcy4KKyAgICAg
ICAgVGhhdCBjYXNlIGlzIGNvbW1vbiB3aGVuIHJhbmdlcyBhcmUgdXNlZCB3aXRoIGludmVyc2Ug
Y2hhcmFjdGVyIHNldCAoZS5nLiBbXmFdK2EpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpp
bnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZVJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpjb21w
aWxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZUNoZWNrRm9yUmFu
Z2UpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaDoK
KyAgICAgICAgRXh0ZW5kIHRoZSBjb21waWxlciB0byBkZXRlY3QgcmFuZ2VzIGFuZCBsb3dlciB0
aGVtIGFzIENoZWNrVmFsdWVSYW5nZS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIFJhbmdl
IGNoZWNrcyBpbiB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6c2V0
RmluYWwpOgorICAgICAgICBUaGlzIGFzc2VydGlvbiBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGgg
dGhlIGN1cnJlbnQgY29kZWJhc2UuIEFjdGlvbnMgYXJlICJjb21wcmVzc2VkIiwKKyAgICAgICAg
aXQgaXMgcG9zc2libGUgdG8gaGF2ZSB0d28gcGF0dGVybnMgd2l0aCB0aGUgc2FtZSBhY3Rpb24u
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2ltcGxpZnlUcmFuc2l0aW9ucyk6CisgICAgICAg
IEEgdmVyeSBzaW1wbGUgREZBIG9wdGltaXphdGlvbiBmdW5jdGlvbjogaXQgb25seSByZWR1Y2Ug
dGhlIHN0cmVuZ3RoIG9mIHJhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKwogMjAxNS0wMy0xMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKaW5kZXggNjMxNDQ0Y2ZhNDlkNjM0ZTBjZDg5NDNhZDQxMjgzZjY1ZGU5ZDA5Ny4u
YjcxNmMyNTYwNzZiZWNlYzNmZGE2ODBhMzc5YzI3Y2Q1YWViZDFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC00MSw2ICs0MSwxMiBA
QCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICAvLyBU
aGUgaW5kZXggdG8ganVtcCB0byBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbCAoNCBieXRlcykuCiAg
ICAgQ2hlY2tWYWx1ZSwKIAorICAgIC8vIEp1bXAgdG8gYW4gb2Zmc2V0IGlmIHRoZSBpbnB1dCB2
YWx1ZSBpcyB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLgorICAgIC8vIFRoZSBsb3dlciB2YWx1ZSAo
MSBieXRlKS4KKyAgICAvLyBUaGUgaGlnaGVyIHZhbHVlICgxIGJ5dGUpLgorICAgIC8vIFRoZSBp
bmRleCB0byBqdW1wIHRvIGlmIHRoZSB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgKDQgYnl0ZXMpLgor
ICAgIENoZWNrVmFsdWVSYW5nZSwKKwogICAgIC8vIEFwcGVuZEFjdGlvbiBoYXMgb25lIGFyZ3Vt
ZW50OgogICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5kICg0IGJ5dGVzKS4KICAgICBBcHBlbmRB
Y3Rpb24sCkBAIC02Myw2ICs2OSw4IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGluc3RydWN0aW9u
U2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjCiAgICAgc3dp
dGNoIChpbnN0cnVjdGlvbikgewogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hl
Y2tWYWx1ZToKICAgICAgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IHNpemVvZih1aW50OF90KSArIHNpemVvZih1bnNpZ25lZCk7CisgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2U6CisgICAgICAgIHJldHVybiBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCkgKyBzaXplb2YodWludDhfdCkg
KyBzaXplb2YodW5zaWduZWQpOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24p
ICsgc2l6ZW9mKHVuc2lnbmVkKTsKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRl
c3RGbGFnc0FuZEFwcGVuZEFjdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKaW5kZXggMGE2ODZjNmQ3Y2Zk
YmVmNTZiNzNmMjUzY2NiMWZhMmViYjBkMTJmNy4uYTI3OTQzYzc3N2E1ZTBkNmY5MGEzMWMwZDIx
ZTEwZmZmMzRlNWJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCiAjaW5jbHVkZSAiREZBLmgiCisjaW5jbHVk
ZSAiREZBTm9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC03Niw2ICs3Nywx
OCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlKHVpbnQ4X3QgdmFs
dWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZQogICAgIGFwcGVuZDx1bnNpZ25lZD4obV9ieXRl
Y29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBsaW5raW5nLgogfQogCit2
b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlUmFuZ2UodWludDhfdCBsb3dW
YWx1ZSwgdWludDhfdCBoaWdoVmFsdWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZUluZGV4KQor
eworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG93VmFsdWUgIT0gaGlnaFZhbHVlLCAiQSBzaW5n
bGUgdmFsdWUgY2hlY2sgc2hvdWxkIGJlIGVtaXR0ZWQgZm9yIHNpbmdsZSB2YWx1ZXMuIik7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShsb3dWYWx1ZSA8IGhpZ2hWYWx1ZSwgIlRoZSBpbnN0cnVj
dGlvbiBzZW1hbnRpYyBpbXBvc2UgbG93VmFsdWUgaXMgc21hbGxlciB0aGFuIGhpZ2hWYWx1ZS4i
KTsKKworICAgIGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0aW9uPihtX2J5dGVjb2RlLCBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2UpOworICAgIGFwcGVuZDx1aW50OF90
PihtX2J5dGVjb2RlLCBsb3dWYWx1ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUs
IGhpZ2hWYWx1ZSk7CisgICAgbV9saW5rUmVjb3Jkcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobV9i
eXRlY29kZS5zaXplKCksIGRlc3RpbmF0aW9uTm9kZUluZGV4KSk7CisgICAgYXBwZW5kPHVuc2ln
bmVkPihtX2J5dGVjb2RlLCAwKTsKK30KKwogdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0
VGVybWluYXRlKCkKIHsKICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRl
Y29kZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlKTsKQEAgLTk1LDE2ICsxMDgs
NTkgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlTm9kZSh1bnNpZ25lZCBpbmRl
eCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW1pdEFwcGVuZEFjdGlvbihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYWN0aW9uKSk7CiAgICAgfQotICAgIAotICAgIGZvciAoY29uc3QgYXV0byYg
dHJhbnNpdGlvbiA6IG5vZGUudHJhbnNpdGlvbnMpCi0gICAgICAgIGVtaXRDaGVja1ZhbHVlKHRy
YW5zaXRpb24ua2V5LCB0cmFuc2l0aW9uLnZhbHVlKTsKLSAgICAKKyAgICBjb21waWxlTm9kZVRy
YW5zaXRpb25zKG5vZGUpOworfQorCit2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVO
b2RlVHJhbnNpdGlvbnMoY29uc3QgREZBTm9kZSYgbm9kZSkKK3sKKyAgICBib29sIGhhc3Jhbmdl
TWluID0gZmFsc2U7CisgICAgdWludDE2X3QgcmFuZ2VNaW47CisgICAgdW5zaWduZWQgcmFuZ2VE
ZXN0aW5hdGlvbiA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGNoYXIgaSA9IDA7IGkgPCAxMjg7
ICsraSkgeworICAgICAgICBhdXRvIHRyYW5zaXRpb25JdGVyYXRvciA9IG5vZGUudHJhbnNpdGlv
bnMuZmluZChpKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb25JdGVyYXRvciA9PSBub2RlLnRyYW5z
aXRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBpZiAoaGFzcmFuZ2VNaW4pIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24g
JiYgbm9kZS5mYWxsYmFja1RyYW5zaXRpb24gPT0gcmFuZ2VEZXN0aW5hdGlvbiksICJJbmRpdmlk
dWFsIHRyYW5zaXRpb25zIHRvIHRoZSBmYWxsYmFjayB0cmFuc2l0aW9ucyBzaG91bGQgaGF2ZSBi
ZWVuIGVsaW1pbmF0ZWQgYnkgdGhlIG9wdGltaXplci4iKTsKKworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbGFzdEhpZ2hWYWx1ZSA9IGkgLSAxOworICAgICAgICAgICAgICAgIGNvbXBp
bGVDaGVja0ZvclJhbmdlKHJhbmdlTWluLCBsYXN0SGlnaFZhbHVlLCByYW5nZURlc3RpbmF0aW9u
KTsKKyAgICAgICAgICAgICAgICBoYXNyYW5nZU1pbiA9IGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc3Jhbmdl
TWluKSB7CisgICAgICAgICAgICBoYXNyYW5nZU1pbiA9IHRydWU7CisgICAgICAgICAgICByYW5n
ZU1pbiA9IHRyYW5zaXRpb25JdGVyYXRvci0+a2V5OworICAgICAgICAgICAgcmFuZ2VEZXN0aW5h
dGlvbiA9IHRyYW5zaXRpb25JdGVyYXRvci0+dmFsdWU7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9yLT52YWx1ZSA9PSByYW5nZURlc3RpbmF0aW9u
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGxhc3RIaWdoVmFsdWUgPSBpIC0gMTsKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0ZvclJhbmdl
KHJhbmdlTWluLCBsYXN0SGlnaFZhbHVlLCByYW5nZURlc3RpbmF0aW9uKTsKKyAgICAgICAgICAg
IHJhbmdlTWluID0gaTsKKyAgICAgICAgICAgIHJhbmdlRGVzdGluYXRpb24gPSB0cmFuc2l0aW9u
SXRlcmF0b3ItPnZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChoYXNyYW5nZU1pbikK
KyAgICAgICAgY29tcGlsZUNoZWNrRm9yUmFuZ2UocmFuZ2VNaW4sIDEyNywgcmFuZ2VEZXN0aW5h
dGlvbik7CisKICAgICBpZiAobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24pCiAgICAgICAgIGVt
aXRKdW1wKG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uKTsKICAgICBlbHNlCiAgICAgICAgIGVtaXRU
ZXJtaW5hdGUoKTsKIH0KLSAgICAKKwordm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxl
Q2hlY2tGb3JSYW5nZSh1aW50MTZfdCBsb3dWYWx1ZSwgdWludDE2X3QgaGlnaFZhbHVlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCkKK3sKKyAgICBpZiAobG93VmFsdWUgPT0gaGlnaFZh
bHVlKQorICAgICAgICBlbWl0Q2hlY2tWYWx1ZShsb3dWYWx1ZSwgZGVzdGluYXRpb25Ob2RlSW5k
ZXgpOworICAgIGVsc2UKKyAgICAgICAgZW1pdENoZWNrVmFsdWVSYW5nZShsb3dWYWx1ZSwgaGln
aFZhbHVlLCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7Cit9CisKIHZvaWQgREZBQnl0ZWNvZGVDb21w
aWxlcjo6Y29tcGlsZSgpCiB7CiAgICAgQVNTRVJUKCFtX2J5dGVjb2RlLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmgKaW5kZXggMTA3Mjk3ZWQ0YzE1NWUwMmRjNjQwOWQ2YzQ3YTBlM2RmMGZiNjk2Ni4uNDY2
NTliZmNhZDg2YjVhZDljNjYzMDBkMjMyMmE3OWUxYjFlYmFhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaApAQCAt
MjksNyArMjksNiBAQAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKICNpbmNsdWRl
ICJERkFCeXRlY29kZS5oIgotI2luY2x1ZGUgIkRGQU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAogY2xhc3MgREZBOwor
Y2xhc3MgREZBTm9kZTsKIAogY2xhc3MgREZBQnl0ZWNvZGVDb21waWxlciB7CiBwdWJsaWM6CkBA
IC01MCwxMSArNTAsMTQgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5v
ZGUodW5zaWduZWQpOworICAgIHZvaWQgY29tcGlsZU5vZGVUcmFuc2l0aW9ucyhjb25zdCBERkFO
b2RlJik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tGb3JSYW5nZSh1aW50MTZfdCBsb3dWYWx1ZSwg
dWludDE2X3QgaGlnaFZhbHVlLCB1bnNpZ25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAKICAg
ICB2b2lkIGVtaXRBcHBlbmRBY3Rpb24odW5zaWduZWQpOwogICAgIHZvaWQgZW1pdFRlc3RGbGFn
c0FuZEFwcGVuZEFjdGlvbih1aW50MTZfdCBmbGFncywgdW5zaWduZWQpOwogICAgIHZvaWQgZW1p
dEp1bXAodW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogICAgIHZvaWQgZW1pdENoZWNr
VmFsdWUodWludDhfdCB2YWx1ZSwgdW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOworICAg
IHZvaWQgZW1pdENoZWNrVmFsdWVSYW5nZSh1aW50OF90IGxvd1ZhbHVlLCB1aW50OF90IGhpZ2hW
YWx1ZSwgdW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogICAgIHZvaWQgZW1pdFRlcm1p
bmF0ZSgpOwogCiAgICAgVmVjdG9yPERGQUJ5dGVjb2RlPiYgbV9ieXRlY29kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5jcHAKaW5kZXggMDczYWU2NDYwYTBlNmUwNjcyZWIyMjJlNzU4ZWZhZWZhNzk0ODcy
OS4uYjQ1YzcxZjZlMGY4NWMyN2U2ZTY3M2NhZTI4NGZjZmM3YjBlZmI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5jcHAKQEAgLTczLDYgKzczLDIyIEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFj
dGlvbnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAg
ICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3Vt
ZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZVJh
bmdlOiB7CisgICAgICAgICAgICBpZiAodXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CisKKyAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVy
ID0gdXJsW3VybEluZGV4XTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPj0gZ2V0Qml0czx1
aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNp
emVvZihERkFCeXRlY29kZSkpCisgICAgICAgICAgICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJp
dHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIg
KyBzaXplb2YoREZBQnl0ZWNvZGUpICsgc2l6ZW9mKHVpbnQ4X3QpKSkgeworICAgICAgICAgICAg
ICAgIHByb2dyYW1Db3VudGVyID0gZ2V0Qml0czx1bnNpZ25lZD4obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGUpICsgc2l6ZW9m
KHVpbnQ4X3QpICsgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNoYXJh
Y3RlcikKKyAgICAgICAgICAgICAgICAgICAgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0
cnVlOworICAgICAgICAgICAgICAgIHVybEluZGV4Kys7IC8vIFRoaXMgcmVwcmVzZW50cyBhbiBl
ZGdlIGluIHRoZSBERkEuCisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwcm9n
cmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5nZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCiAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcDoKICAgICAgICAg
ICAgIGlmICghdXJsW3VybEluZGV4XSB8fCB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmluZykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ORkEuY3BwCmluZGV4IDdjZjI2MTE0OWM3MDI5ZDEyZTU2NmMwOTgxODk3NDQ2MmY0MTM5
NzIuLjllYWEzMGI1OWEzYWQ1Y2M5NzBmMjE2NmQ3NmY0OTE2OTI3MDg1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApAQCAtODMsOCArODMsOCBAQCB2b2lkIE5G
QTo6YWRkVHJhbnNpdGlvbnNPbkFueUNoYXJhY3Rlcih1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bykKIAogdm9pZCBORkE6OnNldEZpbmFsKHVuc2lnbmVkIG5vZGUsIHVpbnQ2NF90IHJ1bGVJZCkK
IHsKLSAgICBBU1NFUlQoIW1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmNvbnRhaW5zKHJ1bGVJ
ZCkpOwotICAgIG1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmFwcGVuZChydWxlSWQpOworICAg
IGlmICghbV9ub2Rlc1tub2RlXS5maW5hbFJ1bGVJZHMuY29udGFpbnMocnVsZUlkKSkKKyAgICAg
ICAgbV9ub2Rlc1tub2RlXS5maW5hbFJ1bGVJZHMuYXBwZW5kKHJ1bGVJZCk7CiB9CiAKIHVuc2ln
bmVkIE5GQTo6Z3JhcGhTaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQVRvREZBLmNwcAppbmRleCBlOTE4MWM1ZDZlOTdhNjhhNjZmMzdiMWNlNDMyMmJm
NjkwNzZlY2Q3Li5mMmRlOGVmNDM3NzQ1YjM4OGJjOTk5N2M5MDYyOTNjYjY1NzkxYzlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0zMzgs
NiArMzM4LDQ3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZB
Tm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5vZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1ZU5v
ZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpLT5tX2RmYU5vZGVJZDsKIH0KIAorc3RhdGlj
IHZvaWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhWZWN0b3I8REZBTm9kZT4mIGRmYUdyYXBoKQorewor
ICAgIGZvciAoREZBTm9kZSYgZGZhTm9kZSA6IGRmYUdyYXBoKSB7CisgICAgICAgIGlmICghZGZh
Tm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24gJiYgZGZhTm9kZS50cmFuc2l0aW9ucy5zaXplKCkg
Pj0gMTI2KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBiZXN0VGFyZ2V0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdl
dFNjb3JlID0gMDsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PiB0YXJnZXRIaXN0b2dyYW07CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8gdHJhbnNpdGlvbiA6IGRmYU5vZGUudHJhbnNpdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRyYW5zaXRpb24ua2V5KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHRyYW5zaXRpb25UYXJnZXQgPSB0cmFuc2l0aW9uLnZhbHVl
OworICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFyZ2V0SGlzdG9ncmFtLmFkZCh0
cmFuc2l0aW9uVGFyZ2V0LCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7
CisKKyAgICAgICAgICAgICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA+IGJlc3RU
YXJnZXRTY29yZSkgeworICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0U2NvcmUgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0ID0g
dHJhbnNpdGlvblRhcmdldDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlc3RUYXJnZXRTY29yZSwgIlRoZXJlIHNob3Vs
ZCBiZSBhdCBsZWFzdCBvbmUgdmFsaWQgdGFyZ2V0IHNpbmNlIGhhdmluZyB0cmFuc2l0aW9ucyBp
cyBhIHByZWNvbmRpdGlvbiB0byBlbnRlciB0aGlzIHBhdGguIik7CisKKyAgICAgICAgICAgIGRm
YU5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGRmYU5vZGUu
ZmFsbGJhY2tUcmFuc2l0aW9uID0gYmVzdFRhcmdldDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbikgeworICAgICAgICAgICAgVmVjdG9yPHVp
bnQxNl90LCAxMjg+IGtleXM7CisgICAgICAgICAgICBERkFOb2RlVHJhbnNpdGlvbnMmIHRyYW5z
aXRpb25zID0gZGZhTm9kZS50cmFuc2l0aW9uczsKKyAgICAgICAgICAgIGNvcHlLZXlzVG9WZWN0
b3IodHJhbnNpdGlvbnMsIGtleXMpOworCisgICAgICAgICAgICBmb3IgKHVpbnQxNl90IGtleSA6
IGtleXMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25JdGVyYXRvciA9IHRyYW5z
aXRpb25zLmZpbmQoa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9y
LT52YWx1ZSA9PSBkZmFOb2RlLmZhbGxiYWNrVHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNpdGlvbnMucmVtb3ZlKHRyYW5zaXRpb25JdGVyYXRvcik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKIERGQSBORkFUb0RGQTo6Y29udmVydChORkEmIG5mYSkK
IHsKICAgICBWZWN0b3I8TkZBTm9kZT4mIG5mYUdyYXBoID0gbmZhLm1fbm9kZXM7CkBAIC0zODcs
NiArNDI4LDcgQEAgREZBIE5GQVRvREZBOjpjb252ZXJ0KE5GQSYgbmZhKQogICAgICAgICB9CiAg
ICAgfSB3aGlsZSAoIXVucHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKTsKIAorICAgIHNpbXBsaWZ5
VHJhbnNpdGlvbnMoZGZhR3JhcGgpOwogICAgIHJldHVybiBERkEoV1RGOjptb3ZlKGRmYUdyYXBo
KSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNGY4NjUzYWVlOTQ1NDRjZWRkOWJkYTVhOTgzN2MwNWM3MzM3NzZlLi4yNTNiMTk5
ZTViMDkyMDFjY2FhNmE0NTE5NmZmNGQwMzI0MzU3NzMxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDMtMTYg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcGls
ZSBjaGFyYWN0ZXIgcmFuZ2VzIHRhcmdldGluZyB0aGUgc2FtZSBzdGF0ZSBhcyByYW5nZSBjaGVj
ayBpbiB0aGUgYnl0ZWNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0Mjc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25z
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTUtMDMtMTMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSBzaG91bGQgYXV0b21hdGUgdGhlIHByb2Nlc3Mgb2YgY2xv
bmluZyBXM0MgdGVzdCBzdWl0ZSBhbmQgaW1wb3J0aW5nIHRlc3RzIGZyb20gaXQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwCmluZGV4IGM2MzA3YzdkZTA1Zjg2YTUxNjRhNDE1NjQ1NDk3YjY3NzFiMWEzZjIuLmZjZGUx
NTk2MWVjNWU5ZTJmZWU0MDZkMGU3NzU2ZTgxZjkyMzA3MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAt
MTIyLDYgKzEyMiw1NiBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIEJhc2ljKQogICAg
IHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CiB9
CiAKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUmFuZ2VCYXNpYykKK3sKKyAgICBjb25z
dCBjaGFyKiByYW5nZUJhc2ljRmlsdGVyID0gIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKndbMC05XWNcIiwgXCJ1cmwtZmls
dGVyLWlzLWNhc2Utc2Vuc2l0aXZlXCI6dHJ1ZX19LHtcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrLWNvb2tpZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipbQS1IXVthLXpd
Y2tvXCIsIFwidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZVwiOnRydWV9fV0iOworICAgIGF1
dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QocmFu
Z2VCYXNpY0ZpbHRlcik7CisgICAgYXV0byBleHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92ZShleHRlbnNpb25EYXRhKSk7CisKKyAgICBD
b250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAg
YmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJQYXR0ZXJuTmVzdGVkR3JvdXBzRmlsdGVyIiwg
ZXh0ZW5zaW9uKTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHA6Ly93M2Mub3JnIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ3MmM6Ly93aGF0d2cub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiaHR0cDovL3dlYmtpdC5vcmcvdzBjIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy93YWMiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy93QWMiKSwgeyB9
KTsKKworICAgIC8vIE5vdGU6IFVSTCBwYXJzaW5nIGFuZCBjYW5vbmljYWxpemF0aW9uIGxvd2Vy
Y2FzZSB0aGUgc2NoZW1lIGFuZCBob3N0bmFtZS4KKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJBYWNrbzovL3dlYmtpdC5vcmciKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhYWNrbzovL3dlYmtpdC5vcmci
KSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vZ0Nja28ub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly9nY2Nrby5vcmcvIiksIHsgfSk7CisKKyAgICB0ZXN0UmVx
dWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9HZWNr
byIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXMgfSk7Cisg
ICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtp
dC5vcmcvZ2Vja28iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9HRWNrbyIpLCB7IH0pOworfQorCitURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIFJhbmdlRXhjbHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRy
YW5zaXRpb24pCit7CisgICAgLy8gVHJhbnNpdGlvbiBvZiB0aGUgdHlwZSAoW15YXVgpIGVmZmlj
dGl2ZWx5IHRyYW5zaXRpb24gb24gZXZlcnkgaW5wdXQuCisgICAgY29uc3QgY2hhciogcmFuZ2VF
eGNsdXNpb25HZW5lcmF0aW5nVW5pdmVyc2FsVHJhbnNpdGlvbkZpbHRlciA9ICJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipb
XmFdK2Fmb29iYXJcIn19XSI7CisgICAgYXV0byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVu
c2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyYW5nZUV4Y2x1c2lvbkdlbmVyYXRpbmdVbml2ZXJzYWxU
cmFuc2l0aW9uRmlsdGVyKTsKKyAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAg
IENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAg
ICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oIlBhdHRlcm5OZXN0ZWRHcm91cHNGaWx0ZXIi
LCBleHRlbnNpb24pOworCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3czYy5vcmciKSwgeyB9KTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnL2Zvb2JhZm9vYmFyIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vdzNjLm9yZy9mb29iYXJmb29i
YXIiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vdzNjLm9yZy9GT09CQUZPT0JBUiIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcvRk9PQkFSRk9PQkFSIiksIHsgfSk7CisKKyAgICAv
LyBUaGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgImEiIHByZWZpeCBjYW5ub3QgYmUgYW5vdGhlciAi
YSIuCisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L3czYy5vcmcvYWFmb29iYXIiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vdzNjLm9yZy9BYWZvb2JhciIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnL2FB
Zm9vYmFyIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3czYy5vcmcvQUFmb29iYXIiKSwgeyB9KTsKK30KKwogY29uc3QgY2hhciog
cGF0dGVybnNTdGFydGluZ1dpdGhHcm91cEZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGh0dHA6Ly93aGF0d2dc
XFxcLm9yZy8pP3dlYmtpdFwxMzRcMTM0Lm9yZ1wifX1dIjsKIAogVEVTVF9GKENvbnRlbnRFeHRl
bnNpb25UZXN0LCBQYXR0ZXJuU3RhcnRpbmdXaXRoR3JvdXApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248797</attachid>
            <date>2015-03-16 20:39:44 -0700</date>
            <delta_ts>2015-03-17 13:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142759-20150316203914.patch</filename>
            <type>text/plain</type>
            <size>20804</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU5ZDYyYjA4MGRmMTgw
MmJlZTE4ZWU5Mjk4ZmU4ZGIwZmJmNjBmMS4uY2QyMjkzYzY3NDI4NWNlYzk0YWQ2NzMzZDIxZWVl
MGQ0OWUwMDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTAzLTE2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGUgY2hh
cmFjdGVyIHJhbmdlcyB0YXJnZXRpbmcgdGhlIHNhbWUgc3RhdGUgYXMgcmFuZ2UgY2hlY2sgaW4g
dGhlIGJ5dGVjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDI3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2aW91c2x5LCBjaGFyYWN0ZXIgcmFuZ2VzIHdvdWxkIGJlIGNvbXBpbGVkIGFzIG1h
bnkgaW5kaXZpZHVhbCBjaGFyYWN0ZXIgY2hlY2tzLgorICAgICAgICBGb3IgZXhhbXBsZSwgYSB0
cmFuc2l0aW9uIG9uICJbYS16XSIgd291bGQgZG8gMjYgY2hhcmFjdGVyIGNoZWNrcyArIGp1bXAs
IHdoaWNoIGxlYWRzCisgICAgICAgIHRvIGVub3Jtb3VzIG1hdGNoaW5lcy4KKworICAgICAgICBX
aXRoIHRoaXMgcGF0Y2gsIHdlIGZpbmQgdGhlIHJhbmdlcyBhdCBsb3dlcmluZyB0aW1lIGFuZCBn
ZW5lcmF0ZSBhIHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICBmb3IgdGhlbTogIkNoZWNrVmFs
dWVSYW5nZSIuIFRoaXMgaGVscHMgbWFraW5nIHRoZSBtYWNoaW5lIGRlbnNlciB3aGVuIHRoZSBp
bnB1dAorICAgICAgICB1c2UgY2hhcmFjdGVyIHNldHMuCisKKyAgICAgICAgVGhlIHNlY29uZCBw
YXJ0IG9mIHRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB0cmFu
c2l0aW9ucyBvdXQgb2YKKyAgICAgICAgYSBzdGF0ZSBjb3ZlciB0aGUgZW50aXJlIGFscGhhYmV0
LiBJbiB0aGF0IGNhc2UsIHdlIGNyZWF0ZSBhIGZhbGxiYWNrIHRyYW5zaXRpb24KKyAgICAgICAg
b24gdGhlIGZseSBhbmQgcmVtb3ZlIGFsbCB0aGUgcmFuZ2VzIG1hZGUgdXNlbGVzcy4KKyAgICAg
ICAgVGhhdCBjYXNlIGlzIGNvbW1vbiB3aGVuIHJhbmdlcyBhcmUgdXNlZCB3aXRoIGludmVyc2Ug
Y2hhcmFjdGVyIHNldCAoZS5nLiBbXmFdK2EpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpp
bnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZVJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpjb21w
aWxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZUNoZWNrRm9yUmFu
Z2UpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaDoK
KyAgICAgICAgRXh0ZW5kIHRoZSBjb21waWxlciB0byBkZXRlY3QgcmFuZ2VzIGFuZCBsb3dlciB0
aGVtIGFzIENoZWNrVmFsdWVSYW5nZS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIFJhbmdl
IGNoZWNrcyBpbiB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9ORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6c2V0
RmluYWwpOgorICAgICAgICBUaGlzIGFzc2VydGlvbiBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGgg
dGhlIGN1cnJlbnQgY29kZWJhc2UuIEFjdGlvbnMgYXJlICJjb21wcmVzc2VkIiwKKyAgICAgICAg
aXQgaXMgcG9zc2libGUgdG8gaGF2ZSB0d28gcGF0dGVybnMgd2l0aCB0aGUgc2FtZSBhY3Rpb24u
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2ltcGxpZnlUcmFuc2l0aW9ucyk6CisgICAgICAg
IEEgdmVyeSBzaW1wbGUgREZBIG9wdGltaXphdGlvbiBmdW5jdGlvbjogaXQgb25seSByZWR1Y2Ug
dGhlIHN0cmVuZ3RoIG9mIHJhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKwogMjAxNS0wMy0xMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMg
Q01ha2Ugb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKaW5kZXggNjMxNDQ0Y2ZhNDlkNjM0ZTBjZDg5NDNhZDQxMjgzZjY1ZGU5ZDA5Ny4u
YjcxNmMyNTYwNzZiZWNlYzNmZGE2ODBhMzc5YzI3Y2Q1YWViZDFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC00MSw2ICs0MSwxMiBA
QCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICAvLyBU
aGUgaW5kZXggdG8ganVtcCB0byBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbCAoNCBieXRlcykuCiAg
ICAgQ2hlY2tWYWx1ZSwKIAorICAgIC8vIEp1bXAgdG8gYW4gb2Zmc2V0IGlmIHRoZSBpbnB1dCB2
YWx1ZSBpcyB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLgorICAgIC8vIFRoZSBsb3dlciB2YWx1ZSAo
MSBieXRlKS4KKyAgICAvLyBUaGUgaGlnaGVyIHZhbHVlICgxIGJ5dGUpLgorICAgIC8vIFRoZSBp
bmRleCB0byBqdW1wIHRvIGlmIHRoZSB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgKDQgYnl0ZXMpLgor
ICAgIENoZWNrVmFsdWVSYW5nZSwKKwogICAgIC8vIEFwcGVuZEFjdGlvbiBoYXMgb25lIGFyZ3Vt
ZW50OgogICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5kICg0IGJ5dGVzKS4KICAgICBBcHBlbmRB
Y3Rpb24sCkBAIC02Myw2ICs2OSw4IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGluc3RydWN0aW9u
U2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjCiAgICAgc3dp
dGNoIChpbnN0cnVjdGlvbikgewogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hl
Y2tWYWx1ZToKICAgICAgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IHNpemVvZih1aW50OF90KSArIHNpemVvZih1bnNpZ25lZCk7CisgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2U6CisgICAgICAgIHJldHVybiBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCkgKyBzaXplb2YodWludDhfdCkg
KyBzaXplb2YodW5zaWduZWQpOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24p
ICsgc2l6ZW9mKHVuc2lnbmVkKTsKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRl
c3RGbGFnc0FuZEFwcGVuZEFjdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKaW5kZXggMGE2ODZjNmQ3Y2Zk
YmVmNTZiNzNmMjUzY2NiMWZhMmViYjBkMTJmNy4uYTI3OTQzYzc3N2E1ZTBkNmY5MGEzMWMwZDIx
ZTEwZmZmMzRlNWJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25SdWxlLmgiCiAjaW5jbHVkZSAiREZBLmgiCisjaW5jbHVk
ZSAiREZBTm9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC03Niw2ICs3Nywx
OCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlKHVpbnQ4X3QgdmFs
dWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZQogICAgIGFwcGVuZDx1bnNpZ25lZD4obV9ieXRl
Y29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBsaW5raW5nLgogfQogCit2
b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlUmFuZ2UodWludDhfdCBsb3dW
YWx1ZSwgdWludDhfdCBoaWdoVmFsdWUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uTm9kZUluZGV4KQor
eworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG93VmFsdWUgIT0gaGlnaFZhbHVlLCAiQSBzaW5n
bGUgdmFsdWUgY2hlY2sgc2hvdWxkIGJlIGVtaXR0ZWQgZm9yIHNpbmdsZSB2YWx1ZXMuIik7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShsb3dWYWx1ZSA8IGhpZ2hWYWx1ZSwgIlRoZSBpbnN0cnVj
dGlvbiBzZW1hbnRpYyBpbXBvc2UgbG93VmFsdWUgaXMgc21hbGxlciB0aGFuIGhpZ2hWYWx1ZS4i
KTsKKworICAgIGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0aW9uPihtX2J5dGVjb2RlLCBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2UpOworICAgIGFwcGVuZDx1aW50OF90
PihtX2J5dGVjb2RlLCBsb3dWYWx1ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUs
IGhpZ2hWYWx1ZSk7CisgICAgbV9saW5rUmVjb3Jkcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobV9i
eXRlY29kZS5zaXplKCksIGRlc3RpbmF0aW9uTm9kZUluZGV4KSk7CisgICAgYXBwZW5kPHVuc2ln
bmVkPihtX2J5dGVjb2RlLCAwKTsKK30KKwogdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0
VGVybWluYXRlKCkKIHsKICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRl
Y29kZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlKTsKQEAgLTk1LDE2ICsxMDgs
NTkgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlTm9kZSh1bnNpZ25lZCBpbmRl
eCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW1pdEFwcGVuZEFjdGlvbihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYWN0aW9uKSk7CiAgICAgfQotICAgIAotICAgIGZvciAoY29uc3QgYXV0byYg
dHJhbnNpdGlvbiA6IG5vZGUudHJhbnNpdGlvbnMpCi0gICAgICAgIGVtaXRDaGVja1ZhbHVlKHRy
YW5zaXRpb24ua2V5LCB0cmFuc2l0aW9uLnZhbHVlKTsKLSAgICAKKyAgICBjb21waWxlTm9kZVRy
YW5zaXRpb25zKG5vZGUpOworfQorCit2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVO
b2RlVHJhbnNpdGlvbnMoY29uc3QgREZBTm9kZSYgbm9kZSkKK3sKKyAgICBib29sIGhhc3Jhbmdl
TWluID0gZmFsc2U7CisgICAgdWludDE2X3QgcmFuZ2VNaW47CisgICAgdW5zaWduZWQgcmFuZ2VE
ZXN0aW5hdGlvbiA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGNoYXIgaSA9IDA7IGkgPCAxMjg7
ICsraSkgeworICAgICAgICBhdXRvIHRyYW5zaXRpb25JdGVyYXRvciA9IG5vZGUudHJhbnNpdGlv
bnMuZmluZChpKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb25JdGVyYXRvciA9PSBub2RlLnRyYW5z
aXRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBpZiAoaGFzcmFuZ2VNaW4pIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24g
JiYgbm9kZS5mYWxsYmFja1RyYW5zaXRpb24gPT0gcmFuZ2VEZXN0aW5hdGlvbiksICJJbmRpdmlk
dWFsIHRyYW5zaXRpb25zIHRvIHRoZSBmYWxsYmFjayB0cmFuc2l0aW9ucyBzaG91bGQgaGF2ZSBi
ZWVuIGVsaW1pbmF0ZWQgYnkgdGhlIG9wdGltaXplci4iKTsKKworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbGFzdEhpZ2hWYWx1ZSA9IGkgLSAxOworICAgICAgICAgICAgICAgIGNvbXBp
bGVDaGVja0ZvclJhbmdlKHJhbmdlTWluLCBsYXN0SGlnaFZhbHVlLCByYW5nZURlc3RpbmF0aW9u
KTsKKyAgICAgICAgICAgICAgICBoYXNyYW5nZU1pbiA9IGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc3Jhbmdl
TWluKSB7CisgICAgICAgICAgICBoYXNyYW5nZU1pbiA9IHRydWU7CisgICAgICAgICAgICByYW5n
ZU1pbiA9IHRyYW5zaXRpb25JdGVyYXRvci0+a2V5OworICAgICAgICAgICAgcmFuZ2VEZXN0aW5h
dGlvbiA9IHRyYW5zaXRpb25JdGVyYXRvci0+dmFsdWU7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9yLT52YWx1ZSA9PSByYW5nZURlc3RpbmF0aW9u
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGxhc3RIaWdoVmFsdWUgPSBpIC0gMTsKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0ZvclJhbmdl
KHJhbmdlTWluLCBsYXN0SGlnaFZhbHVlLCByYW5nZURlc3RpbmF0aW9uKTsKKyAgICAgICAgICAg
IHJhbmdlTWluID0gaTsKKyAgICAgICAgICAgIHJhbmdlRGVzdGluYXRpb24gPSB0cmFuc2l0aW9u
SXRlcmF0b3ItPnZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChoYXNyYW5nZU1pbikK
KyAgICAgICAgY29tcGlsZUNoZWNrRm9yUmFuZ2UocmFuZ2VNaW4sIDEyNywgcmFuZ2VEZXN0aW5h
dGlvbik7CisKICAgICBpZiAobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24pCiAgICAgICAgIGVt
aXRKdW1wKG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uKTsKICAgICBlbHNlCiAgICAgICAgIGVtaXRU
ZXJtaW5hdGUoKTsKIH0KLSAgICAKKwordm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxl
Q2hlY2tGb3JSYW5nZSh1aW50MTZfdCBsb3dWYWx1ZSwgdWludDE2X3QgaGlnaFZhbHVlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCkKK3sKKyAgICBpZiAobG93VmFsdWUgPT0gaGlnaFZh
bHVlKQorICAgICAgICBlbWl0Q2hlY2tWYWx1ZShsb3dWYWx1ZSwgZGVzdGluYXRpb25Ob2RlSW5k
ZXgpOworICAgIGVsc2UKKyAgICAgICAgZW1pdENoZWNrVmFsdWVSYW5nZShsb3dWYWx1ZSwgaGln
aFZhbHVlLCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7Cit9CisKIHZvaWQgREZBQnl0ZWNvZGVDb21w
aWxlcjo6Y29tcGlsZSgpCiB7CiAgICAgQVNTRVJUKCFtX2J5dGVjb2RlLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmgKaW5kZXggMTA3Mjk3ZWQ0YzE1NWUwMmRjNjQwOWQ2YzQ3YTBlM2RmMGZiNjk2Ni4uNDY2
NTliZmNhZDg2YjVhZDljNjYzMDBkMjMyMmE3OWUxYjFlYmFhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuaApAQCAt
MjksNyArMjksNiBAQAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKICNpbmNsdWRl
ICJERkFCeXRlY29kZS5oIgotI2luY2x1ZGUgIkRGQU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAogY2xhc3MgREZBOwor
Y2xhc3MgREZBTm9kZTsKIAogY2xhc3MgREZBQnl0ZWNvZGVDb21waWxlciB7CiBwdWJsaWM6CkBA
IC01MCwxMSArNTAsMTQgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5v
ZGUodW5zaWduZWQpOworICAgIHZvaWQgY29tcGlsZU5vZGVUcmFuc2l0aW9ucyhjb25zdCBERkFO
b2RlJik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tGb3JSYW5nZSh1aW50MTZfdCBsb3dWYWx1ZSwg
dWludDE2X3QgaGlnaFZhbHVlLCB1bnNpZ25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAKICAg
ICB2b2lkIGVtaXRBcHBlbmRBY3Rpb24odW5zaWduZWQpOwogICAgIHZvaWQgZW1pdFRlc3RGbGFn
c0FuZEFwcGVuZEFjdGlvbih1aW50MTZfdCBmbGFncywgdW5zaWduZWQpOwogICAgIHZvaWQgZW1p
dEp1bXAodW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogICAgIHZvaWQgZW1pdENoZWNr
VmFsdWUodWludDhfdCB2YWx1ZSwgdW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOworICAg
IHZvaWQgZW1pdENoZWNrVmFsdWVSYW5nZSh1aW50OF90IGxvd1ZhbHVlLCB1aW50OF90IGhpZ2hW
YWx1ZSwgdW5zaWduZWQgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogICAgIHZvaWQgZW1pdFRlcm1p
bmF0ZSgpOwogCiAgICAgVmVjdG9yPERGQUJ5dGVjb2RlPiYgbV9ieXRlY29kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5jcHAKaW5kZXggMDczYWU2NDYwYTBlNmUwNjcyZWIyMjJlNzU4ZWZhZWZhNzk0ODcy
OS4uYjQ1YzcxZjZlMGY4NWMyN2U2ZTY3M2NhZTI4NGZjZmM3YjBlZmI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5jcHAKQEAgLTczLDYgKzczLDIyIEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFj
dGlvbnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAg
ICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3Vt
ZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZVJh
bmdlOiB7CisgICAgICAgICAgICBpZiAodXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CisKKyAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVy
ID0gdXJsW3VybEluZGV4XTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPj0gZ2V0Qml0czx1
aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNp
emVvZihERkFCeXRlY29kZSkpCisgICAgICAgICAgICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJp
dHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIg
KyBzaXplb2YoREZBQnl0ZWNvZGUpICsgc2l6ZW9mKHVpbnQ4X3QpKSkgeworICAgICAgICAgICAg
ICAgIHByb2dyYW1Db3VudGVyID0gZ2V0Qml0czx1bnNpZ25lZD4obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGUpICsgc2l6ZW9m
KHVpbnQ4X3QpICsgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNoYXJh
Y3RlcikKKyAgICAgICAgICAgICAgICAgICAgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0
cnVlOworICAgICAgICAgICAgICAgIHVybEluZGV4Kys7IC8vIFRoaXMgcmVwcmVzZW50cyBhbiBl
ZGdlIGluIHRoZSBERkEuCisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwcm9n
cmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5nZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCiAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcDoKICAgICAgICAg
ICAgIGlmICghdXJsW3VybEluZGV4XSB8fCB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmluZykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ORkEuY3BwCmluZGV4IDdjZjI2MTE0OWM3MDI5ZDEyZTU2NmMwOTgxODk3NDQ2MmY0MTM5
NzIuLjllYWEzMGI1OWEzYWQ1Y2M5NzBmMjE2NmQ3NmY0OTE2OTI3MDg1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcApAQCAtODMsOCArODMsOCBAQCB2b2lkIE5G
QTo6YWRkVHJhbnNpdGlvbnNPbkFueUNoYXJhY3Rlcih1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bykKIAogdm9pZCBORkE6OnNldEZpbmFsKHVuc2lnbmVkIG5vZGUsIHVpbnQ2NF90IHJ1bGVJZCkK
IHsKLSAgICBBU1NFUlQoIW1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmNvbnRhaW5zKHJ1bGVJ
ZCkpOwotICAgIG1fbm9kZXNbbm9kZV0uZmluYWxSdWxlSWRzLmFwcGVuZChydWxlSWQpOworICAg
IGlmICghbV9ub2Rlc1tub2RlXS5maW5hbFJ1bGVJZHMuY29udGFpbnMocnVsZUlkKSkKKyAgICAg
ICAgbV9ub2Rlc1tub2RlXS5maW5hbFJ1bGVJZHMuYXBwZW5kKHJ1bGVJZCk7CiB9CiAKIHVuc2ln
bmVkIE5GQTo6Z3JhcGhTaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQVRvREZBLmNwcAppbmRleCBlOTE4MWM1ZDZlOTdhNjhhNjZmMzdiMWNlNDMyMmJm
NjkwNzZlY2Q3Li42MDcyMDE2ZDJlMzIzOGNhMjFlZjc1Yzk0NjQ0ZDk2YzM5ZmQ4ZTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0zMzgs
NiArMzM4LDQ5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZB
Tm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5vZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1ZU5v
ZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpLT5tX2RmYU5vZGVJZDsKIH0KIAorc3RhdGlj
IHZvaWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhWZWN0b3I8REZBTm9kZT4mIGRmYUdyYXBoKQorewor
ICAgIGZvciAoREZBTm9kZSYgZGZhTm9kZSA6IGRmYUdyYXBoKSB7CisgICAgICAgIGlmICghZGZh
Tm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24KKyAgICAgICAgICAgICYmICgoZGZhTm9kZS50cmFu
c2l0aW9ucy5zaXplKCkgPT0gMTI2ICYmICFkZmFOb2RlLnRyYW5zaXRpb25zLmNvbnRhaW5zKDAp
KQorICAgICAgICAgICAgICAgIHx8IChkZmFOb2RlLnRyYW5zaXRpb25zLnNpemUoKSA9PSAxMjcg
JiYgZGZhTm9kZS50cmFuc2l0aW9ucy5jb250YWlucygwKSkpKSB7CisgICAgICAgICAgICB1bnNp
Z25lZCBiZXN0VGFyZ2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwor
ICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdldFNjb3JlID0gMDsKKyAgICAgICAgICAgIEhh
c2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0YXJnZXRIaXN0b2dy
YW07CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8gdHJhbnNpdGlvbiA6IGRmYU5vZGUudHJh
bnNpdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYW5zaXRpb24ua2V5KQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYW5z
aXRpb25UYXJnZXQgPSB0cmFuc2l0aW9uLnZhbHVlOworICAgICAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gdGFyZ2V0SGlzdG9ncmFtLmFkZCh0cmFuc2l0aW9uVGFyZ2V0LCAxKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7CisKKyAgICAgICAgICAgICAgICBpZiAoYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA+IGJlc3RUYXJnZXRTY29yZSkgeworICAgICAgICAgICAg
ICAgICAgICBiZXN0VGFyZ2V0U2NvcmUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdHJhbnNpdGlvblRhcmdldDsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGJlc3RUYXJnZXRTY29yZSwgIlRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgdmFsaWQgdGFy
Z2V0IHNpbmNlIGhhdmluZyB0cmFuc2l0aW9ucyBpcyBhIHByZWNvbmRpdGlvbiB0byBlbnRlciB0
aGlzIHBhdGguIik7CisKKyAgICAgICAgICAgIGRmYU5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uID0gYmVzdFRh
cmdldDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNp
dGlvbikgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQxNl90LCAxMjg+IGtleXM7CisgICAgICAg
ICAgICBERkFOb2RlVHJhbnNpdGlvbnMmIHRyYW5zaXRpb25zID0gZGZhTm9kZS50cmFuc2l0aW9u
czsKKyAgICAgICAgICAgIGNvcHlLZXlzVG9WZWN0b3IodHJhbnNpdGlvbnMsIGtleXMpOworCisg
ICAgICAgICAgICBmb3IgKHVpbnQxNl90IGtleSA6IGtleXMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIHRyYW5zaXRpb25JdGVyYXRvciA9IHRyYW5zaXRpb25zLmZpbmQoa2V5KTsKKyAgICAgICAg
ICAgICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9yLT52YWx1ZSA9PSBkZmFOb2RlLmZhbGxiYWNr
VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMucmVtb3ZlKHRyYW5z
aXRpb25JdGVyYXRvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIERG
QSBORkFUb0RGQTo6Y29udmVydChORkEmIG5mYSkKIHsKICAgICBWZWN0b3I8TkZBTm9kZT4mIG5m
YUdyYXBoID0gbmZhLm1fbm9kZXM7CkBAIC0zODcsNiArNDMwLDcgQEAgREZBIE5GQVRvREZBOjpj
b252ZXJ0KE5GQSYgbmZhKQogICAgICAgICB9CiAgICAgfSB3aGlsZSAoIXVucHJvY2Vzc2VkTm9k
ZXMuaXNFbXB0eSgpKTsKIAorICAgIHNpbXBsaWZ5VHJhbnNpdGlvbnMoZGZhR3JhcGgpOwogICAg
IHJldHVybiBERkEoV1RGOjptb3ZlKGRmYUdyYXBoKSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNGY4NjUzYWVlOTQ1NDRjZWRk
OWJkYTVhOTgzN2MwNWM3MzM3NzZlLi4yNTNiMTk5ZTViMDkyMDFjY2FhNmE0NTE5NmZmNGQwMzI0
MzU3NzMxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDMtMTYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcGlsZSBjaGFyYWN0ZXIgcmFuZ2VzIHRhcmdldGlu
ZyB0aGUgc2FtZSBzdGF0ZSBhcyByYW5nZSBjaGVjayBpbiB0aGUgYnl0ZWNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKIDIwMTUtMDMtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0
QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSBzaG91
bGQgYXV0b21hdGUgdGhlIHByb2Nlc3Mgb2YgY2xvbmluZyBXM0MgdGVzdCBzdWl0ZSBhbmQgaW1w
b3J0aW5nIHRlc3RzIGZyb20gaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGM2MzA3YzdkZTA1Zjg2YTUx
NjRhNDE1NjQ1NDk3YjY3NzFiMWEzZjIuLmQ1NTU5ZWExZTlkMDcxMDQ0NWRjYmM0MTY4ZDZmNmJm
YzM5OTFhZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
b250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMTIyLDYgKzEyMiw1NiBAQCBURVNUX0YoQ29u
dGVudEV4dGVuc2lvblRlc3QsIEJhc2ljKQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CiB9CiAKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9u
VGVzdCwgUmFuZ2VCYXNpYykKK3sKKyAgICBjb25zdCBjaGFyKiByYW5nZUJhc2ljRmlsdGVyID0g
Ilt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCIuKndbMC05XWNcIiwgXCJ1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlXCI6dHJ1
ZX19LHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrLWNvb2tpZXNcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiLipbQS1IXVthLXpdY2tvXCIsIFwidXJsLWZpbHRlci1pcy1jYXNl
LXNlbnNpdGl2ZVwiOnRydWV9fV0iOworICAgIGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRF
eHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QocmFuZ2VCYXNpY0ZpbHRlcik7CisgICAgYXV0byBl
eHRlbnNpb24gPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6
bW92ZShleHRlbnNpb25EYXRhKSk7CisKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kIGJhY2tlbmQ7CisgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9u
KCJQYXR0ZXJuTmVzdGVkR3JvdXBzRmlsdGVyIiwgZXh0ZW5zaW9uKTsKKworICAgIHRlc3RSZXF1
ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ3MmM6Ly93aGF0d2cub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdzBjIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy93
YWMiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJodHRwOi8vd2Via2l0Lm9yZy93QWMiKSwgeyB9KTsKKworICAgIC8vIE5vdGU6IFVSTCBwYXJz
aW5nIGFuZCBjYW5vbmljYWxpemF0aW9uIGxvd2VyY2FzZSB0aGUgc2NoZW1lIGFuZCBob3N0bmFt
ZS4KKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJBYWNrbzov
L3dlYmtpdC5vcmciKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJhYWNrbzovL3dlYmtpdC5vcmciKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vZ0Nja28ub3JnLyIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9nY2Nr
by5vcmcvIiksIHsgfSk7CisKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy9HZWNrbyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXMgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvZ2Vja28iKSwgeyB9KTsKKyAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9y
Zy9HRWNrbyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFJhbmdl
RXhjbHVzaW9uR2VuZXJhdGluZ1VuaXZlcnNhbFRyYW5zaXRpb24pCit7CisgICAgLy8gVHJhbnNp
dGlvbiBvZiB0aGUgdHlwZSAoW15YXVgpIGVmZmljdGl2ZWx5IHRyYW5zaXRpb24gb24gZXZlcnkg
aW5wdXQuCisgICAgY29uc3QgY2hhciogcmFuZ2VFeGNsdXNpb25HZW5lcmF0aW5nVW5pdmVyc2Fs
VHJhbnNpdGlvbkZpbHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipbXmFdK2Fmb29iYXJcIn19XSI7CisgICAgYXV0
byBleHRlbnNpb25EYXRhID0gQ29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChyYW5n
ZUV4Y2x1c2lvbkdlbmVyYXRpbmdVbml2ZXJzYWxUcmFuc2l0aW9uRmlsdGVyKTsKKyAgICBhdXRv
IGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
Ojptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAgIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNp
b24oIlBhdHRlcm5OZXN0ZWRHcm91cHNGaWx0ZXIiLCBleHRlbnNpb24pOworCisgICAgdGVzdFJl
cXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmciKSwgeyB9
KTsKKworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6
Ly93M2Mub3JnL2Zvb2JhZm9vYmFyIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vdzNjLm9yZy9mb29iYXJmb29iYXIiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vdzNjLm9yZy9GT09CQUZPT0JB
UiIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcv
Rk9PQkFSRk9PQkFSIiksIHsgfSk7CisKKyAgICAvLyBUaGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUg
ImEiIHByZWZpeCBjYW5ub3QgYmUgYW5vdGhlciAiYSIuCisgICAgdGVzdFJlcXVlc3QoYmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcvYWFmb29iYXIiKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vdzNj
Lm9yZy9BYWZvb2JhciIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93M2Mub3JnL2FBZm9vYmFyIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3czYy5vcmcvQUFmb29i
YXIiKSwgeyB9KTsKK30KKwogY29uc3QgY2hhciogcGF0dGVybnNTdGFydGluZ1dpdGhHcm91cEZp
bHRlciA9ICJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiKGh0dHA6Ly93aGF0d2dcXFxcLm9yZy8pP3dlYmtpdFwxMzRcMTM0Lm9y
Z1wifX1dIjsKIAogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBQYXR0ZXJuU3RhcnRpbmdX
aXRoR3JvdXApCkBAIC0yMTksNiArMjY5LDI2IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVz
dCwgRW5kT2ZMaW5lQXNzZXJ0aW9uKQogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL2Zvb2JhcmZvbyIpLCB7IH0pOwogICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3Jn
L2Zvb2JhcmYiKSwgeyB9KTsKIH0KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBFbmRP
ZkxpbmVBc3NlcnRpb25XaXRoSW52ZXJ0ZWRDaGFyYWN0ZXJTZXQpCit7CisgICAgY29uc3QgY2hh
ciogZW5kT2ZMaW5lQXNzZXJ0aW9uV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0RmlsdGVyID0gIlt7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCIuKlteeV0kXCJ9fV0iOworICAgIGF1dG8gZXh0ZW5zaW9uRGF0YSA9IENvbnRlbnRFeHRl
bnNpb25zOjpjb21waWxlUnVsZUxpc3QoZW5kT2ZMaW5lQXNzZXJ0aW9uV2l0aEludmVydGVkQ2hh
cmFjdGVyU2V0RmlsdGVyKTsKKyAgICBhdXRvIGV4dGVuc2lvbiA9IEluTWVtb3J5Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKworICAg
IENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgYmFja2VuZDsKKyAg
ICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oIkVuZE9mTGluZUFzc2VydGlvbiIsIGV4dGVu
c2lvbik7CisKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vd2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHA6Ly93ZWJraXQub3JnL2EiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImh0dHA6Ly93ZWJraXQub3JnL2Zvb2JhciIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvWWEiKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3lGb29iYXIiKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3kiKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0
Lm9yZy9ZIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvZm9vYmFyeSIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL2Zvb2Jhclki
KSwgeyB9KTsKK30KICAgICAKIGNvbnN0IGNoYXIqIGxvYWRUeXBlRmlsdGVyID0gIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIu
KndlYmtpdC5vcmdcIixcImxvYWQtdHlwZVwiOltcInRoaXJkLXBhcnR5XCJdfX0sIgogICAgICJ7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCIuKndoYXR3Zy5vcmdcIixcImxvYWQtdHlwZVwiOltcImZpcnN0LXBhcnR5XCJdfX0sIgo=
</data>
<flag name="review"
          id="273670"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>