<?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>186410</bug_id>
          
          <creation_ts>2018-06-07 14:41:22 -0700</creation_ts>
          <short_desc>Implement KeyedDecoderGeneric and KeyedEncoderGeneric</short_desc>
          <delta_ts>2020-01-08 00:25:38 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205902</see_also>
          <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>175336</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1431025</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-06-07 14:41:22 -0700</bug_when>
    <thetext>Currently there is a glib and CoreFoundation implementation of KeyedEncoder and KeyedDecoder. There should be a generic implementation of this available for platforms not using glib and CoreFoundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521990</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-27 20:50:52 -0700</bug_when>
    <thetext>It seems that WebCore/platform/generic/KeyedDecoderGeneric.cpp can be implemented by using wtf/persistence/PersistentDecoder.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528050</commentid>
    <comment_count>2</comment_count>
      <attachid>367619</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-17 01:15:07 -0700</bug_when>
    <thetext>Created attachment 367619
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528062</commentid>
    <comment_count>3</comment_count>
      <attachid>367621</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-17 02:52:03 -0700</bug_when>
    <thetext>Created attachment 367621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528063</commentid>
    <comment_count>4</comment_count>
      <attachid>367622</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-17 02:53:57 -0700</bug_when>
    <thetext>Created attachment 367622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528111</commentid>
    <comment_count>5</comment_count>
      <attachid>367622</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-17 09:29:39 -0700</bug_when>
    <thetext>Comment on attachment 367622
Patch

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

&gt; Source/WebCore/platform/generic/KeyedEncoderGeneric.h:56
&gt; +        BeginObject,
&gt; +        EndObject,
&gt; +        BeginArray,
&gt; +        BeginArrayElement,
&gt; +        EndArrayElement,
&gt; +        EndArray,

We actually only need Object and Array here, but removing the others would require changing the CF version.  Maybe we should just update both versions in the future.  Then we could use recursion instead of having our own stacks, too.  What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528383</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-17 20:25:41 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; We actually only need Object and Array here, but removing the others would
&gt; require changing the CF version.  Maybe we should just update both versions
&gt; in the future.  Then we could use recursion instead of having our own
&gt; stacks, too.  What do you think?

I agreed on your opinion. KeyedDecoder interface is badly designed.
We can take two approaches in this case, SAX approach and DOM approach.

In DOM approach, KeyedDecoder should have a iterator which indicates the current node.
In SAX approach, KeyedDecoder should only have event driven callbacks.

Anyway, we need to rewrite all clients in order to do the refactoring.

* IDBKeyData::decode
* deserializeIDBKeyPath in IDBSerialization.cpp
* ResourceLoadStatistics::decode

I guess those tasks are not so easy.

Regarding having own stack, I&apos;m not sure how we shoud do.
Because I observes stack overflow in the 2500-level nested array
in storage/indexeddb/key-type-array.html in WinCairo port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528699</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-18 21:28:01 -0700</bug_when>
    <thetext>Committed r244450: &lt;https://trac.webkit.org/changeset/244450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528700</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-18 21:28:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/50039501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367619</attachid>
            <date>2019-04-17 01:15:07 -0700</date>
            <delta_ts>2019-04-17 02:51:42 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>18635</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMGRhYjEzMTBiNjEuLmQxNWNmMGM4MTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQ5LDggKzI0OSw2IEBAIGlmIChVU0VfQ0Yp
CiAKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKIAotICAg
ICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKLSAgICAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjcy
LDEyICsyNzAsMjAgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1
cHBvcnRfTElCUkFSSUVTICR7Q09SRUZPVU5EQVRJT05fTElCUkFSWX0pCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAotCiAgICAgICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAg
ICAgKQorZW5kaWYgKCkKIAoraWYgKFVTRV9DRiBBTkQgTk9UICR7V1RGX1BMQVRGT1JNX1dJTl9D
QUlST30pCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIHBsYXRmb3Jt
L2NmL0tleWVkRGVjb2RlckNGLmNwcAorICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKKyAgICApCitlbHNlICgpCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisg
ICAgICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKyAgICAgICAg
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorICAgICkKICAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgICAgICBw
bGF0Zm9ybS9nZW5lcmljCiAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggZWNkZmVlZGYxYTQuLjY3
NmRiODY2NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTI2LDkyICsyNiwyOTAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJLZXllZERlY29kZXJHZW5lcmljLmgiCiAKKyNpbmNsdWRl
ICJLZXllZEVuY29kZXJHZW5lcmljLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0MTAKK2NsYXNzIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OkRpY3Rpb25hcnkgeworcHVibGljOgorICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50
PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2
NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwg
c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXks
IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAg
Tm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0K
KworcHJpdmF0ZToKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZT4+
IG1fbWFwOworfTsKKwogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVy
OjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQog
Ci1LZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpCitzdGF0aWMgYm9vbCByZWFkU3RyaW5nKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXImIGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQoreworICAgIHNpemVfdCBzaXplOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyKHNpemUpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEoYnVmZmVyLmRhdGEoKSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXN1bHQgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHNpemUpOworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGJvb2wgcmVhZFNp
bXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIsIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OkRpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCiB7CisgICAgU3RyaW5nIGtleTsKKyAg
ICBib29sIG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOworICAgIGlmICghb2spCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBUIHZhbHVlOworICAgIG9rID0gZGVjb2Rlci5kZWNvZGUo
dmFsdWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkaWN0aW9u
YXJ5LmFkZChrZXksIFdURk1vdmUodmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworS2V5
ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
ZGF0YSwgc2l6ZSk7CisgICAgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0eXBlOworICAgIFN0
cmluZyBrZXk7CisKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0
aW9uYXJ5PigpOworICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5
LmdldCgpKTsKKworICAgIGJvb2wgb2sgPSB0cnVlOworICAgIHdoaWxlIChvayAmJiBkZWNvZGVy
LmRlY29kZUVudW0odHlwZSkpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNh
c2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6Qnl0ZXM6IHsKKyAgICAgICAgICAgIG9rID0g
cmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOworICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHNpemVfdCBzaXplOworICAgICAgICAgICAgb2sg
PSBkZWNvZGVyLmRlY29kZShzaXplKTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKHNpemUpOwor
ICAgICAgICAgICAgb2sgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0
YSgpLCBzaXplKTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEtl
eWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJvb2w6CisgICAgICAgICAgICBvayA9IHJlYWRTaW1w
bGVWYWx1ZTxib29sPihkZWNvZGVyLCAqbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlVJ
bnQzMjoKKyAgICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVlPHVpbnQzMl90PihkZWNvZGVy
LCAqbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlVJbnQ2NDoKKyAgICAgICAgICAgIG9r
ID0gcmVhZFNpbXBsZVZhbHVlPHVpbnQ2NF90PihkZWNvZGVyLCAqbV9kaWN0aW9uYXJ5U3RhY2su
bGFzdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGU6OkludDMyOgorICAgICAgICAgICAgb2sgPSByZWFkU2ltcGxlVmFsdWU8aW50
MzJfdD4oZGVjb2RlciwgKm1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpJbnQ2NDoKKyAg
ICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVlPGludDY0X3Q+KGRlY29kZXIsICptX2RpY3Rp
b25hcnlTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6RmxvYXQ6CisgICAgICAgICAgICBvayA9IHJlYWRTaW1w
bGVWYWx1ZTxmbG9hdD4oZGVjb2RlciwgKm1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpE
b3VibGU6CisgICAgICAgICAgICBvayA9IHJlYWRTaW1wbGVWYWx1ZTxkb3VibGU+KGRlY29kZXIs
ICptX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6U3RyaW5nOiB7CisgICAgICAgICAgICBv
ayA9IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgICAg
ICBvayA9IHJlYWRTdHJpbmcoZGVjb2RlciwgdmFsdWUpOworICAgICAgICAgICAgaWYgKCFvaykK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxh
c3QoKS0+YWRkKGtleSwgV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbk9iamVj
dDogeworICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CisgICAgICAg
ICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYXV0byog
Y3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAg
IGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAg
ICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsK
KyAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdURk1vdmUobmV3RGljdGlv
bmFyeSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBLZXll
ZEVuY29kZXJHZW5lcmljOjpUeXBlOjpFbmRPYmplY3Q6CisgICAgICAgICAgICBtX2RpY3Rpb25h
cnlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBL
ZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5OiB7CisgICAgICAgICAgICBvayA9
IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheT4oKTsKKyAgICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXku
Z2V0KCkpOworICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBX
VEZNb3ZlKG5ld0FycmF5KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Cisg
ICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25h
cnk+KCk7CisgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFy
eS5nZXQoKSk7CisgICAgICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92
ZShuZXdEaWN0aW9uYXJ5KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkVuZEFycmF5RWxlbWVudDoKKyAgICAg
ICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkVuZEFycmF5OgorICAg
ICAgICAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIHdoaWxlIChtX2RpY3Rpb25hcnlTdGFjay5zaXplKCkgPiAx
KQorICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgd2hpbGUgKCFt
X2FycmF5U3RhY2suaXNFbXB0eSgpKQorICAgICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgp
OwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjp+S2V5ZWREZWNvZGVyR2VuZXJpYygpCiB7CiB9
CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgdWludDhfdComLCBzaXplX3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNv
ZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYg
c2l6ZSkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
ZjxWZWN0b3I8dWludDhfdD4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwor
ICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkYXRhID0gdmFsdWUt
PmRhdGEoKTsKKyAgICBzaXplID0gdmFsdWUtPnNpemUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYsIGJv
b2wmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVl
ID0gV1RGOjpnZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2
YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiwgdWludDMyX3QmKQorYm9vbCBLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90JiByZXN1bHQp
CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8dWlu
dDMyX3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFs
dWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90JikKK2Jvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2Rl
VUludDY0KGNvbnN0IFN0cmluZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHVpbnQ2NF90PihtX2RpY3Rp
b25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKGNvbnN0IFN0cmluZyYsIGlu
dDMyX3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBTdHJp
bmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRv
KiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGludDMyX3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+
Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6ZGVjb2RlSW50NjQoY29uc3QgU3RyaW5nJiwgaW50NjRfdCYpCitib29sIEtleWVk
RGVjb2RlckdlbmVyaWM6OmRlY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90JiBy
ZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8aW50NjRfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVGbG9h
dChjb25zdCBTdHJpbmcmLCBmbG9hdCYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCYgcmVzdWx0KQogewotICAgIHJldHVybiBm
YWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGZsb2F0PihtX2RpY3Rpb25hcnlT
dGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmVzdWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUm
KQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSYgcmVzdWx0KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiB2YWx1
ZSA9IFdURjo6Z2V0X2lmPGRvdWJsZT4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9
ICp2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nJikKK2Jvb2wgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6ZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHJlc3VsdCkK
IHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxTdHJp
bmc+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3Qg
U3RyaW5nJikKK2Jvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3Ry
aW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpn
ZXRfaWY8c3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0
KCktPmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kT2JqZWN0KCkKIHsKKyAgICBt
X2RpY3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6YmVnaW5BcnJheShjb25zdCBTdHJpbmcmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmlj
OjpiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+KG1fZGlj
dGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtX2FycmF5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7Cisg
ICAgbV9hcnJheUluZGV4U3RhY2suYXBwZW5kKDApOworICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmJlZ2luQXJyYXlFbGVtZW50KCkKIHsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fYXJyYXlJbmRleFN0YWNrLmxhc3QoKSA+PSBtX2FycmF5U3Rh
Y2subGFzdCgpLT5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IG1fYXJyYXlTdGFjay5sYXN0KCktPmF0KG1fYXJyYXlJbmRleFN0YWNrLmxhc3Qo
KSsrKS5nZXQoKTsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQoZGljdGlvbmFyeSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kQXJyYXlF
bGVtZW50KCkKIHsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZv
aWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogeworICAgIG1fYXJyYXlTdGFjay5y
ZW1vdmVMYXN0KCk7CisgICAgbV9hcnJheUluZGV4U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oCmluZGV4IDliMjJiMzNlZTA5Li5jNDYyNTNh
NzdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZERlY29kZXJHZW5lcmljLmgKQEAgLTM0LDYgKzM0LDkgQEAgcHVibGljOgogICAgIEtleWVkRGVj
b2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICB+S2V5ZWREZWNv
ZGVyR2VuZXJpYygpIG92ZXJyaWRlOwogCisgICAgY2xhc3MgRGljdGlvbmFyeTsKKyAgICB1c2lu
ZyBBcnJheSA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4+OworCiBwcml2YXRl
OgogICAgIGJvb2wgZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
Jiwgc2l6ZV90Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sJikgb3ZlcnJpZGU7CkBAIC01Miw2ICs1NSwxMSBAQCBwcml2YXRlOgogICAgIGJv
b2wgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5RWxlbWVu
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBtX3Jvb3REaWN0aW9uYXJ5OworICAgIFZlY3RvcjxEaWN0
aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFyeVN0YWNrOworICAgIFZlY3RvcjxBcnJheSosIDE2PiBt
X2FycmF5U3RhY2s7CisgICAgVmVjdG9yPHNpemVfdCwgMTY+IG1fYXJyYXlJbmRleFN0YWNrOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMDljZjVjMjE3
MWQuLmZjYjQ4MzI3ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2lu
Y2x1ZGUgIktleWVkRW5jb2RlckdlbmVyaWMuaCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2NDEwCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVu
Y29kZXI6OmVuY29kZXIoKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5j
b2RlckdlbmVyaWM+KCk7CkBAIC00NCw2OSArNDQsMTEyIEBAIEtleWVkRW5jb2RlckdlbmVyaWM6
On5LZXllZEVuY29kZXJHZW5lcmljKCkKIHsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmlj
OjplbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQordm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7
CisgICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKKyAgICBtX2VuY29kZXIgPDwgdXRmOC5sZW5n
dGgoKTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKLXZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmLCBib29sKQor
dm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQogeworICAgIG1fZW5jb2RlciA8PCBU
eXBlOjpCeXRlczsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKKyAgICBtX2VuY29kZXIgPDwgc2l6
ZTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGJ5dGVzLCBzaXplKTsKIH0K
IAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiwg
dWludDMyX3QpCit2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wgdmFsdWUpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkJvb2w7Cisg
ICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAgbV9lbmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVVJbnQ2NChjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYg
a2V5LCB1aW50MzJfdCB2YWx1ZSkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6VUludDMyOwor
ICAgIGVuY29kZVN0cmluZyhrZXkpOworICAgIG1fZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAotdm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmLCBpbnQzMl90
KQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVVSW50NjQoY29uc3QgU3RyaW5nJiBr
ZXksIHVpbnQ2NF90IHZhbHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpVSW50NjQ7Cisg
ICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAgbV9lbmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUludDY0KGNvbnN0IFN0cmluZyYsIGludDY0X3Qp
Cit2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5
LCBpbnQzMl90IHZhbHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpJbnQzMjsKKyAgICBl
bmNvZGVTdHJpbmcoa2V5KTsKKyAgICBtX2VuY29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiwgZmxvYXQpCit2b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2
NF90IHZhbHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpJbnQ2NDsKKyAgICBlbmNvZGVT
dHJpbmcoa2V5KTsKKyAgICBtX2VuY29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkKK3ZvaWQgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZh
bHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpGbG9hdDsKKyAgICBlbmNvZGVTdHJpbmco
a2V5KTsKKyAgICBtX2VuY29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit2b2lkIEtl
eWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91Ymxl
IHZhbHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpEb3VibGU7CisgICAgZW5jb2RlU3Ry
aW5nKGtleSk7CisgICAgbV9lbmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lkIEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYpCit2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6U3RyaW5nOworICAgIGVuY29kZVN0cmluZyhr
ZXkpOworICAgIGVuY29kZVN0cmluZyh2YWx1ZSk7Cit9CisKK3ZvaWQgS2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgbV9lbmNvZGVyIDw8
IFR5cGU6OkJlZ2luT2JqZWN0OworICAgIGVuY29kZVN0cmluZyhrZXkpOwogfQogCiB2b2lkIEtl
eWVkRW5jb2RlckdlbmVyaWM6OmVuZE9iamVjdCgpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6
OkVuZE9iamVjdDsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KGNv
bnN0IFN0cmluZyYpCit2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmJlZ2luQXJyYXkoY29uc3Qg
U3RyaW5nJiBrZXkpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkJlZ2luQXJyYXk7CisgICAg
ZW5jb2RlU3RyaW5nKGtleSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6YmVnaW5B
cnJheUVsZW1lbnQoKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpCZWdpbkFycmF5RWxlbWVu
dDsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheUVsZW1lbnQoKQogewor
ICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheUVsZW1lbnQ7CiB9CiAKIHZvaWQgS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRB
cnJheTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGI4YzU0NDdmZTE0
Li40NjIxNTgzOWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsNiArNDAsMjQgQEAgcHVibGljOgogICAgIEtleWVkRW5jb2Rl
ckdlbmVyaWMoKTsKICAgICB+S2V5ZWRFbmNvZGVyR2VuZXJpYygpOwogCisgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEJ5dGVzLAorICAgICAgICBCb29sLAorICAgICAg
ICBVSW50MzIsCisgICAgICAgIFVJbnQ2NCwKKyAgICAgICAgSW50MzIsCisgICAgICAgIEludDY0
LAorICAgICAgICBGbG9hdCwKKyAgICAgICAgRG91YmxlLAorICAgICAgICBTdHJpbmcsCisgICAg
ICAgIEJlZ2luT2JqZWN0LAorICAgICAgICBFbmRPYmplY3QsCisgICAgICAgIEJlZ2luQXJyYXks
CisgICAgICAgIEJlZ2luQXJyYXlFbGVtZW50LAorICAgICAgICBFbmRBcnJheUVsZW1lbnQsCisg
ICAgICAgIEVuZEFycmF5LAorICAgIH07CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIApAQCAtNTgsNiArNzgsMzQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
bmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXIgbV9lbmNvZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUsCisgICAg
ICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJ5dGVzLAorICAgICAgICBX
ZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCb29sLAorICAgICAgICBXZWJDb3Jl
OjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpVSW50MzIsCisgICAgICAgIFdlYkNvcmU6Oktl
eWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlVJbnQ2NCwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6VHlwZTo6SW50MzIsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2Rl
ckdlbmVyaWM6OlR5cGU6OkludDY0LAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpUeXBlOjpGbG9hdCwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6
VHlwZTo6RG91YmxlLAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBl
OjpTdHJpbmcsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJl
Z2luT2JqZWN0LAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpF
bmRPYmplY3QsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJl
Z2luQXJyYXksCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJl
Z2luQXJyYXlFbGVtZW50LAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpU
eXBlOjpFbmRBcnJheUVsZW1lbnQsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OlR5cGU6OkVuZEFycmF5CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367621</attachid>
            <date>2019-04-17 02:52:03 -0700</date>
            <delta_ts>2019-04-17 02:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186410-20190417185202.patch</filename>
            <type>text/plain</type>
            <size>20474</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JjMjc1YzliNDc3OTMw
