<?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>122351</bug_id>
          
          <creation_ts>2013-10-04 14:53:08 -0700</creation_ts>
          <short_desc>JSManagedValue should be able to store non-object JSValues</short_desc>
          <delta_ts>2018-03-26 08:59:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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=184008</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936376</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-04 14:53:08 -0700</bug_when>
    <thetext>We decided not to support this because we thought it didn’t make sense to have a “weak” JSValue that wasn’t an object.

Our general thought process was if you have a JSObject-ObjC object pair (i.e. an Obj-C object that you exported to JavaScript-land), it makes more sense to store a non-object JSValue on the JavaScript-land version of the object rather than as an ivar in the Objective-C object.

In retrospect, this may not have been a good decision at least w.r.t. consistency in client code. If you’re storing a bag of JSValues off an Obj-C object, you’d like to store all of them either in ObjC-land or JavaScript-land, but doing some in one and some in the other doesn’t sound too good. Also, what if the object you want to hang these values off of doesn’t have a corresponding object in JavaScript-land in which to store them?

I think the solution would probably be to fix JSManagedValue to be able to reference non-object JSValues. Right now, all JSManagedValues contain a Weak&lt;JSObject&gt;. 

To fix this, we should change Weak&lt;T&gt; to allow non-object template parameters (similar to how WriteBarrier has an “Unknown” template specialization). The downside of this option is that it&apos;s a tad wasteful, as we’ll allocate some additional, unnecessary state in the JS runtime. The upside is that the virtual machine will clear the Weak field when it goes away, preventing clients from accidentally trying to do something with it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936379</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-04 14:56:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/15151935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936417</commentid>
    <comment_count>2</comment_count>
      <attachid>213416</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-04 16:28:22 -0700</bug_when>
    <thetext>Created attachment 213416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936420</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-04 16:29:50 -0700</bug_when>
    <thetext>Attachment 213416 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/heap/Heap.cpp&apos;, u&apos;Source/JavaScriptCore/heap/Heap.h&apos;, u&apos;Source/JavaScriptCore/heap/Weak.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakBlock.cpp&apos;, u&apos;Source/JavaScriptCore/heap/WeakImpl.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakInlines.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSet.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSetInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/heap/Weak.h:64:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/heap/Weak.h:73:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936438</commentid>
    <comment_count>4</comment_count>
      <attachid>213416</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-04 17:11:39 -0700</bug_when>
    <thetext>Comment on attachment 213416
Patch

Attachment 213416 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3314041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936570</commentid>
    <comment_count>5</comment_count>
      <attachid>213452</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-05 08:20:19 -0700</bug_when>
    <thetext>Created attachment 213452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936571</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-05 08:21:38 -0700</bug_when>
    <thetext>Attachment 213452 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/heap/Heap.cpp&apos;, u&apos;Source/JavaScriptCore/heap/Heap.h&apos;, u&apos;Source/JavaScriptCore/heap/Weak.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakBlock.cpp&apos;, u&apos;Source/JavaScriptCore/heap/WeakImpl.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakInlines.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSet.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSetInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/heap/WeakInlines.h:83:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/heap/WeakInlines.h:90:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/heap/Weak.h:64:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/heap/Weak.h:73:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936601</commentid>
    <comment_count>7</comment_count>
      <attachid>213458</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-05 10:27:38 -0700</bug_when>
    <thetext>Created attachment 213458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936602</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-05 10:30:10 -0700</bug_when>
    <thetext>Attachment 213458 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/heap/Heap.cpp&apos;, u&apos;Source/JavaScriptCore/heap/Heap.h&apos;, u&apos;Source/JavaScriptCore/heap/Weak.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakBlock.cpp&apos;, u&apos;Source/JavaScriptCore/heap/WeakImpl.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakInlines.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSet.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakSetInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/heap/WeakInlines.h:90:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/heap/Weak.h:64:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937284</commentid>
    <comment_count>9</comment_count>
      <attachid>213629</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-07 17:04:37 -0700</bug_when>
    <thetext>Created attachment 213629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937297</commentid>
    <comment_count>10</comment_count>
      <attachid>213633</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-07 17:58:36 -0700</bug_when>
    <thetext>Created attachment 213633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937298</commentid>
    <comment_count>11</comment_count>
      <attachid>213633</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-07 18:03:18 -0700</bug_when>
    <thetext>Comment on attachment 213633
Patch

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

&gt; Source/JavaScriptCore/API/tests/testapi.mm:363
&gt; +        checkResult(@&quot;is_ham is nil&quot;, ![myPrivateProperties valueForKey:@&quot;is_ham&quot;]);
&gt; +        checkResult(@&quot;message is nil&quot;, ![myPrivateProperties valueForKey:@&quot;message&quot;]);

Need to update the test to check that the other entries are also nil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937579</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-08 10:24:11 -0700</bug_when>
    <thetext>Committed r157119: &lt;http://trac.webkit.org/changeset/157119&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213416</attachid>
            <date>2013-10-04 16:28:22 -0700</date>
            <delta_ts>2013-10-05 08:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122351-20131004162808.patch</filename>
            <type>text/plain</type>
            <size>21921</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2OTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgc2hvdWxkIGJlIGFibGUgdG8gc3RvcmUgbm9uLW9iamVj
