<?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>180081</bug_id>
          
          <creation_ts>2017-11-28 07:06:51 -0800</creation_ts>
          <short_desc>[EME] Add the CENC initData support in ClearKey CDM</short_desc>
          <delta_ts>2018-01-09 02:03:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>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>
          
          <blocked>180928</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yacine Bandou">bandou.yacine</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>olivier.blin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375338</commentid>
    <comment_count>0</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2017-11-28 07:06:51 -0800</bug_when>
    <thetext>Add the &quot;cenc&quot; initDataType support in ClearKey CDM.
Parse the CENC initData and extract the KIDs by following the W3C spec https://www.w3.org/TR/eme-initdata-cenc/#common-system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375342</commentid>
    <comment_count>1</comment_count>
      <attachid>327751</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2017-11-28 07:25:26 -0800</bug_when>
    <thetext>Created attachment 327751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375772</commentid>
    <comment_count>2</comment_count>
      <attachid>327751</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-11-29 04:04:14 -0800</bug_when>
    <thetext>Comment on attachment 327751
Patch

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

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:50
&gt; +const unsigned ClearKeyCencSystemIdSize = sizeof(ClearKeyCencSystemId) / sizeof(uint8_t);

Is there any architecture where sizeof(uint8_t) is not 1? If you know of any, leave it, if not, please remove.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:168
&gt; +    Ref&lt;SharedBuffer&gt; keyids = SharedBuffer::create();

keyIds

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:207
&gt; +    unsigned nbKeyId =  data[index + 3];

The variable name should full words.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:208
&gt; +    index += 4; // KID_count size.

Why KID_count with an underscore?

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:210
&gt; +    // check the overflow.

Check

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:215
&gt; +    auto kidsArray = InspectorArray::create();

keyIdsArray

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:217
&gt; +    // Read the KeyID

Missing period.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:372
&gt; +    if (!(isKeyids || isCenc))

if (!isKeyids &amp;&amp; !isCenc)

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:380
&gt; +    if (isCenc &amp;&amp; (initData.isEmpty()))

I wonder if we should actually parse the initData instead of just ensuring it is not empty. I think we should and for that we need to split the extraction function into two because just for consistency you don&apos;t need to create the JSON, just just need the information of how many keys are there and where they are located. So I&apos;d write the following functions:

* std::pair&lt;unsigned, unsigned&gt; extractKeyidsLocationFromCencInitData(...) that returns the number of keys and the position in the SharedBuffer data.
* isCencInitData that invokes the first and checks keys are not zero.
* extractKeyidsFromCencInitData that uses the first and continues the algorithm by extracting the keys and creating the JSON.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:383
&gt;      return true;

I think we should change the logic here, we consider it&apos;s a failure by default unless we manage to ensure initDatas check out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375773</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-11-29 04:17:59 -0800</bug_when>
    <thetext>And again, I forgot to ask the same question. Are there any tests for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375807</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-29 08:01:49 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #2)
&gt; Is there any architecture where sizeof(uint8_t) is not 1? If you know of
&gt; any, leave it, if not, please remove.

Surely not any that can run glib or WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376248</commentid>
    <comment_count>5</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2017-11-30 02:06:06 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #3)
&gt; And again, I forgot to ask the same question. Are there any tests for this?

I am working to add a ClearKey tests.
I rework the patch as soon as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382987</commentid>
    <comment_count>6</comment_count>
      <attachid>329713</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2017-12-18 16:50:54 -0800</bug_when>
    <thetext>Created attachment 329713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384451</commentid>
    <comment_count>7</comment_count>
      <attachid>329713</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-12-22 04:20:59 -0800</bug_when>
    <thetext>Comment on attachment 329713
Patch

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

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:50
&gt; +const uint8_t ClearKeyCencSystemId[] = { 0x10, 0x77, 0xef, 0xec, 0xc0, 0xb2, 0x4d, 0x02, 0xac, 0xe3, 0x3c, 0x1e, 0x52, 0xe2, 0xfb, 0x4b };
&gt; +const unsigned ClearKeyCencSystemIdSize = sizeof(ClearKeyCencSystemId);
&gt; +const unsigned KIDSize = 16;

These things are variables, their names should begin with non-capital. I guess the naming rules would require that KIDSize -&gt; keyIdSize;

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:172
&gt; +    if (initData.isEmpty() ||  initData.size() &gt; std::numeric_limits&lt;unsigned&gt;::max())

There are two spaces before initData.size().

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:185
&gt; +        if (index + 12 +  ClearKeyCencSystemIdSize &gt;= initDataSize)

There are two spaces before ClearKeyCenc...

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:208
&gt; +    keyIdsMap.first = data[index + 3]; // Read the KeyIdsCount

Missing period at the end of the comment.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:220
&gt; +// This function checks if the initData sharedBuffer is a validate CENC initData.

...is a valid...

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:251
&gt; +        String keyID = WTF::base64URLEncode(&amp;data[index], KIDSize);

keyId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384466</commentid>
    <comment_count>8</comment_count>
      <attachid>330125</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2017-12-22 07:20:12 -0800</bug_when>
    <thetext>Created attachment 330125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386773</commentid>
    <comment_count>9</comment_count>
      <attachid>330125</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-01-08 09:44:58 -0800</bug_when>
    <thetext>Comment on attachment 330125
Patch

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

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:172
&gt; +    if (initData.isEmpty() ||  initData.size() &gt; std::numeric_limits&lt;unsigned&gt;::max())