NDg1NDUwMzMwMjE0Mzc3MTQwYjkyNmE5Yi4uMzc1ZjQ2OTNhMTFjMmE1MmYyM2IwYjUwODk0YTFl
NmI5NTI0NWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBLZXllZERlY29kZXJHZW5lcmljIGFuZCBLZXllZEVuY29kZXJHZW5lcmljCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBLZXllZERl
Y29kZXJHZW5lcmljIGFuZCBLZXllZEVuY29kZXJHZW5lcmljIHdpdGgKKyAgICAgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlci4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIEV4aXN0aW5nIHRlc3QgdXBkYXRlZC4KKworICAgICAgICAqIFBs
YXRmb3JtV2luLmNtYWtlOiBBZGRlZCBLZXllZERlY29kZXJHZW5lcmljLmNwcCBhbmQKKyAgICAg
ICAgS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAsIGFuZCByZW1vdmVkIEtleWVkRGVjb2RlckNGLmNw
cCBhbmQKKyAgICAgICAgS2V5ZWRFbmNvZGVyQ0YuY3BwIGZvciBXaW5DYWlybyBwb3J0LgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKwogMjAxOS0wNC0xNSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBxdWVyeSBzdHJpbmcg
bm9uY2UgdG8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1h
dHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbCB0byBhZGRyZXNzIGZsYWtpbmVzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAwZGFiMTMxMGI2MWI3ZjY0MjA1MDVjYzBkMzAw
NDY2YTFkNjYxMzNhLi43N2EyOWRlNTQwOGM2MTRlNzdhNGRkZmEyNWY1OGI2ZTZiZGQwNWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQ5LDggKzI0OSw2IEBAIGlmIChVU0VfQ0Yp
CiAKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKIAotICAg
ICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKLSAgICAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjcy
LDEyICsyNzAsMjAgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1
cHBvcnRfTElCUkFSSUVTICR7Q09SRUZPVU5EQVRJT05fTElCUkFSWX0pCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAotCiAgICAgICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAg
ICAgKQorZW5kaWYgKCkKIAoraWYgKFVTRV9DRiBBTkQgTk9UIFdURl9QTEFURk9STV9XSU5fQ0FJ
Uk8pCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIHBsYXRmb3JtL2Nm
L0tleWVkRGVjb2RlckNGLmNwcAorICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKKyAgICApCitlbHNlICgpCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAg
ICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKyAgICAgICAgcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorICAgICkKICAgICBsaXN0KEFQ
UEVORCBXZWJDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgICAgICBwbGF0
Zm9ybS9nZW5lcmljCiAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggZWNkZmVlZGYxYTRjNGZhMTRh
MTU3ZWY1NjhjNjEyNDBlODA5NTdmNy4uYTRhMzBiNTJhYmU0OGFmODUwZGM3Yzc0N2EzYmNkZTFk
NTFmZGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC0yNiw5MiArMjYsMjg2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiS2V5ZWREZWNvZGVyR2VuZXJpYy5oIgogCisjaW5jbHVkZSAi
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NDEwCi1zdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCitjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBOb2RlID0gVmFyaWFu
dDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50
NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4s
IHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5
LCBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQorICAg
IE5vZGUmIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkpOyB9
CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxOb2RlPj4g
bV9tYXA7Cit9OworCitzdGF0aWMgYm9vbCByZWFkU3RyaW5nKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImIGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOworICAgIHNpemVfdCBzaXpl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKHNpemUpOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEoYnVmZmVyLmRhdGEoKSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXN1bHQgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHNpemUp
OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGJv
b2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIsIEtl
eWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCit7CisgICAgU3RyaW5n
IGtleTsKKyAgICBib29sIG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOworICAgIGlmICgh
b2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBUIHZhbHVlOworICAgIG9rID0gZGVjb2Rl
ci5kZWNvZGUodmFsdWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBkaWN0aW9uYXJ5LmFkZChrZXksIFdURk1vdmUodmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50
OF90Kiwgc2l6ZV90KQorc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVy
OjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogeworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQog
Ci1LZXllZERlY29kZXJHZW5lcmljOjp+S2V5ZWREZWNvZGVyR2VuZXJpYygpCitLZXllZERlY29k
ZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogeworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBz
aXplKTsKKyAgICBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlIHR5cGU7CisgICAgU3RyaW5nIGtl
eTsKKworICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+
KCk7CisgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkp
OworCisgICAgYm9vbCBvayA9IHRydWU7CisgICAgd2hpbGUgKG9rICYmIGRlY29kZXIuZGVjb2Rl
RW51bSh0eXBlKSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBLZXll
ZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCeXRlczogeworICAgICAgICAgICAgb2sgPSByZWFkU3Ry
aW5nKGRlY29kZXIsIGtleSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgc2l6ZV90IHNpemU7CisgICAgICAgICAgICBvayA9IGRlY29k
ZXIuZGVjb2RlKHNpemUpOworICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoc2l6ZSk7CisgICAgICAg
ICAgICBvayA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGJ1ZmZlci5kYXRhKCksIHNp
emUpOworICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6VHlwZTo6Qm9vbDoKKyAgICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVl
PGJvb2w+KGRlY29kZXIsICptX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6VUludDMyOgor
ICAgICAgICAgICAgb2sgPSByZWFkU2ltcGxlVmFsdWU8dWludDMyX3Q+KGRlY29kZXIsICptX2Rp
Y3Rpb25hcnlTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6VUludDY0OgorICAgICAgICAgICAgb2sgPSByZWFk
U2ltcGxlVmFsdWU8dWludDY0X3Q+KGRlY29kZXIsICptX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6
VHlwZTo6SW50MzI6CisgICAgICAgICAgICBvayA9IHJlYWRTaW1wbGVWYWx1ZTxpbnQzMl90Pihk
ZWNvZGVyLCAqbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkludDY0OgorICAgICAgICAg
ICAgb2sgPSByZWFkU2ltcGxlVmFsdWU8aW50NjRfdD4oZGVjb2RlciwgKm1fZGljdGlvbmFyeVN0
YWNrLmxhc3QoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXllZEVuY29k
ZXJHZW5lcmljOjpUeXBlOjpGbG9hdDoKKyAgICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVl
PGZsb2F0PihkZWNvZGVyLCAqbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkRvdWJsZToK
KyAgICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVlPGRvdWJsZT4oZGVjb2RlciwgKm1fZGlj
dGlvbmFyeVN0YWNrLmxhc3QoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBL
ZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpTdHJpbmc6IHsKKyAgICAgICAgICAgIG9rID0gcmVh
ZFN0cmluZyhkZWNvZGVyLCBrZXkpOworICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIG9rID0g
cmVhZFN0cmluZyhkZWNvZGVyLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5h
ZGQoa2V5LCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luT2JqZWN0OiB7Cisg
ICAgICAgICAgICBvayA9IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKKyAgICAgICAgICAgIGlm
ICghb2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBhdXRvKiBjdXJyZW50
RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOworICAgICAgICAgICAgYXV0byBu
ZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAg
ICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOworICAgICAg
ICAgICAgY3VycmVudERpY3RpbmFyeS0+YWRkKGtleSwgV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEtleWVkRW5jb2Rl
ckdlbmVyaWM6OlR5cGU6OkVuZE9iamVjdDoKKyAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleWVkRW5j
b2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXk6IHsKKyAgICAgICAgICAgIG9rID0gcmVhZFN0
cmluZyhkZWNvZGVyLCBrZXkpOworICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFy
cmF5PigpOworICAgICAgICAgICAgbV9hcnJheVN0YWNrLmFwcGVuZChuZXdBcnJheS5nZXQoKSk7
CisgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUo
bmV3QXJyYXkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQ6IHsKKyAgICAgICAg
ICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsK
KyAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgp
KTsKKyAgICAgICAgICAgIG1fYXJyYXlTdGFjay5sYXN0KCktPmFwcGVuZChXVEZNb3ZlKG5ld0Rp
Y3Rpb25hcnkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6RW5kQXJyYXlFbGVtZW50OgorICAgICAgICAgICAg
bV9kaWN0aW9uYXJ5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6RW5kQXJyYXk6CisgICAgICAgICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgd2hpbGUgKG1fZGljdGlvbmFyeVN0YWNrLnNpemUoKSA+IDEpCisgICAg
ICAgIG1fZGljdGlvbmFyeVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICB3aGlsZSAoIW1fYXJyYXlT
dGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAK
LWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgdWludDhfdComLCBzaXplX3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6
ZSkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxW
ZWN0b3I8dWludDhfdD4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAg
IGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkYXRhID0gdmFsdWUtPmRh
dGEoKTsKKyAgICBzaXplID0gdmFsdWUtPnNpemUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYsIGJvb2wm
KQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0g
V1RGOjpnZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Cisg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2YWx1
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNv
ZGVVSW50MzIoY29uc3QgU3RyaW5nJiwgdWludDMyX3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5l
cmljOjpkZWNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90JiByZXN1bHQpCiB7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8dWludDMy
X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90JikKK2Jvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUlu
dDY0KGNvbnN0IFN0cmluZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIHJldHVybiBm
YWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHVpbnQ2NF90PihtX2RpY3Rpb25h
cnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKGNvbnN0IFN0cmluZyYsIGludDMy
X3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiB2
YWx1ZSA9IFdURjo6Z2V0X2lmPGludDMyX3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0
KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1
bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlSW50NjQoY29uc3QgU3RyaW5nJiwgaW50NjRfdCYpCitib29sIEtleWVkRGVj
b2RlckdlbmVyaWM6OmRlY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90JiByZXN1
bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8
aW50NjRfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVGbG9hdChj
b25zdCBTdHJpbmcmLCBmbG9hdCYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUZs
b2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCYgcmVzdWx0KQogewotICAgIHJldHVybiBmYWxz
ZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGZsb2F0PihtX2RpY3Rpb25hcnlTdGFj
ay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmVzdWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEtl
eWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUmKQor
Ym9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSYgcmVzdWx0KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9
IFdURjo6Z2V0X2lmPGRvdWJsZT4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2
YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nJikKK2Jvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHJlc3VsdCkKIHsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxTdHJpbmc+
KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3Ry
aW5nJikKK2Jvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3RyaW5n
JiBrZXkpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8c3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkt
PmdldChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kT2JqZWN0KCkKIHsKKyAgICBtX2Rp
Y3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJp
Yzo6YmVnaW5BcnJheShjb25zdCBTdHJpbmcmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpi
ZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+KG1fZGljdGlv
bmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX2FycmF5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CisgICAg
bV9hcnJheUluZGV4U3RhY2suYXBwZW5kKDApOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29s
IEtleWVkRGVjb2RlckdlbmVyaWM6OmJlZ2luQXJyYXlFbGVtZW50KCkKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKG1fYXJyYXlJbmRleFN0YWNrLmxhc3QoKSA+PSBtX2FycmF5U3RhY2su
bGFzdCgpLT5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGljdGlv
bmFyeSA9IG1fYXJyYXlTdGFjay5sYXN0KCktPmF0KG1fYXJyYXlJbmRleFN0YWNrLmxhc3QoKSsr
KS5nZXQoKTsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQoZGljdGlvbmFyeSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kQXJyYXlFbGVt
ZW50KCkKIHsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQg
S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogeworICAgIG1fYXJyYXlTdGFjay5yZW1v
dmVMYXN0KCk7CisgICAgbV9hcnJheUluZGV4U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oCmluZGV4IDliMjJiMzNlZTA5MjNiZGYxYmVhN2Vm
ZDVhYTY4NWM4MTI2YTMyMjguLjU2YTJmOTM4YTA1NGI0NzdjYWRkZGUwMzc5NzFlNTMxMmY0ZTJk
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNv
ZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRE
ZWNvZGVyR2VuZXJpYy5oCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEtleWVkRGVjb2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWREZWNvZGVyIHsKIHB1
YmxpYzoKICAgICBLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCk7Ci0gICAgfktleWVkRGVjb2RlckdlbmVyaWMoKSBvdmVycmlkZTsKKworICAgIGNsYXNzIERp
Y3Rpb25hcnk7CisgICAgdXNpbmcgQXJyYXkgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpY3Rp
b25hcnk+PjsKIAogcHJpdmF0ZToKICAgICBib29sIGRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90KiYsIHNpemVfdCYpIG92ZXJyaWRlOwpAQCAtNTIsNiArNTQsMTEg
QEAgcHJpdmF0ZToKICAgICBib29sIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5KCkgb3Zl
cnJpZGU7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4gbV9yb290RGljdGlvbmFy
eTsKKyAgICBWZWN0b3I8RGljdGlvbmFyeSosIDE2PiBtX2RpY3Rpb25hcnlTdGFjazsKKyAgICBW
ZWN0b3I8QXJyYXkqLCAxNj4gbV9hcnJheVN0YWNrOworICAgIFZlY3RvcjxzaXplX3QsIDE2PiBt
X2FycmF5SW5kZXhTdGFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCmluZGV4IDA5Y2Y1YzIxNzFkMjU2MTQ0OGYwOGJkNGMwYTNkMmM3ZGE5NmVmZDEuLjJmODQx
MDQ3NDYzOTU1OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAt
MjcsODYgKzI3LDEyMSBAQAogI2luY2x1ZGUgIktleWVkRW5jb2RlckdlbmVyaWMuaCIKIAogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NDEwCiBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewogICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CiB9CiAKLUtleWVkRW5jb2Rlckdl
bmVyaWM6OktleWVkRW5jb2RlckdlbmVyaWMoKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpl
bmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7CisgICAgYXV0byB1dGY4ID0ga2V5LnV0
ZjgoKTsKKyAgICBtX2VuY29kZXIgPDwgdXRmOC5sZW5ndGgoKTsKKyAgICBtX2VuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0Zjgu
ZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKLUtleWVkRW5jb2RlckdlbmVyaWM6On5LZXll
ZEVuY29kZXJHZW5lcmljKCkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKIHsK
KyAgICBtX2VuY29kZXIgPDwgVHlwZTo6Qnl0ZXM7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7Cisg
ICAgbV9lbmNvZGVyIDw8IHNpemU7CisgICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShieXRlcywgc2l6ZSk7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKK3ZvaWQgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKIHsK
KyAgICBtX2VuY29kZXIgPDwgVHlwZTo6Qm9vbDsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKKyAg
ICBtX2VuY29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmLCBib29sKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpl
bmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90IHZhbHVlKQogeworICAgIG1f
ZW5jb2RlciA8PCBUeXBlOjpVSW50MzI7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAgbV9l
bmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVVJ
bnQzMihjb25zdCBTdHJpbmcmLCB1aW50MzJfdCkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6
ZW5jb2RlVUludDY0KGNvbnN0IFN0cmluZyYga2V5LCB1aW50NjRfdCB2YWx1ZSkKIHsKKyAgICBt
X2VuY29kZXIgPDwgVHlwZTo6VUludDY0OworICAgIGVuY29kZVN0cmluZyhrZXkpOworICAgIG1f
ZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVV
SW50NjQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QpCit2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90IHZhbHVlKQogeworICAgIG1f
ZW5jb2RlciA8PCBUeXBlOjpJbnQzMjsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKKyAgICBtX2Vu
Y29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlSW50
MzIoY29uc3QgU3RyaW5nJiwgaW50MzJfdCkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5j
b2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QgdmFsdWUpCiB7CisgICAgbV9lbmNv
ZGVyIDw8IFR5cGU6OkludDY0OworICAgIGVuY29kZVN0cmluZyhrZXkpOworICAgIG1fZW5jb2Rl
ciA8PCB2YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmLCBpbnQ2NF90KQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVG
bG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpCiB7CisgICAgbV9lbmNvZGVyIDw8
IFR5cGU6OkZsb2F0OworICAgIGVuY29kZVN0cmluZyhrZXkpOworICAgIG1fZW5jb2RlciA8PCB2
YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVGbG9hdChjb25zdCBT
dHJpbmcmLCBmbG9hdCkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUgdmFsdWUpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6
OkRvdWJsZTsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKKyAgICBtX2VuY29kZXIgPDwgdmFsdWU7
CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlRG91YmxlKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSkKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogeworICAgIG1fZW5jb2RlciA8PCBU
eXBlOjpTdHJpbmc7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAgZW5jb2RlU3RyaW5nKHZh
bHVlKTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLX0KLQotdm9pZCBLZXllZEVuY29kZXJHZW5lcmlj
OjpiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpi
ZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6
QmVnaW5PYmplY3Q7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZW5kT2JqZWN0KCkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kT2Jq
ZWN0OwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmJlZ2luQXJyYXkoY29uc3QgU3Ry
aW5nJikKK3ZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheShjb25zdCBTdHJpbmcm
IGtleSkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6QmVnaW5BcnJheTsKKyAgICBlbmNvZGVT
dHJpbmcoa2V5KTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpiZWdpbkFycmF5RWxl
bWVudCgpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OwogfQog
CiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5RWxlbWVudCgpCiB7CisgICAgbV9l
bmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5RWxlbWVudDsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJH
ZW5lcmljOjplbmRBcnJheSgpCiB7CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5Owog
fQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNv
ZGluZygpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggYjhjNTQ0N2ZlMTQzNWU2ODMy
MGRkYjAyZTdmMGRhMzU0YmJkMGY3Yi4uZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVh
ZWQ4ZTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVu
Y29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzUsOCArMzcsMjQgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBL
ZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6
Ci0gICAgS2V5ZWRFbmNvZGVyR2VuZXJpYygpOwotICAgIH5LZXllZEVuY29kZXJHZW5lcmljKCk7
CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQnl0ZXMsCisgICAg
ICAgIEJvb2wsCisgICAgICAgIFVJbnQzMiwKKyAgICAgICAgVUludDY0LAorICAgICAgICBJbnQz
MiwKKyAgICAgICAgSW50NjQsCisgICAgICAgIEZsb2F0LAorICAgICAgICBEb3VibGUsCisgICAg
ICAgIFN0cmluZywKKyAgICAgICAgQmVnaW5PYmplY3QsCisgICAgICAgIEVuZE9iamVjdCwKKyAg
ICAgICAgQmVnaW5BcnJheSwKKyAgICAgICAgQmVnaW5BcnJheUVsZW1lbnQsCisgICAgICAgIEVu
ZEFycmF5RWxlbWVudCwKKyAgICAgICAgRW5kQXJyYXksCisgICAgfTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwpAQCAtNTgs
NiArNzYsMzQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFy
cmF5KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
KworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgbV9lbmNvZGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OlR5cGUsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJ5
dGVzLAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCb29sLAor
ICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpVSW50MzIsCisgICAg
ICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlVJbnQ2NCwKKyAgICAgICAg
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6SW50MzIsCisgICAgICAgIFdlYkNv
cmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkludDY0LAorICAgICAgICBXZWJDb3JlOjpL
ZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpGbG9hdCwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6VHlwZTo6RG91YmxlLAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpUeXBlOjpTdHJpbmcsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGU6OkJlZ2luT2JqZWN0LAorICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJH
ZW5lcmljOjpUeXBlOjpFbmRPYmplY3QsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGU6OkJlZ2luQXJyYXksCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50LAorICAgICAgICBXZWJDb3JlOjpLZXllZEVu
Y29kZXJHZW5lcmljOjpUeXBlOjpFbmRBcnJheUVsZW1lbnQsCisgICAgICAgIFdlYkNvcmU6Oktl
eWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkVuZEFycmF5CisgICAgPjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367622</attachid>
            <date>2019-04-17 02:53:57 -0700</date>
            <delta_ts>2019-04-18 17:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186410-20190417185355.patch</filename>
            <type>text/plain</type>
            <size>20482</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JjMjc1YzliNDc3OTMw