dCBKU1ZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZGVjaWRlZCBub3QgdG8gc3VwcG9ydCB0aGlzIGJlY2F1c2Ugd2UgdGhvdWdodCBpdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgCisgICAgICAgICJ3ZWFrIiBKU1ZhbHVlIHRoYXQg
d2Fzbid0IGFuIG9iamVjdC4KKworICAgICAgICBPdXIgZ2VuZXJhbCB0aG91Z2h0IHByb2Nlc3Mg
d2FzIGlmIHlvdSBoYXZlIGEgSlNPYmplY3QtT2JqQyBvYmplY3QgcGFpciAoaS5lLiBhbiAKKyAg
ICAgICAgT2JqLUMgb2JqZWN0IHRoYXQgeW91IGV4cG9ydGVkIHRvIEphdmFTY3JpcHQtbGFuZCks
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc3RvcmUgCisgICAgICAgIGEgbm9uLW9iamVjdCBKU1Zh
bHVlIG9uIHRoZSBKYXZhU2NyaXB0LWxhbmQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHJhdGhlciB0
aGFuIGFzIAorICAgICAgICBhbiBpdmFyIGluIHRoZSBPYmplY3RpdmUtQyBvYmplY3QuCisKKyAg
ICAgICAgSW4gcmV0cm9zcGVjdCwgdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBhIGdvb2QgZGVjaXNp
b24gYXQgbGVhc3Qgdy5yLnQuIGNvbnNpc3RlbmN5IAorICAgICAgICBpbiBjbGllbnQgY29kZS4g
SWYgeW91J3JlIHN0b3JpbmcgYSBiYWcgb2YgSlNWYWx1ZXMgb2ZmIGFuIE9iai1DIG9iamVjdCwg
eW91J2QgCisgICAgICAgIGxpa2UgdG8gc3RvcmUgYWxsIG9mIHRoZW0gZWl0aGVyIGluIE9iakMt
bGFuZCBvciBKYXZhU2NyaXB0LWxhbmQsIGJ1dCBkb2luZyBzb21lIAorICAgICAgICBpbiBvbmUg
YW5kIHNvbWUgaW4gdGhlIG90aGVyIGRvZXNuJ3Qgc291bmQgdG9vIGdvb2QuIEFsc28sIHdoYXQg
aWYgdGhlIG9iamVjdCB5b3UgCisgICAgICAgIHdhbnQgdG8gaGFuZyB0aGVzZSB2YWx1ZXMgb2Zm
IG9mIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgb2JqZWN0IGluIEphdmFTY3JpcHQtCisg
ICAgICAgIGxhbmQgaW4gd2hpY2ggdG8gc3RvcmUgdGhlbT8KKworICAgICAgICBUaGUgc29sdXRp
b24gaXMgdG8gZml4IEpTTWFuYWdlZFZhbHVlIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlIG5vbi1v
YmplY3QgSlNWYWx1ZXMuIAorICAgICAgICBSaWdodCBub3csIGFsbCBKU01hbmFnZWRWYWx1ZXMg
Y29udGFpbiBhIFdlYWs8SlNPYmplY3Q+LiAKKworICAgICAgICBUbyBmaXggdGhpcywgd2Ugc2hv
dWxkIGNoYW5nZSBXZWFrPFQ+IHRvIGFsbG93IG5vbi1vYmplY3QgdGVtcGxhdGUgcGFyYW1ldGVy
cyAoc2ltaWxhciAKKyAgICAgICAgdG8gaG93IFdyaXRlQmFycmllciBoYXMgYW4gIlVua25vd24i
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uKS4gVGhlIGRvd25zaWRlIG9mIHRoaXMgCisgICAgICAg
IG9wdGlvbiBpcyB0aGF0IGl0J3MgYSB0YWQgd2FzdGVmdWwsIGFzIHdlJ2xsIGFsbG9jYXRlIHNv
bWUgYWRkaXRpb25hbCwgdW5uZWNlc3NhcnkgCisgICAgICAgIHN0YXRlIGluIHRoZSBKUyBydW50
aW1lLiBUaGUgdXBzaWRlIGlzIHRoYXQgdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGNsZWFyIHRo
ZSBXZWFrIAorICAgICAgICBmaWVsZCB3aGVuIGl0IGdvZXMgYXdheSwgcHJldmVudGluZyBjbGll
bnRzIGZyb20gYWNjaWRlbnRhbGx5IHRyeWluZyB0byBkbyBzb21ldGhpbmcgCisgICAgICAgIHdp
dGggaXQgbGF0ZXIuCisKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6CisgICAgICAgICgtW0pTTWFuYWdl
ZFZhbHVlIHZhbHVlXSk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAg
ICgtW0pTQ29sbGVjdGlvbiBpbml0XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiBzZXRWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiB2YWx1ZUZvcktleTpdKToKKyAg
ICAgICAgKHRlc3RPYmplY3RpdmVDQVBJKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Z2xvYmFsV2Vha1NldCk6CisgICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjp+V2Vha0Jh
c2UpOgorICAgICAgICAoSlNDOjpXZWFrOjpXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6dmlzaXQpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha0ltcGw6OldlYWtJbXBsKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjppc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAg
ICAgIChKU0M6OnN3YXApOgorICAgICAgICAoSlNDOjpXZWFrQmFzZTo6c3dhcCk6CisgICAgICAg
IChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChKU0M6
Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6V2Vha0Jhc2U6Om9wZXJhdG9yISk6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpsZWFrSW1wbCk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpoYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpT
Qzo6d2Vha0NsZWFyKToKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoKKyAgICAgICAgKiBoZWFw
L1dlYWtTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToK
KwogMjAxMy0xMC0wNCAgTmFkYXYgUm90ZW0gIDxucm90ZW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEZUTDogQWRkIHN1cHBvcnQgZm9yIFZhbHVlVG9JbnQzMihib29sKHgpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCShyZXZpc2lvbiAxNTY4OTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw4IEBAIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
KiBtYW5hZ2UKIH0KIAogQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKLSAgICBKU0M6
OldlYWs8SlNDOjpKU09iamVjdD4gbV92YWx1ZTsKKyAgICBXZWFrQ29udGV4dFJlZiBtX2NvbnRl
eHQ7CisgICAgSlNDOjpXZWFrPEpTQzo6VW5rbm93bj4gbV92YWx1ZTsKIH0KIAogKyAoSlNNYW5h
Z2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQpAQCAtNzAs
MTMgKzcxLDE1IEBAIC0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBpZiAoIXZhbHVlIHx8ICFK
U1ZhbHVlSXNPYmplY3QoW3ZhbHVlLmNvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVl
IEpTVmFsdWVSZWZdKSkgewotICAgICAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gd2VhazsK
KyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIEpTQzo6V2VhazxKU0M6OlVua25vd24+IHdlYWs7
CiAgICAgICAgIG1fdmFsdWUuc3dhcCh3ZWFrKTsKKyAgICAgICAgbV9jb250ZXh0ID0gbmlsOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHRvSlMoY29uc3Rf
Y2FzdDxPcGFxdWVKU1ZhbHVlKj4oW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0gICAgICAgIEpTQzo6
V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIo
KSwgc2VsZik7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbdmFsdWUuY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgSlNDOjpXZWFrPEpTQzo6VW5rbm93
bj4gd2VhayhleGVjLT52bSgpLCB0b0pTKGV4ZWMsIFt2YWx1ZSBKU1ZhbHVlUmVmXSksIG1hbmFn
ZWRWYWx1ZUhhbmRsZU93bmVyKCksIHNlbGYpOwogICAgICAgICBtX3ZhbHVlLnN3YXAod2Vhayk7
CisgICAgICAgIG1fY29udGV4dC5zZXQoW3ZhbHVlIGNvbnRleHRdKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc2VsZjsKQEAgLTg2LDkgKzg5LDEwIEBAIC0gKEpTVmFsdWUgKil2YWx1ZQogewogICAg
IGlmICghbV92YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU0M6OkpTT2JqZWN0KiBv
YmplY3QgPSBtX3ZhbHVlLmdldCgpOwotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRl
eHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6dG9HbG9iYWxSZWYob2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSldOwotICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKG9iamVjdCkgaW5Db250ZXh0OmNvbnRleHRd
OworICAgIEpTQ29udGV4dCogY29udGV4dCA9IG1fY29udGV4dC5nZXQoKTsKKyAgICBBU1NFUlQo
Y29udGV4dCk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHRvUmVmKHRvSlMoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSksIG1fdmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBbSlNWYWx1ZSB2
YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAogLSAodm9p
ZClkaXNjb25uZWN0VmFsdWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkubW0JKHJldmlzaW9uIDE1Njg5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSw0NyBAQCAt
ICh2b2lkKXJlbW92ZUNoaWxkQXRJbmRleDooTlNVSW50ZWdlcilpCiAKIEBlbmQKIAorQGludGVy
ZmFjZSBKU0NvbGxlY3Rpb24gOiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAq
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6
KE5TU3RyaW5nICopa2V5OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsK
KyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9kaWN0ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVlICpvbGRNYW5hZ2VkVmFs
dWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKG9sZE1hbmFnZWRWYWx1ZSkg
eworICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9IFtvbGRNYW5hZ2VkVmFsdWUgdmFsdWVdOwor
ICAgICAgICBpZiAob2xkVmFsdWUpCisgICAgICAgICAgICBbb2xkVmFsdWUuY29udGV4dC52aXJ0
dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOm9sZE1hbmFnZWRWYWx1ZSB3aXRoT3du
ZXI6c2VsZl07CisgICAgfQorICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbSlNN
YW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKKyAgICBbdmFsdWUuY29u
dGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRo
T3duZXI6c2VsZl07CisgICAgW19kaWN0IHNldE9iamVjdDptYW5hZ2VkVmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAg
ICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW19kaWN0IG9iamVjdEZvcktleTprZXld
OworICAgIGlmICghbWFuYWdlZFZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKK30KK0BlbmQKKwogc3RhdGljIHZvaWQgY2hlY2tSZXN1
bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBib29sIHBhc3NlZCkKIHsKICAgICBOU0xvZyhAIlRF
U1Q6IFwiJUBcIjogJUAiLCBkZXNjcmlwdGlvbiwgcGFzc2VkID8gQCJQQVNTRUQiIDogQCJGQUlM
RUQiKTsKQEAgLTI5MSw2ICszMzIsMjMgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAg
fQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCogY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVj
dCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOworICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0g
cm9vdE9iamVjdDsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0g
W1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFj
aGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJv
b3RPYmplY3RdOworICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1
ZSB2YWx1ZVdpdGhCb29sOnRydWUgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJd
OworICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07
CisKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEpTVmFsdWUgKmlzSGFtID0gW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgSlNWYWx1
ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJd
OworICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVh
bl0gJiYgW2lzSGFtIHRvQm9vbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMg
aGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5n
OlttZXNzYWdlIHRvU3RyaW5nXV0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAg
ICAgICAgIF9fYmxvY2sgaW50IHJlc3VsdDsKICAgICAgICAgY29udGV4dFtAImJsb2NrQ2FsbGJh
Y2siXSA9IF4oaW50IHZhbHVlKXsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAxNTY4OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYmxvY2tBbGxvY2F0b3IoKQogICAgICwgbV9vYmpl
Y3RTcGFjZSh0aGlzKQogICAgICwgbV9zdG9yYWdlU3BhY2UodGhpcykKKyAgICAsIG1fZ2xvYmFs
V2Vha1NldCh2bSkKICAgICAsIG1fZXh0cmFNZW1vcnlVc2FnZSgwKQogICAgICwgbV9tYWNoaW5l
VGhyZWFkcyh0aGlzKQogICAgICwgbV9zaGFyZWREYXRhKHZtKQpAQCAtMjkzLDYgKzI5NCw3IEBA
IHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3ZtLT5keW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwogCisgICAgbV9nbG9iYWxXZWFrU2V0Lmxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CiAgICAgbV9vYmplY3RTcGFjZS5sYXN0Q2hhbmNlVG9GaW5hbGl6
ZSgpOwogCiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKQEAgLTU3Niw2ICs1Nzgs
NyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgICAgIEdDUEhBU0UoVmlzaXRpbmdMaXZl
V2Vha0hhbmRsZXMpOwogICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJMaXZlIFdlYWsg
SGFuZGxlcyIpOwogICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgbV9nbG9iYWxX
ZWFrU2V0LnZpc2l0KGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgICAgICBtX29iamVjdFNwYWNl
LnZpc2l0V2Vha1NldHMoaGVhcFJvb3RWaXNpdG9yKTsKICAgICAgICAgICAgIGhhcnZlc3RXZWFr
UmVmZXJlbmNlcygpOwogICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNFbXB0eSgpKQpAQCAtNzc5
LDYgKzc4Miw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAg
ICAKICAgICB7CiAgICAgICAgIEdDUEhBU0UoUmVhcGluZ1dlYWtIYW5kbGVzKTsKKyAgICAgICAg
bV9nbG9iYWxXZWFrU2V0LnJlYXAoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5yZWFwV2Vha1Nl
dHMoKTsKICAgICB9CiAKQEAgLTgxNSw3ICs4MTksOSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dl
ZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgaWYgKHN3ZWVwVG9nZ2xlID09IERvU3dlZXApIHsKICAg
ICAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjog
U3dlZXBpbmciKTsKICAgICAgICAgR0NQSEFTRShTd2VlcGluZyk7CisgICAgICAgIG1fZ2xvYmFs
V2Vha1NldC5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CisgICAgICAg
IG1fZ2xvYmFsV2Vha1NldC5zaHJpbmsoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmso
KTsKICAgICB9CiAKQEAgLTgyNCw2ICs4MzAsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBU
b2dnbGUgc3dlZXBUb2dnCiAKICAgICB7CiAgICAgICAgIEdDUEhBU0UoUmVzZXRBbGxvY2F0b3Jz
KTsKKyAgICAgICAgbV9nbG9iYWxXZWFrU2V0LnJlc2V0QWxsb2NhdG9yKCk7CiAgICAgICAgIG1f
b2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3JzKCk7CiAgICAgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTU2ODk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KICAg
ICAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsg
fQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21h
Y2hpbmVUaHJlYWRzOyB9CisgICAgICAgIFdlYWtTZXQmIGdsb2JhbFdlYWtTZXQoKSB7IHJldHVy
biBtX2dsb2JhbFdlYWtTZXQ7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2
aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNr
Pik7CkBAIC0yNTcsNiArMjU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJsb2NrQWxs
b2NhdG9yIG1fYmxvY2tBbGxvY2F0b3I7CiAgICAgICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0U3Bh
Y2U7CiAgICAgICAgIENvcGllZFNwYWNlIG1fc3RvcmFnZVNwYWNlOworICAgICAgICBXZWFrU2V0
IG1fZ2xvYmFsV2Vha1NldDsKICAgICAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlC
dWZmZXI+IG1fYXJyYXlCdWZmZXJzOwogICAgICAgICBzaXplX3QgbV9leHRyYU1lbW9yeVVzYWdl
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCShyZXZpc2lvbiAxNTY4OTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpZm5kZWYgV2Vha19oCiAjZGVmaW5lIFdlYWtfaAogCisjaW5jbHVkZSAi
SGFuZGxlVHlwZXMuaCIKKwogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKQEAgLTM3LDQ1ICszOSw0MyBAQCBjbGFzcyBXZWFrSGFuZGxlT3duZXI7CiAv
LyBUaGlzIGlzIGEgZnJlZSBmdW5jdGlvbiByYXRoZXIgdGhhbiBhIFdlYWs8VD4gbWVtYmVyIGZ1
bmN0aW9uIHNvIHdlIGNhbiBwdXQgaXQgaW4gV2Vhay5jcHAuCiBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHdlYWtDbGVhclNsb3dDYXNlKFdlYWtJbXBsKiYpOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBXZWFrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWFrKTsKK2NsYXNzIFdl
YWtCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWFrQmFzZSk7CiBwdWJsaWM6Ci0g
ICAgV2VhaygpCisgICAgV2Vha0Jhc2UoKQogICAgICAgICA6IG1faW1wbCgwKQogICAgIHsKICAg
ICB9CiAKLSAgICBXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgIFdlYWtCYXNlKHN0ZDo6bnVsbHB0
cl90KQogICAgICAgICA6IG1faW1wbCgwKQogICAgIHsKICAgICB9CiAKLSAgICBXZWFrKFQqLCBX
ZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOworICAgIFdlYWtCYXNlKFdl
YWtJbXBsKiBpbXBsKQorICAgICAgICA6IG1faW1wbChpbXBsKQorICAgIHsKKyAgICB9CiAKICAg
ICBlbnVtIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9
OwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsKLSAgICBXZWFrKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CisgICAgV2Vha0Jhc2UoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlVGFnKTsKIAotICAgIFdlYWsoV2VhayYmKTsKKyAgICBXZWFrQmFzZShXZWFrQmFzZSYmKTsK
IAotICAgIH5XZWFrKCkKKyAgICB+V2Vha0Jhc2UoKQogICAgIHsKICAgICAgICAgY2xlYXIoKTsK
ICAgICB9CiAKLSAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIHZvaWQgc3dhcChXZWFrQmFzZSYp
OwogCi0gICAgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CisgICAgV2Vha0Jhc2UmIG9wZXJhdG9y
PShXZWFrQmFzZSYmKTsKIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0gICAgVCogb3Bl
cmF0b3ItPigpIGNvbnN0OwotICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIFQqIGdldCgp
IGNvbnN0OwotCi0gICAgYm9vbCB3YXMoVCopIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJz
aW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0
byBvdGhlciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgdm9pZCogKFdlYWs6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQqIChXZWFrQmFzZTo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAK
ICAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04NiwxMiAr
ODYsNDEgQEAgcHVibGljOgogICAgICAgICB3ZWFrQ2xlYXJTbG93Q2FzZShtX2ltcGwpOwogICAg
IH0KICAgICAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIFdlYWtJbXBsKiBoYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsKIAogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2VhayA6IHB1YmxpYyBXZWFrQmFzZSB7CitwdWJsaWM6
CisgICAgV2VhaygpCisgICAgeworICAgIH0KKworICAgIFdlYWsoVCosIFdlYWtIYW5kbGVPd25l
ciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7
CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29uc3Q7CisKKyAgICBi
b29sIHdhcyhUKikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8PiBjbGFzcyBXZWFrPFVua25vd24+
IDogcHVibGljIFdlYWtCYXNlIHsKK3B1YmxpYzoKKyAgICBXZWFrKCkKKyAgICB7CisgICAgfQor
CisgICAgV2VhayhWTSYsIEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250
ZXh0ID0gMCk7CisKKyAgICBKU1ZhbHVlIG9wZXJhdG9yKigpIGNvbnN0OworICAgIEpTVmFsdWUg
Z2V0KCkgY29uc3Q7CisKKyAgICBib29sIHdhcyhKU1ZhbHVlKSBjb25zdDsKK307CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDE1Njg5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBXZWFrQmxvY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgaAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBs
LT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChIZWFwOjppc0xpdmUoanNWYWx1ZS5hc0NlbGwoKSkp
CisgICAgICAgIGlmIChqc1ZhbHVlLmlzQ2VsbCgpICYmIEhlYXA6OmlzTGl2ZShqc1ZhbHVlLmFz
Q2VsbCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFdlYWtIYW5kbGVPd25l
ciogd2Vha0hhbmRsZU93bmVyID0gd2Vha0ltcGwtPndlYWtIYW5kbGVPd25lcigpOwpAQCAtMTIz
LDcgKzEyMywxMiBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAgICAgIGlmICh3ZWFrSW1w
bC0+c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKEhlYXA6OmlzTGl2ZSh3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgewor
ICAgICAgICBpZiAod2Vha0ltcGwtPmpzVmFsdWUoKS5pc0NlbGwoKSAmJiBIZWFwOjppc0xpdmUo
d2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWFr
SW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghd2Vha0ltcGwtPmpzVmFsdWUoKS5pc0NlbGwoKSAm
JiB3ZWFrSW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6RGVhbGxvY2F0ZWQpIHsKICAgICAgICAg
ICAgIEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vha0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW1wbC5oCShyZXZpc2lvbiAxNTY4OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSBXZWFr
SW1wbDo6V2Vha0ltcGwoSlNWYWx1ZSBqc1ZhbHUKICAgICAsIG1fY29udGV4dChjb250ZXh0KQog
ewogICAgIEFTU0VSVChzdGF0ZSgpID09IExpdmUpOwotICAgIEFTU0VSVChtX2pzVmFsdWUgJiYg
bV9qc1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICBBU1NFUlQobV9qc1ZhbHVlKTsKIH0KIAogaW5saW5l
IFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCShyZXZpc2lvbiAxNTY4OTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwzOCAr
MzQsNDQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
V2VhazxUPjo6V2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCog
Y29udGV4dCkKLSAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwgd2Vh
a093bmVyLCBjb250ZXh0KSA6IDApCisgICAgOiBXZWFrQmFzZShjZWxsID8gV2Vha1NldDo6YWxs
b2NhdGUoY2VsbCwgd2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QKK2lubGluZSBXZWFrPFVua25vd24+OjpXZWFrKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwg
V2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQpCisgICAgOiBXZWFrQmFz
ZSh2YWx1ZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKHZtLCB2YWx1ZSwgd2Vha093bmVyLCBjb250ZXh0
KSA6IDApCit7Cit9CisKK2lubGluZSBib29sIFdlYWtCYXNlOjppc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlw
ZW5hbWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQoraW5saW5lIFdlYWtCYXNl
OjpXZWFrQmFzZShXZWFrQmFzZTo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQogICAgIDogbV9p
bXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgV2VhazxUPjo6V2VhayhXZWFrJiYgb3RoZXIpCitpbmxpbmUgV2Vha0Jhc2U6Oldl
YWtCYXNlKFdlYWtCYXNlJiYgb3RoZXIpCiAgICAgOiBtX2ltcGwob3RoZXIubGVha0ltcGwoKSkK
IHsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBX
ZWFrPFQ+JiBiKQordGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrQmFzZSYg
YSwgV2Vha0Jhc2UmIGIpCiB7CiAgICAgYS5zd2FwKGIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCBXZWFrPFQ+Ojpzd2FwKFdlYWsmIG90aGVyKQoraW5saW5lIHZvaWQg
V2Vha0Jhc2U6OnN3YXAoV2Vha0Jhc2UmIG90aGVyKQogeworICAgIEFTU0VSVCghbV9pbXBsIHx8
ICFvdGhlci5tX2ltcGwgfHwgbV9pbXBsLT5qc1ZhbHVlKCkuaXNDZWxsKCkgPT0gb3RoZXIubV9p
bXBsLT5qc1ZhbHVlKCkuaXNDZWxsKCkpOyAKICAgICBzdGQ6OnN3YXAobV9pbXBsLCBvdGhlci5t
X2ltcGwpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBXZWFrPFQ+Ojpv
cGVyYXRvcj0oV2VhayYmIG90aGVyKSAtPiBXZWFrJgoraW5saW5lIGF1dG8gV2Vha0Jhc2U6Om9w
ZXJhdG9yPShXZWFrQmFzZSYmIG90aGVyKSAtPiBXZWFrQmFzZSYKIHsKLSAgICBXZWFrIHdlYWsg
PSBzdGQ6Om1vdmUob3RoZXIpOworICAgIFdlYWtCYXNlIHdlYWsgPSBzdGQ6Om1vdmUob3RoZXIp
OwogICAgIHN3YXAod2Vhayk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtOTQsMjQgKzEwMCw0
MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgp
IGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBXZWFrPFVua25vd24+OjpvcGVyYXRvciooKSBjb25zdAor
eworICAgIEFTU0VSVChtX2ltcGwgJiYgbV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZl
KTsKKyAgICByZXR1cm4gbV9pbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCk7Cit9CisKK2lubGluZSBK
U1ZhbHVlIFdlYWs8VW5rbm93bj46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwg
bV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgIHJldHVybiBtX2ltcGwtPmpzVmFsdWUoKTsKK30KKworaW5saW5lIGJvb2wgV2Vh
azxVbmtub3duPjo6d2FzKEpTVmFsdWUgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1w
bC0+anNWYWx1ZSgpID09IG90aGVyOworfQoraW5saW5lIGJvb2wgV2Vha0Jhc2U6Om9wZXJhdG9y
ISgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8
IG1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFdlYWs8VD46Om9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29u
c3QKK2lubGluZSBXZWFrQmFzZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25z
dAogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigh
ISp0aGlzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtJbXBsKiBXZWFr
PFQ+OjpsZWFrSW1wbCgpCitpbmxpbmUgV2Vha0ltcGwqIFdlYWtCYXNlOjpsZWFrSW1wbCgpCiB7
CiAgICAgV2Vha0ltcGwqIGltcGwgPSBtX2ltcGw7CiAgICAgbV9pbXBsID0gbnVsbHB0cjsKICAg
ICByZXR1cm4gaW1wbDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtJbXBs
KiBXZWFrPFQ+OjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKQoraW5saW5lIFdlYWtJbXBsKiBXZWFr
QmFzZTo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXZWFrSW1wbCo+KC0xKTsKIH0KQEAgLTEyMSw2ICsxNDQsMTEgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGlubGluZSBib29sIG9wZXJhdAogICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhz
LmdldCgpOwogfQogCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YWs8VW5rbm93bj4mIGxocywgY29uc3QgV2VhazxVbmtub3duPiYgcmhzKQoreworICAgIHJldHVy
biBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOworfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2
b2lkIG1vZGlmeWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRv
IGl0LiAoT2JqZWN0IGFsbG9jYXRpb24KIC8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2Rp
ZmllcyB0aGUgdGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVj
dGVkIG9iamVjdCBhcyBvdXIgdmFsdWUuKQogdGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25z
dCBLZXkmIGtleSwgVmFsdWUmJiB2YWx1ZSkKQEAgLTE0Nyw2ICsxNzUsMTQgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZQogICAgIHdlYWsuY2xlYXIoKTsKIH0KIAor
aW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VW5rbm93bj4mIHdlYWssIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUpOworICAgIEFTU0VSVCh3ZWFrLndh
cyh2YWx1ZSkpOworICAgIEFTU0VSVCghd2Vhayk7CisgICAgd2Vhay5jbGVhcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha1NldC5oCShyZXZpc2lvbiAxNTY4OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgY2xh
c3MgV2Vha1NldCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpT
VmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgc3Rh
dGljIFdlYWtJbXBsKiBhbGxvY2F0ZShWTSYsIEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAw
LCB2b2lkKiBjb250ZXh0ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFrSW1w
bCopOwogCiAgICAgV2Vha1NldChWTSopOwpAQCAtNTYsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNldEFsbG9jYXRvcigpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBXZWFrSW1wbCog
YWxsb2NhdGUoV2Vha1NldCYsIEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciosIHZvaWQqIGNvbnRl
eHQpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogZmluZEFs
bG9jYXRvcigpOwogICAgIFdlYWtCbG9jazo6RnJlZUNlbGwqIHRyeUZpbmRBbGxvY2F0b3IoKTsK
ICAgICBXZWFrQmxvY2s6OkZyZWVDZWxsKiBhZGRBbGxvY2F0b3IoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaAkocmV2aXNpb24gMTU2ODk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFdlYWtJ
bXBsKiBXZWFrU2V0OjphbGxvY2F0ZShKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciog
d2Vha0hhbmRsZU93bmVyLCB2b2lkKiBjb250ZXh0KQoraW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0
OjphbGxvY2F0ZShXZWFrU2V0JiB3ZWFrU2V0LCBKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVP
d25lciogd2Vha0hhbmRsZU93bmVyLCB2b2lkKiBjb250ZXh0KQogewotICAgIFdlYWtTZXQmIHdl
YWtTZXQgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IoanNWYWx1ZS5hc0NlbGwoKSktPndlYWtTZXQo
KTsKICAgICBXZWFrQmxvY2s6OkZyZWVDZWxsKiBhbGxvY2F0b3IgPSB3ZWFrU2V0Lm1fYWxsb2Nh
dG9yOwogICAgIGlmIChVTkxJS0VMWSghYWxsb2NhdG9yKSkKICAgICAgICAgYWxsb2NhdG9yID0g
d2Vha1NldC5maW5kQWxsb2NhdG9yKCk7CkBAIC00Miw2ICs0MSwxMiBAQCBpbmxpbmUgV2Vha0lt
cGwqIFdlYWtTZXQ6OmFsbG9jYXRlKEpTVmFsCiAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgd2Vh
a0ltcGwpIFdlYWtJbXBsKGpzVmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7CiB9CiAK
K2lubGluZSBXZWFrSW1wbCogV2Vha1NldDo6YWxsb2NhdGUoSlNWYWx1ZSBqc1ZhbHVlLCBXZWFr
SGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBXZWFr
U2V0JiB3ZWFrU2V0ID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGpzVmFsdWUuYXNDZWxsKCkpLT53
ZWFrU2V0KCk7CisgICAgcmV0dXJuIGFsbG9jYXRlKHdlYWtTZXQsIGpzVmFsdWUsIHdlYWtIYW5k
bGVPd25lciwgY29udGV4dCk7Cit9CisKIGlubGluZSB2b2lkIFdlYWtCbG9jazo6ZmluYWxpemUo
V2Vha0ltcGwqIHdlYWtJbXBsKQogewogICAgIEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBX
ZWFrSW1wbDo6RGVhZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlz
aW9uIDE1Njg5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiAmbV92bS0+aGVhcDsKICAgICB9CiAKKyAgICBpbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6
OmFsbG9jYXRlKFZNJiB2bSwgSlNWYWx1ZSBqc1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtI
YW5kbGVPd25lciwgdm9pZCogY29udGV4dCkKKyAgICB7CisgICAgICAgIFdlYWtTZXQmIHdlYWtT
ZXQgPSB2bS5oZWFwLmdsb2JhbFdlYWtTZXQoKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHdl
YWtTZXQsIGpzVmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7CisgICAgfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFZNX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213452</attachid>
            <date>2013-10-05 08:20:19 -0700</date>
            <delta_ts>2013-10-05 10:27:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122351-20131005082023.patch</filename>
            <type>text/plain</type>
            <size>22986</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2OTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgc2hvdWxkIGJlIGFibGUgdG8gc3RvcmUgbm9uLW9iamVj