(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; &gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:172
&gt; &gt; +    if (initData.isEmpty() ||  initData.size() &gt; std::numeric_limits&lt;unsigned&gt;::max())
&gt; 
&gt; There are two spaces before initData.size().

Not addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386796</commentid>
    <comment_count>10</comment_count>
      <attachid>330715</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-01-08 10:36:23 -0800</bug_when>
    <thetext>Created attachment 330715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387160</commentid>
    <comment_count>11</comment_count>
      <attachid>330715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 02:02:50 -0800</bug_when>
    <thetext>Comment on attachment 330715
Patch

Clearing flags on attachment: 330715

Committed r226621: &lt;https://trac.webkit.org/changeset/226621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387162</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 02:02:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387163</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-09 02:03:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/36372226&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327751</attachid>
            <date>2017-11-28 07:25:26 -0800</date>
            <delta_ts>2017-12-18 16:50:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180081-20171128162525.patch</filename>
            <type>text/plain</type>
            <size>8077</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQzOGFjMzdmMGY0MDE2
MDIwZWUxNTU1OGViZDc1NmI3NjQyMWU4NS4uNTMyYjAyYzcwMzZiZmRlNGFhYmYxYmFkNWIzYzM4
YjBjZDVhMGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTExLTI4ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV0gQWRkIHRoZSBDRU5DIGluaXREYXRhIHN1cHBvcnQgaW4gQ2xlYXJLZXkgQ0RNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlICJjZW5j
IiBpbml0RGF0YVR5cGUgc3VwcG9ydCBpbiBDbGVhcktleSBDRE0uCisgICAgICAgIFBhcnNlIHRo
ZSBDRU5DIGluaXREYXRhIGFuZCBleHRyYWN0IHRoZSBLSURzIGJ5IGZvbGxvd2luZyB0aGUgVzND
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2VtZS1pbml0ZGF0YS1jZW5jLyNj
b21tb24tc3lzdGVtCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzSW5pdERhdGFUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZSk6CisKIDIwMTctMTEtMjggIFlhY2luZSBCYW5k
b3UgIDx5YWNpbmUuYmFuZG91X2V4dEBzb2Z0YXRob21lLmNvbT4KIAogICAgICAgICBbRU1FXVtH
U3RyZWFtZXJdIEFkZCB0aGUgZnVsbC1zYW1wbGUgZW5jcnlwdGlvbiBzdXBwb3J0IGluIHRoZSBH
U3RyZWFtZXIgQ2xlYXJLZXkgZGVjcnlwdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
aW5kZXggMGYzOGJmMTVjNDI5Yjk4MDcwMTAzZGIxYWUzYTA5NGUwYTIyMGExNi4uNDAzODEzOThm
MWI4NjM5NDE0NjI4YmU2ZDhmOWJiZDU1MjY4YzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcApAQCAtNDQsNiArNDQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKKy8vIENsZWFyS2V5IENFTkMgU3lzdGVtSUQuCisvLyBodHRw
czovL3d3dy53My5vcmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1vbi1zeXN0ZW0KK2NvbnN0
IHVpbnQ4X3QgQ2xlYXJLZXlDZW5jU3lzdGVtSWRbXSA9IHsgMHgxMCwgMHg3NywgMHhlZiwgMHhl
YywgMHhjMCwgMHhiMiwgMHg0ZCwgMHgwMiwgMHhhYywgMHhlMywgMHgzYywgMHgxZSwgMHg1Miwg
MHhlMiwgMHhmYiwgMHg0YiB9OworY29uc3QgdW5zaWduZWQgQ2xlYXJLZXlDZW5jU3lzdGVtSWRT
aXplID0gc2l6ZW9mKENsZWFyS2V5Q2VuY1N5c3RlbUlkKSAvIHNpemVvZih1aW50OF90KTsKK2Nv
bnN0IHVuc2lnbmVkIEtJRFNpemUgPSAxNjsKKwogY2xhc3MgQ2xlYXJLZXlTdGF0ZSB7CiAgICAg
dXNpbmcgS2V5U3RvcmUgPSBIYXNoTWFwPFN0cmluZywgVmVjdG9yPENETUluc3RhbmNlQ2xlYXJL
ZXk6OktleT4+OwogCkBAIC0xNDEsNiArMTQ3LDkxIEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5z
ZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSW5zcGVjdG9yT2JqZWN0JiByb290
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorewor
ICAgIC8vIDQuMSBEZWZpbml0aW9uCisgICAgLy8gVGhlIFN5c3RlbUlEIGlzIDEwNzdlZmVjLWMw
YjItNGQwMi1hY2UzLTNjMWU1MmUyZmI0Yi4KKyAgICAvLyBUaGUgUFNTSCBib3ggZm9ybWF0IGlz
IGFzIGZvbGxvd3MuIEl0IGZvbGxvd3MgdmVyc2lvbiAxIG9mIHRoZSAncHNzaCcgYm94IGFzIGRl
ZmluZWQgaW4gW0NFTkNdLgorICAgIC8vIHBzc2ggPSBbCisgICAgLy8gMHgwMCwgMHgwMCwgMHgw
MCwgMHg0YywgMHg3MCwgMHg3MywgMHg3MywgMHg2OCwgLy8gQk1GRiBib3ggaGVhZGVyICg3NiBi
eXRlcywgJ3Bzc2gnKQorICAgIC8vIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZ1bGwgYm94IGhlYWRlciAodmVyc2lvbiA9IDEsIGZsYWdzID0gMCkK
KyAgICAvLyAweDEwLCAweDc3LCAweGVmLCAweGVjLCAweGMwLCAweGIyLCAweDRkLCAweDAyLCAv
LyBTeXN0ZW1JRAorICAgIC8vIDB4YWMsIDB4ZTMsIDB4M2MsIDB4MWUsIDB4NTIsIDB4ZTIsIDB4
ZmIsIDB4NGIsCisgICAgLy8gMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gS0lEX2NvdW50ICgyKQorICAgIC8vIDB4MzAsIDB4MzEsIDB4MzIsIDB4MzMs
IDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIC8vIEZpcnN0IEtJRCAoIjAxMjM0NTY3ODkwMTIzNDUi
KQorICAgIC8vIDB4MzgsIDB4MzksIDB4MzAsIDB4MzEsIDB4MzIsIDB4MzMsIDB4MzQsIDB4MzUs
CisgICAgLy8gMHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwg
Ly8gU2Vjb25kIEtJRCAoIkFCQ0RFRkdISUpLTE1OT1AiKQorICAgIC8vIDB4NDksIDB4NGEsIDB4
NGIsIDB4NGMsIDB4NGQsIDB4NGUsIDB4NGYsIDB4NTAsCisgICAgLy8gMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2l6ZSBvZiBEYXRhICgwKQorICAg
IC8vIF07CisKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlpZHMgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworCisgICAgLy8gQ2hlY2tzIGlmIHRoZSBpbml0RGF0YSBpcyB2YWxpZAorICAgIGlm
IChpbml0RGF0YS5pc0VtcHR5KCkgfHwgIGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGtleWlkczsKKworICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgaW5pdERhdGFT
aXplID0gaW5pdERhdGEuc2l6ZSgpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB1bnNp
Z25lZCBwc3NoU2l6ZSA9IDA7CisKKyAgICAvLyBTZWFyY2ggaW4gdGhlIGNvbmNhdGVuYXRlZCBv
ciB0aGUgc2ltcGxlIEluaXREYXRhLCB0aGUgQ2xlYXJLZXkgUFNTSC4KKyAgICBib29sIGZvdW5k
UHNzaCA9IGZhbHNlOworICAgIHdoaWxlICh0cnVlKSB7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhl
IG92ZXJmbG93IEluaXREYXRhLgorICAgICAgICBpZiAoaW5kZXggKyAxMiArIENsZWFyS2V5Q2Vu
Y1N5c3RlbUlkU2l6ZSA+PSBpbml0RGF0YVNpemUpCisgICAgICAgICAgICByZXR1cm4ga2V5aWRz
OworCisgICAgICAgIHBzc2hTaXplID0gZGF0YVtpbmRleCArIDJdICogMjU2ICsgZGF0YVtpbmRl
eCArIDNdOworCisgICAgICAgIC8vIDEyID0gQk1GRiBib3ggaGVhZGVyICsgRnVsbCBib3ggaGVh
ZGVyLgorICAgICAgICBpZiAoIW1lbWNtcCgmZGF0YVtpbmRleCArIDEyXSwgQ2xlYXJLZXlDZW5j
U3lzdGVtSWQsIENsZWFyS2V5Q2VuY1N5c3RlbUlkU2l6ZSkpIHsKKyAgICAgICAgICAgIGZvdW5k
UHNzaCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbmRl
eCArPSBwc3NoU2l6ZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBpZiB0aGUgSW5pdERhdGEgY29u
dGFpbnMgdGhlIENsZWFyS2V5IFBTU0guCisgICAgaWYgKCFmb3VuZFBzc2gpCisgICAgICAgIHJl
dHVybiBrZXlpZHM7CisKKyAgICBpbmRleCArPSAoMTIgKyBDbGVhcktleUNlbmNTeXN0ZW1JZFNp
emUpOyAvLyAxMiAoQk1GRiBib3ggaGVhZGVyICsgRnVsbCBib3ggaGVhZGVyKSArIFN5c3RlbUlE
IHNpemUuCisKKyAgICAvLyBDaGVjayB0aGUgb3ZlcmZsb3cuCisgICAgaWYgKGluZGV4ICsgMyA+
PSBpbml0RGF0YVNpemUpCisgICAgICAgIHJldHVybiBrZXlpZHM7CisKKyAgICB1bnNpZ25lZCBu
YktleUlkID0gIGRhdGFbaW5kZXggKyAzXTsKKyAgICBpbmRleCArPSA0OyAvLyBLSURfY291bnQg
c2l6ZS4KKworICAgIC8vIGNoZWNrIHRoZSBvdmVyZmxvdy4KKyAgICBpZiAoKGluZGV4ICsgKG5i
S2V5SWQgKiBLSURTaXplKSkgPj0gaW5pdERhdGFTaXplKQorICAgICAgICByZXR1cm4ga2V5aWRz
OworCisgICAgYXV0byBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8ga2lkc0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworCisgICAgLy8gUmVhZCB0
aGUgS2V5SUQKKyAgICAvLyA5LjEuMyBMaWNlbnNlIFJlcXVlc3QgRm9ybWF0CisgICAgLy8gVGhp
cyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIHRoZSBsaWNlbnNlIHJlcXVlc3QgcHJv
dmlkZWQgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSB0aGUgbWVzc2FnZSBhdHRyaWJ1dGUgb2YgdGhl
IG1lc3NhZ2UgZXZlbnQuCisgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRh
aW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgorICAgIC8vICJraWRzIgorICAgIC8vIEFuIGFy
cmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVy
bCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZh
bHVlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYktleUlkOyBpKyspIHsKKyAgICAg
ICAgU3RyaW5nIGtleUlEID0gV1RGOjpiYXNlNjRVUkxFbmNvZGUoJmRhdGFbaW5kZXhdLCBLSURT
aXplKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGtleUlEKTsKKyAgICAgICAgaW5k
ZXggKz0gS0lEU2l6ZTsKKyAgICB9CisKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShraWRzQXJyYXkpKTsKKyAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7CisgICAga2V5aWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleWlkczsKK30KKwogQ0RNRmFjdG9yeUNsZWFy
S2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPENETUZhY3RvcnlDbGVhcktleT4gc19mYWN0b3J5OwpAQCAtMTcxLDggKzI2Miw4
IEBAIENETVByaXZhdGVDbGVhcktleTo6fkNETVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsK
IAogYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewotICAgIC8vIGBrZXlpZHNgIGlzIHRo
ZSBvbmx5IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIik7CisgICAgLy8gYGtleWlk
c2AgYW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgorICAg
IHJldHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5
aWRzIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2Vu
YyIpKTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJzaXN0ZW50TGljZW5zZVR5cGUoY29u
c3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBAIC0yNzUsMTIgKzM2NiwxOCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewotICAg
IC8vIEZhaWwgZm9yIGluaXQgZGF0YSB0eXBlcyBvdGhlciB0aGFuICdrZXlpZHMnLgotICAgIGlm
ICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikp
CisgICAgYm9vbCBpc0tleWlkcyA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXRE
YXRhVHlwZSwgImtleWlkcyIpOworICAgIGJvb2wgaXNDZW5jID0gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpOworICAgIC8vIEZhaWwgZm9yIGluaXQg
ZGF0YSB0eXBlcyBvdGhlciB0aGFuICdrZXlpZHMnIG9yICdjZW5jJy4KKyAgICBpZiAoIShpc0tl
eWlkcyB8fCBpc0NlbmMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWYWxpZGF0
ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgor
ICAgIGlmIChpc0tleWlkcyAmJiAoIXBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFz
IGFuIEpTT04gb2JqZWN0LgotICAgIGlmICghcGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKKyAg
ICAvLyBDaGVjayB0aGUgaW5pdERhdGEgYnVmZmVyIGlzbid0IGVtcHR5IGluIGNlbmMgY2FzZS4K
KyAgICBpZiAoaXNDZW5jICYmIChpbml0RGF0YS5pc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM0MSwxMSArNDM4LDE0IEBAIENETUluc3Rh
bmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpID8g
U3VjY2VlZGVkIDogRmFpbGVkOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVl
ID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CiAKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpKQorICAgICAgICBpbml0RGF0YSA9
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGluaXREYXRhLmdldCgpKTsKKwogICAgIGNh
bGxPbk1haW5UaHJlYWQoCiAgICAgICAgIFt3ZWFrVGhpcyA9IG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGluaXREYXRh
ID0gV1RGTW92ZShpbml0RGF0YSksIHNlc3Npb25JZFZhbHVlID0gc19zZXNzaW9uSWRWYWx1ZV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329713</attachid>
            <date>2017-12-18 16:50:54 -0800</date>
            <delta_ts>2017-12-22 07:20:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180081-20171219015051.patch</filename>
            <type>text/plain</type>
            <size>9293</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBmNWQ5MTA2ZjQ5MTRj
MTMyYzM1NjRiOGYxZmFhMWI0N2MzZWRlYy4uNTVmMjU3M2I3ODY1NTllYWJkMGVlYTE0MDg5NDBi
ZjZjZjI4YTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTEyLTE4ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV0gQWRkIHRoZSBDRU5DIGluaXREYXRhIHN1cHBvcnQgaW4gQ2xlYXJLZXkgQ0RNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlICJjZW5j
IiBpbml0RGF0YVR5cGUgc3VwcG9ydCBpbiBDbGVhcktleSBDRE0uCisgICAgICAgIFBhcnNlIHRo
ZSBDRU5DIGluaXREYXRhIGFuZCBleHRyYWN0IHRoZSBLSURzIGJ5IGZvbGxvd2luZyB0aGUgVzND
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2VtZS1pbml0ZGF0YS1jZW5jLyNj
b21tb24tc3lzdGVtCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9jbGVh
cktleS9jbGVhcktleS1tZXNzYWdlLWNlbmMtZXZlbnQuaHRtbAorICAgICAgICAgICAgICAgbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LW1lc3NhZ2UtY2VuYy1ldmVudC1t
c2UuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjppc0NlbmNJbml0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZSk6CisKIDIwMTctMTItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50IGNvbnN0cnVjdG9yIGZhaWxzIHRvIGluaXRp
YWxpemUgdGhlICdzb3VyY2UnIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CmluZGV4IDRlNDEzZjNmYWJkNWYxMTdhZTQ1ZjA5ZTkxNWZkMGVjMTk5ZDNjY2QuLjA5MTIwNDUz
N2QyMjI4MGFjODUzMWViOWIzODE4NWU3ODc0YzY1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKQEAgLTQzLDYgKzQzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8g
Q2xlYXJLZXkgQ0VOQyBTeXN0ZW1JRC4KKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbWUtaW5p
dGRhdGEtY2VuYy8jY29tbW9uLXN5c3RlbQorY29uc3QgdWludDhfdCBDbGVhcktleUNlbmNTeXN0
ZW1JZFtdID0geyAweDEwLCAweDc3LCAweGVmLCAweGVjLCAweGMwLCAweGIyLCAweDRkLCAweDAy
LCAweGFjLCAweGUzLCAweDNjLCAweDFlLCAweDUyLCAweGUyLCAweGZiLCAweDRiIH07Citjb25z
dCB1bnNpZ25lZCBDbGVhcktleUNlbmNTeXN0ZW1JZFNpemUgPSBzaXplb2YoQ2xlYXJLZXlDZW5j
U3lzdGVtSWQpOworY29uc3QgdW5zaWduZWQgS0lEU2l6ZSA9IDE2OworCiBjbGFzcyBDbGVhcktl
eVN0YXRlIHsKICAgICB1c2luZyBLZXlTdG9yZSA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8Q0RN
SW5zdGFuY2VDbGVhcktleTo6S2V5Pj47CiAKQEAgLTE0MCw2ICsxNDYsMTE5IEBAIHN0YXRpYyBi
b29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6
T2JqZWN0JiByb290KQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBodHRwczovL3d3dy53My5v
cmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1vbi1zeXN0ZW0KKy8vIDQuMSBEZWZpbml0aW9u
CisvLyBUaGUgU3lzdGVtSUQgaXMgMTA3N2VmZWMtYzBiMi00ZDAyLWFjZTMtM2MxZTUyZTJmYjRi
LgorLy8gVGhlIFBTU0ggYm94IGZvcm1hdCBpcyBhcyBmb2xsb3dzLiBJdCBmb2xsb3dzIHZlcnNp
b24gMSBvZiB0aGUgJ3Bzc2gnIGJveCBhcyBkZWZpbmVkIGluIFtDRU5DXS4KKy8vIHBzc2ggPSBb
CisvLyAweDAwLCAweDAwLCAweDAwLCAweDRjLCAweDcwLCAweDczLCAweDczLCAweDY4LCAvLyBC
TUZGIGJveCBoZWFkZXIgKDc2IGJ5dGVzLCAncHNzaCcpCisvLyAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdWxsIGJveCBoZWFkZXIgKHZlcnNpb24g
PSAxLCBmbGFncyA9IDApCisvLyAweDEwLCAweDc3LCAweGVmLCAweGVjLCAweGMwLCAweGIyLCAw
eDRkLCAweDAyLCAvLyBTeXN0ZW1JRAorLy8gMHhhYywgMHhlMywgMHgzYywgMHgxZSwgMHg1Miwg
MHhlMiwgMHhmYiwgMHg0YiwKKy8vIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEtpZENvdW50ICgyKQorLy8gMHgzMCwgMHgzMSwgMHgzMiwgMHgzMywg
MHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgLy8gRmlyc3QgS0lEICgiMDEyMzQ1Njc4OTAxMjM0NSIp
CisvLyAweDM4LCAweDM5LCAweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LAorLy8g
MHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwgLy8gU2Vjb25k
IEtJRCAoIkFCQ0RFRkdISUpLTE1OT1AiKQorLy8gMHg0OSwgMHg0YSwgMHg0YiwgMHg0YywgMHg0
ZCwgMHg0ZSwgMHg0ZiwgMHg1MCwKKy8vIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFNpemUgb2YgRGF0YSAoMCkKKy8vIF07CisKKy8vIFRoaXMgZnVu
Y3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBm
aXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGtleUlkc01hcCgwLCAwKTsKKworICAgIC8vIENoZWNrIHRoZSBpbml0RGF0YSBzaXplLgor
ICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgIGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGtleUlkc01hcDsK
KworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQg
aW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CisKKyAgICAvLyBTZWFyY2ggaW4gdGhlIGNvbmNh
dGVuYXRlZCBvciB0aGUgc2ltcGxlIEluaXREYXRhLCB0aGUgQ2xlYXJLZXkgUFNTSC4KKyAgICBi
b29sIGZvdW5kUHNzaCA9IGZhbHNlOworICAgIHdoaWxlICh0cnVlKSB7CisKKyAgICAgICAgLy8g
Q2hlY2sgdGhlIG92ZXJmbG93IEluaXREYXRhLgorICAgICAgICBpZiAoaW5kZXggKyAxMiArICBD
bGVhcktleUNlbmNTeXN0ZW1JZFNpemUgPj0gaW5pdERhdGFTaXplKQorICAgICAgICAgICAgcmV0
dXJuIGtleUlkc01hcDsKKworICAgICAgICBwc3NoU2l6ZSA9IGRhdGFbaW5kZXggKyAyXSAqIDI1
NiArIGRhdGFbaW5kZXggKyAzXTsKKworICAgICAgICAvLyAxMiA9IEJNRkYgYm94IGhlYWRlciAr
IEZ1bGwgYm94IGhlYWRlci4KKyAgICAgICAgaWYgKCFtZW1jbXAoJmRhdGFbaW5kZXggKyAxMl0s
IENsZWFyS2V5Q2VuY1N5c3RlbUlkLCBDbGVhcktleUNlbmNTeXN0ZW1JZFNpemUpKSB7CisgICAg
ICAgICAgICBmb3VuZFBzc2ggPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgaW5kZXggKz0gcHNzaFNpemU7CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgdGhl
IEluaXREYXRhIGNvbnRhaW5zIHRoZSBDbGVhcktleSBQU1NILgorICAgIGlmICghZm91bmRQc3No
KQorICAgICAgICByZXR1cm4ga2V5SWRzTWFwOworCisgICAgaW5kZXggKz0gKDEyICsgQ2xlYXJL
ZXlDZW5jU3lzdGVtSWRTaXplKTsgLy8gMTIgKEJNRkYgYm94IGhlYWRlciArIEZ1bGwgYm94IGhl
YWRlcikgKyBTeXN0ZW1JRCBzaXplLgorCisgICAgLy8gQ2hlY2sgdGhlIG92ZXJmbG93LgorICAg
IGlmIChpbmRleCArIDMgPj0gaW5pdERhdGFTaXplKQorICAgICAgICByZXR1cm4ga2V5SWRzTWFw
OworCisgICAga2V5SWRzTWFwLmZpcnN0ID0gZGF0YVtpbmRleCArIDNdOyAvLyBSZWFkIHRoZSBL
ZXlJZHNDb3VudAorICAgIGluZGV4ICs9IDQ7IC8vIEtleUlkc0NvdW50IHNpemUuCisKKyAgICAv
LyBDaGVjayB0aGUgb3ZlcmZsb3cuCisgICAgaWYgKChpbmRleCArIChrZXlJZHNNYXAuZmlyc3Qg
KiBLSURTaXplKSkgPj0gaW5pdERhdGFTaXplKQorICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwor
CisgICAga2V5SWRzTWFwLnNlY29uZCA9IGluZGV4OyAvLyBUaGUgbG9jYXRpb24gb2YgdGhlIGZp
cnN0IEtleUlkIGluIGluaXREYXRhLgorCisgICAgcmV0dXJuIGtleUlkc01hcDsKK30KKworLy8g
VGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZh
bGlkYXRlIENFTkMgaW5pdERhdGEuCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5p
dERhdGEpOworICAgIHJldHVybiAoKGtleUlkc01hcC5maXJzdCkgJiYgKGtleUlkc01hcC5zZWNv
bmQpKTsKK30KKworc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCit7CisgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoaW5pdERhdGEpOworICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJ
ZHNNYXAuZmlyc3Q7CisgICAgdW5zaWduZWQgaW5kZXggPSBrZXlJZHNNYXAuc2Vjb25kOworCisg
ICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZGF0ZSBDRU5DIGluaXREYXRhLgorICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCisgICAgICAgIHJldHVybiBrZXlJZHM7CisKKyAg
ICBjb25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworCisgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CisKKyAgICAvLyBSZWFkIHRoZSBLZXlJRAorICAgIC8vIDkuMS4zIExp
Y2Vuc2UgUmVxdWVzdCBGb3JtYXQKKyAgICAvLyBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBm
b3JtYXQgb2YgdGhlIGxpY2Vuc2UgcmVxdWVzdCBwcm92aWRlZCB0byB0aGUgYXBwbGljYXRpb24g
dmlhIHRoZSBtZXNzYWdlIGF0dHJpYnV0ZSBvZiB0aGUgbWVzc2FnZSBldmVudC4KKyAgICAvLyBU
aGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJl
cnM6CisgICAgLy8gImtpZHMiCisgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVt
ZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBz
ZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGtleUlkQ291bnQ7IGkrKykgeworICAgICAgICBTdHJpbmcga2V5SUQgPSBXVEY6
OmJhc2U2NFVSTEVuY29kZSgmZGF0YVtpbmRleF0sIEtJRFNpemUpOworICAgICAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhrZXlJRCk7CisgICAgICAgIGluZGV4ICs9IEtJRFNpemU7CisgICAg
fQorCisgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
KyAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Cisg
ICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGtleUlkczsKK30KKwogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xl
YXJLZXk6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENETUZhY3Rv
cnlDbGVhcktleT4gc19mYWN0b3J5OwpAQCAtMTcwLDggKzI4OSw4IEBAIENETVByaXZhdGVDbGVh
cktleTo6fkNETVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIAogYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERh
dGFUeXBlKSBjb25zdAogewotICAgIC8vIGBrZXlpZHNgIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBp
bml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
aW5pdERhdGFUeXBlLCAia2V5aWRzIik7CisgICAgLy8gYGtleWlkc2AgYW5kICdjZW5jJyBhcmUg
dGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgorICAgIHJldHVybiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpKTsKIH0KIAogc3RhdGlj
IGJvb2wgY29udGFpbnNQZXJzaXN0ZW50TGljZW5zZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Np
b25UeXBlPiYgdHlwZXMpCkBAIC0yNzQsMTUgKzM5MywxNSBAQCBib29sIENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewotICAgIC8vIEZhaWwgZm9yIGluaXQg
ZGF0YSB0eXBlcyBvdGhlciB0aGFuICdrZXlpZHMnLgotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2Jq
ZWN0IGluIGtleWlkcyBjYXNlLgorICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZm
ZXIgYXMgYW4gSlNPTiBvYmplY3QuCi0gICAgaWYgKCFwYXJzZUpTT05PYmplY3QoaW5pdERhdGEp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1
ZmZlciBhcyBDRU5DIGluaXREYXRhLgorICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikgJiYgaXNDZW5jSW5pdERhdGEoaW5pdERhdGEpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CkBAIC0zNDAsMTEg
KzQ1OSwxNCBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6
OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBzdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMy
X3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwogCisgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSkK
KyAgICAgICAgaW5pdERhdGEgPSBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShpbml0RGF0
YS5nZXQoKSk7CisKICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICBbd2Vha1RoaXMgPSBt
X3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBpbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpLCBzZXNzaW9uSWRWYWx1ZSA9
IHNfc2Vzc2lvbklkVmFsdWVdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330125</attachid>
            <date>2017-12-22 07:20:12 -0800</date>
            <delta_ts>2018-01-08 10:36:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180081-20171222162011.patch</filename>
            <type>text/plain</type>
            <size>9320</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMWI1MjZmZTUxYmYw
OWFkMjAyZTk4MTFmNjBmZTk5ODNhMjY0ZS4uMDMyM2Q5YTVlZDFmMzI2MWJhMGRlMTM5ODE0NmE3
YTA2YjJhMTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTEyLTE4ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV0gQWRkIHRoZSBDRU5DIGluaXREYXRhIHN1cHBvcnQgaW4gQ2xlYXJLZXkgQ0RNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlICJjZW5j
IiBpbml0RGF0YVR5cGUgc3VwcG9ydCBpbiBDbGVhcktleSBDRE0uCisgICAgICAgIFBhcnNlIHRo
ZSBDRU5DIGluaXREYXRhIGFuZCBleHRyYWN0IHRoZSBLSURzIGJ5IGZvbGxvd2luZyB0aGUgVzND
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2VtZS1pbml0ZGF0YS1jZW5jLyNj
b21tb24tc3lzdGVtCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9jbGVh
cktleS9jbGVhcktleS1tZXNzYWdlLWNlbmMtZXZlbnQuaHRtbAorICAgICAgICAgICAgICAgbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LW1lc3NhZ2UtY2VuYy1ldmVudC1t
c2UuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjppc0NlbmNJbml0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZSk6CisKIDIwMTctMTItMjAgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIyNjE2MCkgQnVpbGQgYnJva2VuIHdoZW4gTUVESUFfU1RSRUFNIGlz
IGRpc2FibGVkIHdpdGggTWVkaWFTdHJlYW1SZXF1ZXN0IG5hbWVzcGFjZSBjb25mdXNpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCA0ZTQxM2YzZmFiZDVmMTE3YWU0NWYwOWU5
MTVmZDBlYzE5OWQzY2NkLi41ZjgwNDdlZDZiZDczMGFiZWVmYWNiMDFhMTc3ZGY0NTk2MjZiMjI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00Myw2ICs0MywxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIENsZWFyS2V5IENFTkMgU3lzdGVtSUQuCisvLyBodHRw
czovL3d3dy53My5vcmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1vbi1zeXN0ZW0KK2NvbnN0
IHVpbnQ4X3QgY2xlYXJLZXlDZW5jU3lzdGVtSWRbXSA9IHsgMHgxMCwgMHg3NywgMHhlZiwgMHhl
YywgMHhjMCwgMHhiMiwgMHg0ZCwgMHgwMiwgMHhhYywgMHhlMywgMHgzYywgMHgxZSwgMHg1Miwg
MHhlMiwgMHhmYiwgMHg0YiB9OworY29uc3QgdW5zaWduZWQgY2xlYXJLZXlDZW5jU3lzdGVtSWRT
aXplID0gc2l6ZW9mKGNsZWFyS2V5Q2VuY1N5c3RlbUlkKTsKK2NvbnN0IHVuc2lnbmVkIGtleUlk
U2l6ZSA9IDE2OworCiBjbGFzcyBDbGVhcktleVN0YXRlIHsKICAgICB1c2luZyBLZXlTdG9yZSA9
IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj47CiAKQEAg
LTE0MCw2ICsxNDYsMTE5IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3ds
ZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogICAgIHJldHVybiB0cnVl
OwogfQogCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1v
bi1zeXN0ZW0KKy8vIDQuMSBEZWZpbml0aW9uCisvLyBUaGUgU3lzdGVtSUQgaXMgMTA3N2VmZWMt
YzBiMi00ZDAyLWFjZTMtM2MxZTUyZTJmYjRiLgorLy8gVGhlIFBTU0ggYm94IGZvcm1hdCBpcyBh
cyBmb2xsb3dzLiBJdCBmb2xsb3dzIHZlcnNpb24gMSBvZiB0aGUgJ3Bzc2gnIGJveCBhcyBkZWZp
bmVkIGluIFtDRU5DXS4KKy8vIHBzc2ggPSBbCisvLyAweDAwLCAweDAwLCAweDAwLCAweDRjLCAw
eDcwLCAweDczLCAweDczLCAweDY4LCAvLyBCTUZGIGJveCBoZWFkZXIgKDc2IGJ5dGVzLCAncHNz
aCcpCisvLyAweDAxLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGdWxsIGJveCBoZWFkZXIgKHZlcnNpb24gPSAxLCBmbGFncyA9IDApCisvLyAweDEwLCAweDc3
LCAweGVmLCAweGVjLCAweGMwLCAweGIyLCAweDRkLCAweDAyLCAvLyBTeXN0ZW1JRAorLy8gMHhh
YywgMHhlMywgMHgzYywgMHgxZSwgMHg1MiwgMHhlMiwgMHhmYiwgMHg0YiwKKy8vIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEtpZENvdW50ICgyKQor
Ly8gMHgzMCwgMHgzMSwgMHgzMiwgMHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgLy8gRmly
c3QgS0lEICgiMDEyMzQ1Njc4OTAxMjM0NSIpCisvLyAweDM4LCAweDM5LCAweDMwLCAweDMxLCAw
eDMyLCAweDMzLCAweDM0LCAweDM1LAorLy8gMHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwg
MHg0NiwgMHg0NywgMHg0OCwgLy8gU2Vjb25kIEtJRCAoIkFCQ0RFRkdISUpLTE1OT1AiKQorLy8g
MHg0OSwgMHg0YSwgMHg0YiwgMHg0YywgMHg0ZCwgMHg0ZSwgMHg0ZiwgMHg1MCwKKy8vIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpemUgb2YgRGF0
YSAoMCkKKy8vIF07CisKKy8vIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3Vu
dCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIu
CitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKKworICAgIC8v
IENoZWNrIHRoZSBpbml0RGF0YSBzaXplLgorICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwg
IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKKworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgp
OworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CisK
KyAgICAvLyBTZWFyY2ggaW4gdGhlIGNvbmNhdGVuYXRlZCBvciB0aGUgc2ltcGxlIEluaXREYXRh
LCB0aGUgQ2xlYXJLZXkgUFNTSC4KKyAgICBib29sIGZvdW5kUHNzaCA9IGZhbHNlOworICAgIHdo
aWxlICh0cnVlKSB7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhlIG92ZXJmbG93IEluaXREYXRhLgor
ICAgICAgICBpZiAoaW5kZXggKyAxMiArIGNsZWFyS2V5Q2VuY1N5c3RlbUlkU2l6ZSA+PSBpbml0
RGF0YVNpemUpCisgICAgICAgICAgICByZXR1cm4ga2V5SWRzTWFwOworCisgICAgICAgIHBzc2hT
aXplID0gZGF0YVtpbmRleCArIDJdICogMjU2ICsgZGF0YVtpbmRleCArIDNdOworCisgICAgICAg
IC8vIDEyID0gQk1GRiBib3ggaGVhZGVyICsgRnVsbCBib3ggaGVhZGVyLgorICAgICAgICBpZiAo
IW1lbWNtcCgmZGF0YVtpbmRleCArIDEyXSwgY2xlYXJLZXlDZW5jU3lzdGVtSWQsIGNsZWFyS2V5
Q2VuY1N5c3RlbUlkU2l6ZSkpIHsKKyAgICAgICAgICAgIGZvdW5kUHNzaCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbmRleCArPSBwc3NoU2l6ZTsKKyAg
ICB9CisKKyAgICAvLyBDaGVjayBpZiB0aGUgSW5pdERhdGEgY29udGFpbnMgdGhlIENsZWFyS2V5
IFBTU0guCisgICAgaWYgKCFmb3VuZFBzc2gpCisgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CisK
KyAgICBpbmRleCArPSAoMTIgKyBjbGVhcktleUNlbmNTeXN0ZW1JZFNpemUpOyAvLyAxMiAoQk1G
RiBib3ggaGVhZGVyICsgRnVsbCBib3ggaGVhZGVyKSArIFN5c3RlbUlEIHNpemUuCisKKyAgICAv
LyBDaGVjayB0aGUgb3ZlcmZsb3cuCisgICAgaWYgKGluZGV4ICsgMyA+PSBpbml0RGF0YVNpemUp
CisgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CisKKyAgICBrZXlJZHNNYXAuZmlyc3QgPSBkYXRh
W2luZGV4ICsgM107IC8vIFJlYWQgdGhlIEtleUlkc0NvdW50LgorICAgIGluZGV4ICs9IDQ7IC8v
IEtleUlkc0NvdW50IHNpemUuCisKKyAgICAvLyBDaGVjayB0aGUgb3ZlcmZsb3cuCisgICAgaWYg
KChpbmRleCArIChrZXlJZHNNYXAuZmlyc3QgKiBrZXlJZFNpemUpKSA+PSBpbml0RGF0YVNpemUp
CisgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CisKKyAgICBrZXlJZHNNYXAuc2Vjb25kID0gaW5k
ZXg7IC8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEuCisKKyAg
ICByZXR1cm4ga2V5SWRzTWFwOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUg
aW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KK3N0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCit7CisgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xv
Y2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CisgICAgcmV0dXJuICgoa2V5SWRzTWFw
LmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOworfQorCitzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK3sKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFw
ID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CisgICAg
dW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IGtleUlkc01hcC5zZWNvbmQ7CisKKyAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZh
bGlkIENFTkMgaW5pdERhdGEuCisgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKKyAgICAg
ICAgcmV0dXJuIGtleUlkczsKKworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisKKyAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKworICAgIC8vIFJlYWQgdGhl
IEtleUlkCisgICAgLy8gOS4xLjMgTGljZW5zZSBSZXF1ZXN0IEZvcm1hdAorICAgIC8vIFRoaXMg
c2VjdGlvbiBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiB0aGUgbGljZW5zZSByZXF1ZXN0IHByb3Zp
ZGVkIHRvIHRoZSBhcHBsaWNhdGlvbiB2aWEgdGhlIG1lc3NhZ2UgYXR0cmlidXRlIG9mIHRoZSBt
ZXNzYWdlIGV2ZW50LgorICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWlu
aW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKKyAgICAvLyAia2lkcyIKKyAgICAvLyBBbiBhcnJh
eSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwg
ZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1
ZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5SWRDb3VudDsgaSsrKSB7CisgICAg
ICAgIFN0cmluZyBrZXlJZCA9IFdURjo6YmFzZTY0VVJMRW5jb2RlKCZkYXRhW2luZGV4XSwga2V5
SWRTaXplKTsKKyAgICAgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoa2V5SWQpOworICAgICAg
ICBpbmRleCArPSBrZXlJZFNpemU7CisgICAgfQorCisgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKKyAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CisgICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkczsKK30KKwogQ0RNRmFj
dG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENETUZhY3RvcnlDbGVhcktleT4gc19mYWN0b3J5OwpAQCAtMTcw
LDggKzI4OSw4IEBAIENETVByaXZhdGVDbGVhcktleTo6fkNETVByaXZhdGVDbGVhcktleSgpID0g
ZGVmYXVsdDsKIAogYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewotICAgIC8vIGBrZXlp
ZHNgIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIik7CisgICAg
Ly8gYGtleWlkc2AgYW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0
eXBlLgorICAgIHJldHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFU
eXBlLCAia2V5aWRzIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFU
eXBlLCAiY2VuYyIpKTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJzaXN0ZW50TGljZW5z
ZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBAIC0yNzQsMTUgKzM5
MywxNSBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
CiAKIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAogewotICAgIC8vIEZhaWwgZm9yIGluaXQgZGF0YSB0eXBlcyBvdGhlciB0aGFuICdrZXlpZHMn
LgotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAi
a2V5aWRzIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBWYWxpZGF0ZSB0aGUgaW5p
dERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgorICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBw
YXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8v
IFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCi0gICAgaWYg
KCFwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBDRU5DIGluaXREYXRhLgorICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikgJiYg
aXNDZW5jSW5pdERhdGEoaW5pdERhdGEpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CkBAIC0zNDAsMTEgKzQ1OSwxNCBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vz
c1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJgogICAgIHJldHVybiBzdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSA/IFN1Y2NlZWRlZCA6
IEZhaWxlZDsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayBjYWxs
YmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAg
KytzX3Nlc3Npb25JZFZhbHVlOwogCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSkKKyAgICAgICAgaW5pdERhdGEgPSBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YS5nZXQoKSk7CisKICAgICBjYWxsT25NYWluVGhy
ZWFkKAogICAgICAgICBbd2Vha1RoaXMgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpbml0RGF0YSA9IFdURk1vdmUo
aW5pdERhdGEpLCBzZXNzaW9uSWRWYWx1ZSA9IHNfc2Vzc2lvbklkVmFsdWVdKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330715</attachid>
            <date>2018-01-08 10:36:23 -0800</date>
            <delta_ts>2018-01-09 02:02:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180081-20180108193622.patch</filename>
            <type>text/plain</type>
            <size>9319</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMWI1MjZmZTUxYmYw
OWFkMjAyZTk4MTFmNjBmZTk5ODNhMjY0ZS4uMDMyM2Q5YTVlZDFmMzI2MWJhMGRlMTM5ODE0NmE3
YTA2YjJhMTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTEyLTE4ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV0gQWRkIHRoZSBDRU5DIGluaXREYXRhIHN1cHBvcnQgaW4gQ2xlYXJLZXkgQ0RNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlICJjZW5j
IiBpbml0RGF0YVR5cGUgc3VwcG9ydCBpbiBDbGVhcktleSBDRE0uCisgICAgICAgIFBhcnNlIHRo
ZSBDRU5DIGluaXREYXRhIGFuZCBleHRyYWN0IHRoZSBLSURzIGJ5IGZvbGxvd2luZyB0aGUgVzND
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2VtZS1pbml0ZGF0YS1jZW5jLyNj
b21tb24tc3lzdGVtCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9jbGVh
cktleS9jbGVhcktleS1tZXNzYWdlLWNlbmMtZXZlbnQuaHRtbAorICAgICAgICAgICAgICAgbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2NsZWFyS2V5L2NsZWFyS2V5LW1lc3NhZ2UtY2VuYy1ldmVudC1t
c2UuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjppc0NlbmNJbml0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZSk6CisKIDIwMTctMTItMjAgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIyNjE2MCkgQnVpbGQgYnJva2VuIHdoZW4gTUVESUFfU1RSRUFNIGlz
IGRpc2FibGVkIHdpdGggTWVkaWFTdHJlYW1SZXF1ZXN0IG5hbWVzcGFjZSBjb25mdXNpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCA0ZTQxM2YzZmFiZDVmMTE3YWU0NWYwOWU5
MTVmZDBlYzE5OWQzY2NkLi4yNGZkNjVlOTBiN2JiMWMwOWU2NTk3NTVmOGQwYzMyNjJlYmNhMjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00Myw2ICs0MywxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIENsZWFyS2V5IENFTkMgU3lzdGVtSUQuCisvLyBodHRw
czovL3d3dy53My5vcmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1vbi1zeXN0ZW0KK2NvbnN0
IHVpbnQ4X3QgY2xlYXJLZXlDZW5jU3lzdGVtSWRbXSA9IHsgMHgxMCwgMHg3NywgMHhlZiwgMHhl
YywgMHhjMCwgMHhiMiwgMHg0ZCwgMHgwMiwgMHhhYywgMHhlMywgMHgzYywgMHgxZSwgMHg1Miwg
MHhlMiwgMHhmYiwgMHg0YiB9OworY29uc3QgdW5zaWduZWQgY2xlYXJLZXlDZW5jU3lzdGVtSWRT
aXplID0gc2l6ZW9mKGNsZWFyS2V5Q2VuY1N5c3RlbUlkKTsKK2NvbnN0IHVuc2lnbmVkIGtleUlk
U2l6ZSA9IDE2OworCiBjbGFzcyBDbGVhcktleVN0YXRlIHsKICAgICB1c2luZyBLZXlTdG9yZSA9
IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj47CiAKQEAg
LTE0MCw2ICsxNDYsMTE5IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3ds
ZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogICAgIHJldHVybiB0cnVl
OwogfQogCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvZW1lLWluaXRkYXRhLWNlbmMvI2NvbW1v
bi1zeXN0ZW0KKy8vIDQuMSBEZWZpbml0aW9uCisvLyBUaGUgU3lzdGVtSUQgaXMgMTA3N2VmZWMt
YzBiMi00ZDAyLWFjZTMtM2MxZTUyZTJmYjRiLgorLy8gVGhlIFBTU0ggYm94IGZvcm1hdCBpcyBh
cyBmb2xsb3dzLiBJdCBmb2xsb3dzIHZlcnNpb24gMSBvZiB0aGUgJ3Bzc2gnIGJveCBhcyBkZWZp
bmVkIGluIFtDRU5DXS4KKy8vIHBzc2ggPSBbCisvLyAweDAwLCAweDAwLCAweDAwLCAweDRjLCAw
eDcwLCAweDczLCAweDczLCAweDY4LCAvLyBCTUZGIGJveCBoZWFkZXIgKDc2IGJ5dGVzLCAncHNz
aCcpCisvLyAweDAxLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGdWxsIGJveCBoZWFkZXIgKHZlcnNpb24gPSAxLCBmbGFncyA9IDApCisvLyAweDEwLCAweDc3
LCAweGVmLCAweGVjLCAweGMwLCAweGIyLCAweDRkLCAweDAyLCAvLyBTeXN0ZW1JRAorLy8gMHhh
YywgMHhlMywgMHgzYywgMHgxZSwgMHg1MiwgMHhlMiwgMHhmYiwgMHg0YiwKKy8vIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEtpZENvdW50ICgyKQor
Ly8gMHgzMCwgMHgzMSwgMHgzMiwgMHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgLy8gRmly
c3QgS0lEICgiMDEyMzQ1Njc4OTAxMjM0NSIpCisvLyAweDM4LCAweDM5LCAweDMwLCAweDMxLCAw
eDMyLCAweDMzLCAweDM0LCAweDM1LAorLy8gMHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwg
MHg0NiwgMHg0NywgMHg0OCwgLy8gU2Vjb25kIEtJRCAoIkFCQ0RFRkdISUpLTE1OT1AiKQorLy8g
MHg0OSwgMHg0YSwgMHg0YiwgMHg0YywgMHg0ZCwgMHg0ZSwgMHg0ZiwgMHg1MCwKKy8vIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpemUgb2YgRGF0
YSAoMCkKKy8vIF07CisKKy8vIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3Vu
dCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIu
CitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQoreworICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKKworICAgIC8v
IENoZWNrIHRoZSBpbml0RGF0YSBzaXplLgorICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwg
aW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQor
ICAgICAgICByZXR1cm4ga2V5SWRzTWFwOworCisgICAgY29uc3QgY2hhciogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7
CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKKwor
ICAgIC8vIFNlYXJjaCBpbiB0aGUgY29uY2F0ZW5hdGVkIG9yIHRoZSBzaW1wbGUgSW5pdERhdGEs
IHRoZSBDbGVhcktleSBQU1NILgorICAgIGJvb2wgZm91bmRQc3NoID0gZmFsc2U7CisgICAgd2hp
bGUgKHRydWUpIHsKKworICAgICAgICAvLyBDaGVjayB0aGUgb3ZlcmZsb3cgSW5pdERhdGEuCisg
ICAgICAgIGlmIChpbmRleCArIDEyICsgY2xlYXJLZXlDZW5jU3lzdGVtSWRTaXplID49IGluaXRE
YXRhU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CisKKyAgICAgICAgcHNzaFNp
emUgPSBkYXRhW2luZGV4ICsgMl0gKiAyNTYgKyBkYXRhW2luZGV4ICsgM107CisKKyAgICAgICAg
Ly8gMTIgPSBCTUZGIGJveCBoZWFkZXIgKyBGdWxsIGJveCBoZWFkZXIuCisgICAgICAgIGlmICgh
bWVtY21wKCZkYXRhW2luZGV4ICsgMTJdLCBjbGVhcktleUNlbmNTeXN0ZW1JZCwgY2xlYXJLZXlD
ZW5jU3lzdGVtSWRTaXplKSkgeworICAgICAgICAgICAgZm91bmRQc3NoID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGluZGV4ICs9IHBzc2hTaXplOworICAg
IH0KKworICAgIC8vIENoZWNrIGlmIHRoZSBJbml0RGF0YSBjb250YWlucyB0aGUgQ2xlYXJLZXkg
UFNTSC4KKyAgICBpZiAoIWZvdW5kUHNzaCkKKyAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKKwor
ICAgIGluZGV4ICs9ICgxMiArIGNsZWFyS2V5Q2VuY1N5c3RlbUlkU2l6ZSk7IC8vIDEyIChCTUZG
IGJveCBoZWFkZXIgKyBGdWxsIGJveCBoZWFkZXIpICsgU3lzdGVtSUQgc2l6ZS4KKworICAgIC8v
IENoZWNrIHRoZSBvdmVyZmxvdy4KKyAgICBpZiAoaW5kZXggKyAzID49IGluaXREYXRhU2l6ZSkK
KyAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKKworICAgIGtleUlkc01hcC5maXJzdCA9IGRhdGFb
aW5kZXggKyAzXTsgLy8gUmVhZCB0aGUgS2V5SWRzQ291bnQuCisgICAgaW5kZXggKz0gNDsgLy8g
S2V5SWRzQ291bnQgc2l6ZS4KKworICAgIC8vIENoZWNrIHRoZSBvdmVyZmxvdy4KKyAgICBpZiAo
KGluZGV4ICsgKGtleUlkc01hcC5maXJzdCAqIGtleUlkU2l6ZSkpID49IGluaXREYXRhU2l6ZSkK
KyAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKKworICAgIGtleUlkc01hcC5zZWNvbmQgPSBpbmRl
eDsgLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBLZXlJZCBpbiBpbml0RGF0YS4KKworICAg
IHJldHVybiBrZXlJZHNNYXA7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBp
bml0RGF0YSBzaGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgorc3RhdGljIGJv
b2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3sKKyAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKKyAgICByZXR1cm4gKChrZXlJZHNNYXAu
Zmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7Cit9CisKK3N0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQoreworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAg
PSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKKyAgICB1
bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OworICAgIHVuc2lnbmVkIGluZGV4
ID0ga2V5SWRzTWFwLnNlY29uZDsKKworICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KKyAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQorICAgICAg
ICByZXR1cm4ga2V5SWRzOworCisgICAgY29uc3QgY2hhciogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKworICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOworCisgICAgLy8gUmVhZCB0aGUg
S2V5SWQKKyAgICAvLyA5LjEuMyBMaWNlbnNlIFJlcXVlc3QgRm9ybWF0CisgICAgLy8gVGhpcyBz
ZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIHRoZSBsaWNlbnNlIHJlcXVlc3QgcHJvdmlk
ZWQgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSB0aGUgbWVzc2FnZSBhdHRyaWJ1dGUgb2YgdGhlIG1l
c3NhZ2UgZXZlbnQuCisgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5p
bmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgorICAgIC8vICJraWRzIgorICAgIC8vIEFuIGFycmF5
IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBl
bmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVl
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXlJZENvdW50OyBpKyspIHsKKyAgICAg
ICAgU3RyaW5nIGtleUlkID0gV1RGOjpiYXNlNjRVUkxFbmNvZGUoJmRhdGFbaW5kZXhdLCBrZXlJ
ZFNpemUpOworICAgICAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhrZXlJZCk7CisgICAgICAg
IGluZGV4ICs9IGtleUlkU2l6ZTsKKyAgICB9CisKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRz
IiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOworICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3Qt
PnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKKyAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRh
KCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzOworfQorCiBDRE1GYWN0
b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q0RNRmFjdG9yeUNsZWFyS2V5PiBzX2ZhY3Rvcnk7CkBAIC0xNzAs
OCArMjg5LDggQEAgQ0RNUHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBk
ZWZhdWx0OwogCiBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlk
c2AgaXMgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJldHVybiBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKTsKKyAgICAv
LyBga2V5aWRzYCBhbmQgJ2NlbmMnIGFyZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRhIHR5
cGUuCisgICAgcmV0dXJuIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5
cGUsICJrZXlpZHMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5
cGUsICJjZW5jIikpOwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc1BlcnNpc3RlbnRMaWNlbnNl
VHlwZShjb25zdCBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+JiB0eXBlcykKQEAgLTI3NCwxNSArMzkz
LDE1IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QK
IAogYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbWlj
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0
CiB7Ci0gICAgLy8gRmFpbCBmb3IgaW5pdCBkYXRhIHR5cGVzIG90aGVyIHRoYW4gJ2tleWlkcycu
Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJr
ZXlpZHMiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0
RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCisgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIHBh
cnNlSlNPTk9iamVjdChpbml0RGF0YSkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8g
VmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KLSAgICBpZiAo
IXBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAv
LyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIENFTkMgaW5pdERhdGEuCisgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSAmJiBp
c0NlbmNJbml0RGF0YShpbml0RGF0YSkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKQEAgLTM0MCwxMSArNDU5LDE0IEBAIENETUluc3RhbmNlOjpTdWNjZXNz
VmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmCiAgICAgcmV0dXJuIHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpID8gU3VjY2VlZGVkIDog
RmFpbGVkOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxi
YWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICAr
K3Nfc2Vzc2lvbklkVmFsdWU7CiAKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpKQorICAgICAgICBpbml0RGF0YSA9IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGluaXREYXRhLmdldCgpKTsKKwogICAgIGNhbGxPbk1haW5UaHJl
YWQoCiAgICAgICAgIFt3ZWFrVGhpcyA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigq
dGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGluaXREYXRhID0gV1RGTW92ZShp
bml0RGF0YSksIHNlc3Npb25JZFZhbHVlID0gc19zZXNzaW9uSWRWYWx1ZV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>