<?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>152981</bug_id>
          
          <creation_ts>2016-01-11 11:35:41 -0800</creation_ts>
          <short_desc>Modern IDB: storage/indexeddb/key-generator.html fails</short_desc>
          <delta_ts>2016-01-11 13:38:22 -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>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154425</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 11:35:41 -0800</bug_when>
    <thetext>Modern IDB: storage/indexeddb/key-generator.html fails

It fails for two reasons:
1 - Once the key generator value is above 2^53 we don&apos;t handle errors attempting to generate a value.
2 - If a put/add operation fails after a key value is generated (e.g. because of Index constraints), the key generator value needs to be reset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154429</commentid>
    <comment_count>1</comment_count>
      <attachid>268701</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 11:40:51 -0800</bug_when>
    <thetext>Created attachment 268701
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154431</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 11:42:53 -0800</bug_when>
    <thetext>Ugh. It doesn&apos;t apply because it relies on https://bugs.webkit.org/show_bug.cgi?id=152976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154432</commentid>
    <comment_count>3</comment_count>
      <attachid>268701</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-01-11 11:45:26 -0800</bug_when>
    <thetext>Comment on attachment 268701
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:656
&gt; +class ScopeExitFunction {

I think this should be called ScopeGuard.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:659
&gt; +        : m_function(std::make_unique&lt;std::function&lt;void()&gt;&gt;(function))

This should use WTFMove.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:675
&gt; +    std::unique_ptr&lt;std::function&lt;void()&gt;&gt; m_function;

This doesn&apos;t have to be an unique_ptr, it can just be an std::function. functions can be null.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:697
&gt; +    std::unique_ptr&lt;ScopeExitFunction&gt; generatedKeyResetter;

If you add a default constructor to ScopeExitFunction, there&apos;s no need to make this an unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154435</commentid>
    <comment_count>4</comment_count>
      <attachid>268701</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-11 12:10:39 -0800</bug_when>
    <thetext>Comment on attachment 268701
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:41
&gt; +static uint64_t maxGeneratedKeyValue = 9007199254740992;

As much as I hate to admit it, this is a number that I don&apos;t recognize just by looking at it.  Please write it in hex or 1 &lt;&lt; 52.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154457</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 13:02:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 268701 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268701&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:41
&gt; &gt; +static uint64_t maxGeneratedKeyValue = 9007199254740992;
&gt; 
&gt; As much as I hate to admit it, this is a number that I don&apos;t recognize just
&gt; by looking at it.  Please write it in hex or 1 &lt;&lt; 52.

I think a comment will be more important to understanding the value at a glance than either of those, but I&apos;ll do one of them with a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154467</commentid>
    <comment_count>6</comment_count>
      <attachid>268708</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 13:18:02 -0800</bug_when>
    <thetext>Created attachment 268708
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154474</commentid>
    <comment_count>7</comment_count>
      <attachid>268708</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-11 13:32:08 -0800</bug_when>
    <thetext>Comment on attachment 268708
Patch v1

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

r=me

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:350
&gt; +        return { IDBDatabaseException::ConstraintError, &quot;Cannot generate new key value over 2^53 for object store operation&quot; };

Do we really need a message here that contains &quot;2^53&quot;? In C++ and JavaScript, that means 2 XOR 53, which evaluates to 55.  I guess this does appear in the spec...

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:656
&gt; +class ScopeGuard {

This is pretty cool.  Don&apos;t we already have anything like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154476</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 13:35:51 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 268708 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268708&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:350
&gt; &gt; +        return { IDBDatabaseException::ConstraintError, &quot;Cannot generate new key value over 2^53 for object store operation&quot; };
&gt; 
&gt; Do we really need a message here that contains &quot;2^53&quot;? In C++ and
&gt; JavaScript, that means 2 XOR 53, which evaluates to 55.  I guess this does
&gt; appear in the spec...

Yeah, since it&apos;s a string that can be searched for in the spec, I figure that&apos;s more useful for web developers who are actually looking at these error messages and diagnosing them. In context it&apos;s unlikely to be confused for C++/JS code.

&gt; &gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:656
&gt; &gt; +class ScopeGuard {
&gt; 
&gt; This is pretty cool.  Don&apos;t we already have anything like this?

As I confirmed with Anders, no. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154477</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-11 13:38:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/194864</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268701</attachid>
            <date>2016-01-11 11:40:51 -0800</date>
            <delta_ts>2016-01-11 13:18:02 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11187</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTJmYTRjLi4zNDJjNDU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDEt
MTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbCBmYWlscy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjk4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTAxLTExICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgdGVzdCBleHBlY3Rh
dGlvbnMgYWZ0ZXIgcjE5NDg0NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDVlNjdlYmEuLjI3MGMxYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc2LDkgKzc2LDYgQEAgaW1wb3J0
ZWQvdzNjL2luZGV4ZWRkYi9pZGJpbmRleF9nZXRLZXk3Lmh0bSBbIEZhaWx1cmUgXQogaW1wb3J0
ZWQvdzNjL2luZGV4ZWRkYi9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG0gWyBGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy9pbmRleGVkZGIvaWRiaW5kZXhfb3BlbktleUN1cnNvcjMuaHRtIFsgRmFpbHVy
ZSBdCiAKLSMgTW9kZXJuIElEQiBkb2Vzbid0IHByb3Blcmx5IGhhbmRsZSAyXjUzIGFzIGEga2V5
IGdlbmVyYXRvciB2YWx1ZQotc3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sIFsg
U2tpcCBdCi0KICMgQ3Jhc2hlcyB3aXRoIEd1YXJkTWFsbG9jIG9yIEFTYW4KIHN0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU0
NWEzNS4uOTI1MGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTAxLTExICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBNb2Rlcm4gSURCOiBz
dG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgZmFpbHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKEF0IGxlYXN0
IG9uZSBmYWlsaW5nIHRlc3Qgbm93IHBhc3NlcykuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIpOiBUaHJv
dyBhbiBlcnJvciBpZiB0aGUgY3VycmVudAorICAgICAgICAgIHZhbHVlIGlzIGFscmVhZHkgb3Zl
ciAyXjUzLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIp
OiBIYW5kbGUgZG91YmxlIC0+IHVpbnQ2NF90CisgICAgICAgICAgY29udmVyc2lvbnMgcHJvcGVy
bHkgd2hlbiBjYWxjdWxhdGluZyB0aGUgbmV4dCBrZXkuCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U2NvcGVFeGl0RnVuY3Rpb246OlNjb3BlRXhpdEZ1bmN0aW9uKTogQWRk
IHRoaXMgdXRpbGl0eSBjbGFzcyB0byBjYWxsIAorICAgICAgICAgIGEgZnVuY3Rpb24gYW55IHRp
bWUgaXQgZ29lcyBvdXQgb2Ygc2NvcGUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNj
b3BlRXhpdEZ1bmN0aW9uOjp+U2NvcGVFeGl0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTY29wZUV4aXRGdW5jdGlvbjo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOiBSZXZlcnQg
dGhlIGtleSBnZW5lcmF0b3IgdmFsdWUgaWYKKyAgICAgICAgICB0aGUgcHV0L2FkZCBvcGVyYXRp
b24gZW5kcyBpbiBlcnJvci4KKworMjAxNi0wMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBNZW1vcnlJbmRleCBhbmQgTWVt
b3J5T2JqZWN0U3RvcmUgUmVmQ291bnRlZC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1Mjk2NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGExZjAx
Yi4uOTRjMDRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRU
eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSA9IDA7
CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIHVpbnQ2
NF90JiBvdXRDb3VudCkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVLZXlOdW1i
ZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikgPSAwOwor
ICAgIHZpcnR1YWwgSURCRXJyb3IgcmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGtleU51bWJlcikgPSAwOwogICAgIHZpcnR1YWwgSURC
RXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3Igb3Bl
bkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAg
ICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCBjb3VudCwgSURC
R2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggYmNjNjdlOS4uOTRhZmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTM4LDYgKzM4LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCitzdGF0aWMgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSA5MDA3
MTk5MjU0NzQwOTkyOworCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SURCQmFj
a2luZ1N0b3JlPihpZGVudGlmaWVyKTsKQEAgLTM0MywxMSArMzQ1LDI5IEBAIElEQkVycm9yIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0U3RvcmUpOwogCiAgICAga2V5
TnVtYmVyID0gb2JqZWN0U3RvcmUtPmN1cnJlbnRLZXlHZW5lcmF0b3JWYWx1ZSgpOworICAgIGlm
IChrZXlOdW1iZXIgPiBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgSURC
RGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgIkNhbm5vdCBnZW5lcmF0ZSBuZXcg
a2V5IHZhbHVlIG92ZXIgMl41MyBmb3Igb2JqZWN0IHN0b3JlIG9wZXJhdGlvbiIgfTsKKwogICAg
IG9iamVjdFN0b3JlLT5zZXRLZXlHZW5lcmF0b3JWYWx1ZShrZXlOdW1iZXIgKyAxKTsKIAogICAg
IHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OnJldmVydEdlbmVyYXRlZEtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBrZXlOdW1iZXIpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyIik7CisgICAgQVNTRVJUKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1f
dHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIEFTU0VS
VF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKS0+aXNXcml0aW5nKCkpOworCisgICAgTWVtb3J5T2JqZWN0U3RvcmUq
IG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0U3RvcmUpOworCisgICAgb2Jq
ZWN0U3RvcmUtPnNldEtleUdlbmVyYXRvclZhbHVlKGtleU51bWJlcik7CisKKyAgICByZXR1cm4g
eyB9OworfQorCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5
R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlO
dW1iZXIpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6bWF5
YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIiKTsKQEAgLTM2MiwxMCArMzgyLDEwIEBAIElEQkVy
cm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIo
Y29uc3QgSURCUmVzb3VyY2VJCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICB1aW50NjRfdCBu
ZXdLZXlJbnRlZ2VyKG5ld0tleU51bWJlcik7Ci0gICAgaWYgKG5ld0tleUludGVnZXIgPD0gbmV3
S2V5TnVtYmVyKQorICAgIGlmIChuZXdLZXlJbnRlZ2VyIDw9IHVpbnQ2NF90KG5ld0tleU51bWJl
cikpCiAgICAgICAgICsrbmV3S2V5SW50ZWdlcjsKIAotICAgIEFTU0VSVChuZXdLZXlJbnRlZ2Vy
ID4gbmV3S2V5TnVtYmVyKTsKKyAgICBBU1NFUlQobmV3S2V5SW50ZWdlciA+IHVpbnQ2NF90KG5l
d0tleU51bWJlcikpOwogCiAgICAgb2JqZWN0U3RvcmUtPnNldEtleUdlbmVyYXRvclZhbHVlKG5l
d0tleUludGVnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggM2NjMjM5
Yi4uMGIwNmFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtNjQsNiArNjQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRJbmRleFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJREJHZXRSZXN1bHQmIG91
dFZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldENvdW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
SURCRXJyb3IgcmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJF
cnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElE
QkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3Vs
dCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEm
LCB1aW50MzJfdCBjb3VudCwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIG92ZXJyaWRlIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMjIzMjM5Yi4uYWNhYTE4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC02NTMsNiArNjUzLDI4IEBAIEV4ZWNTdGF0ZSYgVW5p
cXVlSURCRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCkKICAgICByZXR1cm4gKmds
b2JhbE9iamVjdC5nZXQoKS0+Z2xvYmFsRXhlYygpOwogfQogCitjbGFzcyBTY29wZUV4aXRGdW5j
dGlvbiB7CitwdWJsaWM6CisgICAgU2NvcGVFeGl0RnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGZ1bmN0aW9uKQorICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4+KGZ1bmN0aW9uKSkKKyAgICB7CisgICAgfQorCisgICAgflNjb3Bl
RXhpdEZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmIChtX2Z1bmN0aW9uKQorICAgICAgICAg
ICAgKCptX2Z1bmN0aW9uKSgpOworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZSgpCisgICAgewor
ICAgICAgICBtX2Z1bmN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvbjsKK307CisKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBvcmlnaW5hbFJlY29yZFZhbHVlLCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtNjcyLDYgKzY5NCw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQlJlCiAgICAgfQogCiAgICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxz
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NvcGVFeGl0RnVuY3Rpb24+IGdlbmVyYXRlZEtleVJl
c2V0dGVyOwogICAgIGlmIChvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiAha2V5
RGF0YS5pc1ZhbGlkKCkpIHsKICAgICAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgICAgICBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKQEAgLTY4Miw2ICs3MDUs
OSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgICAgICAKICAgICAgICAgdXNlZEtleS5z
ZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0ZWQgPSB0
cnVlOworICAgICAgICBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nv
cGVFeGl0RnVuY3Rpb24+KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwga2V5TnVtYmVyXSgpIHsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5y
ZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGtleU51bWJlcik7CisgICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAg
ICB1c2VkS2V5ID0ga2V5RGF0YTsKIApAQCAtNzQzLDYgKzc2OSw4IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElEQlJlCiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1
dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51
bWJlcikKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5l
cmF0b3JOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGtleURhdGEubnVtYmVyKCkpOwogCisgICAgaWYgKGdlbmVyYXRlZEtleVJlc2V0dGVyKQorICAg
ICAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci0+ZGlzYWJsZSgpOwogICAgIG1fc2VydmVyLnBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1
c2VkS2V5KSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268708</attachid>
            <date>2016-01-11 13:18:02 -0800</date>
            <delta_ts>2016-01-11 13:36:00 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13178</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYjUzYzNmLi40ZGJiZDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTYtMDEt
MTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbCBmYWlscy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjk4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9pbXBvcnRlZC93M2Mv
aW5kZXhlZGRiL2tleWdlbmVyYXRvci1vdmVyZmxvdy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9pbmRleGVkZGIva2V5Z2VuZXJhdG9yLW92ZXJmbG93
LWV4cGVjdGVkLnR4dC4KKworMjAxNi0wMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKICAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRl
eC1wb3B1bGF0aW9uLmh0bWwgZmFpbHMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTI5NzYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5k
ZXggYmU2MDYwNC4uZjk0YThhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTYtMDEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIE1vZGVybiBJREI6IElEQkJpbmRpbmdVdGlsaXRpZXMgY2hva2VzIG9uIHVu
aWNvZGUgc3RyaW5ncyBmb3IgZ2V0L3NldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5kZXhlZGRiL2tleWdlbmVyYXRvci1vdmVyZmxvdy1leHBl
Y3RlZC50eHQ6CisKIDIwMTYtMDEtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vZGVybiBJREI6IElEQkJpbmRpbmdVdGlsaXRpZXMgY2hva2VzIG9uIHVu
aWNvZGUgc3RyaW5ncyBmb3IgZ2V0L3NldC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9pbmRleGVkZGIva2V5Z2VuZXJhdG9yLW92ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9pbmRleGVkZGIva2V5Z2VuZXJhdG9yLW92ZXJmbG93LWV4
cGVjdGVkLnR4dAppbmRleCBkNDBhMzU2Li4yNTk3ODM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvaW5kZXhlZGRiL2tleWdlbmVyYXRvci1vdmVyZmxvdy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9rZXlnZW5lcmF0b3It
b3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEtleWdlbmVyYXRv
ciBvdmVyZmxvdyBhc3NlcnRfdW5yZWFjaGVkOiBXaGVuICJjdXJyZW50IG51bWJlciIgb3ZlcmZs
b3dzLCBlcnJvciBldmVudCBpcyBleHBlY3RlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BB
U1MgS2V5Z2VuZXJhdG9yIG92ZXJmbG93IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWU2N2ViYS4uMjcwYzFjNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzYsOSArNzYsNiBA
QCBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL2lkYmluZGV4X2dldEtleTcuaHRtIFsgRmFpbHVyZSBd
CiBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL2lkYmluZGV4X29wZW5DdXJzb3IyLmh0bSBbIEZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG0g
WyBGYWlsdXJlIF0KIAotIyBNb2Rlcm4gSURCIGRvZXNuJ3QgcHJvcGVybHkgaGFuZGxlIDJeNTMg
YXMgYSBrZXkgZ2VuZXJhdG9yIHZhbHVlCi1zdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9y
Lmh0bWwgWyBTa2lwIF0KLQogIyBDcmFzaGVzIHdpdGggR3VhcmRNYWxsb2Mgb3IgQVNhbgogc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9pbXBvcnRlZC93M2MvaW5kZXhlZGRiL2tleWdl
bmVyYXRvci1vdmVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
aW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9rZXlnZW5lcmF0b3Itb3ZlcmZsb3ctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MGEzNTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9r
ZXlnZW5lcmF0b3Itb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitGQUlM
IEtleWdlbmVyYXRvciBvdmVyZmxvdyBhc3NlcnRfdW5yZWFjaGVkOiBXaGVuICJjdXJyZW50IG51
bWJlciIgb3ZlcmZsb3dzLCBlcnJvciBldmVudCBpcyBleHBlY3RlZCBSZWFjaGVkIHVucmVhY2hh
YmxlIGNvZGUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg1ZjM5YTAuLjkwMjQ5NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwzMyBAQAogMjAxNi0wMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRv
ci5odG1sIGZhaWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUyOTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChPbmUgZmFpbGluZyB0ZXN0IG5vdyBwYXNzZXMsIGFuZCBvbmUg
dGVzdCdzIHJlc3VsdHMgZ2V0IGEgcHJvZ3Jlc3Npb24pLgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtl
eU51bWJlcik6IFRocm93IGFuIGVycm9yIGlmIHRoZSBjdXJyZW50CisgICAgICAgICAgdmFsdWUg
aXMgYWxyZWFkeSBvdmVyIDJeNTMuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdl
bmVyYXRvck51bWJlcik6IEhhbmRsZSBkb3VibGUgLT4gdWludDY0X3QKKyAgICAgICAgICBjb252
ZXJzaW9ucyBwcm9wZXJseSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBuZXh0IGtleS4KKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNjb3BlR3VhcmQ6OlNjb3BlR3Vh
cmQpOiBBZGQgdGhpcyB1dGlsaXR5IGNsYXNzIHRvIGNhbGwgYSBmdW5jdGlvbiAKKyAgICAgICAg
ICBhbnkgdGltZSBpdCBnb2VzIG91dCBvZiBzY29wZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U2NvcGVHdWFyZDo6flNjb3BlR3VhcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTY29wZUd1YXJkOjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
Y29wZUd1YXJkOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCk6IFJldmVydCB0aGUga2V5IGdlbmVyYXRvciB2
YWx1ZSBpZgorICAgICAgICAgIHRoZSBwdXQvYWRkIG9wZXJhdGlvbiBlbmRzIGluIGVycm9yLgor
CisyMDE2LTAxLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAg
ICBNb2Rlcm4gSURCOiBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24uaHRt
bCBmYWlscy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Mjk3NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGExZjAxYi4uOTRjMDRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJC
YWNraW5nU3RvcmUuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJF
cnJvciBnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBp
bmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJF
cnJvciBnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIHVpbnQ2NF90JiBvdXRDb3VudCkgPSAw
OwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikgPSAwOworICAgIHZpcnR1YWwgSURCRXJy
b3IgcmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGtleU51bWJlcikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgbWF5YmVVcGRhdGVL
ZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tl
eU51bWJlcikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29y
SW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJv
ciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCBjb3VudCwgSURCR2V0UmVzdWx0JiBvdXRSZXN1
bHQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYmNjNjdlOS4u
ZDYzZTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTM4LDYgKzM4
LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCisvLyBU
aGUgSW5kZXhlZERCIHNwZWMgc3RhdGVzIHRoZSB2YWx1ZSB5b3UgY2FuIGdldCBmcm9tIHRoZSBr
ZXkgZ2VuZXJhdG9yIGlzIDJeNTMKK3N0YXRpYyB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1
ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CisKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5n
U3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOwpAQCAtMzQzLDExICszNDYsMjkgQEAgSURC
RXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBSRUxFQVNFX0FTU0VSVChvYmplY3RTdG9yZSk7CiAK
ICAgICBrZXlOdW1iZXIgPSBvYmplY3RTdG9yZS0+Y3VycmVudEtleUdlbmVyYXRvclZhbHVlKCk7
CisgICAgaWYgKGtleU51bWJlciA+IG1heEdlbmVyYXRlZEtleVZhbHVlKQorICAgICAgICByZXR1
cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiQ2Fubm90IGdlbmVy
YXRlIG5ldyBrZXkgdmFsdWUgb3ZlciAyXjUzIGZvciBvYmplY3Qgc3RvcmUgb3BlcmF0aW9uIiB9
OworCiAgICAgb2JqZWN0U3RvcmUtPnNldEtleUdlbmVyYXRvclZhbHVlKGtleU51bWJlciArIDEp
OwogCiAgICAgcmV0dXJuIElEQkVycm9yKCk7CiB9CiAKK0lEQkVycm9yIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGtleU51bWJlcikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpyZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIiKTsKKyAgICBBU1NFUlQob2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkZW50aWZpZXIpLT5pc1dyaXRpbmcoKSk7CisKKyAgICBNZW1vcnlPYmpl
Y3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChvYmplY3RTdG9yZSk7CisK
KyAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJhdG9yVmFsdWUoa2V5TnVtYmVyKTsKKworICAg
IHJldHVybiB7IH07Cit9CisKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91Ymxl
IG5ld0tleU51bWJlcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0
b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlciIpOwpAQCAtMzYyLDEwICszODMsMTAg
QEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRv
ck51bWJlcihjb25zdCBJREJSZXNvdXJjZUkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHVp
bnQ2NF90IG5ld0tleUludGVnZXIobmV3S2V5TnVtYmVyKTsKLSAgICBpZiAobmV3S2V5SW50ZWdl
ciA8PSBuZXdLZXlOdW1iZXIpCisgICAgaWYgKG5ld0tleUludGVnZXIgPD0gdWludDY0X3QobmV3
S2V5TnVtYmVyKSkKICAgICAgICAgKytuZXdLZXlJbnRlZ2VyOwogCi0gICAgQVNTRVJUKG5ld0tl
eUludGVnZXIgPiBuZXdLZXlOdW1iZXIpOworICAgIEFTU0VSVChuZXdLZXlJbnRlZ2VyID4gdWlu
dDY0X3QobmV3S2V5TnVtYmVyKSk7CiAKICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJhdG9y
VmFsdWUobmV3S2V5SW50ZWdlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRl
eCAzY2MyMzliLi4wYjA2YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC02
NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5k
ZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJl
c3VsdCYgb3V0VmFsdWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0
Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCB1aW50NjRfdCYgb3V0Q291bnQpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBJREJFcnJvciByZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3Qga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYg
b3V0UmVzdWx0KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURC
S2V5RGF0YSYsIHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgb3ZlcnJp
ZGUgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAyMjMyMzliLi5mNjk4MDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTY1Myw2ICs2NTMsMzcgQEAgRXhlY1N0
YXRlJiBVbmlxdWVJREJEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKQogICAgIHJl
dHVybiAqZ2xvYmFsT2JqZWN0LmdldCgpLT5nbG9iYWxFeGVjKCk7CiB9CiAKK2NsYXNzIFNjb3Bl
R3VhcmQgeworcHVibGljOgorICAgIFNjb3BlR3VhcmQoKQorICAgIHsKKyAgICB9CisKKyAgICBT
Y29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICAgICAgOiBtX2Z1
bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQorICAgIHsKKyAgICB9CisKKyAgICB+U2NvcGVHdWFy
ZCgpCisgICAgeworICAgICAgICBpZiAobV9mdW5jdGlvbikKKyAgICAgICAgICAgIG1fZnVuY3Rp
b24oKTsKKyAgICB9CisKKyAgICB2b2lkIGVuYWJsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVu
Y3Rpb24pCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7Cisg
ICAgfQorCisgICAgdm9pZCBkaXNhYmxlKCkKKyAgICB7CisgICAgICAgIG1fZnVuY3Rpb24gPSBu
dWxscHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
dW5jdGlvbiB7IG51bGxwdHIgfTsKK307CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRh
QnVmZmVyJiBvcmlnaW5hbFJlY29yZFZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpA
QCAtNjcyLDYgKzcwMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFk
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAgfQogCiAgICAg
Ym9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKKyAgICBTY29wZUd1YXJkIGdlbmVyYXRl
ZEtleVJlc2V0dGVyOwogICAgIGlmIChvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAm
JiAha2V5RGF0YS5pc1ZhbGlkKCkpIHsKICAgICAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAg
ICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKQEAgLTY4Miw2
ICs3MTQsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgICAgICAKICAgICAgICAgdXNl
ZEtleS5zZXROdW1iZXJWYWx1ZShrZXlOdW1iZXIpOwogICAgICAgICB1c2VkS2V5SXNHZW5lcmF0
ZWQgPSB0cnVlOworICAgICAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5lbmFibGUoW3RoaXMsIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXJdKCkg
eworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtleU51bWJlcih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsK
KyAgICAgICAgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHVzZWRLZXkgPSBrZXlEYXRhOwogCkBA
IC03NDMsNiArNzc4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRk
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmUKICAgICBpZiAob3Zlcndy
aXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRl
Rm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYmIGtleURhdGEu
dHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQogICAgICAgICBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5tYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcih0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5RGF0YS5udW1iZXIoKSk7CiAKKyAg
ICBnZW5lcmF0ZWRLZXlSZXNldHRlci5kaXNhYmxlKCk7CiAgICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVzZWRL
ZXkpKTsKIH0KIAo=
</data>
<flag name="review"
          id="293690"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>