dCBKU1ZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZGVjaWRlZCBub3QgdG8gc3VwcG9ydCB0aGlzIGJlY2F1c2Ugd2UgdGhvdWdodCBpdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgCisgICAgICAgICJ3ZWFrIiBKU1ZhbHVlIHRoYXQg
d2Fzbid0IGFuIG9iamVjdC4KKworICAgICAgICBPdXIgZ2VuZXJhbCB0aG91Z2h0IHByb2Nlc3Mg
d2FzIGlmIHlvdSBoYXZlIGEgSlNPYmplY3QtT2JqQyBvYmplY3QgcGFpciAoaS5lLiBhbiAKKyAg
ICAgICAgT2JqLUMgb2JqZWN0IHRoYXQgeW91IGV4cG9ydGVkIHRvIEphdmFTY3JpcHQtbGFuZCks
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc3RvcmUgCisgICAgICAgIGEgbm9uLW9iamVjdCBKU1Zh
bHVlIG9uIHRoZSBKYXZhU2NyaXB0LWxhbmQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHJhdGhlciB0
aGFuIGFzIAorICAgICAgICBhbiBpdmFyIGluIHRoZSBPYmplY3RpdmUtQyBvYmplY3QuCisKKyAg
ICAgICAgSW4gcmV0cm9zcGVjdCwgdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBhIGdvb2QgZGVjaXNp
b24gYXQgbGVhc3Qgdy5yLnQuIGNvbnNpc3RlbmN5IAorICAgICAgICBpbiBjbGllbnQgY29kZS4g
SWYgeW91J3JlIHN0b3JpbmcgYSBiYWcgb2YgSlNWYWx1ZXMgb2ZmIGFuIE9iai1DIG9iamVjdCwg
eW91J2QgCisgICAgICAgIGxpa2UgdG8gc3RvcmUgYWxsIG9mIHRoZW0gZWl0aGVyIGluIE9iakMt
bGFuZCBvciBKYXZhU2NyaXB0LWxhbmQsIGJ1dCBkb2luZyBzb21lIAorICAgICAgICBpbiBvbmUg
YW5kIHNvbWUgaW4gdGhlIG90aGVyIGRvZXNuJ3Qgc291bmQgdG9vIGdvb2QuIEFsc28sIHdoYXQg
aWYgdGhlIG9iamVjdCB5b3UgCisgICAgICAgIHdhbnQgdG8gaGFuZyB0aGVzZSB2YWx1ZXMgb2Zm
IG9mIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgb2JqZWN0IGluIEphdmFTY3JpcHQtCisg
ICAgICAgIGxhbmQgaW4gd2hpY2ggdG8gc3RvcmUgdGhlbT8KKworICAgICAgICBUaGUgc29sdXRp
b24gaXMgdG8gZml4IEpTTWFuYWdlZFZhbHVlIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlIG5vbi1v
YmplY3QgSlNWYWx1ZXMuIAorICAgICAgICBSaWdodCBub3csIGFsbCBKU01hbmFnZWRWYWx1ZXMg
Y29udGFpbiBhIFdlYWs8SlNPYmplY3Q+LiAKKworICAgICAgICBUbyBmaXggdGhpcywgd2Ugc2hv
dWxkIGNoYW5nZSBXZWFrPFQ+IHRvIGFsbG93IG5vbi1vYmplY3QgdGVtcGxhdGUgcGFyYW1ldGVy
cyAoc2ltaWxhciAKKyAgICAgICAgdG8gaG93IFdyaXRlQmFycmllciBoYXMgYW4gIlVua25vd24i
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uKS4gVGhlIGRvd25zaWRlIG9mIHRoaXMgCisgICAgICAg
IG9wdGlvbiBpcyB0aGF0IGl0J3MgYSB0YWQgd2FzdGVmdWwsIGFzIHdlJ2xsIGFsbG9jYXRlIHNv
bWUgYWRkaXRpb25hbCwgdW5uZWNlc3NhcnkgCisgICAgICAgIHN0YXRlIGluIHRoZSBKUyBydW50
aW1lLiBUaGUgdXBzaWRlIGlzIHRoYXQgdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGNsZWFyIHRo
ZSBXZWFrIAorICAgICAgICBmaWVsZCB3aGVuIGl0IGdvZXMgYXdheSwgcHJldmVudGluZyBjbGll
bnRzIGZyb20gYWNjaWRlbnRhbGx5IHRyeWluZyB0byBkbyBzb21ldGhpbmcgCisgICAgICAgIHdp
dGggaXQgbGF0ZXIuCisKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6CisgICAgICAgICgtW0pTTWFuYWdl
ZFZhbHVlIHZhbHVlXSk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAg
ICgtW0pTQ29sbGVjdGlvbiBpbml0XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiBzZXRWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiB2YWx1ZUZvcktleTpdKToKKyAg
ICAgICAgKHRlc3RPYmplY3RpdmVDQVBJKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Z2xvYmFsV2Vha1NldCk6CisgICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjp+V2Vha0Jh
c2UpOgorICAgICAgICAoSlNDOjpXZWFrOjpXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6dmlzaXQpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha0ltcGw6OldlYWtJbXBsKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjppc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAg
ICAgIChKU0M6OnN3YXApOgorICAgICAgICAoSlNDOjpXZWFrQmFzZTo6c3dhcCk6CisgICAgICAg
IChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChKU0M6
Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6V2Vha0Jhc2U6Om9wZXJhdG9yISk6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpsZWFrSW1wbCk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpoYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpT
Qzo6d2Vha0NsZWFyKToKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoKKyAgICAgICAgKiBoZWFw
L1dlYWtTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToK
KwogMjAxMy0xMC0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIFNjcmlwdERlYnVnU2VydmVyIHRvIHVzZSBEZWJ1Z2dlckNhbGxGcmFtZSBpbnN0ZWFk
IG9mIEphdmFTY3JpcHRDYWxsRnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDggQEAgc3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZQogfQogCiBAaW1w
bGVtZW50YXRpb24gSlNNYW5hZ2VkVmFsdWUgewotICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX3ZhbHVlOworICAgIFdlYWtDb250ZXh0UmVmIG1fY29udGV4dDsKKyAgICBKU0M6OldlYWs8
SlNDOjpVbmtub3duPiBtX3ZhbHVlOwogfQogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRW
YWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCkBAIC03MCwxMyArNzEsMTUgQEAgLSAoaWQp
aW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIGlmICghdmFsdWUgfHwgIUpTVmFsdWVJc09iamVjdChbdmFs
dWUuY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0pKSB7Ci0g
ICAgICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrOworICAgIGlmICghdmFsdWUpIHsK
KyAgICAgICAgSlNDOjpXZWFrPEpTQzo6VW5rbm93bj4gd2VhazsKICAgICAgICAgbV92YWx1ZS5z
d2FwKHdlYWspOworICAgICAgICBtX2NvbnRleHQgPSBuaWw7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhjb25zdF9jYXN0PE9wYXF1ZUpTVmFsdWUq
PihbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKLSAgICAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+
IHdlYWsob2JqZWN0LCBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpLCBzZWxmKTsKKyAgICAgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFt2YWx1ZS5jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pOworICAgICAgICBKU0M6OldlYWs8SlNDOjpVbmtub3duPiB3ZWFrKGV4ZWMtPnZtKCks
IHRvSlMoZXhlYywgW3ZhbHVlIEpTVmFsdWVSZWZdKSwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIo
KSwgc2VsZik7CiAgICAgICAgIG1fdmFsdWUuc3dhcCh3ZWFrKTsKKyAgICAgICAgbV9jb250ZXh0
LnNldChbdmFsdWUgY29udGV4dF0pOwogICAgIH0KIAogICAgIHJldHVybiBzZWxmOwpAQCAtODYs
OSArODksMTAgQEAgLSAoSlNWYWx1ZSAqKXZhbHVlCiB7CiAgICAgaWYgKCFtX3ZhbHVlKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IG1fdmFsdWUuZ2V0
KCk7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xv
YmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpKV07Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFs
dWVSZWY6dG9SZWYob2JqZWN0KSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gbV9jb250ZXh0LmdldCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBKU1Zh
bHVlUmVmIHZhbHVlID0gdG9SZWYodG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKSwg
bV92YWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCiAtICh2b2lkKWRpc2Nvbm5lY3RWYWx1ZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNp
b24gMTU2OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDQ3IEBAIC0gKHZvaWQpcmVtb3ZlQ2hpbGRB
dEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCitAaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6
IE5TT2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24geworICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2RpY3QgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RG
b3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7CisgICAgICAgIEpTVmFsdWUq
IG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07CisgICAgICAgIGlmIChvbGRWYWx1
ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1h
bmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKKyAgICB9Cisg
ICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2Vk
VmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5l
IGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKKyAgICBb
X2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAoSlNWYWx1
ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVlICpt
YW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKCFtYW5hZ2Vk
VmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFs
dWVdOworfQorQGVuZAorCiBzdGF0aWMgdm9pZCBjaGVja1Jlc3VsdChOU1N0cmluZyAqZGVzY3Jp
cHRpb24sIGJvb2wgcGFzc2VkKQogewogICAgIE5TTG9nKEAiVEVTVDogXCIlQFwiOiAlQCIsIGRl
c2NyaXB0aW9uLCBwYXNzZWQgPyBAIlBBU1NFRCIgOiBAIkZBSUxFRCIpOwpAQCAtMjkxLDYgKzMz
MiwyOSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0gW1tK
U0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RP
YmplY3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAg
ICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm15UHJp
dmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0cnVlIGluQ29u
dGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQ
cm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvISIgaW5D
b250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKworICAgICAgICAgICAgSlNTeW5j
aHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pOworCisgICAgICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBKU1ZhbHVlICptZXNzYWdl
ID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAg
ICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYg
W2lzSGFtIHRvQm9vbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhl
bGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpb
bWVzc2FnZSB0b1N0cmluZ11dKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrUmVzdWx0KEAi
aXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hh
bSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFs
bG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0OwogICAgICAgICBjb250ZXh0
W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ibG9ja0FsbG9jYXRvcigp
CiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBtX3N0b3JhZ2VTcGFjZSh0aGlzKQor
ICAgICwgbV9nbG9iYWxXZWFrU2V0KHZtKQogICAgICwgbV9leHRyYU1lbW9yeVVzYWdlKDApCiAg
ICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMpCiAgICAgLCBtX3NoYXJlZERhdGEodm0pCkBAIC0y
OTMsNiArMjk0LDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fdm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgIFJFTEVBU0VfQVNT
RVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKKyAgICBtX2dsb2Jh
bFdlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKICAgICBtX29iamVjdFNwYWNlLmxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CiAKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQpA
QCAtNTc2LDYgKzU3OCw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICAgICAgR0NQSEFT
RShWaXNpdGluZ0xpdmVXZWFrSGFuZGxlcyk7CiAgICAgICAgIE1BUktfTE9HX1JPT1QodmlzaXRv
ciwgIkxpdmUgV2VhayBIYW5kbGVzIik7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBtX2dsb2JhbFdlYWtTZXQudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICAgICAgICAg
IG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICAg
ICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgICAgICBpZiAodmlzaXRvci5pc0Vt
cHR5KCkpCkBAIC03NzksNiArNzgyLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xl
IHN3ZWVwVG9nZwogICAgIAogICAgIHsKICAgICAgICAgR0NQSEFTRShSZWFwaW5nV2Vha0hhbmRs
ZXMpOworICAgICAgICBtX2dsb2JhbFdlYWtTZXQucmVhcCgpOwogICAgICAgICBtX29iamVjdFNw
YWNlLnJlYXBXZWFrU2V0cygpOwogICAgIH0KIApAQCAtODE1LDcgKzgxOSw5IEBAIHZvaWQgSGVh
cDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBpZiAoc3dlZXBUb2dnbGUgPT0g
RG9Td2VlcCkgewogICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFn
ZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwogICAgICAgICBHQ1BIQVNFKFN3ZWVwaW5nKTsKKyAg
ICAgICAgbV9nbG9iYWxXZWFrU2V0LnN3ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc3dl
ZXAoKTsKKyAgICAgICAgbV9nbG9iYWxXZWFrU2V0LnNocmluaygpOwogICAgICAgICBtX29iamVj
dFNwYWNlLnNocmluaygpOwogICAgIH0KIApAQCAtODI0LDYgKzgzMCw3IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShS
ZXNldEFsbG9jYXRvcnMpOworICAgICAgICBtX2dsb2JhbFdlYWtTZXQucmVzZXRBbGxvY2F0b3Io
KTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMoKTsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNTY5NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1
cm4gbV92bTsgfQogICAgICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBt
X29iamVjdFNwYWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygp
IHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KKyAgICAgICAgV2Vha1NldCYgZ2xvYmFsV2Vh
a1NldCgpIHsgcmV0dXJuIG1fZ2xvYmFsV2Vha1NldDsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+KTsKQEAgLTI1Nyw2ICsyNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9ja0FsbG9jYXRvcjsKICAgICAgICAgTWFya2VkU3Bh
Y2UgbV9vYmplY3RTcGFjZTsKICAgICAgICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7Cisg
ICAgICAgIFdlYWtTZXQgbV9nbG9iYWxXZWFrU2V0OwogICAgICAgICBHQ0luY29taW5nUmVmQ291
bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7CiAgICAgICAgIHNpemVfdCBtX2V4
dHJhTWVtb3J5VXNhZ2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHJldmlz
aW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWFrX2gKICNkZWZpbmUgV2Vha19o
CiAKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgorCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMzcsNDUgKzM5LDQzIEBAIGNsYXNzIFdlYWtI
YW5kbGVPd25lcjsKIC8vIFRoaXMgaXMgYSBmcmVlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGEgV2Vh
azxUPiBtZW1iZXIgZnVuY3Rpb24gc28gd2UgY2FuIHB1dCBpdCBpbiBXZWFrLmNwcC4KIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgd2Vha0NsZWFyU2xvd0Nhc2UoV2Vha0ltcGwqJik7CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
YWspOworY2xhc3MgV2Vha0Jhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtCYXNl
KTsKIHB1YmxpYzoKLSAgICBXZWFrKCkKKyAgICBXZWFrQmFzZSgpCiAgICAgICAgIDogbV9pbXBs
KDApCiAgICAgewogICAgIH0KIAotICAgIFdlYWsoc3RkOjpudWxscHRyX3QpCisgICAgV2Vha0Jh
c2Uoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIDogbV9pbXBsKDApCiAgICAgewogICAgIH0KIAot
ICAgIFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7Cisg
ICAgV2Vha0Jhc2UoV2Vha0ltcGwqIGltcGwpCisgICAgICAgIDogbV9pbXBsKGltcGwpCisgICAg
eworICAgIH0KIAogICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxl
RGVsZXRlZFZhbHVlIH07CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
OwotICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKKyAgICBXZWFrQmFzZShIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOwogCi0gICAgV2VhayhXZWFrJiYpOworICAgIFdlYWtCYXNl
KFdlYWtCYXNlJiYpOwogCi0gICAgfldlYWsoKQorICAgIH5XZWFrQmFzZSgpCiAgICAgewogICAg
ICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChXZWFrJik7CisgICAgdm9pZCBz
d2FwKFdlYWtCYXNlJik7CiAKLSAgICBXZWFrJiBvcGVyYXRvcj0oV2VhayYmKTsKKyAgICBXZWFr
QmFzZSYgb3BlcmF0b3I9KFdlYWtCYXNlJiYpOwogCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dDsKLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7
Ci0gICAgVCogZ2V0KCkgY29uc3Q7Ci0KLSAgICBib29sIHdhcyhUKikgY29uc3Q7CiAKICAgICAv
LyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8g
Ym9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiB2b2lkKiAo
V2Vhazo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIHR5cGVkZWYgdm9pZCogKFdlYWtCYXNl
OjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CiAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlw
ZSooKSBjb25zdDsKIAogICAgIFdlYWtJbXBsKiBsZWFrSW1wbCgpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKQEAgLTg2LDEyICs4Niw0OCBAQCBwdWJsaWM6CiAgICAgICAgIHdlYWtDbGVhclNsb3dDYXNl
KG1faW1wbCk7CiAgICAgfQogICAgIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBzdGF0aWMg
V2Vha0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogCiAgICAgV2Vha0ltcGwqIG1faW1w
bDsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDogcHVibGljIFdlYWtC
YXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWFrKTsKK3B1YmxpYzoKKyAgICBXZWFr
KCkKKyAgICB7CisgICAgfQorCisgICAgV2VhayhUKiwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZv
aWQqIGNvbnRleHQgPSAwKTsKKyAgICBXZWFrKFdlYWs8VD4mJik7CisKKyAgICBXZWFrPFQ+JiBv
cGVyYXRvcj0oV2VhazxUPiYmKTsKKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBU
JiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBUKiBnZXQoKSBjb25zdDsKKworICAgIGJvb2wgd2Fz
KFQqKSBjb25zdDsKK307CisKK3RlbXBsYXRlIDw+IGNsYXNzIFdlYWs8VW5rbm93bj4gOiBwdWJs
aWMgV2Vha0Jhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWs8VW5rbm93bj4pOwor
cHVibGljOgorICAgIFdlYWsoKQorICAgIHsKKyAgICB9CisKKyAgICBXZWFrKFZNJiwgSlNWYWx1
ZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBXZWFrKFdl
YWs8VW5rbm93bj4mJik7CisKKyAgICBXZWFrPFVua25vd24+JiBvcGVyYXRvcj0oV2VhazxVbmtu
b3duPiYmKTsKKyAgICBKU1ZhbHVlIG9wZXJhdG9yKigpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0
KCkgY29uc3Q7CisKKyAgICBib29sIHdhcyhKU1ZhbHVlKSBjb25zdDsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcg
QEAgdm9pZCBXZWFrQmxvY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgaAogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5q
c1ZhbHVlKCk7Ci0gICAgICAgIGlmIChIZWFwOjppc0xpdmUoanNWYWx1ZS5hc0NlbGwoKSkpCisg
ICAgICAgIGlmIChqc1ZhbHVlLmlzQ2VsbCgpICYmIEhlYXA6OmlzTGl2ZShqc1ZhbHVlLmFzQ2Vs
bCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFdlYWtIYW5kbGVPd25lciog
d2Vha0hhbmRsZU93bmVyID0gd2Vha0ltcGwtPndlYWtIYW5kbGVPd25lcigpOwpAQCAtMTIzLDcg
KzEyMywxMiBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAgICAgIGlmICh3ZWFrSW1wbC0+
c3RhdGUoKSA+IFdlYWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKEhlYXA6OmlzTGl2ZSh3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgeworICAg
ICAgICBpZiAod2Vha0ltcGwtPmpzVmFsdWUoKS5pc0NlbGwoKSAmJiBIZWFwOjppc0xpdmUod2Vh
a0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWFrSW1w
bC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghd2Vha0ltcGwtPmpzVmFsdWUoKS5pc0NlbGwoKSAmJiB3
ZWFrSW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6RGVhbGxvY2F0ZWQpIHsKICAgICAgICAgICAg
IEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW1wbC5oCShyZXZpc2lvbiAxNTY5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSBXZWFrSW1w
bDo6V2Vha0ltcGwoSlNWYWx1ZSBqc1ZhbHUKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewog
ICAgIEFTU0VSVChzdGF0ZSgpID09IExpdmUpOwotICAgIEFTU0VSVChtX2pzVmFsdWUgJiYgbV9q
c1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICBBU1NFUlQobV9qc1ZhbHVlKTsKIH0KIAogaW5saW5lIFdl
YWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrSW5saW5lcy5oCShyZXZpc2lvbiAxNTY5NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwzOCArMzQs
NjggQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vh
azxUPjo6V2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCogY29u
dGV4dCkKLSAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwgd2Vha093
bmVyLCBjb250ZXh0KSA6IDApCisgICAgOiBXZWFrQmFzZShjZWxsID8gV2Vha1NldDo6YWxsb2Nh
dGUoY2VsbCwgd2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QKK2lubGluZSBXZWFrPFVua25vd24+OjpXZWFrKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgV2Vh
a0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQpCisgICAgOiBXZWFrQmFzZSh2
YWx1ZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKHZtLCB2YWx1ZSwgd2Vha093bmVyLCBjb250ZXh0KSA6
IDApCit7Cit9CisKK2lubGluZSBib29sIFdlYWtCYXNlOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQoraW5saW5lIFdlYWtCYXNlOjpX
ZWFrQmFzZShXZWFrQmFzZTo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQogICAgIDogbV9pbXBs
KGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgV2VhazxUPjo6V2VhayhXZWFrJiYgb3RoZXIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFdlYWs8VD46OldlYWsoV2VhazxUPiYmIG90aGVyKQorICAgIDogV2Vha0Jhc2Uoc3Rh
dGljX2Nhc3Q8V2Vha0Jhc2UmJj4ob3RoZXIpKQoreworfQorCitpbmxpbmUgV2VhazxVbmtub3du
Pjo6V2VhayhXZWFrPFVua25vd24+JiYgb3RoZXIpCisgICAgOiBXZWFrQmFzZShzdGF0aWNfY2Fz
dDxXZWFrQmFzZSYmPihvdGhlcikpCit7Cit9CisKK2lubGluZSBXZWFrQmFzZTo6V2Vha0Jhc2Uo
V2Vha0Jhc2UmJiBvdGhlcikKICAgICA6IG1faW1wbChvdGhlci5sZWFrSW1wbCgpKQogewogfQog
Ci10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFdlYWs8VD4mIGEsIFdlYWs8VD4m
IGIpCit0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFdlYWtCYXNlJiBhLCBXZWFr
QmFzZSYgYikKIHsKICAgICBhLnN3YXAoYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSB2b2lkIFdlYWs8VD46OnN3YXAoV2VhayYgb3RoZXIpCitpbmxpbmUgdm9pZCBXZWFrQmFz
ZTo6c3dhcChXZWFrQmFzZSYgb3RoZXIpCiB7CisgICAgQVNTRVJUKCFtX2ltcGwgfHwgIW90aGVy
Lm1faW1wbCB8fCBtX2ltcGwtPmpzVmFsdWUoKS5pc0NlbGwoKSA9PSBvdGhlci5tX2ltcGwtPmpz
VmFsdWUoKS5pc0NlbGwoKSk7IAogICAgIHN0ZDo6c3dhcChtX2ltcGwsIG90aGVyLm1faW1wbCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBhdXRvIFdlYWs8VD46Om9wZXJhdG9y
PShXZWFrJiYgb3RoZXIpIC0+IFdlYWsmCitpbmxpbmUgYXV0byBXZWFrQmFzZTo6b3BlcmF0b3I9
KFdlYWtCYXNlJiYgb3RoZXIpIC0+IFdlYWtCYXNlJgoreworICAgIFdlYWtCYXNlIHdlYWsgPSBz
dGQ6Om1vdmUob3RoZXIpOworICAgIHN3YXAod2Vhayk7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBXZWFrPFQ+OjpvcGVyYXRvcj0oV2Vh
azxUPiYmIG90aGVyKSAtPiBXZWFrPFQ+JgoreworICAgIFdlYWs8VD4gd2VhayA9IHN0ZDo6bW92
ZShvdGhlcik7CisgICAgc3dhcCh3ZWFrKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGlu
ZSBhdXRvIFdlYWs8VW5rbm93bj46Om9wZXJhdG9yPShXZWFrPFVua25vd24+JiYgb3RoZXIpIC0+
IFdlYWs8VW5rbm93bj4mCiB7Ci0gICAgV2VhayB3ZWFrID0gc3RkOjptb3ZlKG90aGVyKTsKKyAg
ICBXZWFrPFVua25vd24+IHdlYWsgPSBzdGQ6Om1vdmUob3RoZXIpOwogICAgIHN3YXAod2Vhayk7
CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtOTQsMjQgKzEyNCw0MSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPiht
X2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgpIGNvbnN0CitpbmxpbmUgSlNW
YWx1ZSBXZWFrPFVua25vd24+OjpvcGVyYXRvciooKSBjb25zdAoreworICAgIEFTU0VSVChtX2lt
cGwgJiYgbV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKKyAgICByZXR1cm4gbV9p
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCk7Cit9CisKK2lubGluZSBKU1ZhbHVlIFdlYWs8VW5rbm93
bj46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgpICE9
IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIHJldHVybiBt
X2ltcGwtPmpzVmFsdWUoKTsKK30KKworaW5saW5lIGJvb2wgV2VhazxVbmtub3duPjo6d2FzKEpT
VmFsdWUgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbC0+anNWYWx1ZSgpID09IG90
aGVyOworfQoraW5saW5lIGJvb2wgV2Vha0Jhc2U6Om9wZXJhdG9yISgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1wbC0+c3RhdGUoKSAh
PSBXZWFrSW1wbDo6TGl2ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8
VD46Om9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QKK2lubGluZSBXZWFrQmFz
ZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAogewogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtJbXBsKiBXZWFrPFQ+OjpsZWFrSW1wbCgpCitp
bmxpbmUgV2Vha0ltcGwqIFdlYWtCYXNlOjpsZWFrSW1wbCgpCiB7CiAgICAgV2Vha0ltcGwqIGlt
cGwgPSBtX2ltcGw7CiAgICAgbV9pbXBsID0gbnVsbHB0cjsKICAgICByZXR1cm4gaW1wbDsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtJbXBsKiBXZWFrPFQ+OjpoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKQoraW5saW5lIFdlYWtJbXBsKiBXZWFrQmFzZTo6aGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWFrSW1wbCo+KC0x
KTsKIH0KQEAgLTEyMSw2ICsxNjgsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBi
b29sIG9wZXJhdAogICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwogfQogCit0ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWs8VW5rbm93bj4mIGxocywg
Y29uc3QgV2VhazxVbmtub3duPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhz
LmdldCgpOworfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2b2lkIG1vZGlmeWluZyBhIHdl
YWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRvIGl0LiAoT2JqZWN0IGFsbG9j
YXRpb24KIC8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2RpZmllcyB0aGUgdGFibGUuIFdl
IGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVjdGVkIG9iamVjdCBhcyBvdXIg
dmFsdWUuKQogdGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtleSwgVmFsdWUm
JiB2YWx1ZSkKQEAgLTE0Nyw2ICsxOTksMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgd2Vha0NsZQogICAgIHdlYWsuY2xlYXIoKTsKIH0KIAoraW5saW5lIHZvaWQgd2Vha0Ns
ZWFyKFdlYWs8VW5rbm93bj4mIHdlYWssIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUX1VO
VVNFRCh2YWx1ZSwgdmFsdWUpOworICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOworICAgIEFT
U0VSVCghd2Vhayk7CisgICAgd2Vhay5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5o
CShyZXZpc2lvbiAxNTY5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgV2Vha1NldCB7CiAKIHB1
YmxpYzoKICAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVP
d25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgc3RhdGljIFdlYWtJbXBsKiBhbGxv
Y2F0ZShWTSYsIEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0g
MCk7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFrSW1wbCopOwogCiAgICAgV2Vha1Nl
dChWTSopOwpAQCAtNTYsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFsbG9jYXRv
cigpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBXZWFrSW1wbCogYWxsb2NhdGUoV2Vha1NldCYs
IEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciosIHZvaWQqIGNvbnRleHQpOworCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogZmluZEFsbG9jYXRvcigpOwogICAgIFdl
YWtCbG9jazo6RnJlZUNlbGwqIHRyeUZpbmRBbGxvY2F0b3IoKTsKICAgICBXZWFrQmxvY2s6OkZy
ZWVDZWxsKiBhZGRBbGxvY2F0b3IoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vha1NldElubGluZXMuaAkocmV2aXNpb24gMTU2OTUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0OjphbGxv
Y2F0ZShKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyLCB2
b2lkKiBjb250ZXh0KQoraW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0OjphbGxvY2F0ZShXZWFrU2V0
JiB3ZWFrU2V0LCBKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93
bmVyLCB2b2lkKiBjb250ZXh0KQogewotICAgIFdlYWtTZXQmIHdlYWtTZXQgPSBNYXJrZWRCbG9j
azo6YmxvY2tGb3IoanNWYWx1ZS5hc0NlbGwoKSktPndlYWtTZXQoKTsKICAgICBXZWFrQmxvY2s6
OkZyZWVDZWxsKiBhbGxvY2F0b3IgPSB3ZWFrU2V0Lm1fYWxsb2NhdG9yOwogICAgIGlmIChVTkxJ
S0VMWSghYWxsb2NhdG9yKSkKICAgICAgICAgYWxsb2NhdG9yID0gd2Vha1NldC5maW5kQWxsb2Nh
dG9yKCk7CkBAIC00Miw2ICs0MSwxMiBAQCBpbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6OmFsbG9j
YXRlKEpTVmFsCiAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgd2Vha0ltcGwpIFdlYWtJbXBsKGpz
VmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7CiB9CiAKK2lubGluZSBXZWFrSW1wbCog
V2Vha1NldDo6YWxsb2NhdGUoSlNWYWx1ZSBqc1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtI
YW5kbGVPd25lciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBXZWFrU2V0JiB3ZWFrU2V0ID0gTWFy
a2VkQmxvY2s6OmJsb2NrRm9yKGpzVmFsdWUuYXNDZWxsKCkpLT53ZWFrU2V0KCk7CisgICAgcmV0
dXJuIGFsbG9jYXRlKHdlYWtTZXQsIGpzVmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7
Cit9CisKIGlubGluZSB2b2lkIFdlYWtCbG9jazo6ZmluYWxpemUoV2Vha0ltcGwqIHdlYWtJbXBs
KQogewogICAgIEFTU0VSVCh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6RGVhZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1Njk1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2
ICs0ODMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiAmbV92bS0+aGVhcDsK
ICAgICB9CiAKKyAgICBpbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6OmFsbG9jYXRlKFZNJiB2bSwg
SlNWYWx1ZSBqc1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCog
Y29udGV4dCkKKyAgICB7CisgICAgICAgIFdlYWtTZXQmIHdlYWtTZXQgPSB2bS5oZWFwLmdsb2Jh
bFdlYWtTZXQoKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHdlYWtTZXQsIGpzVmFsdWUsIHdl
YWtIYW5kbGVPd25lciwgY29udGV4dCk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIFZNX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213458</attachid>
            <date>2013-10-05 10:27:38 -0700</date>
            <delta_ts>2013-10-07 17:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122351-20131005102738.patch</filename>
            <type>text/plain</type>
            <size>22895</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2OTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgc2hvdWxkIGJlIGFibGUgdG8gc3RvcmUgbm9uLW9iamVj