NDg1NDUwMzMwMjE0Mzc3MTQwYjkyNmE5Yi4uN2U0YzcyNTI4N2U2MmE4ZWIxZmY1YjE1YzgwMmVk
NjliMzUyMDljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBLZXllZERlY29kZXJHZW5lcmljIGFuZCBLZXllZEVuY29kZXJHZW5lcmljCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBLZXllZERl
Y29kZXJHZW5lcmljIGFuZCBLZXllZEVuY29kZXJHZW5lcmljIGJ5IHVzaW5nCisgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgYW5kIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVkIEtleWVkRGVjb2RlckdlbmVyaWMuY3BwIGFu
ZAorICAgICAgICBLZXllZEVuY29kZXJHZW5lcmljLmNwcCwgYW5kIHJlbW92ZWQgS2V5ZWREZWNv
ZGVyQ0YuY3BwIGFuZAorICAgICAgICBLZXllZEVuY29kZXJDRi5jcHAgZm9yIFdpbkNhaXJvIHBv
cnQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorCiAyMDE5LTA0LTE1ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHF1ZXJ5
IHN0cmluZyBub25jZSB0byBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sIHRvIGFkZHJlc3MgZmxh
a2luZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDBkYWIxMzEwYjYxYjdmNjQyMDUw
NWNjMGQzMDA0NjZhMWQ2NjEzM2EuLjc3YTI5ZGU1NDA4YzYxNGU3N2E0ZGRmYTI1ZjU4YjZlNmJk
ZDA1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNDksOCArMjQ5LDYgQEAgaWYg
KFVTRV9DRikKIAogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAotICAgICAgICBwbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3Bw
CkBAIC0yNzIsMTIgKzI3MCwyMCBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMgJHtDT1JFRk9VTkRBVElPTl9MSUJSQVJZfSkKIGVsc2Ug
KCkKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAotICAgICAgICBwbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCi0KICAgICAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlv
bi5jcHAKICAgICApCitlbmRpZiAoKQogCitpZiAoVVNFX0NGIEFORCBOT1QgV1RGX1BMQVRGT1JN
X1dJTl9DQUlSTykKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgcGxh
dGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCisgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAorICAgICkKK2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKKyAgICAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorICAg
ICAgICBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisgICAgKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAg
ICAgIHBsYXRmb3JtL2dlbmVyaWMKICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBlY2RmZWVkZjFh
NGM0ZmExNGExNTdlZjU2OGM2MTI0MGU4MDk1N2Y3Li5hNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3
YTNiY2RlMWQ1MWZkYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTI2LDkyICsyNiwyODYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXllZERlY29kZXJHZW5lcmljLmgiCiAKKyNp
bmNsdWRlICJLZXllZEVuY29kZXJHZW5lcmljLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0MTAKLXN0ZDo6dW5pcXVl
X3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK2NsYXNzIEtleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIE5vZGUg
PSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQz
Ml90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0
aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFw
LmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkp
OyB9CisgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0
KGtleSk7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PE5vZGU+PiBtX21hcDsKK307CisKK3N0YXRpYyBib29sIHJlYWRTdHJpbmcoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6ZSk7CisgICAgc2l6
ZV90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoc2l6ZSk7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCBzaXplKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEo
KSwgc2l6ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citz
dGF0aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVj
b2RlciwgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3sKKyAg
ICBTdHJpbmcga2V5OworICAgIGJvb2wgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7Cisg
ICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFQgdmFsdWU7CisgICAgb2sg
PSBkZWNvZGVyLmRlY29kZSh2YWx1ZSk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGRpY3Rpb25hcnkuYWRkKGtleSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIHJldHVy
biB0cnVlOwogfQogCi1LZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpCitzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXll
ZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6
ZSk7CiB9CiAKLUtleWVkRGVjb2RlckdlbmVyaWM6On5LZXllZERlY29kZXJHZW5lcmljKCkKK0tl
eWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KGRhdGEsIHNpemUpOworICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKKyAgICBT
dHJpbmcga2V5OworCisgICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlj
dGlvbmFyeT4oKTsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290RGljdGlvbmFy
eS5nZXQoKSk7CisKKyAgICBib29sIG9rID0gdHJ1ZTsKKyAgICB3aGlsZSAob2sgJiYgZGVjb2Rl
ci5kZWNvZGVFbnVtKHR5cGUpKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBj
YXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJ5dGVzOiB7CisgICAgICAgICAgICBvayA9
IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgICAgIG9r
ID0gZGVjb2Rlci5kZWNvZGUoc2l6ZSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihzaXplKTsK
KyAgICAgICAgICAgIG9rID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoYnVmZmVyLmRh
dGEoKSwgc2l6ZSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBL
ZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCb29sOgorICAgICAgICAgICAgb2sgPSByZWFkU2lt
cGxlVmFsdWU8Ym9vbD4oZGVjb2RlciwgKm1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpV
SW50MzI6CisgICAgICAgICAgICBvayA9IHJlYWRTaW1wbGVWYWx1ZTx1aW50MzJfdD4oZGVjb2Rl
ciwgKm1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpVSW50NjQ6CisgICAgICAgICAgICBv
ayA9IHJlYWRTaW1wbGVWYWx1ZTx1aW50NjRfdD4oZGVjb2RlciwgKm1fZGljdGlvbmFyeVN0YWNr
Lmxhc3QoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJH
ZW5lcmljOjpUeXBlOjpJbnQzMjoKKyAgICAgICAgICAgIG9rID0gcmVhZFNpbXBsZVZhbHVlPGlu
dDMyX3Q+KGRlY29kZXIsICptX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6SW50NjQ6Cisg
ICAgICAgICAgICBvayA9IHJlYWRTaW1wbGVWYWx1ZTxpbnQ2NF90PihkZWNvZGVyLCAqbV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtl
eWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkZsb2F0OgorICAgICAgICAgICAgb2sgPSByZWFkU2lt
cGxlVmFsdWU8ZmxvYXQ+KGRlY29kZXIsICptX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6
RG91YmxlOgorICAgICAgICAgICAgb2sgPSByZWFkU2ltcGxlVmFsdWU8ZG91YmxlPihkZWNvZGVy
LCAqbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlN0cmluZzogeworICAgICAgICAgICAg
b2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICAg
ICAgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICghb2sp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5s
YXN0KCktPmFkZChrZXksIFdURk1vdmUodmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5PYmpl
Y3Q6IHsKKyAgICAgICAgICAgIG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOworICAgICAg
ICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGF1dG8q
IGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7Cisg
ICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7
CisgICAgICAgICAgICBjdXJyZW50RGljdGluYXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0RpY3Rp
b25hcnkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6RW5kT2JqZWN0OgorICAgICAgICAgICAgbV9kaWN0aW9u
YXJ5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheTogeworICAgICAgICAgICAgb2sg
PSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91
bmlxdWU8QXJyYXk+KCk7CisgICAgICAgICAgICBtX2FycmF5U3RhY2suYXBwZW5kKG5ld0FycmF5
LmdldCgpKTsKKyAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwg
V1RGTW92ZShuZXdBcnJheSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5RWxlbWVudDogewor
ICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9u
YXJ5PigpOworICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25h
cnkuZ2V0KCkpOworICAgICAgICAgICAgbV9hcnJheVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1v
dmUobmV3RGljdGlvbmFyeSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpFbmRBcnJheUVsZW1lbnQ6CisgICAg
ICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpFbmRBcnJheToKKyAg
ICAgICAgICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICB3aGlsZSAobV9kaWN0aW9uYXJ5U3RhY2suc2l6ZSgpID4g
MSkKKyAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgIHdoaWxlICgh
bV9hcnJheVN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3Qo
KTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBTdHJp
bmcmLCBjb25zdCB1aW50OF90KiYsIHNpemVfdCYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6
OmRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90KiYgZGF0YSwgc2l6
ZV90JiBzaXplKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6
Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRhdGEgPSB2
YWx1ZS0+ZGF0YSgpOworICAgIHNpemUgPSB2YWx1ZS0+c2l6ZSgpOworICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJvb2woY29uc3QgU3RyaW5n
JiwgYm9vbCYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wmIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byog
dmFsdWUgPSBXVEY6OmdldF9pZjxib29sPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0
ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEtleWVkRGVjb2RlckdlbmVy
aWM6OmRlY29kZVVJbnQzMihjb25zdCBTdHJpbmcmLCB1aW50MzJfdCYpCitib29sIEtleWVkRGVj
b2RlckdlbmVyaWM6OmRlY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QmIHJl
c3VsdCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
Zjx1aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50
NjQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVVSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8dWludDY0X3Q+KG1f
ZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50MzIoY29uc3QgU3RyaW5n
JiwgaW50MzJfdCYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKGNvbnN0
IFN0cmluZyYga2V5LCBpbnQzMl90JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFz
dCgpLT5nZXQoa2V5KSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERl
Y29kZXJHZW5lcmljOjpkZWNvZGVJbnQ2NChjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKK2Jvb2wg
S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0
X3QmIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBXVEY6
OmdldF9pZjxpbnQ2NF90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAg
ICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gKnZhbHVl
OworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZUZsb2F0KGNvbnN0IFN0cmluZyYsIGZsb2F0JikKK2Jvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6
ZGVjb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0JiByZXN1bHQpCiB7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8ZmxvYXQ+KG1fZGljdGlv
bmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKGNvbnN0IFN0cmluZyYsIGRv
dWJsZSYpCitib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJp
bmcmIGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8q
IHZhbHVlID0gV1RGOjpnZXRfaWY8ZG91YmxlPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdl
dChrZXkpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVz
dWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEtleWVkRGVjb2Rlckdl
bmVyaWM6OmRlY29kZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKQorYm9vbCBLZXllZERl
Y29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgcmVz
dWx0KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lm
PFN0cmluZz4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdChj
b25zdCBTdHJpbmcmKQorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdChjb25z
dCBTdHJpbmcmIGtleSkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogdmFsdWUgPSBX
VEY6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4+KG1fZGljdGlvbmFyeVN0YWNr
Lmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQodmFsdWUtPmdldCgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBLZXllZERlY29kZXJHZW5lcmljOjplbmRPYmplY3QoKQogewor
ICAgIG1fZGljdGlvbmFyeVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotYm9vbCBLZXllZERlY29k
ZXJHZW5lcmljOjpiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYpCitib29sIEtleWVkRGVjb2Rlckdl
bmVyaWM6OmJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj4o
bV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fYXJyYXlTdGFjay5hcHBlbmQodmFsdWUtPmdldCgp
KTsKKyAgICBtX2FycmF5SW5kZXhTdGFjay5hcHBlbmQoMCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheUVsZW1lbnQoKQogewotICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9hcnJheUluZGV4U3RhY2subGFzdCgpID49IG1fYXJy
YXlTdGFjay5sYXN0KCktPnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBkaWN0aW9uYXJ5ID0gbV9hcnJheVN0YWNrLmxhc3QoKS0+YXQobV9hcnJheUluZGV4U3RhY2su
bGFzdCgpKyspLmdldCgpOworICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChkaWN0aW9uYXJ5
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBLZXllZERlY29kZXJHZW5lcmljOjplbmRB
cnJheUVsZW1lbnQoKQogeworICAgIG1fZGljdGlvbmFyeVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0K
IAogdm9pZCBLZXllZERlY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiB7CisgICAgbV9hcnJheVN0
YWNrLnJlbW92ZUxhc3QoKTsKKyAgICBtX2FycmF5SW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKaW5kZXggOWIyMmIzM2VlMDkyM2Jk
ZjFiZWE3ZWZkNWFhNjg1YzgxMjZhMzIyOC4uNTZhMmY5MzhhMDU0YjQ3N2NhZGRkZTAzNzk3MWU1
MzEyZjRlMmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZERlY29kZXJHZW5lcmljLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZERlY29k
ZXIgewogcHVibGljOgogICAgIEtleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKLSAgICB+S2V5ZWREZWNvZGVyR2VuZXJpYygpIG92ZXJyaWRlOworCisgICAg
Y2xhc3MgRGljdGlvbmFyeTsKKyAgICB1c2luZyBBcnJheSA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8RGljdGlvbmFyeT4+OwogCiBwcml2YXRlOgogICAgIGJvb2wgZGVjb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqJiwgc2l6ZV90Jikgb3ZlcnJpZGU7CkBAIC01Miw2
ICs1NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5kQXJy
YXkoKSBvdmVycmlkZTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBtX3Jvb3RE
aWN0aW9uYXJ5OworICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFyeVN0YWNr
OworICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7CisgICAgVmVjdG9yPHNpemVf
dCwgMTY+IG1fYXJyYXlJbmRleFN0YWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKaW5kZXggMDljZjVjMjE3MWQyNTYxNDQ4ZjA4YmQ0YzBhM2QyYzdkYTk2ZWZk
MS4uMmY4NDEwNDc0NjM5NTU4ZjI5NWU4MWE1MTcxOWE4NzM0YjMyZDU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCkBAIC0yNyw4NiArMjcsMTIxIEBACiAjaW5jbHVkZSAiS2V5ZWRFbmNvZGVyR2VuZXJpYy5o
IgogCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0MTAKIHN0ZDo6dW5p
cXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7CiAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKIH0KIAotS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6S2V5ZWRFbmNvZGVyR2VuZXJpYygpCit2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKIHsKKyAgICBhdXRvIHV0Zjgg
PSBrZXkudXRmOCgpOworICAgIG1fZW5jb2RlciA8PCB1dGY4Lmxlbmd0aCgpOworICAgIG1fZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAotS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6fktleWVkRW5jb2RlckdlbmVyaWMoKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNv
ZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBz
aXplKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpCeXRlczsKKyAgICBlbmNvZGVTdHJpbmco
a2V5KTsKKyAgICBtX2VuY29kZXIgPDwgc2l6ZTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGJ5dGVzLCBzaXplKTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpl
bmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQordm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZh
bHVlKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpCb29sOworICAgIGVuY29kZVN0cmluZyhr
ZXkpOworICAgIG1fZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5l
cmljOjplbmNvZGVCb29sKGNvbnN0IFN0cmluZyYsIGJvb2wpCit2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QgdmFsdWUpCiB7
CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OlVJbnQzMjsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsK
KyAgICBtX2VuY29kZXIgPDwgdmFsdWU7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6
ZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KQordm9pZCBLZXllZEVuY29kZXJH
ZW5lcmljOjplbmNvZGVVSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQ2NF90IHZhbHVlKQog
eworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpVSW50NjQ7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7
CisgICAgbV9lbmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuY29kZVVJbnQ2NChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCkKK3ZvaWQgS2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QgdmFsdWUpCiB7
CisgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkludDMyOworICAgIGVuY29kZVN0cmluZyhrZXkpOwor
ICAgIG1fZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpl
bmNvZGVJbnQzMihjb25zdCBTdHJpbmcmLCBpbnQzMl90KQordm9pZCBLZXllZEVuY29kZXJHZW5l
cmljOjplbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCB2YWx1ZSkKIHsKKyAg
ICBtX2VuY29kZXIgPDwgVHlwZTo6SW50NjQ7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAg
bV9lbmNvZGVyIDw8IHZhbHVlOwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29k
ZUludDY0KGNvbnN0IFN0cmluZyYsIGludDY0X3QpCit2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCB2YWx1ZSkKIHsKKyAgICBtX2Vu
Y29kZXIgPDwgVHlwZTo6RmxvYXQ7CisgICAgZW5jb2RlU3RyaW5nKGtleSk7CisgICAgbV9lbmNv
ZGVyIDw8IHZhbHVlOwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUZsb2F0
KGNvbnN0IFN0cmluZyYsIGZsb2F0KQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVE
b3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSkKIHsKKyAgICBtX2VuY29kZXIg
PDwgVHlwZTo6RG91YmxlOworICAgIGVuY29kZVN0cmluZyhrZXkpOworICAgIG1fZW5jb2RlciA8
PCB2YWx1ZTsKIH0KIAotdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVEb3VibGUoY29u
c3QgU3RyaW5nJiwgZG91YmxlKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgbV9lbmNv
ZGVyIDw8IFR5cGU6OlN0cmluZzsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKKyAgICBlbmNvZGVT
dHJpbmcodmFsdWUpOwogfQogCi12b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotfQotCi12b2lkIEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYpCit2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KQogeworICAgIG1fZW5jb2RlciA8
PCBUeXBlOjpCZWdpbk9iamVjdDsKKyAgICBlbmNvZGVTdHJpbmcoa2V5KTsKIH0KIAogdm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmRPYmplY3QoKQogeworICAgIG1fZW5jb2RlciA8PCBUeXBl
OjpFbmRPYmplY3Q7CiB9CiAKLXZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheShj
b25zdCBTdHJpbmcmKQordm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KGNvbnN0
IFN0cmluZyYga2V5KQogeworICAgIG1fZW5jb2RlciA8PCBUeXBlOjpCZWdpbkFycmF5OworICAg
IGVuY29kZVN0cmluZyhrZXkpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmJlZ2lu
QXJyYXlFbGVtZW50KCkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6QmVnaW5BcnJheUVsZW1l
bnQ7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXlFbGVtZW50KCkKIHsK
KyAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXlFbGVtZW50OwogfQogCiB2b2lkIEtleWVk
RW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKIHsKKyAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5k
QXJyYXk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZp
bmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBiOGM1NDQ3ZmUx
NDM1ZTY4MzIwZGRiMDJlN2YwZGEzNTRiYmQwZjdiLi5lOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1
YzQ0ZGQzNWFlZDhlMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtMjYsNyArMjYsOSBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw4ICszNywyNCBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEtleWVkRW5jb2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsK
IHB1YmxpYzoKLSAgICBLZXllZEVuY29kZXJHZW5lcmljKCk7Ci0gICAgfktleWVkRW5jb2Rlckdl
bmVyaWMoKTsKKworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBCeXRl
cywKKyAgICAgICAgQm9vbCwKKyAgICAgICAgVUludDMyLAorICAgICAgICBVSW50NjQsCisgICAg
ICAgIEludDMyLAorICAgICAgICBJbnQ2NCwKKyAgICAgICAgRmxvYXQsCisgICAgICAgIERvdWJs
ZSwKKyAgICAgICAgU3RyaW5nLAorICAgICAgICBCZWdpbk9iamVjdCwKKyAgICAgICAgRW5kT2Jq
ZWN0LAorICAgICAgICBCZWdpbkFycmF5LAorICAgICAgICBCZWdpbkFycmF5RWxlbWVudCwKKyAg
ICAgICAgRW5kQXJyYXlFbGVtZW50LAorICAgICAgICBFbmRBcnJheSwKKyAgICB9OwogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7
CkBAIC01OCw2ICs3NiwzNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQo
KSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKKworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYpOworCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBtX2VuY29kZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6
VHlwZTo6Qnl0ZXMsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6
OkJvb2wsCisgICAgICAgIFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlVJbnQz
MiwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6VUludDY0LAor
ICAgICAgICBXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpJbnQzMiwKKyAgICAg
ICAgV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6SW50NjQsCisgICAgICAgIFdl
YkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkZsb2F0LAorICAgICAgICBXZWJDb3Jl
OjpLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpEb3VibGUsCisgICAgICAgIFdlYkNvcmU6Oktl
eWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OlN0cmluZywKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5PYmplY3QsCisgICAgICAgIFdlYkNvcmU6OktleWVk
RW5jb2RlckdlbmVyaWM6OlR5cGU6OkVuZE9iamVjdCwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheSwKKyAgICAgICAgV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQsCisgICAgICAgIFdlYkNvcmU6
OktleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkVuZEFycmF5RWxlbWVudCwKKyAgICAgICAgV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6RW5kQXJyYXkKKyAgICA+OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>
<flag name="review"
          id="383964"
          type_id="1"
          status="+"
          setter="don.olmstead"
    />
          </attachment>
      

    </bug>

</bugzilla>