dCBKU1ZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZGVjaWRlZCBub3QgdG8gc3VwcG9ydCB0aGlzIGJlY2F1c2Ugd2UgdGhvdWdodCBpdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgCisgICAgICAgICJ3ZWFrIiBKU1ZhbHVlIHRoYXQg
d2Fzbid0IGFuIG9iamVjdC4KKworICAgICAgICBPdXIgZ2VuZXJhbCB0aG91Z2h0IHByb2Nlc3Mg
d2FzIGlmIHlvdSBoYXZlIGEgSlNPYmplY3QtT2JqQyBvYmplY3QgcGFpciAoaS5lLiBhbiAKKyAg
ICAgICAgT2JqLUMgb2JqZWN0IHRoYXQgeW91IGV4cG9ydGVkIHRvIEphdmFTY3JpcHQtbGFuZCks
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc3RvcmUgCisgICAgICAgIGEgbm9uLW9iamVjdCBKU1Zh
bHVlIG9uIHRoZSBKYXZhU2NyaXB0LWxhbmQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHJhdGhlciB0
aGFuIGFzIAorICAgICAgICBhbiBpdmFyIGluIHRoZSBPYmplY3RpdmUtQyBvYmplY3QuCisKKyAg
ICAgICAgSW4gcmV0cm9zcGVjdCwgdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBhIGdvb2QgZGVjaXNp
b24gYXQgbGVhc3Qgdy5yLnQuIGNvbnNpc3RlbmN5IAorICAgICAgICBpbiBjbGllbnQgY29kZS4g
SWYgeW91J3JlIHN0b3JpbmcgYSBiYWcgb2YgSlNWYWx1ZXMgb2ZmIGFuIE9iai1DIG9iamVjdCwg
eW91J2QgCisgICAgICAgIGxpa2UgdG8gc3RvcmUgYWxsIG9mIHRoZW0gZWl0aGVyIGluIE9iakMt
bGFuZCBvciBKYXZhU2NyaXB0LWxhbmQsIGJ1dCBkb2luZyBzb21lIAorICAgICAgICBpbiBvbmUg
YW5kIHNvbWUgaW4gdGhlIG90aGVyIGRvZXNuJ3Qgc291bmQgdG9vIGdvb2QuIEFsc28sIHdoYXQg
aWYgdGhlIG9iamVjdCB5b3UgCisgICAgICAgIHdhbnQgdG8gaGFuZyB0aGVzZSB2YWx1ZXMgb2Zm
IG9mIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgb2JqZWN0IGluIEphdmFTY3JpcHQtCisg
ICAgICAgIGxhbmQgaW4gd2hpY2ggdG8gc3RvcmUgdGhlbT8KKworICAgICAgICBUaGUgc29sdXRp
b24gaXMgdG8gZml4IEpTTWFuYWdlZFZhbHVlIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlIG5vbi1v
YmplY3QgSlNWYWx1ZXMuIAorICAgICAgICBSaWdodCBub3csIGFsbCBKU01hbmFnZWRWYWx1ZXMg
Y29udGFpbiBhIFdlYWs8SlNPYmplY3Q+LiAKKworICAgICAgICBUbyBmaXggdGhpcywgd2Ugc2hv
dWxkIGNoYW5nZSBXZWFrPFQ+IHRvIGFsbG93IG5vbi1vYmplY3QgdGVtcGxhdGUgcGFyYW1ldGVy
cyAoc2ltaWxhciAKKyAgICAgICAgdG8gaG93IFdyaXRlQmFycmllciBoYXMgYW4gIlVua25vd24i
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uKS4gVGhlIGRvd25zaWRlIG9mIHRoaXMgCisgICAgICAg
IG9wdGlvbiBpcyB0aGF0IGl0J3MgYSB0YWQgd2FzdGVmdWwsIGFzIHdlJ2xsIGFsbG9jYXRlIHNv
bWUgYWRkaXRpb25hbCwgdW5uZWNlc3NhcnkgCisgICAgICAgIHN0YXRlIGluIHRoZSBKUyBydW50
aW1lLiBUaGUgdXBzaWRlIGlzIHRoYXQgdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGNsZWFyIHRo
ZSBXZWFrIAorICAgICAgICBmaWVsZCB3aGVuIGl0IGdvZXMgYXdheSwgcHJldmVudGluZyBjbGll
bnRzIGZyb20gYWNjaWRlbnRhbGx5IHRyeWluZyB0byBkbyBzb21ldGhpbmcgCisgICAgICAgIHdp
dGggaXQgbGF0ZXIuCisKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6CisgICAgICAgICgtW0pTTWFuYWdl
ZFZhbHVlIHZhbHVlXSk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAg
ICgtW0pTQ29sbGVjdGlvbiBpbml0XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiBzZXRWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW0pTQ29sbGVjdGlvbiB2YWx1ZUZvcktleTpdKToKKyAg
ICAgICAgKHRlc3RPYmplY3RpdmVDQVBJKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Z2xvYmFsV2Vha1NldCk6CisgICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjp+V2Vha0Jh
c2UpOgorICAgICAgICAoSlNDOjpXZWFrOjpXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6dmlzaXQpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha0ltcGw6OldlYWtJbXBsKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjppc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpXZWFrQmFzZSk6CisgICAg
ICAgIChKU0M6OnN3YXApOgorICAgICAgICAoSlNDOjpXZWFrQmFzZTo6c3dhcCk6CisgICAgICAg
IChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChKU0M6
Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6V2Vha0Jhc2U6Om9wZXJhdG9yISk6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChK
U0M6OldlYWtCYXNlOjpsZWFrSW1wbCk6CisgICAgICAgIChKU0M6OldlYWtCYXNlOjpoYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpT
Qzo6d2Vha0NsZWFyKToKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoKKyAgICAgICAgKiBoZWFw
L1dlYWtTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OldlYWtTZXQ6OmFsbG9jYXRlKToK
KwogMjAxMy0xMC0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIFNjcmlwdERlYnVnU2VydmVyIHRvIHVzZSBEZWJ1Z2dlckNhbGxGcmFtZSBpbnN0ZWFk
IG9mIEphdmFTY3JpcHRDYWxsRnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDggQEAgc3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZQogfQogCiBAaW1w
bGVtZW50YXRpb24gSlNNYW5hZ2VkVmFsdWUgewotICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX3ZhbHVlOworICAgIFdlYWtDb250ZXh0UmVmIG1fY29udGV4dDsKKyAgICBKU0M6OldlYWs8
SlNDOjpVbmtub3duPiBtX3ZhbHVlOwogfQogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRW
YWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCkBAIC03MCwxMyArNzEsMTUgQEAgLSAoaWQp
aW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIGlmICghdmFsdWUgfHwgIUpTVmFsdWVJc09iamVjdChbdmFs
dWUuY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0pKSB7Ci0g
ICAgICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrOworICAgIGlmICghdmFsdWUpIHsK
KyAgICAgICAgSlNDOjpXZWFrPEpTQzo6VW5rbm93bj4gd2VhazsKICAgICAgICAgbV92YWx1ZS5z
d2FwKHdlYWspOworICAgICAgICBtX2NvbnRleHQgPSBuaWw7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhjb25zdF9jYXN0PE9wYXF1ZUpTVmFsdWUq
PihbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKLSAgICAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+
IHdlYWsob2JqZWN0LCBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpLCBzZWxmKTsKKyAgICAgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFt2YWx1ZS5jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pOworICAgICAgICBKU0M6OldlYWs8SlNDOjpVbmtub3duPiB3ZWFrKGV4ZWMtPnZtKCks
IHRvSlMoZXhlYywgW3ZhbHVlIEpTVmFsdWVSZWZdKSwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIo
KSwgc2VsZik7CiAgICAgICAgIG1fdmFsdWUuc3dhcCh3ZWFrKTsKKyAgICAgICAgbV9jb250ZXh0
LnNldChbdmFsdWUgY29udGV4dF0pOwogICAgIH0KIAogICAgIHJldHVybiBzZWxmOwpAQCAtODYs
OSArODksMTAgQEAgLSAoSlNWYWx1ZSAqKXZhbHVlCiB7CiAgICAgaWYgKCFtX3ZhbHVlKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IG1fdmFsdWUuZ2V0
KCk7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xv
YmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpKV07Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFs
dWVSZWY6dG9SZWYob2JqZWN0KSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gbV9jb250ZXh0LmdldCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBKU1Zh
bHVlUmVmIHZhbHVlID0gdG9SZWYodG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKSwg
bV92YWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCiAtICh2b2lkKWRpc2Nvbm5lY3RWYWx1ZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNp
b24gMTU2OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDQ3IEBAIC0gKHZvaWQpcmVtb3ZlQ2hpbGRB
dEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCitAaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6
IE5TT2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24geworICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2RpY3QgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RG
b3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7CisgICAgICAgIEpTVmFsdWUq
IG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07CisgICAgICAgIGlmIChvbGRWYWx1
ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1h
bmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKKyAgICB9Cisg
ICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2Vk
VmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5l
IGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKKyAgICBb
X2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAoSlNWYWx1
ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVlICpt
YW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKCFtYW5hZ2Vk
VmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFs
dWVdOworfQorQGVuZAorCiBzdGF0aWMgdm9pZCBjaGVja1Jlc3VsdChOU1N0cmluZyAqZGVzY3Jp
cHRpb24sIGJvb2wgcGFzc2VkKQogewogICAgIE5TTG9nKEAiVEVTVDogXCIlQFwiOiAlQCIsIGRl
c2NyaXB0aW9uLCBwYXNzZWQgPyBAIlBBU1NFRCIgOiBAIkZBSUxFRCIpOwpAQCAtMjkxLDYgKzMz
MiwyOSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0gW1tK
U0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RP
YmplY3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAg
ICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm15UHJp
dmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0cnVlIGluQ29u
dGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQ
cm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvISIgaW5D
b250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKworICAgICAgICAgICAgSlNTeW5j
aHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pOworCisgICAgICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBKU1ZhbHVlICptZXNzYWdl
ID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAg
ICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYg
W2lzSGFtIHRvQm9vbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhl
bGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpb
bWVzc2FnZSB0b1N0cmluZ11dKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrUmVzdWx0KEAi
aXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hh
bSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFs
bG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0OwogICAgICAgICBjb250ZXh0
W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ibG9ja0FsbG9jYXRvcigp
CiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBtX3N0b3JhZ2VTcGFjZSh0aGlzKQor
ICAgICwgbV9nbG9iYWxXZWFrU2V0KHZtKQogICAgICwgbV9leHRyYU1lbW9yeVVzYWdlKDApCiAg
ICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMpCiAgICAgLCBtX3NoYXJlZERhdGEodm0pCkBAIC0y
OTMsNiArMjk0LDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fdm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgIFJFTEVBU0VfQVNT
RVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKKyAgICBtX2dsb2Jh
bFdlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKICAgICBtX29iamVjdFNwYWNlLmxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CiAKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQpA
QCAtNTc2LDYgKzU3OCw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICAgICAgR0NQSEFT
RShWaXNpdGluZ0xpdmVXZWFrSGFuZGxlcyk7CiAgICAgICAgIE1BUktfTE9HX1JPT1QodmlzaXRv
ciwgIkxpdmUgV2VhayBIYW5kbGVzIik7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBtX2dsb2JhbFdlYWtTZXQudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICAgICAgICAg
IG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICAg
ICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgICAgICBpZiAodmlzaXRvci5pc0Vt
cHR5KCkpCkBAIC03NzksNiArNzgyLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xl
IHN3ZWVwVG9nZwogICAgIAogICAgIHsKICAgICAgICAgR0NQSEFTRShSZWFwaW5nV2Vha0hhbmRs
ZXMpOworICAgICAgICBtX2dsb2JhbFdlYWtTZXQucmVhcCgpOwogICAgICAgICBtX29iamVjdFNw
YWNlLnJlYXBXZWFrU2V0cygpOwogICAgIH0KIApAQCAtODE1LDcgKzgxOSw5IEBAIHZvaWQgSGVh
cDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBpZiAoc3dlZXBUb2dnbGUgPT0g
RG9Td2VlcCkgewogICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFn
ZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwogICAgICAgICBHQ1BIQVNFKFN3ZWVwaW5nKTsKKyAg
ICAgICAgbV9nbG9iYWxXZWFrU2V0LnN3ZWVwKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc3dl
ZXAoKTsKKyAgICAgICAgbV9nbG9iYWxXZWFrU2V0LnNocmluaygpOwogICAgICAgICBtX29iamVj
dFNwYWNlLnNocmluaygpOwogICAgIH0KIApAQCAtODI0LDYgKzgzMCw3IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShS
ZXNldEFsbG9jYXRvcnMpOworICAgICAgICBtX2dsb2JhbFdlYWtTZXQucmVzZXRBbGxvY2F0b3Io
KTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMoKTsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNTY5NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2
ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1
cm4gbV92bTsgfQogICAgICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBt
X29iamVjdFNwYWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygp
IHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KKyAgICAgICAgV2Vha1NldCYgZ2xvYmFsV2Vh
a1NldCgpIHsgcmV0dXJuIG1fZ2xvYmFsV2Vha1NldDsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+KTsKQEAgLTI1Nyw2ICsyNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9ja0FsbG9jYXRvcjsKICAgICAgICAgTWFya2VkU3Bh
Y2UgbV9vYmplY3RTcGFjZTsKICAgICAgICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7Cisg
ICAgICAgIFdlYWtTZXQgbV9nbG9iYWxXZWFrU2V0OwogICAgICAgICBHQ0luY29taW5nUmVmQ291
bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7CiAgICAgICAgIHNpemVfdCBtX2V4
dHJhTWVtb3J5VXNhZ2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHJldmlz
aW9uIDE1Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWFrX2gKICNkZWZpbmUgV2Vha19o
CiAKKyNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgorCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMzcsNDUgKzM5LDQxIEBAIGNsYXNzIFdlYWtI
YW5kbGVPd25lcjsKIC8vIFRoaXMgaXMgYSBmcmVlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGEgV2Vh
azxUPiBtZW1iZXIgZnVuY3Rpb24gc28gd2UgY2FuIHB1dCBpdCBpbiBXZWFrLmNwcC4KIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgd2Vha0NsZWFyU2xvd0Nhc2UoV2Vha0ltcGwqJik7CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
YWspOworY2xhc3MgV2Vha0Jhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtCYXNl
KTsKIHB1YmxpYzoKLSAgICBXZWFrKCkKKyAgICBXZWFrQmFzZSgpCiAgICAgICAgIDogbV9pbXBs
KDApCiAgICAgewogICAgIH0KIAotICAgIFdlYWsoc3RkOjpudWxscHRyX3QpCisgICAgV2Vha0Jh
c2Uoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIDogbV9pbXBsKDApCiAgICAgewogICAgIH0KIAot
ICAgIFdlYWsoVCosIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7Cisg
ICAgV2Vha0Jhc2UoV2Vha0ltcGwqIGltcGwpCisgICAgICAgIDogbV9pbXBsKGltcGwpCisgICAg
eworICAgIH0KIAogICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxl
RGVsZXRlZFZhbHVlIH07CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
OwotICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKKyAgICBXZWFrQmFzZShIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOwogCi0gICAgV2VhayhXZWFrJiYpOworICAgIFdlYWtCYXNl
KFdlYWtCYXNlJiYpOwogCi0gICAgfldlYWsoKQorICAgIH5XZWFrQmFzZSgpCiAgICAgewogICAg
ICAgICBjbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChXZWFrJik7Ci0KLSAgICBXZWFr
JiBvcGVyYXRvcj0oV2VhayYmKTsKKyAgICB2b2lkIHN3YXAoV2Vha0Jhc2UmKTsKIAogICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0OwotICAgIFQm
IG9wZXJhdG9yKigpIGNvbnN0OwotICAgIFQqIGdldCgpIGNvbnN0OwotCi0gICAgYm9vbCB3YXMo
VCopIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBs
aWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgot
ICAgIHR5cGVkZWYgdm9pZCogKFdlYWs6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICB0eXBl
ZGVmIHZvaWQqIChXZWFrQmFzZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOwogICAgIG9wZXJhdG9y
IFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAKICAgICBXZWFrSW1wbCogbGVha0ltcGwo
KSBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04NiwxMiArODQsNDggQEAgcHVibGljOgogICAgICAg
ICB3ZWFrQ2xlYXJTbG93Q2FzZShtX2ltcGwpOwogICAgIH0KICAgICAKLXByaXZhdGU6Citwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKIAog
ICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
V2VhayA6IHB1YmxpYyBXZWFrQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vhayk7
CitwdWJsaWM6CisgICAgV2VhaygpCisgICAgeworICAgIH0KKworICAgIFdlYWsoVCosIFdlYWtI
YW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgV2VhayhXZWFrPFQ+JiYp
OworCisgICAgV2VhazxUPiYgb3BlcmF0b3I9KFdlYWs8VD4mJik7CisKKyAgICBUKiBvcGVyYXRv
ci0+KCkgY29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29u
c3Q7CisKKyAgICBib29sIHdhcyhUKikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8PiBjbGFzcyBX
ZWFrPFVua25vd24+IDogcHVibGljIFdlYWtCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWFrPFVua25vd24+KTsKK3B1YmxpYzoKKyAgICBXZWFrKCkKKyAgICB7CisgICAgfQorCisg
ICAgV2VhayhWTSYsIEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0
ID0gMCk7CisgICAgV2VhayhXZWFrPFVua25vd24+JiYpOworCisgICAgV2VhazxVbmtub3duPiYg
b3BlcmF0b3I9KFdlYWs8VW5rbm93bj4mJik7CisgICAgSlNWYWx1ZSBvcGVyYXRvciooKSBjb25z
dDsKKyAgICBKU1ZhbHVlIGdldCgpIGNvbnN0OworCisgICAgYm9vbCB3YXMoSlNWYWx1ZSkgY29u
c3Q7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFdlYWtfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAxNTY5NTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV2Vha0Jsb2NrOjp2aXNpdChIZWFwUm9vdFZpc2l0
b3ImIGgKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IEpTVmFsdWUmIGpz
VmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwotICAgICAgICBpZiAoSGVhcDo6aXNMaXZlKGpz
VmFsdWUuYXNDZWxsKCkpKQorICAgICAgICBpZiAoIWpzVmFsdWUuaXNDZWxsKCkgfHwgSGVhcDo6
aXNMaXZlKGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIgPSB3ZWFrSW1wbC0+d2Vha0hhbmRs
ZU93bmVyKCk7CkBAIC0xMjMsNyArMTIzLDEyIEBAIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAg
ICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpZiAoSGVhcDo6aXNMaXZlKHdlYWtJbXBsLT5qc1ZhbHVl
KCkuYXNDZWxsKCkpKSB7CisgICAgICAgIGlmICh3ZWFrSW1wbC0+anNWYWx1ZSgpLmlzQ2VsbCgp
ICYmIEhlYXA6OmlzTGl2ZSh3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSkgeworICAgICAg
ICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3ZWFrSW1wbC0+anNW
YWx1ZSgpLmlzQ2VsbCgpICYmIHdlYWtJbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpEZWFsbG9j
YXRlZCkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBs
OjpMaXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgJKHJldmlzaW9uIDE1Njk1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgaW5saW5lIFdlYWtJbXBsOjpXZWFrSW1wbChKU1ZhbHVlIGpzVmFsdQogICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHN0YXRlKCkgPT0gTGl2ZSk7Ci0gICAgQVNT
RVJUKG1fanNWYWx1ZSAmJiBtX2pzVmFsdWUuaXNDZWxsKCkpOworICAgIEFTU0VSVChtX2pzVmFs
dWUpOwogfQogCiBpbmxpbmUgV2Vha0ltcGw6OlN0YXRlIFdlYWtJbXBsOjpzdGF0ZSgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDE1Njk1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDM4ICszNCw2MSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtIYW5kbGVPd25lciog
d2Vha093bmVyLCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0Ojph
bGxvY2F0ZShjZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKKyAgICA6IFdlYWtCYXNlKGNl
bGwgPyBXZWFrU2V0OjphbGxvY2F0ZShjZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKIHsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAoraW5saW5lIFdlYWs8VW5rbm93bj46OldlYWsoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCogY29udGV4
dCkKKyAgICA6IFdlYWtCYXNlKHZhbHVlID8gKHZhbHVlLmlzQ2VsbCgpID8gV2Vha1NldDo6YWxs
b2NhdGUodmFsdWUuYXNDZWxsKCksIHdlYWtPd25lciwgY29udGV4dCkgOiBXZWFrU2V0OjphbGxv
Y2F0ZSh2bSwgdmFsdWUsIHdlYWtPd25lciwgY29udGV4dCkpIDogMCkKK3sKK30KKworaW5saW5l
IGJvb2wgV2Vha0Jhc2U6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9pbXBsID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vhayh0eXBlbmFtZSBXZWFrPFQ+OjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUYWcpCitpbmxpbmUgV2Vha0Jhc2U6OldlYWtCYXNlKFdlYWtCYXNlOjpI
YXNoVGFibGVEZWxldGVkVmFsdWVUYWcpCiAgICAgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkpCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFr
KFdlYWsmJiBvdGhlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vh
ayhXZWFrPFQ+JiYgb3RoZXIpCisgICAgOiBXZWFrQmFzZShzdGF0aWNfY2FzdDxXZWFrQmFzZSYm
PihvdGhlcikpCit7Cit9CisKK2lubGluZSBXZWFrPFVua25vd24+OjpXZWFrKFdlYWs8VW5rbm93
bj4mJiBvdGhlcikKKyAgICA6IFdlYWtCYXNlKHN0YXRpY19jYXN0PFdlYWtCYXNlJiY+KG90aGVy
KSkKK3sKK30KKworaW5saW5lIFdlYWtCYXNlOjpXZWFrQmFzZShXZWFrQmFzZSYmIG90aGVyKQog
ICAgIDogbV9pbXBsKG90aGVyLmxlYWtJbXBsKCkpCiB7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+
IGlubGluZSB2b2lkIHN3YXAoV2VhazxUPiYgYSwgV2VhazxUPiYgYikKK2lubGluZSB2b2lkIHN3
YXAoV2Vha0Jhc2UmIGEsIFdlYWtCYXNlJiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikK
K2lubGluZSB2b2lkIFdlYWtCYXNlOjpzd2FwKFdlYWtCYXNlJiBvdGhlcikKIHsKKyAgICBBU1NF
UlQoIW1faW1wbCB8fCAhb3RoZXIubV9pbXBsIHx8IG1faW1wbC0+anNWYWx1ZSgpLmlzQ2VsbCgp
ID09IG90aGVyLm1faW1wbC0+anNWYWx1ZSgpLmlzQ2VsbCgpKTsgCiAgICAgc3RkOjpzd2FwKG1f
aW1wbCwgb3RoZXIubV9pbXBsKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGF1
dG8gV2VhazxUPjo6b3BlcmF0b3I9KFdlYWsmJiBvdGhlcikgLT4gV2VhayYKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBhdXRvIFdlYWs8VD46Om9wZXJhdG9yPShXZWFrPFQ+JiYgb3RoZXIp
IC0+IFdlYWs8VD4mCiB7Ci0gICAgV2VhayB3ZWFrID0gc3RkOjptb3ZlKG90aGVyKTsKKyAgICBX
ZWFrPFQ+IHdlYWsgPSBzdGQ6Om1vdmUob3RoZXIpOworICAgIHN3YXAod2Vhayk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitpbmxpbmUgYXV0byBXZWFrPFVua25vd24+OjpvcGVyYXRvcj0oV2Vh
azxVbmtub3duPiYmIG90aGVyKSAtPiBXZWFrPFVua25vd24+JgoreworICAgIFdlYWs8VW5rbm93
bj4gd2VhayA9IHN0ZDo6bW92ZShvdGhlcik7CiAgICAgc3dhcCh3ZWFrKTsKICAgICByZXR1cm4g
KnRoaXM7CiB9CkBAIC05NCwyNCArMTE3LDQxIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBib29sIFdlYWs8VD4KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1
ZSgpLmFzQ2VsbCgpKSA9PSBvdGhlcjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKK2lubGluZSBKU1ZhbHVlIFdlYWs8VW5r
bm93bj46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faW1wbCAmJiBtX2ltcGwt
PnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOworICAgIHJldHVybiBtX2ltcGwtPmpzVmFsdWUo
KS5hc0NlbGwoKTsKK30KKworaW5saW5lIEpTVmFsdWUgV2VhazxVbmtub3duPjo6Z2V0KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6Okxp
dmUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgcmV0dXJuIG1faW1wbC0+anNWYWx1
ZSgpOworfQorCitpbmxpbmUgYm9vbCBXZWFrPFVua25vd24+Ojp3YXMoSlNWYWx1ZSBvdGhlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsLT5qc1ZhbHVlKCkgPT0gb3RoZXI7Cit9Citpbmxp
bmUgYm9vbCBXZWFrQmFzZTo6b3BlcmF0b3IhKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1faW1w
bCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpM
aXZlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6b3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAoraW5saW5lIFdlYWtCYXNlOjpvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KCEhKnRoaXMpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46OmxlYWtJbXBsKCkKK2lubGluZSBXZWFrSW1w
bCogV2Vha0Jhc2U6OmxlYWtJbXBsKCkKIHsKICAgICBXZWFrSW1wbCogaW1wbCA9IG1faW1wbDsK
ICAgICBtX2ltcGwgPSBudWxscHRyOwogICAgIHJldHVybiBpbXBsOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpCitpbmxpbmUgV2Vha0ltcGwqIFdlYWtCYXNlOjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKQog
ewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYWtJbXBsKj4oLTEpOwogfQpAQCAtMTIx
LDYgKzE2MSwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0CiAg
ICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7CiB9CiAKK3RlbXBsYXRlIDw+IGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2VhazxVbmtub3duPiYgbGhzLCBjb25zdCBXZWFrPFVu
a25vd24+JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7Cit9CisK
IC8vIFRoaXMgZnVuY3Rpb24gaGVscHMgYXZvaWQgbW9kaWZ5aW5nIGEgd2VhayB0YWJsZSB3aGls
ZSBob2xkaW5nIGFuIGl0ZXJhdG9yIGludG8gaXQuIChPYmplY3QgYWxsb2NhdGlvbgogLy8gY2Fu
IHJ1biBhIGZpbmFsaXplciB0aGF0IG1vZGlmaWVzIHRoZSB0YWJsZS4gV2UgYXZvaWQgdGhhdCBi
eSByZXF1aXJpbmcgYSBwcmUtY29uc3RydWN0ZWQgb2JqZWN0IGFzIG91ciB2YWx1ZS4pCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+IGlubGluZSB2
b2lkIHdlYWtBZGQoTWFwJiBtYXAsIGNvbnN0IEtleSYga2V5LCBWYWx1ZSYmIHZhbHVlKQpAQCAt
MTQ3LDYgKzE5MiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xl
CiAgICAgd2Vhay5jbGVhcigpOwogfQogCitpbmxpbmUgdm9pZCB3ZWFrQ2xlYXIoV2VhazxVbmtu
b3duPiYgd2VhaywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2
YWx1ZSk7CisgICAgQVNTRVJUKHdlYWsud2FzKHZhbHVlKSk7CisgICAgQVNTRVJUKCF3ZWFrKTsK
KyAgICB3ZWFrLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2Ug
V1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgJKHJldmlzaW9uIDE1
Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBXZWFrU2V0IHsKIAogcHVibGljOgogICAgIHN0
YXRpYyBXZWFrSW1wbCogYWxsb2NhdGUoSlNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZv
aWQqIGNvbnRleHQgPSAwKTsKKyAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKFZNJiwgSlNW
YWx1ZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKICAgICBzdGF0
aWMgdm9pZCBkZWFsbG9jYXRlKFdlYWtJbXBsKik7CiAKICAgICBXZWFrU2V0KFZNKik7CkBAIC01
Niw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKIHByaXZh
dGU6CisgICAgc3RhdGljIFdlYWtJbXBsKiBhbGxvY2F0ZShXZWFrU2V0JiwgSlNWYWx1ZSwgV2Vh
a0hhbmRsZU93bmVyKiwgdm9pZCogY29udGV4dCk7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBX
ZWFrQmxvY2s6OkZyZWVDZWxsKiBmaW5kQWxsb2NhdG9yKCk7CiAgICAgV2Vha0Jsb2NrOjpGcmVl
Q2VsbCogdHJ5RmluZEFsbG9jYXRvcigpOwogICAgIFdlYWtCbG9jazo6RnJlZUNlbGwqIGFkZEFs
bG9jYXRvcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0SW5s
aW5lcy5oCShyZXZpc2lvbiAxNTY5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1pbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6OmFsbG9jYXRlKEpTVmFsdWUg
anNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIsIHZvaWQqIGNvbnRleHQp
CitpbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6OmFsbG9jYXRlKFdlYWtTZXQmIHdlYWtTZXQsIEpT
VmFsdWUganNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIsIHZvaWQqIGNv
bnRleHQpCiB7Ci0gICAgV2Vha1NldCYgd2Vha1NldCA9IE1hcmtlZEJsb2NrOjpibG9ja0Zvcihq
c1ZhbHVlLmFzQ2VsbCgpKS0+d2Vha1NldCgpOwogICAgIFdlYWtCbG9jazo6RnJlZUNlbGwqIGFs
bG9jYXRvciA9IHdlYWtTZXQubV9hbGxvY2F0b3I7CiAgICAgaWYgKFVOTElLRUxZKCFhbGxvY2F0
b3IpKQogICAgICAgICBhbGxvY2F0b3IgPSB3ZWFrU2V0LmZpbmRBbGxvY2F0b3IoKTsKQEAgLTQy
LDYgKzQxLDEyIEBAIGlubGluZSBXZWFrSW1wbCogV2Vha1NldDo6YWxsb2NhdGUoSlNWYWwKICAg
ICByZXR1cm4gbmV3IChOb3ROdWxsLCB3ZWFrSW1wbCkgV2Vha0ltcGwoanNWYWx1ZSwgd2Vha0hh
bmRsZU93bmVyLCBjb250ZXh0KTsKIH0KIAoraW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0OjphbGxv
Y2F0ZShKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyLCB2
b2lkKiBjb250ZXh0KQoreworICAgIFdlYWtTZXQmIHdlYWtTZXQgPSBNYXJrZWRCbG9jazo6Ymxv
Y2tGb3IoanNWYWx1ZS5hc0NlbGwoKSktPndlYWtTZXQoKTsKKyAgICByZXR1cm4gYWxsb2NhdGUo
d2Vha1NldCwganNWYWx1ZSwgd2Vha0hhbmRsZU93bmVyLCBjb250ZXh0KTsKK30KKwogaW5saW5l
IHZvaWQgV2Vha0Jsb2NrOjpmaW5hbGl6ZShXZWFrSW1wbCogd2Vha0ltcGwpCiB7CiAgICAgQVNT
RVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpEZWFkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU2OTUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuICZtX3ZtLT5oZWFwOwogICAgIH0KIAorICAg
IGlubGluZSBXZWFrSW1wbCogV2Vha1NldDo6YWxsb2NhdGUoVk0mIHZtLCBKU1ZhbHVlIGpzVmFs
dWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyLCB2b2lkKiBjb250ZXh0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFqc1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgV2Vha1NldCYg
d2Vha1NldCA9IHZtLmhlYXAuZ2xvYmFsV2Vha1NldCgpOworICAgICAgICByZXR1cm4gYWxsb2Nh
dGUod2Vha1NldCwganNWYWx1ZSwgd2Vha0hhbmRsZU93bmVyLCBjb250ZXh0KTsKKyAgICB9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVk1faAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213629</attachid>
            <date>2013-10-07 17:04:37 -0700</date>
            <delta_ts>2013-10-07 17:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122351-20131007170436.patch</filename>
            <type>text/plain</type>
            <size>7188</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEzLTEwLTA3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgc2hvdWxkIGJlIGFibGUgdG8gc3RvcmUgbm9uLW9iamVj
dCBKU1ZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZGVjaWRlZCBub3QgdG8gc3VwcG9ydCB0aGlzIGJlY2F1c2Ugd2UgdGhvdWdodCBpdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgCisgICAgICAgICJ3ZWFrIiBKU1ZhbHVlIHRoYXQg
d2Fzbid0IGFuIG9iamVjdC4KKworICAgICAgICBPdXIgZ2VuZXJhbCB0aG91Z2h0IHByb2Nlc3Mg
d2FzIGlmIHlvdSBoYXZlIGEgSlNPYmplY3QtT2JqQyBvYmplY3QgcGFpciAoaS5lLiBhbiAKKyAg
ICAgICAgT2JqLUMgb2JqZWN0IHRoYXQgeW91IGV4cG9ydGVkIHRvIEphdmFTY3JpcHQtbGFuZCks
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc3RvcmUgCisgICAgICAgIGEgbm9uLW9iamVjdCBKU1Zh
bHVlIG9uIHRoZSBKYXZhU2NyaXB0LWxhbmQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHJhdGhlciB0
aGFuIGFzIAorICAgICAgICBhbiBpdmFyIGluIHRoZSBPYmplY3RpdmUtQyBvYmplY3QuCisKKyAg
ICAgICAgSW4gcmV0cm9zcGVjdCwgdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBhIGdvb2QgZGVjaXNp
b24gYXQgbGVhc3Qgdy5yLnQuIGNvbnNpc3RlbmN5IAorICAgICAgICBpbiBjbGllbnQgY29kZS4g
SWYgeW91J3JlIHN0b3JpbmcgYSBiYWcgb2YgSlNWYWx1ZXMgb2ZmIGFuIE9iai1DIG9iamVjdCwg
eW91J2QgCisgICAgICAgIGxpa2UgdG8gc3RvcmUgYWxsIG9mIHRoZW0gZWl0aGVyIGluIE9iakMt
bGFuZCBvciBKYXZhU2NyaXB0LWxhbmQsIGJ1dCBkb2luZyBzb21lIAorICAgICAgICBpbiBvbmUg
YW5kIHNvbWUgaW4gdGhlIG90aGVyIGRvZXNuJ3Qgc291bmQgdG9vIGdvb2QuIEFsc28sIHdoYXQg
aWYgdGhlIG9iamVjdCB5b3UgCisgICAgICAgIHdhbnQgdG8gaGFuZyB0aGVzZSB2YWx1ZXMgb2Zm
IG9mIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgb2JqZWN0IGluIEphdmFTY3JpcHQtCisg
ICAgICAgIGxhbmQgaW4gd2hpY2ggdG8gc3RvcmUgdGhlbT8KKworICAgICAgICBUaGUgc29sdXRp
b24gaXMgdG8gZml4IEpTTWFuYWdlZFZhbHVlIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlIG5vbi1v
YmplY3QgSlNWYWx1ZXMuIAorICAgICAgICBSaWdodCBub3csIGFsbCBKU01hbmFnZWRWYWx1ZXMg
Y29udGFpbiBhIFdlYWs8SlNPYmplY3Q+LiBXZSdsbCBjaGFuZ2UgdGhpcyBzbyB0aGF0CisgICAg
ICAgIHRoZXkgY2FuIGNvbnRhaW4gZWl0aGVyIGEgbm9uLWNlbGwgSlNWYWx1ZSBvciBhIEpTT2Jq
ZWN0KiwgYWxvbmcgd2l0aCBhIHdlYWsgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUgSlNHbG9i
YWxPYmplY3QgZm9yIHJlY29uc3RydWN0aW5nIGEgSlNWYWx1ZSBsYXRlciBvbi4KKworICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpQ
cmltaXRpdmVPck9iamVjdCk6CisgICAgICAgIChQcmltaXRpdmVPck9iamVjdDo6flByaW1pdGl2
ZU9yT2JqZWN0KToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpjbGVhcik6CisgICAgICAg
IChQcmltaXRpdmVPck9iamVjdDo6aXNDbGVhcik6CisgICAgICAgIChQcmltaXRpdmVPck9iamVj
dDo6aXNTZXQpOgorICAgICAgICAoUHJpbWl0aXZlT3JPYmplY3Q6OmlzUHJpbWl0aXZlKToKKyAg
ICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0Ojppc09iamVjdCk6CisgICAgICAgIChQcmltaXRpdmVP
ck9iamVjdDo6c2V0UHJpbWl0aXZlKToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpzZXRP
YmplY3QpOgorICAgICAgICAoUHJpbWl0aXZlT3JPYmplY3Q6Om9iamVjdCk6CisgICAgICAgIChQ
cmltaXRpdmVPck9iamVjdDo6cHJpbWl0aXZlKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
aW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgdmFsdWVdKToKKyAg
ICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlzY29ubmVjdFZhbHVlXSk6CisKIDIwMTMtMTAtMDcg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgbWVtb3J5IGFs
bG9jYXRvciBzaG91bGQgYmUgYWJsZSB0byBhbGxvY2F0ZSBkYXRhIHNlY3Rpb25zIGluIG5vbi1l
eGVjdXRhYmxlIG1lbW9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLm1tCShyZXZpc2lvbiAxNTcwNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCwxMDMgQEAg
c3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZQogICAgIHJldHVybiAmanNN
YW5hZ2VkVmFsdWVIYW5kbGVPd25lcjsKIH0KIAorY2xhc3MgUHJpbWl0aXZlT3JPYmplY3Qgewor
cHVibGljOgorICAgIFByaW1pdGl2ZU9yT2JqZWN0KCkKKyAgICAgICAgOiBtX3RhZyhOb3RTZXQp
CisgICAgeworICAgIH0KKworICAgIH5QcmltaXRpdmVPck9iamVjdCgpCisgICAgeworICAgICAg
ICBjbGVhcigpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChtX3RhZykgeworICAgICAgICBjYXNlIE5vdFNldDoKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgY2FzZSBQcmltaXRpdmU6CisgICAgICAgICAgICB1Lm1fcHJpbWl0aXZlID0gSlND
OjpKU1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgT2JqZWN0Ogor
ICAgICAgICAgICAgdS5tX29iamVjdC5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgYm9vbCBpc0NsZWFyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90YWcpIHsK
KyAgICAgICAgY2FzZSBOb3RTZXQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Y2FzZSBQcmltaXRpdmU6CisgICAgICAgICAgICByZXR1cm4gIXUubV9wcmltaXRpdmU7CisgICAg
ICAgIGNhc2UgT2JqZWN0OgorICAgICAgICAgICAgcmV0dXJuICF1Lm1fb2JqZWN0OworICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
Ym9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnICE9IE5vdFNldDsgfQorICAgIGJvb2wg
aXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3RhZyA9PSBQcmltaXRpdmU7IH0KKyAgICBi
b29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gIWlzUHJpbWl0aXZlKCk7IH0KKworICAgIHZv
aWQgc2V0UHJpbWl0aXZlKEpTQzo6SlNWYWx1ZSBwcmltaXRpdmUpCisgICAgeworICAgICAgICBB
U1NFUlQoIWlzU2V0KCkpOworICAgICAgICBBU1NFUlQoIXUubV9wcmltaXRpdmUpOworICAgICAg
ICBBU1NFUlQoIXByaW1pdGl2ZS5pc0NlbGwoKSk7CisgICAgICAgIG1fdGFnID0gUHJpbWl0aXZl
OworICAgICAgICB1Lm1fcHJpbWl0aXZlID0gcHJpbWl0aXZlOworICAgIH0KKworICAgIHZvaWQg
c2V0T2JqZWN0KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgdm9pZCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghaXNTZXQoKSk7CisgICAgICAgIEFTU0VSVCghdS5tX29iamVjdCk7Cisg
ICAgICAgIG1fdGFnID0gT2JqZWN0OworICAgICAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4g
d2VhayhvYmplY3QsIG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCksIGNvbnRleHQpOworICAgICAg
ICB1Lm1fb2JqZWN0LnN3YXAod2Vhayk7CisgICAgfQorCisgICAgSlNDOjpKU09iamVjdCogb2Jq
ZWN0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICAgICAgcmV0dXJu
IHUubV9vYmplY3QuZ2V0KCk7CisgICAgfQorCisgICAgSlNDOjpKU1ZhbHVlIHByaW1pdGl2ZSgp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNQcmltaXRpdmUoKSk7CisgICAgICAgIHJldHVybiB1
Lm1fcHJpbWl0aXZlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBlbnVtIFByaW1pdGl2ZU9yT2Jq
ZWN0VGFnIHsgTm90U2V0LCBQcmltaXRpdmUsIE9iamVjdCB9OworICAgIFByaW1pdGl2ZU9yT2Jq
ZWN0VGFnIG1fdGFnOworICAgIHVuaW9uIFByaW1pdGl2ZU9yT2JqZWN0VW5pb24geworICAgIHB1
YmxpYzoKKyAgICAgICAgUHJpbWl0aXZlT3JPYmplY3RVbmlvbigpCisgICAgICAgICAgICA6IG1f
cHJpbWl0aXZlKEpTQzo6SlNWYWx1ZSgpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICB+UHJpbWl0aXZlT3JPYmplY3RVbmlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VCghbV9wcmltaXRpdmUpOworICAgICAgICB9CisKKyAgICAgICAgSlNDOjpKU1ZhbHVlIG1fcHJp
bWl0aXZlOworICAgICAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV9vYmplY3Q7CisgICAg
fSB1OworfTsKKwogQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKLSAgICBKU0M6Oldl
YWs8SlNDOjpKU09iamVjdD4gbV92YWx1ZTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU0dsb2JhbE9i
amVjdD4gbV9nbG9iYWxPYmplY3Q7CisgICAgUHJpbWl0aXZlT3JPYmplY3QgbV9wcmltaXRpdmVP
ck9iamVjdDsKIH0KIAogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZQpAQCAtNzAsMzAgKzE2NSwzOSBAQCAtIChpZClpbml0V2l0aFZhbHVl
OihKU1ZhbHVlICopdmFsdWUKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgCi0gICAgaWYgKCF2YWx1ZSB8fCAhSlNWYWx1ZUlzT2JqZWN0KFt2YWx1ZS5jb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpIHsKLSAgICAgICAgSlNDOjpX
ZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWs7Ci0gICAgICAgIG1fdmFsdWUuc3dhcCh3ZWFrKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB0b0pTKGNvbnN0X2Nh
c3Q8T3BhcXVlSlNWYWx1ZSo+KFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOwotICAgICAgICBKU0M6Oldl
YWs8SlNDOjpKU09iamVjdD4gd2VhayhvYmplY3QsIG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCks
IHNlbGYpOwotICAgICAgICBtX3ZhbHVlLnN3YXAod2Vhayk7Ci0gICAgfQorICAgIGlmICghdmFs
dWUpCisgICAgICAgIHJldHVybiBzZWxmOwogCisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKFt2YWx1ZS5jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAg
ICBKU0M6OldlYWs8SlNDOjpKU0dsb2JhbE9iamVjdD4gd2VhayhnbG9iYWxPYmplY3QsIG1hbmFn
ZWRWYWx1ZUhhbmRsZU93bmVyKCksIHNlbGYpOworICAgIG1fZ2xvYmFsT2JqZWN0LnN3YXAod2Vh
ayk7CisKKyAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgW3ZhbHVlIEpTVmFs
dWVSZWZdKTsKKyAgICBpZiAoanNWYWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgbV9wcmltaXRpdmVP
ck9iamVjdC5zZXRPYmplY3QoSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGpzVmFsdWUuYXND
ZWxsKCkpLCBzZWxmKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJpbWl0aXZlT3JPYmplY3Quc2V0
UHJpbWl0aXZlKGpzVmFsdWUpOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtIChKU1ZhbHVlICop
dmFsdWUKIHsKLSAgICBpZiAoIW1fdmFsdWUpCisgICAgaWYgKCFtX2dsb2JhbE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAobV9wcmltaXRpdmVPck9iamVjdC5pc0NsZWFyKCkp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1
ZS5nZXQoKTsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRo
SlNHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVmKG9iamVjdC0+c3RydWN0dXJlKCktPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpXTsKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjp0b1JlZihvYmplY3QpIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDb250
ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0
b0dsb2JhbFJlZihleGVjKV07CisgICAgaWYgKG1fcHJpbWl0aXZlT3JPYmplY3QuaXNQcmltaXRp
dmUoKSkKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYo
ZXhlYywgbV9wcmltaXRpdmVPck9iamVjdC5wcmltaXRpdmUoKSkgaW5Db250ZXh0OmNvbnRleHRd
OworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKGV4ZWMsIG1f
cHJpbWl0aXZlT3JPYmplY3Qub2JqZWN0KCkpIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAogLSAo
dm9pZClkaXNjb25uZWN0VmFsdWUKIHsKLSAgICBtX3ZhbHVlLmNsZWFyKCk7CisgICAgbV9nbG9i
YWxPYmplY3QuY2xlYXIoKTsKKyAgICBtX3ByaW1pdGl2ZU9yT2JqZWN0LmNsZWFyKCk7CiB9CiAK
IEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213633</attachid>
            <date>2013-10-07 17:58:36 -0700</date>
            <delta_ts>2013-10-07 18:04:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122351-20131007175836.patch</filename>
            <type>text/plain</type>
            <size>11836</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEzLTEwLTA3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgc2hvdWxkIGJlIGFibGUgdG8gc3RvcmUgbm9uLW9iamVj
dCBKU1ZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZGVjaWRlZCBub3QgdG8gc3VwcG9ydCB0aGlzIGJlY2F1c2Ugd2UgdGhvdWdodCBpdCBk
aWRuJ3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgCisgICAgICAgICJ3ZWFrIiBKU1ZhbHVlIHRoYXQg
d2Fzbid0IGFuIG9iamVjdC4KKworICAgICAgICBPdXIgZ2VuZXJhbCB0aG91Z2h0IHByb2Nlc3Mg
d2FzIGlmIHlvdSBoYXZlIGEgSlNPYmplY3QtT2JqQyBvYmplY3QgcGFpciAoaS5lLiBhbiAKKyAg
ICAgICAgT2JqLUMgb2JqZWN0IHRoYXQgeW91IGV4cG9ydGVkIHRvIEphdmFTY3JpcHQtbGFuZCks
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc3RvcmUgCisgICAgICAgIGEgbm9uLW9iamVjdCBKU1Zh
bHVlIG9uIHRoZSBKYXZhU2NyaXB0LWxhbmQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHJhdGhlciB0
aGFuIGFzIAorICAgICAgICBhbiBpdmFyIGluIHRoZSBPYmplY3RpdmUtQyBvYmplY3QuCisKKyAg
ICAgICAgSW4gcmV0cm9zcGVjdCwgdGhpcyBtYXkgbm90IGhhdmUgYmVlbiBhIGdvb2QgZGVjaXNp
b24gYXQgbGVhc3Qgdy5yLnQuIGNvbnNpc3RlbmN5IAorICAgICAgICBpbiBjbGllbnQgY29kZS4g
SWYgeW91J3JlIHN0b3JpbmcgYSBiYWcgb2YgSlNWYWx1ZXMgb2ZmIGFuIE9iai1DIG9iamVjdCwg
eW91J2QgCisgICAgICAgIGxpa2UgdG8gc3RvcmUgYWxsIG9mIHRoZW0gZWl0aGVyIGluIE9iakMt
bGFuZCBvciBKYXZhU2NyaXB0LWxhbmQsIGJ1dCBkb2luZyBzb21lIAorICAgICAgICBpbiBvbmUg
YW5kIHNvbWUgaW4gdGhlIG90aGVyIGRvZXNuJ3Qgc291bmQgdG9vIGdvb2QuIEFsc28sIHdoYXQg
aWYgdGhlIG9iamVjdCB5b3UgCisgICAgICAgIHdhbnQgdG8gaGFuZyB0aGVzZSB2YWx1ZXMgb2Zm
IG9mIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgb2JqZWN0IGluIEphdmFTY3JpcHQtCisg
ICAgICAgIGxhbmQgaW4gd2hpY2ggdG8gc3RvcmUgdGhlbT8KKworICAgICAgICBUaGUgc29sdXRp
b24gaXMgdG8gZml4IEpTTWFuYWdlZFZhbHVlIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlIG5vbi1v
YmplY3QgSlNWYWx1ZXMuIAorICAgICAgICBSaWdodCBub3csIGFsbCBKU01hbmFnZWRWYWx1ZXMg
Y29udGFpbiBhIFdlYWs8SlNPYmplY3Q+LiBXZSdsbCBjaGFuZ2UgdGhpcyBzbyB0aGF0CisgICAg
ICAgIHRoZXkgY2FuIGNvbnRhaW4gZWl0aGVyIGEgbm9uLWNlbGwgSlNWYWx1ZSBvciBhIEpTT2Jq
ZWN0KiwgYWxvbmcgd2l0aCBhIHdlYWsgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUgSlNHbG9i
YWxPYmplY3QgZm9yIHJlY29uc3RydWN0aW5nIGEgSlNWYWx1ZSBsYXRlciBvbi4KKworICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpQ
cmltaXRpdmVPck9iamVjdCk6CisgICAgICAgIChQcmltaXRpdmVPck9iamVjdDo6flByaW1pdGl2
ZU9yT2JqZWN0KToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpjbGVhcik6CisgICAgICAg
IChQcmltaXRpdmVPck9iamVjdDo6aXNDbGVhcik6CisgICAgICAgIChQcmltaXRpdmVPck9iamVj
dDo6aXNTZXQpOgorICAgICAgICAoUHJpbWl0aXZlT3JPYmplY3Q6OmlzUHJpbWl0aXZlKToKKyAg
ICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0Ojppc09iamVjdCk6CisgICAgICAgIChQcmltaXRpdmVP
ck9iamVjdDo6c2V0UHJpbWl0aXZlKToKKyAgICAgICAgKFByaW1pdGl2ZU9yT2JqZWN0OjpzZXRP
YmplY3QpOgorICAgICAgICAoUHJpbWl0aXZlT3JPYmplY3Q6Om9iamVjdCk6CisgICAgICAgIChQ
cmltaXRpdmVPck9iamVjdDo6cHJpbWl0aXZlKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
aW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgdmFsdWVdKToKKyAg
ICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlzY29ubmVjdFZhbHVlXSk6CisKIDIwMTMtMTAtMDcg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgbWVtb3J5IGFs
bG9jYXRvciBzaG91bGQgYmUgYWJsZSB0byBhbGxvY2F0ZSBkYXRhIHNlY3Rpb25zIGluIG5vbi1l
eGVjdXRhYmxlIG1lbW9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLm1tCShyZXZpc2lvbiAxNTcwNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCwxMjUgQEAg
c3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZQogICAgIHJldHVybiAmanNN
YW5hZ2VkVmFsdWVIYW5kbGVPd25lcjsKIH0KIAorY2xhc3MgV2Vha1ZhbHVlUmVmIHsKK3B1Ymxp
YzoKKyAgICBXZWFrVmFsdWVSZWYoKQorICAgICAgICA6IG1fdGFnKE5vdFNldCkKKyAgICB7Cisg
ICAgfQorCisgICAgfldlYWtWYWx1ZVJlZigpCisgICAgeworICAgICAgICBjbGVhcigpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3RhZykgewor
ICAgICAgICBjYXNlIE5vdFNldDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBQ
cmltaXRpdmU6CisgICAgICAgICAgICB1Lm1fcHJpbWl0aXZlID0gSlNDOjpKU1ZhbHVlKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgT2JqZWN0OgorICAgICAgICAgICAgdS5t
X29iamVjdC5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFN0cmlu
ZzoKKyAgICAgICAgICAgIHUubV9zdHJpbmcuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KworICAgIGJvb2wgaXNDbGVhcigpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fdGFn
KSB7CisgICAgICAgIGNhc2UgTm90U2V0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGNhc2UgUHJpbWl0aXZlOgorICAgICAgICAgICAgcmV0dXJuICF1Lm1fcHJpbWl0aXZlOwor
ICAgICAgICBjYXNlIE9iamVjdDoKKyAgICAgICAgICAgIHJldHVybiAhdS5tX29iamVjdDsKKyAg
ICAgICAgY2FzZSBTdHJpbmc6CisgICAgICAgICAgICByZXR1cm4gIXUubV9zdHJpbmc7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV90YWcgIT0gTm90U2V0OyB9CisgICAgYm9v
bCBpc1ByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnID09IFByaW1pdGl2ZTsgfQorICAg
IGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3RhZyA9PSBPYmplY3Q7IH0KKyAgICBi
b29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV90YWcgPT0gU3RyaW5nOyB9CisKKyAgICB2
b2lkIHNldFByaW1pdGl2ZShKU0M6OkpTVmFsdWUgcHJpbWl0aXZlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFpc1NldCgpKTsKKyAgICAgICAgQVNTRVJUKCF1Lm1fcHJpbWl0aXZlKTsKKyAgICAg
ICAgQVNTRVJUKHByaW1pdGl2ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICAgICAgbV90YWcgPSBQcmlt
aXRpdmU7CisgICAgICAgIHUubV9wcmltaXRpdmUgPSBwcmltaXRpdmU7CisgICAgfQorCisgICAg
dm9pZCBzZXRPYmplY3QoSlNDOjpKU09iamVjdCogb2JqZWN0LCB2b2lkKiBjb250ZXh0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFpc1NldCgpKTsKKyAgICAgICAgQVNTRVJUKCF1Lm1fb2JqZWN0
KTsKKyAgICAgICAgbV90YWcgPSBPYmplY3Q7CisgICAgICAgIEpTQzo6V2VhazxKU0M6OkpTT2Jq
ZWN0PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgY29udGV4dCk7Cisg
ICAgICAgIHUubV9vYmplY3Quc3dhcCh3ZWFrKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFN0cmlu
ZyhKU0M6OkpTU3RyaW5nKiBzdHJpbmcsIHZvaWQqIGNvbnRleHQpCisgICAgeworICAgICAgICBB
U1NFUlQoIWlzU2V0KCkpOworICAgICAgICBBU1NFUlQoIXUubV9vYmplY3QpOworICAgICAgICBt
X3RhZyA9IFN0cmluZzsKKyAgICAgICAgSlNDOjpXZWFrPEpTQzo6SlNTdHJpbmc+IHdlYWsoc3Ry
aW5nLCBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpLCBjb250ZXh0KTsKKyAgICAgICAgdS5tX3N0
cmluZy5zd2FwKHdlYWspOworICAgIH0KKworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNPYmplY3QoKSk7CisgICAgICAgIHJldHVybiB1Lm1fb2Jq
ZWN0LmdldCgpOworICAgIH0KKworICAgIEpTQzo6SlNWYWx1ZSBwcmltaXRpdmUoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzUHJpbWl0aXZlKCkpOworICAgICAgICByZXR1cm4gdS5tX3ByaW1p
dGl2ZTsKKyAgICB9CisKKyAgICBKU0M6OkpTU3RyaW5nKiBzdHJpbmcoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gdS5tX3N0cmluZy5nZXQoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgZW51bSBXZWFrVHlwZVRhZyB7IE5vdFNldCwgUHJpbWl0
aXZlLCBPYmplY3QsIFN0cmluZyB9OworICAgIFdlYWtUeXBlVGFnIG1fdGFnOworICAgIHVuaW9u
IFdlYWtWYWx1ZVVuaW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdlYWtWYWx1ZVVuaW9uICgp
CisgICAgICAgICAgICA6IG1fcHJpbWl0aXZlKEpTQzo6SlNWYWx1ZSgpKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB+V2Vha1ZhbHVlVW5pb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoIW1fcHJpbWl0aXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTQzo6SlNW
YWx1ZSBtX3ByaW1pdGl2ZTsKKyAgICAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fb2Jq
ZWN0OworICAgICAgICBKU0M6OldlYWs8SlNDOjpKU1N0cmluZz4gbV9zdHJpbmc7CisgICAgfSB1
OworfTsKKwogQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKLSAgICBKU0M6OldlYWs8
SlNDOjpKU09iamVjdD4gbV92YWx1ZTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU0dsb2JhbE9iamVj
dD4gbV9nbG9iYWxPYmplY3Q7CisgICAgV2Vha1ZhbHVlUmVmIG1fd2Vha1ZhbHVlOwogfQogCiAr
IChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVl
CkBAIC03MCwzMCArMTg3LDQ2IEBAIC0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1
ZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBpZiAoIXZh
bHVlIHx8ICFKU1ZhbHVlSXNPYmplY3QoW3ZhbHVlLmNvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgW3ZhbHVlIEpTVmFsdWVSZWZdKSkgewotICAgICAgICBKU0M6OldlYWs8SlNDOjpKU09iamVj
dD4gd2VhazsKLSAgICAgICAgbV92YWx1ZS5zd2FwKHdlYWspOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHRvSlMoY29uc3RfY2FzdDxPcGFxdWVKU1ZhbHVl
Kj4oW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0gICAgICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7Ci0gICAgICAg
IG1fdmFsdWUuc3dhcCh3ZWFrKTsKLSAgICB9CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIHNlbGY7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW3ZhbHVlLmNvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTQzo6V2VhazxKU0M6
OkpTR2xvYmFsT2JqZWN0PiB3ZWFrKGdsb2JhbE9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3du
ZXIoKSwgc2VsZik7CisgICAgbV9nbG9iYWxPYmplY3Quc3dhcCh3ZWFrKTsKKworICAgIEpTQzo6
SlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCBbdmFsdWUgSlNWYWx1ZVJlZl0pOworICAgIGlm
IChqc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIG1fd2Vha1ZhbHVlLnNldE9iamVjdChKU0M6
OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oanNWYWx1ZS5hc0NlbGwoKSksIHNlbGYpOworICAgIGVs
c2UgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkKKyAgICAgICAgbV93ZWFrVmFsdWUuc2V0U3RyaW5n
KEpTQzo6anNDYXN0PEpTQzo6SlNTdHJpbmcqPihqc1ZhbHVlLmFzQ2VsbCgpKSwgc2VsZik7Cisg
ICAgZWxzZQorICAgICAgICBtX3dlYWtWYWx1ZS5zZXRQcmltaXRpdmUoanNWYWx1ZSk7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZQogewotICAgIGlmICghbV92YWx1
ZSkKKyAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlm
IChtX3dlYWtWYWx1ZS5pc0NsZWFyKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgSlNDOjpK
U09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVmKG9i
amVjdC0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpXTsKLSAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp0b1JlZihvYmplY3QpIGluQ29udGV4
dDpjb250ZXh0XTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0
V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihleGVjKV07CisgICAgSlNDOjpKU1Zh
bHVlIHZhbHVlOworICAgIGlmIChtX3dlYWtWYWx1ZS5pc1ByaW1pdGl2ZSgpKQorICAgICAgICB2
YWx1ZSA9IG1fd2Vha1ZhbHVlLnByaW1pdGl2ZSgpOworICAgIGVsc2UgaWYgKG1fd2Vha1ZhbHVl
LmlzU3RyaW5nKCkpCisgICAgICAgIHZhbHVlID0gbV93ZWFrVmFsdWUuc3RyaW5nKCk7CisgICAg
ZWxzZQorICAgICAgICB2YWx1ZSA9IG1fd2Vha1ZhbHVlLm9iamVjdCgpOworICAgIHJldHVybiBb
SlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKGV4ZWMsIHZhbHVlKSBpbkNvbnRleHQ6
Y29udGV4dF07CiB9CiAKIC0gKHZvaWQpZGlzY29ubmVjdFZhbHVlCiB7Ci0gICAgbV92YWx1ZS5j
bGVhcigpOworICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7CisgICAgbV93ZWFrVmFsdWUuY2xl
YXIoKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQkocmV2aXNpb24gMTU3MDU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDQ3IEBAIC0g
KHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCitAaW50ZXJm
YWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICop
dmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleToo
TlNTdHJpbmcgKilrZXk7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24gewor
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1
ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7
CisgICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07Cisg
ICAgICAgIGlmIChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1
YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25l
cjpzZWxmXTsKKyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01h
bmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250
ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhP
d25lcjpzZWxmXTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5
XTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAg
IEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07
CisgICAgaWYgKCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
IFttYW5hZ2VkVmFsdWUgdmFsdWVdOworfQorQGVuZAorCiBzdGF0aWMgdm9pZCBjaGVja1Jlc3Vs
dChOU1N0cmluZyAqZGVzY3JpcHRpb24sIGJvb2wgcGFzc2VkKQogewogICAgIE5TTG9nKEAiVEVT
VDogXCIlQFwiOiAlQCIsIGRlc2NyaXB0aW9uLCBwYXNzZWQgPyBAIlBBU1NFRCIgOiBAIkZBSUxF
RCIpOwpAQCAtMjkxLDYgKzMzMiwzOCBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9
CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZh
dGVQcm9wZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworCisgICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0Nv
bnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9
IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9
IHJvb3RPYmplY3Q7CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5h
Z2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOwor
ICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVX
aXRoQm9vbDp0cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpAImhlbGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKyAg
ICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51
bGxJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAg
ICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRl
ZmluZWRJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07
CisKKyAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKworICAgICAgICAgICAgSlNWYWx1ZSAqaXNI
YW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOworICAgICAg
ICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAibWVzc2FnZSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOworICAgICAgICAgICAgSlNWYWx1
ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRl
ZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVk
ID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmlu
ZWQiXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0g
aXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
Im1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNF
cXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0
b0ludDMyXSA9PSA0Mik7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVs
bCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOworICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVu
ZGVmaW5lZCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9CisKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJpc19oYW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNf
aGFtIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKKyAgICB9CisKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRl
eHRbQCJibG9ja0NhbGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7Cg==
</data>
<flag name="review"
          id="236012"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>