<?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>155606</bug_id>
          
          <creation_ts>2016-03-17 15:35:24 -0700</creation_ts>
          <short_desc>Web Automation: implement Automation.performMouseInteraction</short_desc>
          <delta_ts>2016-03-29 13:21:05 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1175882</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-17 15:35:24 -0700</bug_when>
    <thetext>Do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175883</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-17 15:36:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/25227576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175884</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-17 15:36:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/25227587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175887</commentid>
    <comment_count>3</comment_count>
      <attachid>274334</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-17 15:42:47 -0700</bug_when>
    <thetext>Created attachment 274334
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175890</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-17 15:46:00 -0700</bug_when>
    <thetext>Attachment 274334 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 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>1176306</commentid>
    <comment_count>5</comment_count>
      <attachid>274334</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 14:28:30 -0700</bug_when>
    <thetext>Comment on attachment 274334
Proposed Fix

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

&gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:47
&gt; +    IntRect windowRect;
&gt; +    page.rootViewToWindow(IntRect(viewPosition, IntSize()), windowRect);
&gt; +    IntPoint windowPosition = windowRect.location();
&gt; +
&gt; +    // FIXME: This may need to include any still-pressed Shift, Ctrl, Alt, Meta keys from a previous key press command.
&gt; +    NSEventModifierFlags modifiers = 0;
&gt; +    NSWindow *window = page.platformWindow();
&gt; +    NSEvent *simulatedEvent = [NSEvent mouseEventWithType:NSMouseMoved location:windowPosition modifierFlags:modifiers timestamp:[NSDate timeIntervalSinceReferenceDate] windowNumber:window.windowNumber context:nil eventNumber:0 clickCount:0 pressure:0.0f];
&gt; +    [window sendEvent:simulatedEvent];

Looks fine. Maybe we should consider using WebPage::simulateMouseDown, WebPage::simulateMouseUp, WebPage::simulateMouseMotion instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176324</commentid>
    <comment_count>6</comment_count>
      <attachid>274334</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-18 15:22:50 -0700</bug_when>
    <thetext>Comment on attachment 274334
Proposed Fix

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

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:47
&gt;&gt; +    [window sendEvent:simulatedEvent];
&gt; 
&gt; Looks fine. Maybe we should consider using WebPage::simulateMouseDown, WebPage::simulateMouseUp, WebPage::simulateMouseMotion instead?

I would need to talk to Wenson or Enrica to understand the tradeoffs here. There&apos;s no equivalent for key presses so I&apos;m not sure we want to do some interactions via UIProcess and others in WebProcess. I can&apos;t really validate whether either approach works until all mouse commands work. It may be the case that the code needs different platform helper implementation for UIKit vs AppKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176351</commentid>
    <comment_count>7</comment_count>
      <attachid>274334</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-18 16:15:31 -0700</bug_when>
    <thetext>Comment on attachment 274334
Proposed Fix

Investigating a new approach that combines all the mouse interactions into one command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177284</commentid>
    <comment_count>8</comment_count>
      <attachid>274728</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-22 23:04:59 -0700</bug_when>
    <thetext>Created attachment 274728
Proposed Fix (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177285</commentid>
    <comment_count>9</comment_count>
      <attachid>274728</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-22 23:05:57 -0700</bug_when>
    <thetext>Comment on attachment 274728
Proposed Fix (v2)

This is an interdiff from the v1 patch. Neither applies to trunk cleanly at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178179</commentid>
    <comment_count>10</comment_count>
      <attachid>274728</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-25 17:02:08 -0700</bug_when>
    <thetext>Comment on attachment 274728
Proposed Fix (v2)

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:492
&gt; +    WebEvent::Modifiers keyModifiers = (WebEvent::Modifiers)0;

Is this cast needed?

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:502
&gt; +        keyModifiers = (WebEvent::Modifiers)(enumValue | keyModifiers);

Is this cast needed? Seems like this could be: keyModified |= enumValue.

&gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:124
&gt; +
&gt; +#endif // USE(APPKIT)

Nit: An extra newline in here.

Would be nice to support Force Click in here in the future!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178181</commentid>
    <comment_count>11</comment_count>
      <attachid>274728</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-25 17:04:44 -0700</bug_when>
    <thetext>Comment on attachment 274728
Proposed Fix (v2)

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

&gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:113
&gt; +        [eventsToBeSent addObject:[NSEvent mouseEventWithType:upEventType location:windowPosition modifierFlags:modifiers timestamp:timestamp windowNumber:windowNumber context:nil eventNumber:0 clickCount:2 pressure:0.0f]];
&gt; +    }

Nit: Missing a break here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178196</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-25 17:39:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 274728 [details]
&gt; Proposed Fix (v2)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274728&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:492
&gt; &gt; +    WebEvent::Modifiers keyModifiers = (WebEvent::Modifiers)0;
&gt; 
&gt; Is this cast needed?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:502
&gt; &gt; +        keyModifiers = (WebEvent::Modifiers)(enumValue | keyModifiers);
&gt; 
&gt; Is this cast needed? Seems like this could be: keyModified |= enumValue.

According to Xcode, it is.

&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:124
&gt; &gt; +
&gt; &gt; +#endif // USE(APPKIT)
&gt; 
&gt; Nit: An extra newline in here.
&gt; 
&gt; Would be nice to support Force Click in here in the future!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178483</commentid>
    <comment_count>13</comment_count>
      <attachid>275035</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 12:02:05 -0700</bug_when>
    <thetext>Created attachment 275035
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178510</commentid>
    <comment_count>14</comment_count>
      <attachid>275035</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-28 13:32:39 -0700</bug_when>
    <thetext>Comment on attachment 275035
Rebased Patch

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

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:194
&gt; +                { &quot;name&quot;: &quot;handle&quot;, &quot;$ref&quot;: &quot;BrowsingContextHandle&quot;, &quot;description&quot;: &quot;The browsing context to be interacted with.&quot; },

We might want to always use a name of &quot;browsingContextHandle&quot;, so it is clear that it is not a frame handle, etc.

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:611
&gt; +    platformSimulateMouseInteraction(*page, viewPosition, parsedInteraction.value(), parsedButton.value(), keyModifiers);

We should add a FIXME about adding force click (pressure).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178586</commentid>
    <comment_count>15</comment_count>
      <attachid>275069</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 17:36:18 -0700</bug_when>
    <thetext>Created attachment 275069
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178615</commentid>
    <comment_count>16</comment_count>
      <attachid>275079</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 20:12:04 -0700</bug_when>
    <thetext>Created attachment 275079
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178618</commentid>
    <comment_count>17</comment_count>
      <attachid>275080</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 20:57:17 -0700</bug_when>
    <thetext>Created attachment 275080
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178620</commentid>
    <comment_count>18</comment_count>
      <attachid>275080</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 21:02:03 -0700</bug_when>
    <thetext>Comment on attachment 275080
Rebased

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

&gt; Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm:49
&gt; +        objc_setAssociatedObject(event, [_WKAutomationSession class], m_sessionIdentifier, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

It looks like we can&apos;t use _WKAutomationSession for this purpose, since it is guarded by WK_API_ENABLED (which is false if building for 32-bit). Maybe we should just use a static const char* casted to void*? It would need to have the same address when used in separately compiled and linked libraries.

It&apos;s common to use a selector as the key, but I&apos;m not sure how many selectors are useable by both WK2 internally and by its clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178623</commentid>
    <comment_count>19</comment_count>
      <attachid>275081</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 21:18:52 -0700</bug_when>
    <thetext>Created attachment 275081
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178777</commentid>
    <comment_count>20</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-29 13:21:05 -0700</bug_when>
    <thetext>Committed: &lt;http://trac.webkit.org/changeset/198792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274334</attachid>
            <date>2016-03-17 15:42:47 -0700</date>
            <delta_ts>2016-03-18 16:15:31 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155606-20160317154246.patch</filename>
            <type>text/plain</type>
            <size>14349</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGIxNGY3NzJjMjgxMzMz
OWY4OTJlYTg4MzIyZGIxMjVlNmRhYTdjMy4uNGNjYWNkMmU2YWQ4YWQzZmMwYmU3ODU3MDI1OGZh
OGEzYjRkYzRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDE2LTAzLTE3ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBs
ZW1lbnQgQXV0b21hdGlvbi5tb3ZlTW91c2VDdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvbW1hbmQgdG8gbW92ZSB0aGUgbW91c2Ug
Y3Vyc29yIHRvIGEgdmlldyBjb29yZGluYXRlIHVzaW5nIG5hdGl2ZSBldmVudHMuCisgICAgICAg
IFRoZSBldmVudCBpcyBjcmVhdGVkIHN5bnRoZXRpY2FsbHkgaW4gYSBwbGF0Zm9ybS1zcGVjaWZp
YyB3YXkgYW5kIGRlbGl2ZXJlZCB0bworICAgICAgICB0aGUgcGxhdGZvcm0nIHdpbmRvdyBpbiB0
aGUgVUlQcm9jZXNzIHNvIHRoYXQgdGhlIGV2ZW50IGdvZXMgdGhyb3VnaCBhbGwgdGhlCisgICAg
ICAgIGxheWVycyBvZiBwcm9jZXNzaW5nIHRoYXQgYSByZWFsIG1vdXNlIGV2ZW50IGNvdWxkIGdv
IHRocm91Z2ggb25jZSBpdCByZWFjaGVzCisgICAgICAgIFdlYktpdCBpdHNlbGYuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgY29tbWFu
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1vdmVNb3VzZUN1
cnNvcik6IEFkZGVkLgorICAgICAgICBDbGlwIHRoZSByZXF1ZXN0ZWQgY3Vyc29yIHBvc2l0aW9u
IHNvIHRoYXQgaXQgc3RheXMgd2l0aGluIHRoZSBzZWxlY3RlZCB3aW5kb3cncworICAgICAgICBm
cmFtZSBhbmQgZG9lc24ndCB3YW5kZXIgb2ZmIGludG8gb3RoZXIgd2luZG93cyBvciBhcHBsaWNh
dGlvbnMuIEZpcmUgaXQgdXNpbmcKKyAgICAgICAgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHNpbXVs
YXRpb24gbWV0aG9kLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpw
bGF0Zm9ybVNpbXVsYXRlTW91c2VNb3ZlRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgVGhpcyBpcyBh
IHN0dWIgbWV0aG9kIGZvciBwb3J0cyB0aGF0IGRvbid0IHVzZSBBcHBLaXQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZU1vdmUpOgorICAgICAgICBDb252ZXJ0IGZyb20gdmlldyB0byB3aW5kb3cgY29vcmRpbmF0ZSBz
cGFjZSwgY3JlYXRlIGFuIE5TRXZlbnQsIGFuZCBzZW5kIGl0LgorCisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGUuCisKKzIwMTYtMDMtMTcg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgYWRk
IHByZWZpbmVkIGVycm9yIG1lc3NhZ2VzIHRvIEF1dG9tYXRpb24uanNvbiB0aGF0IGdvdCBtaXNt
ZXJnZWQuCiAKICAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0
aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9u
Lmpzb24KaW5kZXggMDkyYjFhNzJjZTZjMjJjZTBkMmRjODVhYjc0MDc5OTU4OGYyOThlNS4uMGRj
N2I0ZjA3ZjJiY2QzNjM3ODVhNjM4YWRjZTE2Y2JjN2Y3YmJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtMTQxLDYg
KzE0MSwxNyBAQAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBzaG91
bGQgYmUgcmVsb2FkZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogIm1vdmVNb3VzZUN1cnNvciIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiTW92ZXMgdGhlIG1vdXNlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0
aW9uIGluIHRoZSBzcGVjaWZpZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjb21tYW5kIGltcGxp
Y2l0bHkgZm9jdXNlcyB0aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgc28gdGhhdCBpdCBy
ZWNlaXZlcyBtb3VzZSBldmVudHMuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0
SGFuZGxlIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24iLCAiJHJlZiI6
ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVxdWVzdGVkIHBvc2l0aW9uIGZvciB0aGUg
bW91c2UgY3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9CisgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwb3NpdGlvbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSBj
dXJyZW50IHBvc2l0aW9uIGZvciB0aGUgbW91c2UgY3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3Bv
cnQgY29vcmRpbmF0ZXMuIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggY2VhZTljMzQ0NDA4ODFhOTc2MDAzMTVhNDJhYWUz
YjAyNTQ3YjQ0My4uYmNmMGJkYjMwYzQxYjYyMWM2Nzk4YTQ5ZjMyMTQ1MTE3MDBkZWEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpbmNsdWRlICJB
UElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29s
T2JqZWN0cy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC0zMzAsNCArMzMyLDQ2IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0CiAgICAgcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwogfQogCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3ZlTW91c2VDdXJzb3IoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVz
dGVkUG9zaXRpb25PYmplY3QsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQb2ludD4mIHVzZWRQb3NpdGlvbk9iamVjdCkKK3sKKyNpZiAhVVNFKEFQUEtJVCkKKyAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE5vdEltcGxlbWVudGVkKTsKKyNlbHNl
CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNT
QUdFKFdpbmRvd05vdEZvdW5kKTsKKworICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8yNTA5
NDEwNj46IFNwZWNpZnkgd2hhdCBwYXJhbWV0ZXIgd2FzIG1pc3Npbmcgb3IgaW52YWxpZCBhbmQg
aG93LgorICAgIC8vIFRoaXMgcmVxdWlyZXMgc29tZSBjaGFuZ2VzIHRvIHRoZSBvdGhlciBlbmQn
cyBlcnJvciBoYW5kbGluZy4gUmlnaHQgbm93IGl0IGxvb2tzIGZvciBhbgorICAgIC8vIGV4YWN0
IGVycm9yIG1lc3NhZ2UgbWF0Y2guIFdlIGNvdWxkIHN0dWZmIHRoaXMgaW50byB0aGUgJ2RhdGEn
IGZpZWxkIG9uIGVycm9yIG9iamVjdC4KKyAgICBmbG9hdCB4OworICAgIGlmICghcmVxdWVzdGVk
UG9zaXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ4IiksIHgpKQorICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIp
OworCisgICAgZmxvYXQgeTsKKyAgICBpZiAoIXJlcXVlc3RlZFBvc2l0aW9uT2JqZWN0LmdldERv
dWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKworICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCB3aW5kb3dGcmFtZTsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZSh3aW5kb3dGcmFt
ZSk7CisKKyAgICB4ID0gc3RkOjptYXgoc3RkOjptaW4oMC4wZiwgeCksIHdpbmRvd0ZyYW1lLnNp
emUoKS53aWR0aCgpKTsKKyAgICB5ID0gc3RkOjptYXgoc3RkOjptaW4oMC4wZiwgeSksIHdpbmRv
d0ZyYW1lLnNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9z
aXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHkpKTsKKyAgICBwbGF0Zm9ybVNpbXVsYXRlTW91c2VNb3ZlKCpwYWdlLCB2aWV3UG9z
aXRpb24pOworCisgICAgdXNlZFBvc2l0aW9uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHgpCisgICAgICAgIC5z
ZXRZKHkpCisgICAgICAgIC5yZWxlYXNlKCk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKK30KKwor
I2lmICFVU0UoQVBQS0lUKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZU1vdXNlTW92ZUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkludFBvaW50JikKK3sK
K30KKyNlbmRpZiAvLyAhVVNFKEFQUEtJVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uaAppbmRleCBjMDg2Y2U5MjEzNWEzNDYzYmU1Njk5NzI5Yzg4NzZhYjAyM2Jm
ZjYzLi5kYTJlNmFmNTk4ZWZhZjdlOTUwNDQxOWQ3ZDFmOWQ1MmRiYTdjNGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKLSNkZWZpbmUg
V2ViQXV0b21hdGlvblNlc3Npb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKQEAgLTQzLDYg
KzQyLDEwIEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgRnJvbnRlbmRSb3V0ZXI7
CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CkBAIC05MCw2
ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGdv
Rm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtb3Zl
TW91c2VDdXJzb3IoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBvaW50PiYgdXNlZFBvc2l0aW9uKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5
Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwpAQCAtOTcsNiArMTAxLDkgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHQ+IGJ1aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdlUHJveHkmKTsKIAorICAgIC8v
IFBsYXRmb3JtLXNwZWNpZmljIGhlbHBlciBtZXRob2RzLgorICAgIHZvaWQgcGxhdGZvcm1TaW11
bGF0ZU1vdXNlTW92ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmll
d1Bvc2l0aW9uKTsKKwogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2wg
eyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyIHsgQVNDSUlM
aXRlcmFsKCJVbnRpdGxlZCBTZXNzaW9uIikgfTsKQEAgLTExNCw1ICsxMjEsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJBdXRvbWF0aW9u
U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
QXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZTc0NGNkYWEyYzBi
ZDU3MmY2NDFiODBlMzE1YjIwZWE3NDFmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50U2l6ZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZU1vdmUoV2ViUGFnZVByb3h5JiBw
YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQoreworICAgIEludFJl
Y3Qgd2luZG93UmVjdDsKKyAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3UG9z
aXRpb24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOworICAgIEludFBvaW50IHdpbmRvd1Bvc2l0
aW9uID0gd2luZG93UmVjdC5sb2NhdGlvbigpOworCisgICAgLy8gRklYTUU6IFRoaXMgbWF5IG5l
ZWQgdG8gaW5jbHVkZSBhbnkgc3RpbGwtcHJlc3NlZCBTaGlmdCwgQ3RybCwgQWx0LCBNZXRhIGtl
eXMgZnJvbSBhIHByZXZpb3VzIGtleSBwcmVzcyBjb21tYW5kLgorICAgIE5TRXZlbnRNb2RpZmll
ckZsYWdzIG1vZGlmaWVycyA9IDA7CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IHBhZ2UucGxhdGZv
cm1XaW5kb3coKTsKKyAgICBOU0V2ZW50ICpzaW11bGF0ZWRFdmVudCA9IFtOU0V2ZW50IG1vdXNl
RXZlbnRXaXRoVHlwZTpOU01vdXNlTW92ZWQgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZp
ZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOltOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZl
cmVuY2VEYXRlXSB3aW5kb3dOdW1iZXI6d2luZG93LndpbmRvd051bWJlciBjb250ZXh0Om5pbCBl
dmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXTsKKyAgICBbd2luZG93IHNl
bmRFdmVudDpzaW11bGF0ZWRFdmVudF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDFlODZjYzMxYzQ2NzgxZmRkZjNkZTlmN2M2YWQ4MjJjMzVhNDhiZjguLjE5Mzg5ZThjZTExNWFl
ZDcwMDRmYzIzYWM0MjVhOWMwNjY3Yjg3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzIsNiArMTIzMiw3IEBACiAJCTk5
NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3
OTg2NjQwMEVCNkE5MyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLzsgfTsKIAkJ
OTk1NUE2RjYxQzc5ODZFMzAwRUI2QTkzIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFD
Nzk4NjY0MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJ
OTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjMxQzc5
ODY2NDAwRUI2QTkzIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oICovOyB9OworCQk5OTdC
MzE4QTFDOUE2QUYyMDA1Q0JGMkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5N0IzMTg5MUM5QTZB
QzQwMDVDQkYyQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tICovOyB9OwogCQk5OUM4
MUQ1OTFDMjBFMUU1MDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU2MUMyMERGQkUwMDVDNEM4
MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovOyB9OwogCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRD
ODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGll
bnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25D
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CkBA
IC0zMjU2LDYgKzMyNTcsNyBAQAogCQk5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3Rz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkYzMUM3
OTg2NjQwMEVCNkE5MyAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5N0IzMTg5MUM5QTZBQzQwMDVDQkYyQiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0
b21hdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEF1dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5Qzgx
RDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MTYsNiArNDYxOCw3IEBACiAJCQkJMUFGRTQzNjMxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi8sCiAJCQkJRTRFODY0OEUxQjE2NzNGQjAwQzgy
RjQwIC8qIFZlcnNpb25DaGVja3MuaCAqLywKIAkJCQlFNEU4NjQ4RjFCMTY3M0ZCMDBDODJGNDAg
LyogVmVyc2lvbkNoZWNrcy5tbSAqLywKKwkJCQk5OTdCMzE4OTFDOUE2QUM0MDA1Q0JGMkIgLyog
V2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLywKIAkJCQkxQUMwMjczRTE5NjYyMkQ2MDBD
MTJCNzUgLyogV2ViUGFnZVByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0M0Njk0Q0IxQTRCNTEwQTAw
QUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tICovLAogCQkJCTdDRTREMjE1MUE0
OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbENvY29hLm1tICovLApAQCAtOTI3NSw2ICs5
Mjc4LDcgQEAKIAkJCQlCQzRBNjI5NjE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVm
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTREMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0Nv
bnRlbnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgz
IC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTk3QjMxOEExQzlBNkFGMjAw
NUNCRjJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkwRkNCNEU2RDE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCOUUyNEMxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU1MkY5NzE5MjAyNjMzMDBBMUZBMzcgLyogV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274728</attachid>
            <date>2016-03-22 23:04:59 -0700</date>
            <delta_ts>2016-03-28 12:02:01 -0700</delta_ts>
            <desc>Proposed Fix (v2)</desc>
            <filename>bug-155606-20160322230500.patch</filename>
            <type>text/plain</type>
            <size>19228</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNThiYWQxMTA3NmU2NGI0
MGZlMzdiY2JiYTRkMmY4NzIwN2I3YTE3MC4uYTEyNWJmNGM0NzlkNGU4M2JlNzY1YzJmYzliMDI3
NzMyMGYwNzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAzLTIyICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBs
ZW1lbnQgQXV0b21hdGlvbi5wZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTIyNzU3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIGNvbW1vbiBtb3VzZSBpbnRlcmFjdGlv
bnMgYnkgc3ludGhlc2l6aW5nIG5hdGl2ZSBldmVudHMuCisgICAgICAgIFRoZSBjcmVhdGlvbiBh
bmQgZGlzcGF0Y2hpbmcgb2Ygc2ltdWxhdGVkIGV2ZW50cyBpcyBpbXBsZW1lbnRlZCBzZXBhcmF0
ZWx5IHBlcgorICAgICAgICBhcHBsaWNhdGlvbi93aW5kb3cvZXZlbnQgZnJhbWV3b3JrLiBUaGlz
IHBhdGNoIGFkZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHBvcnRzCisgICAgICAgIHRoYXQgdXNl
IEFwcEtpdC4KKworICAgICAgICBSZW1vdmUgdGhlIGV4aXN0aW5nIHNpbXVsYXRlTW91c2VNb3Zl
IGNvZGUgc2luY2UgaXQgaXMgc3Vic3VtZWQgYnkgdGhlIG5ldyBBUEkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgZW51bXMgYW5kIGNv
bW1hbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9k
aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1v
dXNlSW50ZXJhY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptb3ZlTW91c2VDdXJzb3IpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0
ZU1vdXNlTW92ZUV2ZW50KTogQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgQ29udmVydCBBdXRvbWF0aW9uIHByb3RvY29sIHZhbHVlcyB0byBBcHBLaXQgdmFsdWVzLiBT
aW11bGF0ZSBhbmQgZGlzcGF0Y2gKKyAgICAgICAgb25lIG9yIG1vcmUgZXZlbnRzIGRlcGVuZGlu
ZyBvbiB0aGUgZGVzaXJlZCBpbnRlcmFjdGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlTW92ZSk6IERlbGV0ZWQuCisKIDIw
MTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbiBwcm90b2NvbCBjb21tYW5kcyB0byByZXNv
bHZlIGZyYW1lcyBhcyBoYW5kbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KaW5kZXggYzc1ZDdlNmUzOWZjNThkM2JjYmRlYzQ1
OWQzNzE1ZjQ2ZTE1ZjM1Zi4uZWIzYTAyODU5NzhkZDYxMDRlNzkxMzhmMzc2ZTQ3ZDhiZTc2YmRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21h
dGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9t
YXRpb24uanNvbgpAQCAtNjcsNiArNjcsNDEgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
IndpbmRvd1NpemUiLCAiJHJlZiI6ICJTaXplIiwgImRlc2NyaXB0aW9uIjogIlRoZSBjdXJyZW50
IHNpemUgb2YgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAid2luZG93T3JpZ2luIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGN1cnJlbnQgKHgsIHkpIHBvc2l0aW9uIG9mIHRoZSBicm93c2luZyBjb250ZXh0
J3Mgd2luZG93IHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBvZiB0aGUgc2NyZWVuLiIgfQogICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiTW91
c2VJbnRlcmFjdGlvbiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMgZGlmZmVyZW50IHdheXMgb2YgaW50ZXJhY3Rp
bmcgd2l0aCBhIG1vdXNlIGN1cnNvci4iLAorICAgICAgICAgICAgImVudW0iOiBbCisgICAgICAg
ICAgICAgICAgIk1vdmUiLAorICAgICAgICAgICAgICAgICJEb3duIiwKKyAgICAgICAgICAgICAg
ICAiVXAiLAorICAgICAgICAgICAgICAgICJTaW5nbGVDbGljayIsCisgICAgICAgICAgICAgICAg
IkRvdWJsZUNsaWNrIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAiaWQiOiAiTW91c2VCdXR0b24iLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbnVtZXJhdGVzIGRpZmZlcmVudCBtb3Vz
ZSBidXR0b25zIHRoYXQgY2FuIGJlIHVzZWQuIiwKKyAgICAgICAgICAgICJlbnVtIjogWworICAg
ICAgICAgICAgICAgICJOb25lIiwKKyAgICAgICAgICAgICAgICAiTGVmdCIsCisgICAgICAgICAg
ICAgICAgIk1pZGRsZSIsCisgICAgICAgICAgICAgICAgIlJpZ2h0IgorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiS2V5TW9kaWZpZXIiLAor
ICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJFbnVtZXJhdGVzIGRpZmZlcmVudCBrZXkgbW9kaWZpZXJzIHRoYXQgY2FuIHJlbWFpbiBwcmVz
c2VkIGR1cmluZyBvdGhlciBtb3VzZS90b3VjaCBpbnRlcmFjdGlvbnMuIiwKKyAgICAgICAgICAg
ICJlbnVtIjogWworICAgICAgICAgICAgICAgICJDYXBzTG9jayIsCisgICAgICAgICAgICAgICAg
IkNvbnRyb2wiLAorICAgICAgICAgICAgICAgICJTaGlmdCIsCisgICAgICAgICAgICAgICAgIk1l
dGEiLAorICAgICAgICAgICAgICAgICJBbHQiCisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAg
ICBdLAogICAgICJjb21tYW5kcyI6IFsKQEAgLTE3MCwxNCArMjA1LDE3IEBACiAgICAgICAgICAg
ICAiYXN5bmMiOiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgICJuYW1l
IjogIm1vdmVNb3VzZUN1cnNvciIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTW92ZXMg
dGhlIG1vdXNlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBzcGVjaWZp
ZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjb21tYW5kIGltcGxpY2l0bHkgZm9jdXNlcyB0aGUg
c3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgc28gdGhhdCBpdCByZWNlaXZlcyBtb3VzZSBldmVu
dHMuIiwKKyAgICAgICAgICAgICJuYW1lIjogInBlcmZvcm1Nb3VzZUludGVyYWN0aW9uIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaW11bGF0ZXMgaW50ZXJhY3Rpb24gd2l0aCBhIG1v
dXNlIGN1cnNvci4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3NpdGlvbiIsICIkcmVmIjogIlBvaW50Iiwg
ImRlc2NyaXB0aW9uIjogIlRoZSByZXF1ZXN0ZWQgcG9zaXRpb24gZm9yIHRoZSBtb3VzZSBjdXJz
b3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy4iIH0KKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGgu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24iLCAiJHJlZiI6ICJQb2lu
dCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVxdWVzdGVkIHBvc2l0aW9uIGZvciB0aGUgbW91c2Ug
Y3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYnV0dG9uIiwgIiRyZWYiOiAiTW91c2VCdXR0b24iLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJ1dHRvbiB0byB1c2UgdG8gcGVyZm9ybSB0aGUgaW50ZXJhY3Rpb24uIFRo
aXMgcGFyYW1ldGVyIG9ubHkgaGFzIGFuIGVmZmVjdCBmb3IgdGhlIDxjb2RlPkRvd248L2NvZGU+
LCA8Y29kZT5VcDwvY29kZT4sIDxjb2RlPkNsaWNrPC9jb2RlPiwgYW5kIDxjb2RlPkRvdWJsZUNs
aWNrPC9jb2RlPiBtb3VzZSBpbnRlcmFjdGlvbnMuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaW50ZXJhY3Rpb24iLCAiJHJlZiI6ICJNb3VzZUludGVyYWN0aW9uIiwgImRlc2NyaXB0
aW9uIjogIlRoZSB0eXBlIG9mIGludGVyYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBt
b3VzZSBjdXJzb3IuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibW9kaWZpZXJzIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIktleU1vZGlmaWVyIiB9LCAiZGVz
Y3JpcHRpb24iOiAiS2V5IG1vZGlmaWVycyB0byBiZSBhY3RpdmUgZHVyaW5nIHRoZSBtb3VzZSBp
bnRlcmFjdGlvbi4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAicmV0dXJucyI6IFsK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc2l0aW9uIiwgIiRyZWYiOiAiUG9pbnQiLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgcG9zaXRpb24gZm9yIHRoZSBtb3VzZSBjdXJzb3Is
IHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy4iIH0KKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInBvc2l0aW9uIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRpb24iOiAiVGhl
IHVwZGF0ZWQgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGN1cnNvciwgc3BlY2lmaWVkIGluIHZpZXdw
b3J0IGNvb3JkaW5hdGVzLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNWEyMjNlYmU2NTliYmM4MzlkMWE4NzBhNmFm
MjUzZTljOWJlODE0Ny4uYmY3NjE3MTIyODc5ZGNlNTM1Y2U1M2NkOGUxYTZjYmRjNDE1NmRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDM3LDcgKzQzNywyMyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBj
YWxsYmFja0lELCBjbwogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW92ZU1vdXNlQ3Vyc29yKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uT2JqZWN0LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1c2VkUG9zaXRpb25PYmpl
Y3QpCitzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVu
dE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyIG1v
ZGlmaWVyKQoreworICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpBbHQ6CisgICAgICAgIHJldHVybiBX
ZWJFdmVudDo6QWx0S2V5OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6S2V5TW9kaWZpZXI6Ok1ldGE6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6TWV0YUtleTsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpD
b250cm9sOgorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllcjo6U2hpZnQ6CisgICAg
ICAgIHJldHVybiBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllcjo6Q2Fwc0xvY2s6CisgICAgICAgIHJldHVybiBX
ZWJFdmVudDo6Q2Fwc0xvY2tLZXk7CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRv
blN0cmluZywgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBrZXlNb2RpZmllclN0cmluZ3MsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludD4mIHVwZGF0ZWRQb3NpdGlvbk9iamVjdCkK
IHsKICNpZiAhVVNFKEFQUEtJVCkKICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNT
QUdFKE5vdEltcGxlbWVudGVkKTsKQEAgLTQ2NCw5ICs0ODAsMzEgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6bW92ZU1vdXNlQ3Vyc29yKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLAogICAgIHkgPSBzdGQ6Om1heChzdGQ6Om1pbigwLjBmLCB5KSwgd2luZG93RnJhbWUu
c2l6ZSgpLmhlaWdodCgpKTsKIAogICAgIFdlYkNvcmU6OkludFBvaW50IHZpZXdQb3NpdGlvbiA9
IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19jYXN0PGludD4oeCksIHN0YXRpY19jYXN0PGludD4o
eSkpOwotICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZU1vdmUoKnBhZ2UsIHZpZXdQb3NpdGlvbik7
CiAKLSAgICB1c2VkUG9zaXRpb25PYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpQb2ludDo6Y3JlYXRlKCkKKyAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24+KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcp
OworICAgIGlmICghcGFyc2VkSW50ZXJhY3Rpb24pCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFtZXRlcik7CisKKyAgICBhdXRvIHBhcnNlZEJ1
dHRvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4obW91c2VCdXR0b25TdHJp
bmcpOworICAgIGlmICghcGFyc2VkQnV0dG9uKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworCisgICAgV2ViRXZlbnQ6Ok1vZGlm
aWVycyBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlmaWVycykwOworICAgIGZvciAoYXV0
byBpdCA9IGtleU1vZGlmaWVyU3RyaW5ncy5iZWdpbigpOyBpdCAhPSBrZXlNb2RpZmllclN0cmlu
Z3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgU3RyaW5nIG1vZGlmaWVyU3RyaW5nOworICAgICAg
ICBpZiAoIWl0LT5nZXQoKS0+YXNTdHJpbmcobW9kaWZpZXJTdHJpbmcpKQorICAgICAgICAgICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKwor
ICAgICAgICBhdXRvIHBhcnNlZE1vZGlmaWVyID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1v
ZGlmaWVyPihtb2RpZmllclN0cmluZyk7CisgICAgICAgIGlmICghcGFyc2VkTW9kaWZpZXIpCisg
ICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJh
bWV0ZXIpOworICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGVudW1WYWx1ZSA9IHByb3RvY29s
TW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIudmFsdWUoKSk7CisgICAg
ICAgIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJzKShlbnVtVmFsdWUgfCBrZXlN
b2RpZmllcnMpOworICAgIH0KKworICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9u
KCpwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZEludGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1
dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOworCisgICAgdXBkYXRlZFBvc2l0aW9uT2JqZWN0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRYKHgpCiAgICAgICAgIC5zZXRZKHkpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC00
NzQsNyArNTEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW92ZU1vdXNlQ3Vyc29y
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogfQogCiAjaWYgIVVTRShBUFBL
SVQpCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VNb3Zl
RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6SW50UG9pbnQmKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKQogewogfQogI2VuZGlmIC8v
ICFVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggYWY1NmNhMzIyODk2NDVhODJk
ZmU0YWUzYjk1ZDVjZjc1ZGE3ZGEyNi4uNDc2MjIwMDg5ZTI2MWJiZjUyOGExNjQ0MjYyMTVmYzA2
ZjgxMTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpAQCAtOTMs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIG1vdmVNb3VzZUN1cnNvcihJbnNwZWN0b3I6OkVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qm
IHJlcXVlc3RlZFBvc2l0aW9uLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6UG9pbnQ+JiB1c2VkUG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybU1vdXNl
SW50ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNv
bnN0IFN0cmluZyYgbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYga2V5TW9kaWZpZXJzLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1cGRhdGVkUG9zaXRpb24pIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUs
IFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5k
bGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAK
QEAgLTExNiw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVzb2x2ZVBhcmVudEZy
YW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
ZXJyb3JUeXBlKTsKIAogICAgIC8vIFBsYXRmb3JtLXNwZWNpZmljIGhlbHBlciBtZXRob2RzLgot
ICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1vdXNlTW92ZShXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKTsKKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxh
dGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBX
ZWJFdmVudDo6TW9kaWZpZXJzKTsKIAogICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29s
IHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50PiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KaW5kZXggY2VlNzQ0Y2RhYTJj
MGJkNTcyZjY0MWI4MGUzMTViMjBlYTc0MWY1YS4uMmRlYTQzNDk0ZmRkZjI3NTU5MzU1MmNjOWUy
MzdhMWE1ZDk4MmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KQEAgLTI3LDI0ICsyNywxMDAg
QEAKICNpbXBvcnQgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb24uaCIKICNpbXBvcnQgPFdlYkNv
cmUvSW50UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZU1vdmUoV2ViUGFnZVByb3h5
JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQorI2lmIFVTRShB
UFBLSVQpCisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJz
KQogewogICAgIEludFJlY3Qgd2luZG93UmVjdDsKICAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3co
SW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOwogICAgIEludFBv
aW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2NhdGlvbigpOwogCi0gICAgLy8gRklY
TUU6IFRoaXMgbWF5IG5lZWQgdG8gaW5jbHVkZSBhbnkgc3RpbGwtcHJlc3NlZCBTaGlmdCwgQ3Ry
bCwgQWx0LCBNZXRhIGtleXMgZnJvbSBhIHByZXZpb3VzIGtleSBwcmVzcyBjb21tYW5kLgogICAg
IE5TRXZlbnRNb2RpZmllckZsYWdzIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGtleU1vZGlmaWVy
cyAmIFdlYkV2ZW50OjpNZXRhS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gTlNDb21tYW5kS2V5
TWFzazsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IE5TQWx0ZXJuYXRlS2V5TWFzazsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYg
V2ViRXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBOU0NvbnRyb2xLZXlN
YXNrOworICAgIGlmIChrZXlNb2RpZmllcnMgJiBXZWJFdmVudDo6U2hpZnRLZXkpCisgICAgICAg
IG1vZGlmaWVycyB8PSBOU1NoaWZ0S2V5TWFzazsKKworICAgIE5TVGltZUludGVydmFsIHRpbWVz
dGFtcCA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKICAgICBOU1dp
bmRvdyAqd2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygpOwotICAgIE5TRXZlbnQgKnNpbXVs
YXRlZEV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TTW91c2VNb3ZlZCBsb2Nh
dGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6W05T
RGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdIHdpbmRvd051bWJlcjp3aW5kb3cu
d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDowIHByZXNz
dXJlOjAuMGZdOwotICAgIFt3aW5kb3cgc2VuZEV2ZW50OnNpbXVsYXRlZEV2ZW50XTsKKyAgICBO
U0ludGVnZXIgd2luZG93TnVtYmVyID0gd2luZG93LndpbmRvd051bWJlcjsKKworICAgIE5TRXZl
bnRUeXBlIGRvd25FdmVudFR5cGU7CisgICAgTlNFdmVudFR5cGUgZHJhZ0V2ZW50VHlwZTsKKyAg
ICBOU0V2ZW50VHlwZSB1cEV2ZW50VHlwZTsKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmU6Cisg
ICAgICAgIGRvd25FdmVudFR5cGUgPSB1cEV2ZW50VHlwZSA9IGRyYWdFdmVudFR5cGUgPSBOU01v
dXNlTW92ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6CisgICAgICAgIGRvd25FdmVudFR5cGUgPSBO
U0xlZnRNb3VzZURvd247CisgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0xlZnRNb3VzZURyYWdn
ZWQ7CisgICAgICAgIHVwRXZlbnRUeXBlID0gTlNMZWZ0TW91c2VVcDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
TWlkZGxlOgorICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNPdGhlck1vdXNlRG93bjsKKyAgICAg
ICAgZHJhZ0V2ZW50VHlwZSA9IE5TTGVmdE1vdXNlRHJhZ2dlZDsKKyAgICAgICAgdXBFdmVudFR5
cGUgPSBOU090aGVyTW91c2VVcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAgIGRvd25F
dmVudFR5cGUgPSBOU1JpZ2h0TW91c2VEb3duOworICAgICAgICB1cEV2ZW50VHlwZSA9IE5TUmln
aHRNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBOU011dGFibGVBcnJheTxO
U0V2ZW50ICo+ICpldmVudHNUb0JlU2VudCA9IFtOU011dGFibGVBcnJheSBuZXddOworCisgICAg
c3dpdGNoIChpbnRlcmFjdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6TW92ZToKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2Nh
dGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGlt
ZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6
MCBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246
CisgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sgY291bnQgdG8gb25lLCBzaW5jZSBjbGll
bnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVsYXRlZAorICAgICAgICAvLyBkb3duL3Vw
IGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVkIGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50
LgorICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJl
ciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpVcDoKKyAgICAgICAgLy8gSGFy
ZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0
IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCisgICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBv
dGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sgZXZlbnQuCisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRU
eXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVu
dE51bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlv
bjo6U2luZ2xlQ2xpY2s6CisgICAgICAgIC8vIFNlbmQgc2VwYXJhdGUgZG93biBhbmQgdXAgZXZl
bnRzLiBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQuCisgICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2Rp
ZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRl
eHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNl
QXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1v
dXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6
MC4wZl1dOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgICAgICAvLyBTZW5k
IG11bHRpcGxlIGRvd24gYW5kIHVwIGV2ZW50cyB3aXRoIHByb3BlciBjbGljayBjb3VudC4KKyAg
ICAgICAgLy8gV2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50IHRo
ZW4gZG91YmxlLWNsaWNrIGV2ZW50LgorICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0
OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRv
d1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2lu
ZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291
bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUg
bG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1w
OnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVt
YmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBs
b2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6MCBjbGlja0NvdW50OjIgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0
Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CisgICAgfQor
CisgICAgZm9yIChOU0V2ZW50ICpldmVudCBpbiBldmVudHNUb0JlU2VudCkgeworICAgICAgICAv
LyBTZXQgYW4gYXNzb2NpYXRlZCBvYmplY3Qgd2l0aCB0aGUgYXV0b21hdGlvbiBzZXNzaW9uIGlk
ZW50aWZpZXIuIFRoaXMgYWxsb3dzIGEgV2ViS2l0MiBjbGllbnQKKyAgICAgICAgLy8gdG8gdGVs
bCB3aGV0aGVyIGFuIGV2ZW50IHdhcyByZWFsIG9yIHN5bnRoZXNpemVkIG9uIGJlaGFsZiBvZiBh
biBhdXRvbWF0aW9uIGNvbW1hbmQuCisgICAgICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChl
dmVudCwgW19XS0F1dG9tYXRpb25TZXNzaW9uIGNsYXNzXSwgbV9zZXNzaW9uSWRlbnRpZmllciwg
T0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9OQVRPTUlDKTsKKyAgICAgICAgW3dpbmRvdyBzZW5k
RXZlbnQ6ZXZlbnRdOworICAgIH0KIH0KIAorCisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275035</attachid>
            <date>2016-03-28 12:02:05 -0700</date>
            <delta_ts>2016-03-28 17:36:15 -0700</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-155606-20160328120207.patch</filename>
            <type>text/plain</type>
            <size>26825</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTc0NTcwNjk2ZjMyMTcy
NzAyYTk0OTI4N2U4MTVkNDI5NGI0ZGI2MS4uOGRjNjIyY2Y2N2M2MGJlOTkxOTk1YWU0YmQxZmM2
ZmY1OTRhZGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTAzLTIyICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBs
ZW1lbnQgQXV0b21hdGlvbi5wZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTIyNzU3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIGNvbW1vbiBtb3VzZSBpbnRlcmFjdGlv
bnMgYnkgc3ludGhlc2l6aW5nIG5hdGl2ZSBldmVudHMuCisgICAgICAgIFRoZSBjcmVhdGlvbiBh
bmQgZGlzcGF0Y2hpbmcgb2Ygc2ltdWxhdGVkIGV2ZW50cyBpcyBpbXBsZW1lbnRlZCBzZXBhcmF0
ZWx5IHBlcgorICAgICAgICBhcHBsaWNhdGlvbi93aW5kb3cvZXZlbnQgZnJhbWV3b3JrLiBUaGlz
IHBhdGNoIGFkZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHBvcnRzCisgICAgICAgIHRoYXQgdXNl
IEFwcEtpdC4KKworICAgICAgICBUaGUgZXZlbnQgaXMgY3JlYXRlZCBzeW50aGV0aWNhbGx5IGlu
IGEgcGxhdGZvcm0tc3BlY2lmaWMgd2F5IGFuZCBkZWxpdmVyZWQgdG8KKyAgICAgICAgdGhlIHBs
YXRmb3JtJ3Mgd2luZG93IGluIHRoZSBVSVByb2Nlc3MuIFRoZSBldmVudCBnb2VzIHRocm91Z2gg
YWxsIHRoZQorICAgICAgICBsYXllcnMgb2YgcHJvY2Vzc2luZyB0aGF0IGEgcmVhbCBtb3VzZSBl
dmVudCBjb3VsZCBnbyB0aHJvdWdoIG9uY2UgaXQgcmVhY2hlcworICAgICAgICBXZWJLaXQgaXRz
ZWxmLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOiBB
ZGQgbmV3IGVudW1zIGFuZCBjb21tYW5kLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1v
ZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAgIENsaXAg
dGhlIHJlcXVlc3RlZCBjdXJzb3IgcG9zaXRpb24gc28gdGhhdCBpdCBzdGF5cyB3aXRoaW4gdGhl
IHNlbGVjdGVkIHdpbmRvdydzCisgICAgICAgIGZyYW1lIGFuZCBkb2Vzbid0IHdhbmRlciBvZmYg
aW50byBvdGhlciB3aW5kb3dzIG9yIGFwcGxpY2F0aW9ucy4gRmlyZSBpdCB1c2luZworICAgICAg
ICB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgc2ltdWxhdGlvbiBtZXRob2QuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0
aW9uKTogQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxh
dGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgQ29udmVydCBB
dXRvbWF0aW9uIHByb3RvY29sIHZhbHVlcyB0byBBcHBLaXQgdmFsdWVzLiBTaW11bGF0ZSBhbmQg
ZGlzcGF0Y2gKKyAgICAgICAgb25lIG9yIG1vcmUgZXZlbnRzIGRlcGVuZGluZyBvbiB0aGUgZGVz
aXJlZCBpbnRlcmFjdGlvbi4KKwogMjAxNi0wMy0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDkx
MjU5ZWQ4YThiY2E4ZTEzNjg3OWViNDlmN2RiYWM2NGQxOGEzMmIuLjc2ZDZhYTUxMjkxY2Y3YjBl
Y2RkOGMxMzI4MTc2ODMyM2EzYjMyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTUzLDcgKzUzLDggQEAKICAgICAg
ICAgICAgICAgICAiTm9kZU5vdEZvdW5kIiwKICAgICAgICAgICAgICAgICAiTm9KYXZhU2NyaXB0
RGlhbG9nIiwKICAgICAgICAgICAgICAgICAiTm90SW1wbGVtZW50ZWQiLAotICAgICAgICAgICAg
ICAgICJNaXNzaW5nUGFyYW1ldGVyIgorICAgICAgICAgICAgICAgICJNaXNzaW5nUGFyYW1ldGVy
IiwKKyAgICAgICAgICAgICAgICAiSW52YWxpZFBhcmFtZXRlciIKICAgICAgICAgICAgIF0KICAg
ICAgICAgfSwKICAgICAgICAgewpAQCAtNjUsNiArNjYsNDEgQEAKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImFjdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiV2hl
dGhlciB0aGUgYnJvd3NpbmcgY29udGV4dCBoYXMgZm9jdXMgYXQgdGhlIHRpbWUgdGhlIGNvbW1h
bmQgaXMgaGFuZGxlZC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIFVSTCBsb2FkZWQgYnkgdGhlIGJyb3dz
aW5nIGNvbnRleHQgYXQgdGhlIHRpbWUgdGhlIGNvbW1hbmQgaXMgaGFuZGxlZC4iIH0KICAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIk1vdXNl
SW50ZXJhY3Rpb24iLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJFbnVtZXJhdGVzIGRpZmZlcmVudCB3YXlzIG9mIGludGVyYWN0aW5n
IHdpdGggYSBtb3VzZSBjdXJzb3IuIiwKKyAgICAgICAgICAgICJlbnVtIjogWworICAgICAgICAg
ICAgICAgICJNb3ZlIiwKKyAgICAgICAgICAgICAgICAiRG93biIsCisgICAgICAgICAgICAgICAg
IlVwIiwKKyAgICAgICAgICAgICAgICAiU2luZ2xlQ2xpY2siLAorICAgICAgICAgICAgICAgICJE
b3VibGVDbGljayIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgImlkIjogIk1vdXNlQnV0dG9uIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW51bWVyYXRlcyBkaWZmZXJlbnQgbW91c2Ug
YnV0dG9ucyB0aGF0IGNhbiBiZSB1c2VkLiIsCisgICAgICAgICAgICAiZW51bSI6IFsKKyAgICAg
ICAgICAgICAgICAiTm9uZSIsCisgICAgICAgICAgICAgICAgIkxlZnQiLAorICAgICAgICAgICAg
ICAgICJNaWRkbGUiLAorICAgICAgICAgICAgICAgICJSaWdodCIKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIktleU1vZGlmaWVyIiwKKyAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RW51bWVyYXRlcyBkaWZmZXJlbnQga2V5IG1vZGlmaWVycyB0aGF0IGNhbiByZW1haW4gcHJlc3Nl
ZCBkdXJpbmcgb3RoZXIgbW91c2UvdG91Y2ggaW50ZXJhY3Rpb25zLiIsCisgICAgICAgICAgICAi
ZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiQ2Fwc0xvY2siLAorICAgICAgICAgICAgICAgICJD
b250cm9sIiwKKyAgICAgICAgICAgICAgICAiU2hpZnQiLAorICAgICAgICAgICAgICAgICJNZXRh
IiwKKyAgICAgICAgICAgICAgICAiQWx0IgorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAg
XSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0xNTIsNiArMTg4LDIwIEBACiAgICAgICAgICAgICAi
YXN5bmMiOiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InBlcmZvcm1Nb3VzZUludGVyYWN0aW9uIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJT
aW11bGF0ZXMgaW50ZXJhY3Rpb24gd2l0aCBhIG1vdXNlIGN1cnNvci4iLAorICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJl
ZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJyb3dzaW5n
IGNvbnRleHQgdG8gYmUgaW50ZXJhY3RlZCB3aXRoLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc2l0aW9uIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJl
cXVlc3RlZCBwb3NpdGlvbiBmb3IgdGhlIG1vdXNlIGN1cnNvciwgc3BlY2lmaWVkIGluIHZpZXdw
b3J0IGNvb3JkaW5hdGVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1dHRvbiIs
ICIkcmVmIjogIk1vdXNlQnV0dG9uIiwgImRlc2NyaXB0aW9uIjogIlRoZSBidXR0b24gdG8gdXNl
IHRvIHBlcmZvcm0gdGhlIGludGVyYWN0aW9uLiBUaGlzIHBhcmFtZXRlciBvbmx5IGhhcyBhbiBl
ZmZlY3QgZm9yIHRoZSA8Y29kZT5Eb3duPC9jb2RlPiwgPGNvZGU+VXA8L2NvZGU+LCA8Y29kZT5D
bGljazwvY29kZT4sIGFuZCA8Y29kZT5Eb3VibGVDbGljazwvY29kZT4gbW91c2UgaW50ZXJhY3Rp
b25zLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImludGVyYWN0aW9uIiwgIiRyZWYi
OiAiTW91c2VJbnRlcmFjdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBvZiBpbnRlcmFj
dGlvbiB0byBiZSBwZXJmb3JtZWQgd2l0aCB0aGUgbW91c2UgY3Vyc29yLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1vZGlmaWVycyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAiJHJlZiI6ICJLZXlNb2RpZmllciIgfSwgImRlc2NyaXB0aW9uIjogIktleSBtb2RpZmllcnMg
dG8gYmUgYWN0aXZlIGR1cmluZyB0aGUgbW91c2UgaW50ZXJhY3Rpb24uIiB9CisgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwb3NpdGlvbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSB1cGRhdGVk
IHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBjdXJzb3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29y
ZGluYXRlcy4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAg
ICAgICAgIm5hbWUiOiAicmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUiLAogICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkRldGVybWluZXMgdGhlIDxjb2RlPkZyYW1lSGFuZGxlPC9jb2RlPiBiYXNl
ZCBvbiB0aGUgb3JkaW5hbCwgbmFtZSBvciBub2RlIGhhbmRsZSBvZiBhIGNoaWxkIGZyYW1lLiIs
CiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCAxZmM0M2JlMzRmNTY5ZGM4ZWJiNzY0ZDY2NDY3MDI1YzY3ZWQyYWY1Li4xN2EzNWJkNmM4YTZk
YWUwMTA3NzY4NjEzMWZkMzg0YzNjYjkwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VVVJRC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtNTQyLDQgKzU0Myw4NCBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21w
dChJbnNwZWN0b3I6OkVycgogICAgIG1fY2xpZW50LT5zZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2
YVNjcmlwdFByb21wdE9uUGFnZSh0aGlzLCBwYWdlLCBwcm9tcHRWYWx1ZSk7CiB9CiAKK3N0YXRp
YyBXZWJFdmVudDo6TW9kaWZpZXJzIHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIo
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXIgbW9kaWZpZXIpCit7
CisgICAgc3dpdGNoIChtb2RpZmllcikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkFsdDoKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpB
bHRLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2Rp
Zmllcjo6TWV0YToKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpNZXRhS2V5OworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkNvbnRyb2w6Cisg
ICAgICAgIHJldHVybiBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpTaGlmdDoKKyAgICAgICAgcmV0dXJu
IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OktleU1vZGlmaWVyOjpDYXBzTG9jazoKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpD
YXBzTG9ja0tleTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHJl
cXVlc3RlZFBvc2l0aW9uT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1vdXNlQnV0dG9uU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcsIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkmIGtleU1vZGlmaWVyU3RyaW5ncywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlBvaW50PiYgdXBkYXRlZFBvc2l0aW9uT2JqZWN0KQoreworI2lmICFV
U0UoQVBQS0lUKQorICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTm90SW1w
bGVtZW50ZWQpOworI2Vsc2UKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlG
b3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworCisgICAgLy8gRklYTUUgPHJk
YXI6Ly9wcm9ibGVtLzI1MDk0MTA2PjogU3BlY2lmeSB3aGF0IHBhcmFtZXRlciB3YXMgbWlzc2lu
ZyBvciBpbnZhbGlkIGFuZCBob3cuCisgICAgLy8gVGhpcyByZXF1aXJlcyBzb21lIGNoYW5nZXMg
dG8gdGhlIG90aGVyIGVuZCdzIGVycm9yIGhhbmRsaW5nLiBSaWdodCBub3cgaXQgbG9va3MgZm9y
IGFuCisgICAgLy8gZXhhY3QgZXJyb3IgbWVzc2FnZSBtYXRjaC4gV2UgY291bGQgc3R1ZmYgdGhp
cyBpbnRvIHRoZSAnZGF0YScgZmllbGQgb24gZXJyb3Igb2JqZWN0LgorICAgIGZsb2F0IHg7Cisg
ICAgaWYgKCFyZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVy
YWwoIngiKSwgeCkpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
TWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICBmbG9hdCB5OworICAgIGlmICghcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ5IiksIHkpKQorICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOwor
CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lOworICAgIHBhZ2UtPmdldFdpbmRv
d0ZyYW1lKHdpbmRvd0ZyYW1lKTsKKworICAgIHggPSBzdGQ6Om1heChzdGQ6Om1pbigwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOworICAgIHkgPSBzdGQ6Om1heChzdGQ6Om1p
bigwLjBmLCB5KSwgd2luZG93RnJhbWUuc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6
OkludFBvaW50IHZpZXdQb3NpdGlvbiA9IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19jYXN0PGlu
dD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOworCisgICAgYXV0byBwYXJzZWRJbnRlcmFjdGlv
biA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0
aW9uU3RyaW5nKTsKKyAgICBpZiAoIXBhcnNlZEludGVyYWN0aW9uKQorICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworCisgICAgYXV0
byBwYXJzZWRCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24+KG1vdXNl
QnV0dG9uU3RyaW5nKTsKKyAgICBpZiAoIXBhcnNlZEJ1dHRvbikKKyAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKworICAgIFdlYkV2
ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpMDsKKyAg
ICBmb3IgKGF1dG8gaXQgPSBrZXlNb2RpZmllclN0cmluZ3MuYmVnaW4oKTsgaXQgIT0ga2V5TW9k
aWZpZXJTdHJpbmdzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFN0cmluZyBtb2RpZmllclN0cmlu
ZzsKKyAgICAgICAgaWYgKCFpdC0+Z2V0KCktPmFzU3RyaW5nKG1vZGlmaWVyU3RyaW5nKSkKKyAg
ICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFt
ZXRlcik7CisKKyAgICAgICAgYXV0byBwYXJzZWRNb2RpZmllciA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlNb2RpZmllcj4obW9kaWZpZXJTdHJpbmcpOworICAgICAgICBpZiAoIXBhcnNlZE1v
ZGlmaWVyKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJ
bnZhbGlkUGFyYW1ldGVyKTsKKyAgICAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBlbnVtVmFsdWUg
PSBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKHBhcnNlZE1vZGlmaWVyLnZhbHVl
KCkpOworICAgICAgICBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlmaWVycykoZW51bVZh
bHVlIHwga2V5TW9kaWZpZXJzKTsKKyAgICB9CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJ
bnRlcmFjdGlvbigqcGFnZSwgdmlld1Bvc2l0aW9uLCBwYXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgp
LCBwYXJzZWRCdXR0b24udmFsdWUoKSwga2V5TW9kaWZpZXJzKTsKKworICAgIHVwZGF0ZWRQb3Np
dGlvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBvaW50OjpjcmVh
dGUoKQorICAgICAgICAuc2V0WCh4KQorICAgICAgICAuc2V0WSh5KQorICAgICAgICAucmVsZWFz
ZSgpOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCit9CisKKyNpZiAhVVNFKEFQUEtJVCkKK3ZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycykKK3sKK30K
KyNlbmRpZiAvLyAhVVNFKEFQUEtJVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uaAppbmRleCA2ZDhiYWExZGU5M2Y0YzI2OWZhZDZlNTU2ZmIwNDc4NDRkZDE3MTcw
Li5mNDNiY2JhNGEwNDUzZDUwMjgyNmY0NmUxNDBjNTk1YzQxMjhmNDZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmgKQEAgLTIzLDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQXV0b21hdGlvblNlc3Npb25faAotI2RlZmluZSBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgogI2luY2x1ZGUgIkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC00OCw2ICs0OCwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogfQogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBJbnRQb2ludDsKK30KKworI2lmIFVTRShBUFBLSVQpCitPQkpDX0NMQVNT
IE5TQXJyYXk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50OwpAQCAtOTIsNiArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsb2FkQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1l
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5JiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
UmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwZXJm
b3JtTW91c2VJbnRlcmFjdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiByZXF1ZXN0ZWRQb3Np
dGlvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUludGVy
YWN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBrZXlNb2RpZmllcnMsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludD4mIHVwZGF0ZWRQb3Np
dGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGlu
YWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9k
ZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
cmFtZUhhbmRsZSwgUmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
cmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25h
bFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIHVzZVZpZXdwb3J0Q29vcmRpbmF0
ZXMsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNv
bXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwpAQCAtMTE4LDYgKzEyNywx
MyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKICAg
ICB2b2lkIGRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNv
cmU6OkludFJlY3QsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIAorICAgIC8vIFBsYXRmb3Jt
LXNwZWNpZmljIGhlbHBlciBtZXRob2RzLgorICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQ
b3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlv
biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24sIFdlYkV2ZW50
OjpNb2RpZmllcnMpOworCisjaWYgVVNFKEFQUEtJVCkKKyAgICB2b2lkIHNlbmRTeW50aGVzaXpl
ZEV2ZW50c1RvUGFnZShXZWJQYWdlUHJveHkmLCBOU0FycmF5ICpldmVudHNUb1NlbmQpOworI2Vu
ZGlmCisKICAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7IG51bGxwdHIgfTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PiBtX2NsaWVu
dDsKQEAgLTE1MSw1ICsxNjcsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJBdXRvbWF0aW9uU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ3MTlhNWViNjk4N2M5YmU1YzA4YTg0YTExZWRkNGI4NTgwM2MyN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViQXV0
b21hdGlvblNlc3Npb25Db2NvYS5tbQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKworI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
I2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnRTaXplLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgorI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworI2lmIFVTRShBUFBLSVQpCisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNlbmRT
eW50aGVzaXplZEV2ZW50c1RvUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIE5TQXJyYXkgKmV2ZW50
c1RvU2VuZCkKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygp
OworCisgICAgZm9yIChOU0V2ZW50ICpldmVudCBpbiBldmVudHNUb1NlbmQpIHsKKyAgICAgICAg
Ly8gU2V0IGFuIGFzc29jaWF0ZWQgb2JqZWN0IHdpdGggdGhlIGF1dG9tYXRpb24gc2Vzc2lvbiBp
ZGVudGlmaWVyLiBUaGlzIGFsbG93cyBhIFdlYktpdDIgY2xpZW50CisgICAgICAgIC8vIHRvIHRl
bGwgd2hldGhlciBhbiBldmVudCB3YXMgcmVhbCBvciBzeW50aGVzaXplZCBvbiBiZWhhbGYgb2Yg
YW4gYXV0b21hdGlvbiBjb21tYW5kLgorICAgICAgICBvYmpjX3NldEFzc29jaWF0ZWRPYmplY3Qo
ZXZlbnQsIFtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBjbGFzc10sIG1fc2Vzc2lvbklkZW50aWZpZXIs
IE9CSkNfQVNTT0NJQVRJT05fUkVUQUlOX05PTkFUT01JQyk7CisgICAgICAgIFt3aW5kb3cgc2Vu
ZEV2ZW50OmV2ZW50XTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtl
eU1vZGlmaWVycykKK3sKKyAgICBJbnRSZWN0IHdpbmRvd1JlY3Q7CisgICAgcGFnZS5yb290Vmll
d1RvV2luZG93KEludFJlY3Qodmlld1Bvc2l0aW9uLCBJbnRTaXplKCkpLCB3aW5kb3dSZWN0KTsK
KyAgICBJbnRQb2ludCB3aW5kb3dQb3NpdGlvbiA9IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKKwor
ICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGtleU1vZGlm
aWVycyAmIFdlYkV2ZW50OjpNZXRhS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gTlNDb21tYW5k
S2V5TWFzazsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IE5TQWx0ZXJuYXRlS2V5TWFzazsKKyAgICBpZiAoa2V5TW9kaWZpZXJz
ICYgV2ViRXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBOU0NvbnRyb2xL
ZXlNYXNrOworICAgIGlmIChrZXlNb2RpZmllcnMgJiBXZWJFdmVudDo6U2hpZnRLZXkpCisgICAg
ICAgIG1vZGlmaWVycyB8PSBOU1NoaWZ0S2V5TWFzazsKKworICAgIE5TVGltZUludGVydmFsIHRp
bWVzdGFtcCA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKKyAgICBO
U1dpbmRvdyAqd2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygpOworICAgIE5TSW50ZWdlciB3
aW5kb3dOdW1iZXIgPSB3aW5kb3cud2luZG93TnVtYmVyOworCisgICAgTlNFdmVudFR5cGUgZG93
bkV2ZW50VHlwZTsKKyAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlOworICAgIE5TRXZlbnRU
eXBlIHVwRXZlbnRUeXBlOworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKKyAgICAgICAgZG93
bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5TTW91c2VNb3ZlZDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TTGVmdE1vdXNl
RG93bjsKKyAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TTGVmdE1vdXNlRHJhZ2dlZDsKKyAgICAg
ICAgdXBFdmVudFR5cGUgPSBOU0xlZnRNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6Cisg
ICAgICAgIGRvd25FdmVudFR5cGUgPSBOU090aGVyTW91c2VEb3duOworICAgICAgICBkcmFnRXZl
bnRUeXBlID0gTlNMZWZ0TW91c2VEcmFnZ2VkOworICAgICAgICB1cEV2ZW50VHlwZSA9IE5TT3Ro
ZXJNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9
IE5TUmlnaHRNb3VzZURvd247CisgICAgICAgIHVwRXZlbnRUeXBlID0gTlNSaWdodE1vdXNlVXA7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIE5TTXV0YWJsZUFycmF5PE5TRXZlbnQgKj4g
KmV2ZW50c1RvQmVTZW50ID0gW05TTXV0YWJsZUFycmF5IG5ld107CisKKyAgICBzd2l0Y2ggKGlu
dGVyYWN0aW9uKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0
OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRv
d1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2lu
ZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291
bnQ6MCBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICAgICAg
Ly8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3Qg
ZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCisgICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRv
IGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sgZXZlbnQuCisgICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRv
d25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRD
bGlja11dOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAgICAgICAvLyBIYXJkLWNvZGUgdGhl
IGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vzc2l2
ZSBzaW11bGF0ZWQKKyAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFsbHkg
Y291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRp
b246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAg
Y2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVD
bGljazoKKyAgICAgICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNv
cmUgd2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50
VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07
CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdp
dGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBj
b250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUg
ZG93biBhbmQgdXAgZXZlbnRzIHdpdGggcHJvcGVyIGNsaWNrIGNvdW50LgorICAgICAgICAvLyBX
ZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUt
Y2xpY2sgZXZlbnQuCisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQg
bW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24g
bW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6
d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNz
dXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3
aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1w
IHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlj
a0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndp
bmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNr
Q291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5
cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOjAgY2xpY2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKKyAgICB9CisKKyAgICBzZW5k
U3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQpOworfQorCisjZW5k
aWYgLy8gVVNFKEFQUEtJVCkKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDE0ZWJlZDBiZTA4YTdiMmQzYTlhZWRlNmM3
MzkxMDEyNThhNDQ1ZC4uYWEwNDg2YzU3ZGUyNmIzOGI2MjBlYTYyNDk4ODk5MTM1MDRmMjYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTA5NSw2ICsxMDk1
LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKIAorICAg
IHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdm9p
ZCBnZXRXaW5kb3dGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHNjcmVlblRv
Um9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBXZWJDb3JlOjpJ
bnRQb2ludCYgd2luZG93UG9pbnQpOworICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0KTsKKwog
ICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWQoYm9vbCk7CiAKQEAgLTExOTcsMTAgKzEyMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2V0U3RhdHVzQmFySXNWaXNpYmxlKGJvb2wmIHN0YXR1c0JhcklzVmlzaWJsZSk7CiAgICAgdm9p
ZCBzZXRJc1Jlc2l6YWJsZShib29sIGlzUmVzaXphYmxlKTsKICAgICB2b2lkIGdldElzUmVzaXph
YmxlKGJvb2wmIGlzUmVzaXphYmxlKTsKLSAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZvaWQgZ2V0V2luZG93RnJhbWUoV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7Ci0gICAgdm9pZCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKLSAgICB2
b2lkIHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFdl
YkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgYWNj
ZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVl
blBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3Qs
IFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGRjMDZhOGNiYzk0MGNiNGI4NGRjNTM2
MTY2ZjA1YWU0ZTI4NTgwNy4uNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3ZmU1NTI0MGE5ZmFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTIzOCw2ICsxMjM4LDcgQEAKIAkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2QTkzIC8q
IEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi87IH07CiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2
QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CisJCTk5ODZCREQ3MUNBOUEyMkMwMDQ4MDBB
QSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4
MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGll
bnQubW0gKi87IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4
MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4
MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0
QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTMyNzEsNiArMzI3Miw3IEBA
CiAJCTk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25CYWNrZW5k
RGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RjIxQzc5
ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRv
bWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4
MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAw
NUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDYzMSw2ICs0NjMzLDcgQEAKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyog
VUlEZWxlZ2F0ZS5tbSAqLywKIAkJCQlFNEU4NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lv
bkNoZWNrcy5oICovLAogCQkJCUU0RTg2NDhGMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hl
Y2tzLm1tICovLAorCQkJCTk5ODZCREQ2MUNBOUEyMjIwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTFBQzAyNzNFMTk2NjIyRDYwMEMxMkI3NSAvKiBXZWJQ
YWdlUHJveHlDb2NvYS5tbSAqLywKIAkJCQk3QzQ2OTRDQjFBNEI1MTBBMDBBRDU4NDUgLyogV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUy
IC8qIFdlYlByb2Nlc3NQb29sQ29jb2EubW0gKi8sCkBAIC05NDU1LDYgKzk0NTgsNyBAQAogCQkJ
CUM1RTFBRkVBMTZCMjBCN0IwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUEyRTU2NjE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNz
QnVuZGxlUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDOTg5RDgxMTYxQTdFNUQw
MDBENDZEMyAvKiBXS1dlYlByb2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTg2
QkRENzFDQTlBMjJDMDA0ODAwQUEgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDOEYyRjJBMTYyNzNBMkMwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjc1
MDZBRDE4NTkxNjFDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luSGl0VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275069</attachid>
            <date>2016-03-28 17:36:18 -0700</date>
            <delta_ts>2016-03-28 20:11:59 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-155606-20160328173621.patch</filename>
            <type>text/plain</type>
            <size>25672</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmIwNzI3MzAwZjcwMDgx
Yzk5MmEwZmEzMzViY2FjMzk5MDYwNjFhOS4uMDNkOGU1YmQzZWE4OGQ2OTg2MThkYWJhM2E4YzMz
NDc5OGY4N2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTAzLTI4ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBs
ZW1lbnQgQXV0b21hdGlvbi5wZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTIyNzU3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyBjb21tb24gbW91c2UgaW50ZXJhY3Rp
b25zIGJ5IHN5bnRoZXNpemluZyBuYXRpdmUgZXZlbnRzLgorICAgICAgICBUaGUgY3JlYXRpb24g
YW5kIGRpc3BhdGNoaW5nIG9mIHNpbXVsYXRlZCBldmVudHMgaXMgaW1wbGVtZW50ZWQgc2VwYXJh
dGVseSBwZXIKKyAgICAgICAgYXBwbGljYXRpb24vd2luZG93L2V2ZW50IGZyYW1ld29yay4gVGhp
cyBwYXRjaCBhZGRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBwb3J0cworICAgICAgICB0aGF0IHVz
ZSBBcHBLaXQuCisKKyAgICAgICAgVGhlIGV2ZW50IGlzIGNyZWF0ZWQgc3ludGhldGljYWxseSBp
biBhIHBsYXRmb3JtLXNwZWNpZmljIHdheSBhbmQgZGVsaXZlcmVkIHRvCisgICAgICAgIHRoZSBw
bGF0Zm9ybSdzIHdpbmRvdyBpbiB0aGUgVUlQcm9jZXNzLiBUaGUgZXZlbnQgZ29lcyB0aHJvdWdo
IGFsbCB0aGUKKyAgICAgICAgbGF5ZXJzIG9mIHByb2Nlc3NpbmcgdGhhdCBhIHJlYWwgbW91c2Ug
ZXZlbnQgY291bGQgZ28gdGhyb3VnaCBvbmNlIGl0IHJlYWNoZXMKKyAgICAgICAgV2ViS2l0IGl0
c2VsZi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjog
QWRkIG5ldyBlbnVtcyBhbmQgY29tbWFuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xN
b2RpZmllclRvV2ViRXZlbnRNb2RpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorICAgICAgICBDbGlw
IHRoZSByZXF1ZXN0ZWQgY3Vyc29yIHBvc2l0aW9uIHNvIHRoYXQgaXQgc3RheXMgd2l0aGluIHRo
ZSBzZWxlY3RlZCB3aW5kb3cncworICAgICAgICBmcmFtZSBhbmQgZG9lc24ndCB3YW5kZXIgb2Zm
IGludG8gb3RoZXIgd2luZG93cyBvciBhcHBsaWNhdGlvbnMuIEZpcmUgaXQgdXNpbmcKKyAgICAg
ICAgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHNpbXVsYXRpb24gbWV0aG9kLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbik6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNl
c3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAgIENvbnZlcnQg
QXV0b21hdGlvbiBwcm90b2NvbCB2YWx1ZXMgdG8gQXBwS2l0IHZhbHVlcy4gU2ltdWxhdGUgYW5k
IGRpc3BhdGNoCisgICAgICAgIG9uZSBvciBtb3JlIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIGRl
c2lyZWQgaW50ZXJhY3Rpb24uCisKIDIwMTYtMDMtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IFJlbW92ZSBhYnN0cmFjdCBiYXNlIGNs
YXNzZXMgZm9yIGFsbCBJREIgRE9NIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KaW5kZXggNDcyODkyMTE5ZTg4MjVj
MjE5NzRhOWI4YmE0NDFmNWNiODhmYjVlYS4uODU0YTBjMjU1NzdkMWUwMGE0MGQ2ZWZlNGYzYTQ0
Y2NlNTk0MTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRp
b24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtNjgsNiArNjgsNDEgQEAKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIndpbmRvd1NpemUiLCAiJHJlZiI6ICJTaXplIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSBjdXJyZW50IHNpemUgb2YgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luZG93T3JpZ2luIiwgIiRyZWYiOiAiUG9pbnQiLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgKHgsIHkpIHBvc2l0aW9uIG9mIHRoZSBicm93c2lu
ZyBjb250ZXh0J3Mgd2luZG93IHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBvZiB0aGUgc2NyZWVu
LiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
aWQiOiAiTW91c2VJbnRlcmFjdGlvbiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMgZGlmZmVyZW50IHdheXMgb2Yg
aW50ZXJhY3Rpbmcgd2l0aCBhIG1vdXNlIGN1cnNvci4iLAorICAgICAgICAgICAgImVudW0iOiBb
CisgICAgICAgICAgICAgICAgIk1vdmUiLAorICAgICAgICAgICAgICAgICJEb3duIiwKKyAgICAg
ICAgICAgICAgICAiVXAiLAorICAgICAgICAgICAgICAgICJTaW5nbGVDbGljayIsCisgICAgICAg
ICAgICAgICAgIkRvdWJsZUNsaWNrIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiTW91c2VCdXR0b24iLAorICAgICAgICAgICAgInR5cGUi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbnVtZXJhdGVzIGRpZmZl
cmVudCBtb3VzZSBidXR0b25zIHRoYXQgY2FuIGJlIHVzZWQuIiwKKyAgICAgICAgICAgICJlbnVt
IjogWworICAgICAgICAgICAgICAgICJOb25lIiwKKyAgICAgICAgICAgICAgICAiTGVmdCIsCisg
ICAgICAgICAgICAgICAgIk1pZGRsZSIsCisgICAgICAgICAgICAgICAgIlJpZ2h0IgorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiS2V5TW9k
aWZpZXIiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJFbnVtZXJhdGVzIGRpZmZlcmVudCBrZXkgbW9kaWZpZXJzIHRoYXQgY2FuIHJl
bWFpbiBwcmVzc2VkIGR1cmluZyBvdGhlciBtb3VzZS90b3VjaCBpbnRlcmFjdGlvbnMuIiwKKyAg
ICAgICAgICAgICJlbnVtIjogWworICAgICAgICAgICAgICAgICJDYXBzTG9jayIsCisgICAgICAg
ICAgICAgICAgIkNvbnRyb2wiLAorICAgICAgICAgICAgICAgICJTaGlmdCIsCisgICAgICAgICAg
ICAgICAgIk1ldGEiLAorICAgICAgICAgICAgICAgICJBbHQiCisgICAgICAgICAgICBdCiAgICAg
ICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKQEAgLTE3MSw2ICsyMDYsMjAgQEAKICAg
ICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAicGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24iLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlNpbXVsYXRlcyBpbnRlcmFjdGlvbiB3aXRoIGEgbW91c2UgY3Vyc29yLiIsCisg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhh
bmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlv
biI6ICJUaGUgcmVxdWVzdGVkIHBvc2l0aW9uIGZvciB0aGUgbW91c2UgY3Vyc29yLCBzcGVjaWZp
ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYnV0dG9uIiwgIiRyZWYiOiAiTW91c2VCdXR0b24iLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJ1
dHRvbiB0byB1c2UgdG8gcGVyZm9ybSB0aGUgaW50ZXJhY3Rpb24uIFRoaXMgcGFyYW1ldGVyIG9u
bHkgaGFzIGFuIGVmZmVjdCBmb3IgdGhlIDxjb2RlPkRvd248L2NvZGU+LCA8Y29kZT5VcDwvY29k
ZT4sIDxjb2RlPkNsaWNrPC9jb2RlPiwgYW5kIDxjb2RlPkRvdWJsZUNsaWNrPC9jb2RlPiBtb3Vz
ZSBpbnRlcmFjdGlvbnMuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW50ZXJhY3Rp
b24iLCAiJHJlZiI6ICJNb3VzZUludGVyYWN0aW9uIiwgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBl
IG9mIGludGVyYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBtb3VzZSBjdXJzb3IuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibW9kaWZpZXJzIiwgInR5cGUiOiAiYXJyYXki
LCAiaXRlbXMiOiB7ICIkcmVmIjogIktleU1vZGlmaWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiS2V5
IG1vZGlmaWVycyB0byBiZSBhY3RpdmUgZHVyaW5nIHRoZSBtb3VzZSBpbnRlcmFjdGlvbi4iIH0K
KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInBvc2l0aW9uIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIHVwZGF0ZWQgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGN1cnNvciwgc3BlY2lmaWVkIGluIHZp
ZXdwb3J0IGNvb3JkaW5hdGVzLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZSIsCiAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB0aGUgPGNvZGU+RnJhbWVIYW5kbGU8
L2NvZGU+IGJhc2VkIG9uIHRoZSBvcmRpbmFsLCBuYW1lIG9yIG5vZGUgaGFuZGxlIG9mIGEgY2hp
bGQgZnJhbWUuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IGMyMDIwOTliNTJkMDg2NmI5NGEyYTg5ZGFhY2ExZjRhOGJmYjc2ODEuLjkz
M2ZiNzBkNGY2MDE4NDFlNzExMmZiZDBlODUzNzE3YTczNTg5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9VVUlELmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC02MzEsNCArNjMyLDg0
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZh
U2NyaXB0UHJvbXB0KEluc3BlY3Rvcjo6RXJyCiAgICAgbV9jbGllbnQtPnNldFVzZXJJbnB1dEZv
ckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKHRoaXMsIHBhZ2UsIHByb21wdFZhbHVlKTsK
IH0KIAorc3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBt
b2RpZmllcikKK3sKKyAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllcjo6QWx0OgorICAgICAgICByZXR1cm4g
V2ViRXZlbnQ6OkFsdEtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OktleU1vZGlmaWVyOjpNZXRhOgorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok1ldGFLZXk7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllcjo6
Q29udHJvbDoKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OlNoaWZ0OgorICAg
ICAgICByZXR1cm4gV2ViRXZlbnQ6OlNoaWZ0S2V5OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkNhcHNMb2NrOgorICAgICAgICByZXR1cm4g
V2ViRXZlbnQ6OkNhcHNMb2NrS2V5OworICAgIH0KK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0
b25TdHJpbmcsIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheSYga2V5TW9kaWZpZXJTdHJpbmdzLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1cGRhdGVkUG9zaXRpb25PYmplY3Qp
Cit7CisjaWYgIVVTRShBUFBLSVQpCisgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShOb3RJbXBsZW1lbnRlZCk7CisjZWxzZQorICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisKKyAgICAv
LyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjUwOTQxMDY+OiBTcGVjaWZ5IHdoYXQgcGFyYW1ldGVy
IHdhcyBtaXNzaW5nIG9yIGludmFsaWQgYW5kIGhvdy4KKyAgICAvLyBUaGlzIHJlcXVpcmVzIHNv
bWUgY2hhbmdlcyB0byB0aGUgb3RoZXIgZW5kJ3MgZXJyb3IgaGFuZGxpbmcuIFJpZ2h0IG5vdyBp
dCBsb29rcyBmb3IgYW4KKyAgICAvLyBleGFjdCBlcnJvciBtZXNzYWdlIG1hdGNoLiBXZSBjb3Vs
ZCBzdHVmZiB0aGlzIGludG8gdGhlICdkYXRhJyBmaWVsZCBvbiBlcnJvciBvYmplY3QuCisgICAg
ZmxvYXQgeDsKKyAgICBpZiAoIXJlcXVlc3RlZFBvc2l0aW9uT2JqZWN0LmdldERvdWJsZShXVEY6
OkFTQ0lJTGl0ZXJhbCgieCIpLCB4KSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKworICAgIGZsb2F0IHk7CisgICAgaWYgKCFy
ZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoInkiKSwg
eSkpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoTWlzc2luZ1Bh
cmFtZXRlcik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWU7CisgICAgcGFn
ZS0+Z2V0V2luZG93RnJhbWUod2luZG93RnJhbWUpOworCisgICAgeCA9IHN0ZDo6bWF4KHN0ZDo6
bWluKDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXplKCkud2lkdGgoKSk7CisgICAgeSA9IHN0ZDo6
bWF4KHN0ZDo6bWluKDAuMGYsIHkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworCisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgdmlld1Bvc2l0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7CisKKyAgICBhdXRvIHBhcnNl
ZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24+KG1v
dXNlSW50ZXJhY3Rpb25TdHJpbmcpOworICAgIGlmICghcGFyc2VkSW50ZXJhY3Rpb24pCisgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFtZXRlcik7
CisKKyAgICBhdXRvIHBhcnNlZEJ1dHRvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OnBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbj4obW91c2VCdXR0b25TdHJpbmcpOworICAgIGlmICghcGFyc2VkQnV0dG9uKQorICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOwor
CisgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlm
aWVycykwOworICAgIGZvciAoYXV0byBpdCA9IGtleU1vZGlmaWVyU3RyaW5ncy5iZWdpbigpOyBp
dCAhPSBrZXlNb2RpZmllclN0cmluZ3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgU3RyaW5nIG1v
ZGlmaWVyU3RyaW5nOworICAgICAgICBpZiAoIWl0LT5nZXQoKS0+YXNTdHJpbmcobW9kaWZpZXJT
dHJpbmcpKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShJ
bnZhbGlkUGFyYW1ldGVyKTsKKworICAgICAgICBhdXRvIHBhcnNlZE1vZGlmaWVyID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyPihtb2RpZmllclN0cmluZyk7CisgICAgICAgIGlm
ICghcGFyc2VkTW9kaWZpZXIpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJz
IGVudW1WYWx1ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9k
aWZpZXIudmFsdWUoKSk7CisgICAgICAgIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZp
ZXJzKShlbnVtVmFsdWUgfCBrZXlNb2RpZmllcnMpOworICAgIH0KKworICAgIHBsYXRmb3JtU2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKCpwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZEludGVyYWN0
aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOworCisgICAg
dXBkYXRlZFBvc2l0aW9uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UG9pbnQ6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHgpCisgICAgICAgIC5zZXRZKHkpCisgICAg
ICAgIC5yZWxlYXNlKCk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKK30KKworI2lmICFVU0UoQVBQ
S0lUKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZp
ZXJzKQoreworfQorI2VuZGlmIC8vICFVU0UoQVBQS0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDYxYzU5NzZhOGVkYzM3MThkMDcwYWU5M2RmMjcw
MDMzOTc3ODdlZDEuLmUyOWMyNWU1YTM2MzE3MzU1ZmUyMzg3NjFlYWNkZTE1NDQ0NzExM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMjMsMTIgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvbl9o
Ci0jZGVmaW5lIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5o
IgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTQ4
LDYgKzQ4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CiB9CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQorCisjaWYgVVNFKEFQUEtJVCkK
K09CSkNfQ0xBU1MgTlNBcnJheTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CkBAIC05NCw2ICsxMDIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxvYWRCcm93c2luZ0Nv
bnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFj
a0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHJl
cXVlc3RlZFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG1vdXNlQnV0dG9uLCBjb25zdCBTdHJpbmcm
IG1vdXNlSW50ZXJhY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGtleU1v
ZGlmaWVycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBvaW50PiYg
dXBkYXRlZFBvc2l0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFu
ZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4
dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBpbnQqIG9w
dGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogdXNlVmlld3Bv
cnRDb29yZGluYXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CkBAIC0x
MjEsNiArMTMwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJhbWUo
dWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJv
clR5cGUpOwogICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogCisgICAg
Ly8gUGxhdGZvcm0tc3BlY2lmaWMgaGVscGVyIG1ldGhvZHMuCisgICAgdm9pZCBwbGF0Zm9ybVNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRv
biwgV2ViRXZlbnQ6Ok1vZGlmaWVycyk7CisKKyNpZiBVU0UoQVBQS0lUKQorICAgIHZvaWQgc2Vu
ZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBhZ2VQcm94eSYsIE5TQXJyYXkgKmV2ZW50c1Rv
U2VuZCk7CisjZW5kaWYKKwogICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sIHsgbnVs
bHB0ciB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGll
bnQ+IG1fY2xpZW50OwpAQCAtMTU0LDUgKzE3MCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYkF1dG9tYXRpb25T
ZXNzaW9uQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThlMDgzOTUwMTZkNGEyOGU1OTU3MDI5ODc0OTdh
NjM2NTAyNDZhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0F1dG9tYXRpb25T
ZXNzaW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0ludFNpemUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCisjaWYgVVNFKEFQUEtJVCkKKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgTlNB
cnJheSAqZXZlbnRzVG9TZW5kKQoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBwYWdlLnBsYXRm
b3JtV2luZG93KCk7CisKKyAgICBmb3IgKE5TRXZlbnQgKmV2ZW50IGluIGV2ZW50c1RvU2VuZCkg
eworICAgICAgICAvLyBTZXQgYW4gYXNzb2NpYXRlZCBvYmplY3Qgd2l0aCB0aGUgYXV0b21hdGlv
biBzZXNzaW9uIGlkZW50aWZpZXIuIFRoaXMgYWxsb3dzIGEgV2ViS2l0MiBjbGllbnQKKyAgICAg
ICAgLy8gdG8gdGVsbCB3aGV0aGVyIGFuIGV2ZW50IHdhcyByZWFsIG9yIHN5bnRoZXNpemVkIG9u
IGJlaGFsZiBvZiBhbiBhdXRvbWF0aW9uIGNvbW1hbmQuCisgICAgICAgIG9iamNfc2V0QXNzb2Np
YXRlZE9iamVjdChldmVudCwgW19XS0F1dG9tYXRpb25TZXNzaW9uIGNsYXNzXSwgbV9zZXNzaW9u
SWRlbnRpZmllciwgT0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9OQVRPTUlDKTsKKyAgICAgICAg
W3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworICAgIH0KK30KKwordm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2ZW50OjpN
b2RpZmllcnMga2V5TW9kaWZpZXJzKQoreworICAgIEludFJlY3Qgd2luZG93UmVjdDsKKyAgICBw
YWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdp
bmRvd1JlY3QpOworICAgIEludFBvaW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2Nh
dGlvbigpOworCisgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9kaWZpZXJzID0gMDsKKyAgICBp
ZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAgIG1vZGlmaWVycyB8
PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2Vi
RXZlbnQ6OkFsdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdP
cHRpb247CisgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2ZW50OjpDb250cm9sS2V5KQorICAg
ICAgICBtb2RpZmllcnMgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CisgICAgaWYgKGtl
eU1vZGlmaWVycyAmIFdlYkV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKworICAgIE5TVGltZUludGVydmFsIHRpbWVzdGFtcCA9
IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKKyAgICBOU1dpbmRvdyAq
d2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygpOworICAgIE5TSW50ZWdlciB3aW5kb3dOdW1i
ZXIgPSB3aW5kb3cud2luZG93TnVtYmVyOworCisgICAgTlNFdmVudFR5cGUgZG93bkV2ZW50VHlw
ZTsKKyAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlOworICAgIE5TRXZlbnRUeXBlIHVwRXZl
bnRUeXBlOworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKKyAgICAgICAgZG93bkV2ZW50VHlw
ZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTW91c2VNb3ZlZDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBl
TGVmdE1vdXNlRG93bjsKKyAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1v
dXNlRHJhZ2dlZDsKKyAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZVVw
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50
VHlwZU90aGVyTW91c2VEb3duOworICAgICAgICBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVM
ZWZ0TW91c2VEcmFnZ2VkOworICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJN
b3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5T
RXZlbnRUeXBlUmlnaHRNb3VzZURvd247CisgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5
cGVSaWdodE1vdXNlVXA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIE5TTXV0YWJsZUFy
cmF5PE5TRXZlbnQgKj4gKmV2ZW50c1RvQmVTZW50ID0gW05TTXV0YWJsZUFycmF5IG5ld107CisK
KyAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBl
IGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6
RG93bjoKKyAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNl
IGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCisgICAgICAgIC8vIGRv
d24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sg
ZXZlbnQuCisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZp
ZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93
TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOldl
YkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAgICAgICAv
LyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBl
eHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKKyAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8g
YmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KKyAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBF
dmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVy
YWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1
cCBldmVudHMuIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudC4K
KyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0
aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdz
Om1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIg
Y29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9u
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVz
c3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIC8v
IFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZlbnRzIHdpdGggcHJvcGVyIGNsaWNrIGNvdW50
LgorICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZl
bnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246
d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFt
cCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xp
Y2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50
VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRz
VG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRU
eXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVu
dE51bWJlcjowIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsK
KyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0
aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKKyAg
ICB9CisKKyAgICBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNl
bnQpOworfQorCisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGRjMDZhOGNiYzk0MGNiNGI4NGRjNTM2MTY2ZjA1YWU0ZTI4NTgwNy4uNGRhNTcxZWEw
NjRjNDQ5Mjk5MmRkMzhmODg3ZmU1NTI0MGE5ZmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzOCw2ICsxMjM4LDcgQEAK
IAkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVB
NkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi87
IH07CiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmpl
Y3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAq
LzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9i
amVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87
IH07CisJCTk5ODZCREQ3MUNBOUEyMkMwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4
NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi87
IH07CiAJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTYxQzIw
REZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi87IH07CiAJCTk5QzgxRDVBMUMy
MEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0
b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJ
QXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQu
aCAqLzsgfTsKQEAgLTMyNzEsNiArMzI3Miw3IEBACiAJCTk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RjIxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Q
cm90b2NvbE9iamVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3Rz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25Qcm90b2NvbE9i
amVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk4NkJERDYxQ0E5QTIyMjAw
NDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0
b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0
aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzgxRDU2MUMyMERG
QkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYzMSw2ICs0NjMzLDcgQEAKIAkJ
CQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLywKIAkJCQlFNEU4
NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oICovLAogCQkJCUU0RTg2NDhG
MUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tICovLAorCQkJCTk5ODZCREQ2MUNB
OUEyMjIwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTFB
QzAyNzNFMTk2NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlDb2NvYS5tbSAqLywKIAkJCQk3
QzQ2OTRDQjFBNEI1MTBBMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gKi8s
CiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdlYlByb2Nlc3NQb29sQ29jb2EubW0g
Ki8sCkBAIC05NDU1LDYgKzk0NTgsNyBAQAogCQkJCUM1RTFBRkVBMTZCMjBCN0IwMDZDQzFGMiAv
KiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUEyRTU2NjE4
RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDOTg5RDgxMTYxQTdFNUQwMDBENDZEMyAvKiBXS1dlYlByb2Nlc3NQbHVn
SW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTg2QkRENzFDQTlBMjJDMDA0ODAwQUEgLyogV2Vi
QXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDOEYyRjJBMTYy
NzNBMkMwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjc1MDZBRDE4NTkxNjFDMDBFQzBGRjcgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjc1MDZBRTE4NTkx
NjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IGE5ZjE1MjE2NGRlY2ZlNzVhOTUyY2M3
MzNjZmExYjQ2NmJiYWM4NjcuLjU3NTA5Yjk3YTRjM2VkODNhNDAxYjFhNzYxNGNmMmRmMDU2MzI1
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxDb2NvYS9D
b2NvYS5oPgorI2ltcG9ydCA8d3RmL21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25z
Lmg+CiAjZW5kaWYKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275079</attachid>
            <date>2016-03-28 20:12:04 -0700</date>
            <delta_ts>2016-03-28 20:57:12 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-155606-20160328201207.patch</filename>
            <type>text/plain</type>
            <size>27645</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2N2U3MjgzNmFkZjkwMDJhMDAyNDU0
YzIyOGVlZWFmY2U5NzA2OTkuLjk1NWEyYTUzMDcwMDczYjQ2ZWFjM2QzNDQzMjczZWUwYjM0NjE4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGltcGxlbWVudCBBdXRvbWF0aW9u
LnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTU2MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MjI3NTc2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg6IEFkZCBtaXNzaW5nIHNvbWUg
TlNFdmVudFR5cGVzLgorCiAyMDE2LTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgY29tcGlsZSB0aW1lIGZsYWcgZm9yIHVz
aW5nIFFUS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmIwNzI3MzAwZjcwMDgxYzk5MmEwZmEzMzViY2FjMzk5
MDYwNjFhOS4uNWI1ZDQwOTFmYWNmMmU3NGQ4ZTcyYjEzOTkxM2QyNmRhNThjNzBjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTAzLTI4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBsZW1lbnQgQXV0b21hdGlvbi5w
ZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTIyNzU3Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgVGhpcyBt
ZXRob2QgaW1wbGVtZW50cyBjb21tb24gbW91c2UgaW50ZXJhY3Rpb25zIGJ5IHN5bnRoZXNpemlu
ZyBuYXRpdmUgZXZlbnRzLgorICAgICAgICBUaGUgY3JlYXRpb24gYW5kIGRpc3BhdGNoaW5nIG9m
IHNpbXVsYXRlZCBldmVudHMgaXMgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSBwZXIKKyAgICAgICAg
YXBwbGljYXRpb24vd2luZG93L2V2ZW50IGZyYW1ld29yay4gVGhpcyBwYXRjaCBhZGRzIGFuIGlt
cGxlbWVudGF0aW9uIGZvciBwb3J0cworICAgICAgICB0aGF0IHVzZSBBcHBLaXQuCisKKyAgICAg
ICAgVGhlIGV2ZW50IGlzIGNyZWF0ZWQgc3ludGhldGljYWxseSBpbiBhIHBsYXRmb3JtLXNwZWNp
ZmljIHdheSBhbmQgZGVsaXZlcmVkIHRvCisgICAgICAgIHRoZSBwbGF0Zm9ybSdzIHdpbmRvdyBp
biB0aGUgVUlQcm9jZXNzLiBUaGUgZXZlbnQgZ29lcyB0aHJvdWdoIGFsbCB0aGUKKyAgICAgICAg
bGF5ZXJzIG9mIHByb2Nlc3NpbmcgdGhhdCBhIHJlYWwgbW91c2UgZXZlbnQgY291bGQgZ28gdGhy
b3VnaCBvbmNlIGl0IHJlYWNoZXMKKyAgICAgICAgV2ViS2l0IGl0c2VsZi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyBlbnVtcyBhbmQg
Y29tbWFuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRN
b2RpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3Jt
TW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorICAgICAgICBDbGlwIHRoZSByZXF1ZXN0ZWQgY3Vy
c29yIHBvc2l0aW9uIHNvIHRoYXQgaXQgc3RheXMgd2l0aGluIHRoZSBzZWxlY3RlZCB3aW5kb3cn
cworICAgICAgICBmcmFtZSBhbmQgZG9lc24ndCB3YW5kZXIgb2ZmIGludG8gb3RoZXIgd2luZG93
cyBvciBhcHBsaWNhdGlvbnMuIEZpcmUgaXQgdXNpbmcKKyAgICAgICAgdGhlIHBsYXRmb3JtLXNw
ZWNpZmljIHNpbXVsYXRpb24gbWV0aG9kLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAgIENvbnZlcnQgQXV0b21hdGlvbiBwcm90b2Nv
bCB2YWx1ZXMgdG8gQXBwS2l0IHZhbHVlcy4gU2ltdWxhdGUgYW5kIGRpc3BhdGNoCisgICAgICAg
IG9uZSBvciBtb3JlIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIGRlc2lyZWQgaW50ZXJhY3Rpb24u
CisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOiBJbmNsdWRlIEFwcEtpdENvbXBhdGliaWxpdHlE
ZWNsYXJhdGlvbnMuaCBzbyBuZXdlcgorICAgICAgICBOU0V2ZW50VHlwZXMgY2FuIGJlIHVzZWQu
CisKIDIwMTYtMDMtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vZGVybiBJREI6IFJlbW92ZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGFsbCBJREIg
RE9NIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0
aWJpbGl0eURlY2xhcmF0aW9ucy5oIGIvU291cmNlL1dURi93dGYvbWFjL0FwcEtpdENvbXBhdGli
aWxpdHlEZWNsYXJhdGlvbnMuaAppbmRleCA3NjEzNGI3YzgyYTRhNzlmMWU2NzI1YzZjZWRjMDE4
ZTUzMjUyNjIxLi4xZmFmOTRhYzYwMDQyYmVkZjA4ZjZjNDQ3OTc5OTYyYTNkNTcwODEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRp
b25zLmgKQEAgLTc4LDggKzc4LDEyIEBAIHN0YXRpYyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50
VHlwZUxlZnRNb3VzZURyYWdnZWQgPSBOU0xlZnRNb3VzZURyYWdnZWQ7CiBzdGF0aWMgY29uc3Qg
TlNFdmVudFR5cGUgTlNFdmVudFR5cGVMZWZ0TW91c2VVcCA9IE5TTGVmdE1vdXNlVXA7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVNb3VzZU1vdmVkID0gTlNNb3VzZU1vdmVk
Owogc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd24gPSBO
U090aGVyTW91c2VEb3duOworc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3Ro
ZXJNb3VzZURyYWdnZWQgPSBOU090aGVyTW91c2VEcmFnZ2VkOworc3RhdGljIGNvbnN0IE5TRXZl
bnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwID0gTlNPdGhlck1vdXNlVXA7CiBzdGF0aWMg
Y29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVQZXJpb2RpYyA9IE5TUGVyaW9kaWM7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNlRG93biA9IE5TUmlnaHRN
b3VzZURvd247CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNl
RHJhZ2dlZCA9IE5TUmlnaHRNb3VzZURyYWdnZWQ7CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUg
TlNFdmVudFR5cGVSaWdodE1vdXNlVXAgPSBOU1JpZ2h0TW91c2VVcDsKIHN0YXRpYyBjb25zdCBO
U0V2ZW50VHlwZSBOU0V2ZW50VHlwZVNjcm9sbFdoZWVsID0gTlNTY3JvbGxXaGVlbDsKIHN0YXRp
YyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50VHlwZVN5c3RlbURlZmluZWQgPSBOU1N5c3RlbURl
ZmluZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1
dG9tYXRpb24uanNvbgppbmRleCA0NzI4OTIxMTllODgyNWMyMTk3NGE5YjhiYTQ0MWY1Y2I4OGZi
NWVhLi44NTRhMGMyNTU3N2QxZTAwYTQwZDZlZmU0ZjNhNDRjY2U1OTQxOTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBA
IC02OCw2ICs2OCw0MSBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luZG93U2l6ZSIs
ICIkcmVmIjogIlNpemUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUg
YnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ3aW5kb3dPcmlnaW4iLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgY3Vy
cmVudCAoeCwgeSkgcG9zaXRpb24gb2YgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cgcmVs
YXRpdmUgdG8gdGhlIHRvcC1sZWZ0IG9mIHRoZSBzY3JlZW4uIiB9CiAgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJNb3VzZUludGVyYWN0aW9u
IiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRW51bWVyYXRlcyBkaWZmZXJlbnQgd2F5cyBvZiBpbnRlcmFjdGluZyB3aXRoIGEgbW91
c2UgY3Vyc29yLiIsCisgICAgICAgICAgICAiZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiTW92
ZSIsCisgICAgICAgICAgICAgICAgIkRvd24iLAorICAgICAgICAgICAgICAgICJVcCIsCisgICAg
ICAgICAgICAgICAgIlNpbmdsZUNsaWNrIiwKKyAgICAgICAgICAgICAgICAiRG91YmxlQ2xpY2si
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6
ICJNb3VzZUJ1dHRvbiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMgZGlmZmVyZW50IG1vdXNlIGJ1dHRvbnMgdGhh
dCBjYW4gYmUgdXNlZC4iLAorICAgICAgICAgICAgImVudW0iOiBbCisgICAgICAgICAgICAgICAg
Ik5vbmUiLAorICAgICAgICAgICAgICAgICJMZWZ0IiwKKyAgICAgICAgICAgICAgICAiTWlkZGxl
IiwKKyAgICAgICAgICAgICAgICAiUmlnaHQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJLZXlNb2RpZmllciIsCisgICAgICAgICAgICAi
dHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMg
ZGlmZmVyZW50IGtleSBtb2RpZmllcnMgdGhhdCBjYW4gcmVtYWluIHByZXNzZWQgZHVyaW5nIG90
aGVyIG1vdXNlL3RvdWNoIGludGVyYWN0aW9ucy4iLAorICAgICAgICAgICAgImVudW0iOiBbCisg
ICAgICAgICAgICAgICAgIkNhcHNMb2NrIiwKKyAgICAgICAgICAgICAgICAiQ29udHJvbCIsCisg
ICAgICAgICAgICAgICAgIlNoaWZ0IiwKKyAgICAgICAgICAgICAgICAiTWV0YSIsCisgICAgICAg
ICAgICAgICAgIkFsdCIKKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNv
bW1hbmRzIjogWwpAQCAtMTcxLDYgKzIwNiwyMCBAQAogICAgICAgICAgICAgImFzeW5jIjogdHJ1
ZQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3JtTW91
c2VJbnRlcmFjdGlvbiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2ltdWxhdGVzIGlu
dGVyYWN0aW9uIHdpdGggYSBtb3VzZSBjdXJzb3IuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3Np
bmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRv
IGJlIGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3Np
dGlvbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSByZXF1ZXN0ZWQgcG9z
aXRpb24gZm9yIHRoZSBtb3VzZSBjdXJzb3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGlu
YXRlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJidXR0b24iLCAiJHJlZiI6ICJN
b3VzZUJ1dHRvbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnV0dG9uIHRvIHVzZSB0byBwZXJmb3Jt
IHRoZSBpbnRlcmFjdGlvbi4gVGhpcyBwYXJhbWV0ZXIgb25seSBoYXMgYW4gZWZmZWN0IGZvciB0
aGUgPGNvZGU+RG93bjwvY29kZT4sIDxjb2RlPlVwPC9jb2RlPiwgPGNvZGU+Q2xpY2s8L2NvZGU+
LCBhbmQgPGNvZGU+RG91YmxlQ2xpY2s8L2NvZGU+IG1vdXNlIGludGVyYWN0aW9ucy4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnRlcmFjdGlvbiIsICIkcmVmIjogIk1vdXNlSW50
ZXJhY3Rpb24iLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gdG8gYmUg
cGVyZm9ybWVkIHdpdGggdGhlIG1vdXNlIGN1cnNvci4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJtb2RpZmllcnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
S2V5TW9kaWZpZXIiIH0sICJkZXNjcmlwdGlvbiI6ICJLZXkgbW9kaWZpZXJzIHRvIGJlIGFjdGl2
ZSBkdXJpbmcgdGhlIG1vdXNlIGludGVyYWN0aW9uLiIgfQorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24i
LCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdXBkYXRlZCBwb3NpdGlvbiBv
ZiB0aGUgbW91c2UgY3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInJlc29sdmVDaGlsZEZyYW1lSGFuZGxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4gYmFzZWQgb24gdGhlIG9y
ZGluYWwsIG5hbWUgb3Igbm9kZSBoYW5kbGUgb2YgYSBjaGlsZCBmcmFtZS4iLAogICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYzIwMjA5OWI1
MmQwODY2Yjk0YTJhODlkYWFjYTFmNGE4YmZiNzY4MS4uOTMzZmI3MGQ0ZjYwMTg0MWU3MTEyZmJk
MGU4NTM3MTdhNzM1ODljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VVSUQuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKQEAgLTYzMSw0ICs2MzIsODQgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHQoSW5zcGVjdG9y
OjpFcnIKICAgICBtX2NsaWVudC0+c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9t
cHRPblBhZ2UodGhpcywgcGFnZSwgcHJvbXB0VmFsdWUpOwogfQogCitzdGF0aWMgV2ViRXZlbnQ6
Ok1vZGlmaWVycyBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyIG1vZGlmaWVyKQoreworICAgIHN3aXRj
aCAobW9kaWZpZXIpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OktleU1vZGlmaWVyOjpBbHQ6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6QWx0S2V5OworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6Ok1ldGE6
CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6TWV0YUtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpDb250cm9sOgorICAgICAgICByZXR1
cm4gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpLZXlNb2RpZmllcjo6U2hpZnQ6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6
U2hpZnRLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlN
b2RpZmllcjo6Q2Fwc0xvY2s6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6Q2Fwc0xvY2tLZXk7
CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRl
cmFjdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiByZXF1ZXN0ZWRQb3Np
dGlvbk9iamVjdCwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRvblN0cmluZywgY29uc3QgU3RyaW5n
JiBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
JiBrZXlNb2RpZmllclN0cmluZ3MsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpQb2ludD4mIHVwZGF0ZWRQb3NpdGlvbk9iamVjdCkKK3sKKyNpZiAhVVNFKEFQUEtJVCkK
KyAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE5vdEltcGxlbWVudGVkKTsK
KyNlbHNlCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhh
bmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKworICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxl
bS8yNTA5NDEwNj46IFNwZWNpZnkgd2hhdCBwYXJhbWV0ZXIgd2FzIG1pc3Npbmcgb3IgaW52YWxp
ZCBhbmQgaG93LgorICAgIC8vIFRoaXMgcmVxdWlyZXMgc29tZSBjaGFuZ2VzIHRvIHRoZSBvdGhl
ciBlbmQncyBlcnJvciBoYW5kbGluZy4gUmlnaHQgbm93IGl0IGxvb2tzIGZvciBhbgorICAgIC8v
IGV4YWN0IGVycm9yIG1lc3NhZ2UgbWF0Y2guIFdlIGNvdWxkIHN0dWZmIHRoaXMgaW50byB0aGUg
J2RhdGEnIGZpZWxkIG9uIGVycm9yIG9iamVjdC4KKyAgICBmbG9hdCB4OworICAgIGlmICghcmVx
dWVzdGVkUG9zaXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ4IiksIHgp
KQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJh
bWV0ZXIpOworCisgICAgZmxvYXQgeTsKKyAgICBpZiAoIXJlcXVlc3RlZFBvc2l0aW9uT2JqZWN0
LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKworICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZTsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZSh3aW5k
b3dGcmFtZSk7CisKKyAgICB4ID0gc3RkOjptYXgoc3RkOjptaW4oMC4wZiwgeCksIHdpbmRvd0Zy
YW1lLnNpemUoKS53aWR0aCgpKTsKKyAgICB5ID0gc3RkOjptYXgoc3RkOjptaW4oMC4wZiwgeSks
IHdpbmRvd0ZyYW1lLnNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCB2
aWV3UG9zaXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0
aWNfY2FzdDxpbnQ+KHkpKTsKKworICAgIGF1dG8gcGFyc2VkSW50ZXJhY3Rpb24gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbj4obW91c2VJbnRlcmFjdGlvblN0cmluZyk7
CisgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKworICAgIGF1dG8gcGFyc2VkQnV0
dG9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uPihtb3VzZUJ1dHRvblN0cmlu
Zyk7CisgICAgaWYgKCFwYXJzZWRCdXR0b24pCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFtZXRlcik7CisKKyAgICBXZWJFdmVudDo6TW9kaWZp
ZXJzIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJzKTA7CisgICAgZm9yIChhdXRv
IGl0ID0ga2V5TW9kaWZpZXJTdHJpbmdzLmJlZ2luKCk7IGl0ICE9IGtleU1vZGlmaWVyU3RyaW5n
cy5lbmQoKTsgKytpdCkgeworICAgICAgICBTdHJpbmcgbW9kaWZpZXJTdHJpbmc7CisgICAgICAg
IGlmICghaXQtPmdldCgpLT5hc1N0cmluZyhtb2RpZmllclN0cmluZykpCisgICAgICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworCisg
ICAgICAgIGF1dG8gcGFyc2VkTW9kaWZpZXIgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9k
aWZpZXI+KG1vZGlmaWVyU3RyaW5nKTsKKyAgICAgICAgaWYgKCFwYXJzZWRNb2RpZmllcikKKyAg
ICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoSW52YWxpZFBhcmFt
ZXRlcik7CisgICAgICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xN
b2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKKyAgICAg
ICAga2V5TW9kaWZpZXJzID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1v
ZGlmaWVycyk7CisgICAgfQorCisgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
KnBhZ2UsIHZpZXdQb3NpdGlvbiwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcGFyc2VkQnV0
dG9uLnZhbHVlKCksIGtleU1vZGlmaWVycyk7CisKKyAgICB1cGRhdGVkUG9zaXRpb25PYmplY3Qg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRlKCkKKyAgICAg
ICAgLnNldFgoeCkKKyAgICAgICAgLnNldFkoeSkKKyAgICAgICAgLnJlbGVhc2UoKTsKKyNlbmRp
ZiAvLyBVU0UoQVBQS0lUKQorfQorCisjaWYgIVVTRShBUFBLSVQpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VCdXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMpCit7Cit9CisjZW5kaWYgLy8g
IVVTRShBUFBLSVQpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgK
aW5kZXggNjFjNTk3NmE4ZWRjMzcxOGQwNzBhZTkzZGYyNzAwMzM5Nzc4N2VkMS4uZTI5YzI1ZTVh
MzYzMTczNTVmZTIzODc2MWVhY2RlMTU0NDQ3MTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBA
IC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKLSNkZWZpbmUgV2ViQXV0b21hdGlv
blNlc3Npb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpAQCAtNDgsNiArNDgsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgSW50UG9pbnQ7Cit9CisKKyNpZiBVU0UoQVBQS0lUKQorT0JKQ19DTEFTUyBOU0FycmF5Owor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDsKQEAgLTk0LDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdvRm9yd2FyZElu
QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJn
dW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxJbnNwZWN0
b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNvbnN0
IFN0cmluZyYgbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYga2V5TW9kaWZpZXJzLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1cGRhdGVkUG9zaXRpb24pIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIFJl
ZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUs
IFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUs
IGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBjb25zdCBib29sKiB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBSZWY8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDb21wdXRlRWxlbWVu
dExheW91dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKQEAgLTEyMSw2ICsxMzAsMTMgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAgICAgdm9pZCBkaWRD
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAKKyAgICAvLyBQbGF0Zm9ybS1zcGVjaWZpYyBo
ZWxwZXIgbWV0aG9kcy4KKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9u
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJz
KTsKKworI2lmIFVTRShBUFBLSVQpCisgICAgdm9pZCBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1Bh
Z2UoV2ViUGFnZVByb3h5JiwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKTsKKyNlbmRpZgorCiAgICAg
V2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2wgeyBudWxscHRyIH07CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CkBAIC0xNTQs
NSArMTcwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gV2ViQXV0b21hdGlvblNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OGUwODM5NTAxNmQ0YTI4ZTU5NTcwMjk4NzQ5N2E2MzY1MDI0NmFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYkF1dG9tYXRpb25TZXNz
aW9uQ29jb2EubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisKKyNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbXBvcnQgPFdl
YkNvcmUvSW50UG9pbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBV
U0UoQVBQS0lUKQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZW5kU3ludGhlc2l6ZWRF
dmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBOU0FycmF5ICpldmVudHNUb1NlbmQpCit7
CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IHBhZ2UucGxhdGZvcm1XaW5kb3coKTsKKworICAgIGZv
ciAoTlNFdmVudCAqZXZlbnQgaW4gZXZlbnRzVG9TZW5kKSB7CisgICAgICAgIC8vIFNldCBhbiBh
c3NvY2lhdGVkIG9iamVjdCB3aXRoIHRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllci4g
VGhpcyBhbGxvd3MgYSBXZWJLaXQyIGNsaWVudAorICAgICAgICAvLyB0byB0ZWxsIHdoZXRoZXIg
YW4gZXZlbnQgd2FzIHJlYWwgb3Igc3ludGhlc2l6ZWQgb24gYmVoYWxmIG9mIGFuIGF1dG9tYXRp
b24gY29tbWFuZC4KKyAgICAgICAgb2JqY19zZXRBc3NvY2lhdGVkT2JqZWN0KGV2ZW50LCBbX1dL
QXV0b21hdGlvblNlc3Npb24gY2xhc3NdLCBtX3Nlc3Npb25JZGVudGlmaWVyLCBPQkpDX0FTU09D
SUFUSU9OX1JFVEFJTl9OT05BVE9NSUMpOworICAgICAgICBbd2luZG93IHNlbmRFdmVudDpldmVu
dF07CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVs
YXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMp
Cit7CisgICAgSW50UmVjdCB3aW5kb3dSZWN0OworICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJ
bnRSZWN0KHZpZXdQb3NpdGlvbiwgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7CisgICAgSW50UG9p
bnQgd2luZG93UG9zaXRpb24gPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CisKKyAgICBOU0V2ZW50
TW9kaWZpZXJGbGFncyBtb2RpZmllcnMgPSAwOworICAgIGlmIChrZXlNb2RpZmllcnMgJiBXZWJF
dmVudDo6TWV0YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdD
b21tYW5kOworICAgIGlmIChrZXlNb2RpZmllcnMgJiBXZWJFdmVudDo6QWx0S2V5KQorICAgICAg
ICBtb2RpZmllcnMgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbjsKKyAgICBpZiAoa2V5TW9k
aWZpZXJzICYgV2ViRXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBOU0V2
ZW50TW9kaWZpZXJGbGFnQ29udHJvbDsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6
OlNoaWZ0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0
OworCisgICAgTlNUaW1lSW50ZXJ2YWwgdGltZXN0YW1wID0gW05TRGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZVJlZmVyZW5jZURhdGVdOworICAgIE5TV2luZG93ICp3aW5kb3cgPSBwYWdlLnBsYXRmb3Jt
V2luZG93KCk7CisgICAgTlNJbnRlZ2VyIHdpbmRvd051bWJlciA9IHdpbmRvdy53aW5kb3dOdW1i
ZXI7CisKKyAgICBOU0V2ZW50VHlwZSBkb3duRXZlbnRUeXBlOworICAgIE5TRXZlbnRUeXBlIGRy
YWdFdmVudFR5cGU7CisgICAgTlNFdmVudFR5cGUgdXBFdmVudFR5cGU7CisgICAgc3dpdGNoIChi
dXR0b24pIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
QnV0dG9uOjpOb25lOgorICAgICAgICBkb3duRXZlbnRUeXBlID0gdXBFdmVudFR5cGUgPSBkcmFn
RXZlbnRUeXBlID0gTlNFdmVudFR5cGVNb3VzZU1vdmVkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0Ogor
ICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOworICAgICAg
ICBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOworICAgICAgICB1
cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlVXA7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRs
ZToKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd247Cisg
ICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQ7CisgICAg
ICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhlck1vdXNlVXA7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246
OlJpZ2h0OgorICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlRG93
bjsKKyAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZVJpZ2h0TW91c2VVcDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgTlNNdXRhYmxlQXJyYXk8TlNFdmVudCAqPiAqZXZlbnRz
VG9CZVNlbnQgPSBbTlNNdXRhYmxlQXJyYXkgbmV3XTsKKworICAgIHN3aXRjaCAoaW50ZXJhY3Rp
b24pIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb246Ok1vdmU6CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRp
b24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDowIHBy
ZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3duOgorICAgICAgICAvLyBIYXJk
LWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qg
c3VjY2Vzc2l2ZSBzaW11bGF0ZWQKKyAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90
ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50
VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sg
Y291bnQgdG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVs
YXRlZAorICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVk
IGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50LgorICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5k
b3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdp
bmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgor
ICAgICAgICAvLyBTZW5kIHNlcGFyYXRlIGRvd24gYW5kIHVwIGV2ZW50cy4gV2ViQ29yZSB3aWxs
IHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50LgorICAgICAgICBbZXZlbnRzVG9CZVNl
bnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxv
Y2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0
aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJl
cjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUlu
dGVyYWN0aW9uOjpEb3VibGVDbGljazoKKyAgICAgICAgLy8gU2VuZCBtdWx0aXBsZSBkb3duIGFu
ZCB1cCBldmVudHMgd2l0aCBwcm9wZXIgY2xpY2sgY291bnQuCisgICAgICAgIC8vIFdlYkNvcmUg
d2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudCB0aGVuIGRvdWJsZS1jbGljayBl
dmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2Vi
Q29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6
W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bv
c2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6
MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05T
RXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9z
aXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoy
IHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNl
bnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2Nh
dGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGlt
ZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6
MCBjbGlja0NvdW50OjIgcHJlc3N1cmU6MC4wZl1dOworICAgIH0KKworICAgIHNlbmRTeW50aGVz
aXplZEV2ZW50c1RvUGFnZShwYWdlLCBldmVudHNUb0JlU2VudCk7Cit9CisKKyNlbmRpZiAvLyBV
U0UoQVBQS0lUKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZGMwNmE4Y2JjOTQwY2I0
Yjg0ZGM1MzYxNjZmMDVhZTRlMjg1ODA3Li40ZGE1NzFlYTA2NGM0NDkyOTkyZGQzOGY4ODdmZTU1
MjQwYTlmYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjM4LDYgKzEyMzgsNyBAQAogCQk5OTU1QTZGNTFDNzk4NkUwMDBF
QjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjExQzc5ODY2NDAwRUI2QTkzIC8q
IEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLzsgfTsKIAkJOTk1NUE2RjYxQzc5ODZF
MzAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjIxQzc5ODY2NDAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovOyB9OwogCQk5OTU1QTZGNzFDNzk4
NkU1MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLzsgfTsKKwkJOTk4NkJERDcxQ0E5QTIy
QzAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg2QkRENjFDQTlBMjIyMDA0ODAwQUEg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJOTlDODFENTkxQzIwRTFF
NTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21h
dGlvbkNsaWVudC5tbSAqLzsgfTsKIAkJOTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1dG9t
YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07
CiAJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFDMjBF
ODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMzI3MSw2ICsz
MjcyLDcgQEAKIAkJOTk1NUE2RjExQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5k
RGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1
QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRvbWF0aW9uUHJvdG9jb2xPYmpl
Y3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OTg2QkRENjFDQTlBMjIyMDA0ODAwQUEgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRp
b25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRv
bWF0aW9uQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1QjFD
MjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NjMxLDYgKzQ2MzMsNyBAQAogCQkJCTFBRkU0MzYzMThCNkMwODEwMDlD
N0E0OCAvKiBVSURlbGVnYXRlLm1tICovLAogCQkJCUU0RTg2NDhFMUIxNjczRkIwMEM4MkY0MCAv
KiBWZXJzaW9uQ2hlY2tzLmggKi8sCiAJCQkJRTRFODY0OEYxQjE2NzNGQjAwQzgyRjQwIC8qIFZl
cnNpb25DaGVja3MubW0gKi8sCisJCQkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1
IC8qIFdlYlBhZ2VQcm94eUNvY29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSAqLywKIAkJCQk3Q0U0RDIxNTFBNDkxNDg0
MDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSAqLywKQEAgLTk0NTUsNiArOTQ1OCw3
IEBACiAJCQkJQzVFMUFGRUExNkIyMEI3QjAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTJFNTY2MThENzc1MDgwMDM4MTRCRCAvKiBXS1dl
YlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5ODlEODEx
NjFBN0U1RDAwMEQ0NkQzIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTk5ODZCREQ3MUNBOUEyMkMwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4RjJGMkExNjI3M0EyQzAwNUZBQ0I1IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFGNzUwNkFEMTg1OTE2MUMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFGNzUwNkFFMTg1OTE2MjIwMEVDMEZGNyAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJl
Zml4LmgKaW5kZXggYTlmMTUyMTY0ZGVjZmU3NWE5NTJjYzczM2NmYTFiNDY2YmJhYzg2Ny4uNTc1
MDliOTdhNGMzZWQ4M2E0MDFiMWE3NjE0Y2YyZGYwNTYzMjUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVm
aXguaApAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPENvY29hL0NvY29hLmg+CisjaW1wb3J0IDx3dGYv
bWFjL0FwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaD4KICNlbmRpZgogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275080</attachid>
            <date>2016-03-28 20:57:17 -0700</date>
            <delta_ts>2016-03-28 21:18:48 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-155606-20160328205720.patch</filename>
            <type>text/plain</type>
            <size>27685</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2N2U3MjgzNmFkZjkwMDJhMDAyNDU0
YzIyOGVlZWFmY2U5NzA2OTkuLjk1NWEyYTUzMDcwMDczYjQ2ZWFjM2QzNDQzMjczZWUwYjM0NjE4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGltcGxlbWVudCBBdXRvbWF0aW9u
LnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTU2MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MjI3NTc2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg6IEFkZCBtaXNzaW5nIHNvbWUg
TlNFdmVudFR5cGVzLgorCiAyMDE2LTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgY29tcGlsZSB0aW1lIGZsYWcgZm9yIHVz
aW5nIFFUS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmIwNzI3MzAwZjcwMDgxYzk5MmEwZmEzMzViY2FjMzk5
MDYwNjFhOS4uNWI1ZDQwOTFmYWNmMmU3NGQ4ZTcyYjEzOTkxM2QyNmRhNThjNzBjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTAzLTI4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBsZW1lbnQgQXV0b21hdGlvbi5w
ZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTIyNzU3Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgVGhpcyBt
ZXRob2QgaW1wbGVtZW50cyBjb21tb24gbW91c2UgaW50ZXJhY3Rpb25zIGJ5IHN5bnRoZXNpemlu
ZyBuYXRpdmUgZXZlbnRzLgorICAgICAgICBUaGUgY3JlYXRpb24gYW5kIGRpc3BhdGNoaW5nIG9m
IHNpbXVsYXRlZCBldmVudHMgaXMgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSBwZXIKKyAgICAgICAg
YXBwbGljYXRpb24vd2luZG93L2V2ZW50IGZyYW1ld29yay4gVGhpcyBwYXRjaCBhZGRzIGFuIGlt
cGxlbWVudGF0aW9uIGZvciBwb3J0cworICAgICAgICB0aGF0IHVzZSBBcHBLaXQuCisKKyAgICAg
ICAgVGhlIGV2ZW50IGlzIGNyZWF0ZWQgc3ludGhldGljYWxseSBpbiBhIHBsYXRmb3JtLXNwZWNp
ZmljIHdheSBhbmQgZGVsaXZlcmVkIHRvCisgICAgICAgIHRoZSBwbGF0Zm9ybSdzIHdpbmRvdyBp
biB0aGUgVUlQcm9jZXNzLiBUaGUgZXZlbnQgZ29lcyB0aHJvdWdoIGFsbCB0aGUKKyAgICAgICAg
bGF5ZXJzIG9mIHByb2Nlc3NpbmcgdGhhdCBhIHJlYWwgbW91c2UgZXZlbnQgY291bGQgZ28gdGhy
b3VnaCBvbmNlIGl0IHJlYWNoZXMKKyAgICAgICAgV2ViS2l0IGl0c2VsZi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyBlbnVtcyBhbmQg
Y29tbWFuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRN
b2RpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3Jt
TW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorICAgICAgICBDbGlwIHRoZSByZXF1ZXN0ZWQgY3Vy
c29yIHBvc2l0aW9uIHNvIHRoYXQgaXQgc3RheXMgd2l0aGluIHRoZSBzZWxlY3RlZCB3aW5kb3cn
cworICAgICAgICBmcmFtZSBhbmQgZG9lc24ndCB3YW5kZXIgb2ZmIGludG8gb3RoZXIgd2luZG93
cyBvciBhcHBsaWNhdGlvbnMuIEZpcmUgaXQgdXNpbmcKKyAgICAgICAgdGhlIHBsYXRmb3JtLXNw
ZWNpZmljIHNpbXVsYXRpb24gbWV0aG9kLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAgIENvbnZlcnQgQXV0b21hdGlvbiBwcm90b2Nv
bCB2YWx1ZXMgdG8gQXBwS2l0IHZhbHVlcy4gU2ltdWxhdGUgYW5kIGRpc3BhdGNoCisgICAgICAg
IG9uZSBvciBtb3JlIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIGRlc2lyZWQgaW50ZXJhY3Rpb24u
CisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOiBJbmNsdWRlIEFwcEtpdENvbXBhdGliaWxpdHlE
ZWNsYXJhdGlvbnMuaCBzbyBuZXdlcgorICAgICAgICBOU0V2ZW50VHlwZXMgY2FuIGJlIHVzZWQu
CisKIDIwMTYtMDMtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vZGVybiBJREI6IFJlbW92ZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGFsbCBJREIg
RE9NIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0
aWJpbGl0eURlY2xhcmF0aW9ucy5oIGIvU291cmNlL1dURi93dGYvbWFjL0FwcEtpdENvbXBhdGli
aWxpdHlEZWNsYXJhdGlvbnMuaAppbmRleCA3NjEzNGI3YzgyYTRhNzlmMWU2NzI1YzZjZWRjMDE4
ZTUzMjUyNjIxLi4xZmFmOTRhYzYwMDQyYmVkZjA4ZjZjNDQ3OTc5OTYyYTNkNTcwODEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRp
b25zLmgKQEAgLTc4LDggKzc4LDEyIEBAIHN0YXRpYyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50
VHlwZUxlZnRNb3VzZURyYWdnZWQgPSBOU0xlZnRNb3VzZURyYWdnZWQ7CiBzdGF0aWMgY29uc3Qg
TlNFdmVudFR5cGUgTlNFdmVudFR5cGVMZWZ0TW91c2VVcCA9IE5TTGVmdE1vdXNlVXA7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVNb3VzZU1vdmVkID0gTlNNb3VzZU1vdmVk
Owogc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd24gPSBO
U090aGVyTW91c2VEb3duOworc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3Ro
ZXJNb3VzZURyYWdnZWQgPSBOU090aGVyTW91c2VEcmFnZ2VkOworc3RhdGljIGNvbnN0IE5TRXZl
bnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwID0gTlNPdGhlck1vdXNlVXA7CiBzdGF0aWMg
Y29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVQZXJpb2RpYyA9IE5TUGVyaW9kaWM7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNlRG93biA9IE5TUmlnaHRN
b3VzZURvd247CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNl
RHJhZ2dlZCA9IE5TUmlnaHRNb3VzZURyYWdnZWQ7CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUg
TlNFdmVudFR5cGVSaWdodE1vdXNlVXAgPSBOU1JpZ2h0TW91c2VVcDsKIHN0YXRpYyBjb25zdCBO
U0V2ZW50VHlwZSBOU0V2ZW50VHlwZVNjcm9sbFdoZWVsID0gTlNTY3JvbGxXaGVlbDsKIHN0YXRp
YyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50VHlwZVN5c3RlbURlZmluZWQgPSBOU1N5c3RlbURl
ZmluZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1
dG9tYXRpb24uanNvbgppbmRleCA0NzI4OTIxMTllODgyNWMyMTk3NGE5YjhiYTQ0MWY1Y2I4OGZi
NWVhLi44NTRhMGMyNTU3N2QxZTAwYTQwZDZlZmU0ZjNhNDRjY2U1OTQxOTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBA
IC02OCw2ICs2OCw0MSBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luZG93U2l6ZSIs
ICIkcmVmIjogIlNpemUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUg
YnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ3aW5kb3dPcmlnaW4iLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgY3Vy
cmVudCAoeCwgeSkgcG9zaXRpb24gb2YgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cgcmVs
YXRpdmUgdG8gdGhlIHRvcC1sZWZ0IG9mIHRoZSBzY3JlZW4uIiB9CiAgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJNb3VzZUludGVyYWN0aW9u
IiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRW51bWVyYXRlcyBkaWZmZXJlbnQgd2F5cyBvZiBpbnRlcmFjdGluZyB3aXRoIGEgbW91
c2UgY3Vyc29yLiIsCisgICAgICAgICAgICAiZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiTW92
ZSIsCisgICAgICAgICAgICAgICAgIkRvd24iLAorICAgICAgICAgICAgICAgICJVcCIsCisgICAg
ICAgICAgICAgICAgIlNpbmdsZUNsaWNrIiwKKyAgICAgICAgICAgICAgICAiRG91YmxlQ2xpY2si
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6
ICJNb3VzZUJ1dHRvbiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMgZGlmZmVyZW50IG1vdXNlIGJ1dHRvbnMgdGhh
dCBjYW4gYmUgdXNlZC4iLAorICAgICAgICAgICAgImVudW0iOiBbCisgICAgICAgICAgICAgICAg
Ik5vbmUiLAorICAgICAgICAgICAgICAgICJMZWZ0IiwKKyAgICAgICAgICAgICAgICAiTWlkZGxl
IiwKKyAgICAgICAgICAgICAgICAiUmlnaHQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJLZXlNb2RpZmllciIsCisgICAgICAgICAgICAi
dHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMg
ZGlmZmVyZW50IGtleSBtb2RpZmllcnMgdGhhdCBjYW4gcmVtYWluIHByZXNzZWQgZHVyaW5nIG90
aGVyIG1vdXNlL3RvdWNoIGludGVyYWN0aW9ucy4iLAorICAgICAgICAgICAgImVudW0iOiBbCisg
ICAgICAgICAgICAgICAgIkNhcHNMb2NrIiwKKyAgICAgICAgICAgICAgICAiQ29udHJvbCIsCisg
ICAgICAgICAgICAgICAgIlNoaWZ0IiwKKyAgICAgICAgICAgICAgICAiTWV0YSIsCisgICAgICAg
ICAgICAgICAgIkFsdCIKKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNv
bW1hbmRzIjogWwpAQCAtMTcxLDYgKzIwNiwyMCBAQAogICAgICAgICAgICAgImFzeW5jIjogdHJ1
ZQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3JtTW91
c2VJbnRlcmFjdGlvbiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2ltdWxhdGVzIGlu
dGVyYWN0aW9uIHdpdGggYSBtb3VzZSBjdXJzb3IuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3Np
bmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRv
IGJlIGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3Np
dGlvbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSByZXF1ZXN0ZWQgcG9z
aXRpb24gZm9yIHRoZSBtb3VzZSBjdXJzb3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGlu
YXRlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJidXR0b24iLCAiJHJlZiI6ICJN
b3VzZUJ1dHRvbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnV0dG9uIHRvIHVzZSB0byBwZXJmb3Jt
IHRoZSBpbnRlcmFjdGlvbi4gVGhpcyBwYXJhbWV0ZXIgb25seSBoYXMgYW4gZWZmZWN0IGZvciB0
aGUgPGNvZGU+RG93bjwvY29kZT4sIDxjb2RlPlVwPC9jb2RlPiwgPGNvZGU+Q2xpY2s8L2NvZGU+
LCBhbmQgPGNvZGU+RG91YmxlQ2xpY2s8L2NvZGU+IG1vdXNlIGludGVyYWN0aW9ucy4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnRlcmFjdGlvbiIsICIkcmVmIjogIk1vdXNlSW50
ZXJhY3Rpb24iLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gdG8gYmUg
cGVyZm9ybWVkIHdpdGggdGhlIG1vdXNlIGN1cnNvci4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJtb2RpZmllcnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
S2V5TW9kaWZpZXIiIH0sICJkZXNjcmlwdGlvbiI6ICJLZXkgbW9kaWZpZXJzIHRvIGJlIGFjdGl2
ZSBkdXJpbmcgdGhlIG1vdXNlIGludGVyYWN0aW9uLiIgfQorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24i
LCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdXBkYXRlZCBwb3NpdGlvbiBv
ZiB0aGUgbW91c2UgY3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInJlc29sdmVDaGlsZEZyYW1lSGFuZGxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4gYmFzZWQgb24gdGhlIG9y
ZGluYWwsIG5hbWUgb3Igbm9kZSBoYW5kbGUgb2YgYSBjaGlsZCBmcmFtZS4iLAogICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYzIwMjA5OWI1
MmQwODY2Yjk0YTJhODlkYWFjYTFmNGE4YmZiNzY4MS4uMmQyMzM1MzdjODg0OTM5NWNhNTE4MDgy
ZjdmNTg1ODgxNzc3MmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VVSUQuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKQEAgLTYzMSw0ICs2MzIsODYgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHQoSW5zcGVjdG9y
OjpFcnIKICAgICBtX2NsaWVudC0+c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9t
cHRPblBhZ2UodGhpcywgcGFnZSwgcHJvbXB0VmFsdWUpOwogfQogCisjaWYgVVNFKEFQUEtJVCkK
K3N0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9k
aWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXIgbW9kaWZp
ZXIpCit7CisgICAgc3dpdGNoIChtb2RpZmllcikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkFsdDoKKyAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpBbHRLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlNb2RpZmllcjo6TWV0YToKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpNZXRhS2V5OworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkNvbnRy
b2w6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpTaGlmdDoKKyAgICAgICAg
cmV0dXJuIFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpDYXBzTG9jazoKKyAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpDYXBzTG9ja0tleTsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKwordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb25PYmplY3QsIGNvbnN0
IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlv
blN0cmluZywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYga2V5TW9kaWZpZXJTdHJp
bmdzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1cGRh
dGVkUG9zaXRpb25PYmplY3QpCit7CisjaWYgIVVTRShBUFBLSVQpCisgICAgRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfTUVTU0FHRShOb3RJbXBsZW1lbnRlZCk7CisjZWxzZQorICAgIFdlYlBh
Z2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dO
b3RGb3VuZCk7CisKKyAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjUwOTQxMDY+OiBTcGVj
aWZ5IHdoYXQgcGFyYW1ldGVyIHdhcyBtaXNzaW5nIG9yIGludmFsaWQgYW5kIGhvdy4KKyAgICAv
LyBUaGlzIHJlcXVpcmVzIHNvbWUgY2hhbmdlcyB0byB0aGUgb3RoZXIgZW5kJ3MgZXJyb3IgaGFu
ZGxpbmcuIFJpZ2h0IG5vdyBpdCBsb29rcyBmb3IgYW4KKyAgICAvLyBleGFjdCBlcnJvciBtZXNz
YWdlIG1hdGNoLiBXZSBjb3VsZCBzdHVmZiB0aGlzIGludG8gdGhlICdkYXRhJyBmaWVsZCBvbiBl
cnJvciBvYmplY3QuCisgICAgZmxvYXQgeDsKKyAgICBpZiAoIXJlcXVlc3RlZFBvc2l0aW9uT2Jq
ZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieCIpLCB4KSkKKyAgICAgICAgRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKworICAgIGZs
b2F0IHk7CisgICAgaWYgKCFyZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpB
U0NJSUxpdGVyYWwoInkiKSwgeSkpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgd2lu
ZG93RnJhbWU7CisgICAgcGFnZS0+Z2V0V2luZG93RnJhbWUod2luZG93RnJhbWUpOworCisgICAg
eCA9IHN0ZDo6bWF4KHN0ZDo6bWluKDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXplKCkud2lkdGgo
KSk7CisgICAgeSA9IHN0ZDo6bWF4KHN0ZDo6bWluKDAuMGYsIHkpLCB3aW5kb3dGcmFtZS5zaXpl
KCkuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgdmlld1Bvc2l0aW9uID0gV2Vi
Q29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7
CisKKyAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24+KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcpOworICAgIGlmICghcGFyc2Vk
SW50ZXJhY3Rpb24pCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
SW52YWxpZFBhcmFtZXRlcik7CisKKyAgICBhdXRvIHBhcnNlZEJ1dHRvbiA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4obW91c2VCdXR0b25TdHJpbmcpOworICAgIGlmICghcGFy
c2VkQnV0dG9uKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKElu
dmFsaWRQYXJhbWV0ZXIpOworCisgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMg
PSAoV2ViRXZlbnQ6Ok1vZGlmaWVycykwOworICAgIGZvciAoYXV0byBpdCA9IGtleU1vZGlmaWVy
U3RyaW5ncy5iZWdpbigpOyBpdCAhPSBrZXlNb2RpZmllclN0cmluZ3MuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgU3RyaW5nIG1vZGlmaWVyU3RyaW5nOworICAgICAgICBpZiAoIWl0LT5nZXQoKS0+
YXNTdHJpbmcobW9kaWZpZXJTdHJpbmcpKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKworICAgICAgICBhdXRvIHBhcnNl
ZE1vZGlmaWVyID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyPihtb2RpZmllclN0
cmluZyk7CisgICAgICAgIGlmICghcGFyc2VkTW9kaWZpZXIpCisgICAgICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworICAgICAgICBX
ZWJFdmVudDo6TW9kaWZpZXJzIGVudW1WYWx1ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50
TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIudmFsdWUoKSk7CisgICAgICAgIGtleU1vZGlmaWVycyA9
IChXZWJFdmVudDo6TW9kaWZpZXJzKShlbnVtVmFsdWUgfCBrZXlNb2RpZmllcnMpOworICAgIH0K
KworICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKCpwYWdlLCB2aWV3UG9zaXRp
b24sIHBhcnNlZEludGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlN
b2RpZmllcnMpOworCisgICAgdXBkYXRlZFBvc2l0aW9uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHgpCisgICAg
ICAgIC5zZXRZKHkpCisgICAgICAgIC5yZWxlYXNlKCk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkK
K30KKworI2lmICFVU0UoQVBQS0lUKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
SW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
LCBXZWJFdmVudDo6TW9kaWZpZXJzKQoreworfQorI2VuZGlmIC8vICFVU0UoQVBQS0lUKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDYxYzU5NzZhOGVk
YzM3MThkMDcwYWU5M2RmMjcwMDMzOTc3ODdlZDEuLmUyOWMyNWU1YTM2MzE3MzU1ZmUyMzg3NjFl
YWNkZTE1NDQ0NzExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMjMsMTIgKzIzLDEyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbl9oCi0jZGVmaW5lIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvbkJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKQEAgLTQ4LDYgKzQ4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEludFJlY3Q7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQor
CisjaWYgVVNFKEFQUEtJVCkKK09CSkNfQ0xBU1MgTlNBcnJheTsKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CkBAIC05NCw2
ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG1vdXNlQnV0
dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkmIGtleU1vZGlmaWVycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlBvaW50PiYgdXBkYXRlZFBvc2l0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c29sdmVDaGlsZEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFu
ZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5h
bWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJh
bWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJh
bWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVu
dEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUVsZW1l
bnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29u
c3QgYm9vbCogdXNlVmlld3BvcnRDb29yZGluYXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CkBAIC0xMjEsNiArMTMwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3RyaW5nJiBl
cnJvclR5cGUpOwogCisgICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMgaGVscGVyIG1ldGhvZHMuCisg
ICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyk7CisKKyNpZiBVU0UoQVBQ
S0lUKQorICAgIHZvaWQgc2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBhZ2VQcm94eSYs
IE5TQXJyYXkgKmV2ZW50c1RvU2VuZCk7CisjZW5kaWYKKwogICAgIFdlYlByb2Nlc3NQb29sKiBt
X3Byb2Nlc3NQb29sIHsgbnVsbHB0ciB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwpAQCAtMTU0LDUgKzE3MCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1dG9tYXRp
b25TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThlMDgzOTUwMTZk
NGEyOGU1OTU3MDI5ODc0OTdhNjM2NTAyNDZhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBv
cnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1N
b3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgVVNFKEFQUEtJVCkKKwordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKQoreworICAgIE5TV2luZG93ICp3
aW5kb3cgPSBwYWdlLnBsYXRmb3JtV2luZG93KCk7CisKKyAgICBmb3IgKE5TRXZlbnQgKmV2ZW50
IGluIGV2ZW50c1RvU2VuZCkgeworICAgICAgICAvLyBTZXQgYW4gYXNzb2NpYXRlZCBvYmplY3Qg
d2l0aCB0aGUgYXV0b21hdGlvbiBzZXNzaW9uIGlkZW50aWZpZXIuIFRoaXMgYWxsb3dzIGEgV2Vi
S2l0MiBjbGllbnQKKyAgICAgICAgLy8gdG8gdGVsbCB3aGV0aGVyIGFuIGV2ZW50IHdhcyByZWFs
IG9yIHN5bnRoZXNpemVkIG9uIGJlaGFsZiBvZiBhbiBhdXRvbWF0aW9uIGNvbW1hbmQuCisgICAg
ICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChldmVudCwgW19XS0F1dG9tYXRpb25TZXNzaW9u
IGNsYXNzXSwgbV9zZXNzaW9uSWRlbnRpZmllciwgT0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9O
QVRPTUlDKTsKKyAgICAgICAgW3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworICAgIH0KK30KKwor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBi
dXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQoreworICAgIEludFJlY3Qg
d2luZG93UmVjdDsKKyAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3UG9zaXRp
b24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOworICAgIEludFBvaW50IHdpbmRvd1Bvc2l0aW9u
ID0gd2luZG93UmVjdC5sb2NhdGlvbigpOworCisgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9k
aWZpZXJzID0gMDsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKKyAgICBpZiAo
a2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdPcHRpb247CisgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2ZW50
OjpDb250cm9sS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ0Nv
bnRyb2w7CisgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2ZW50OjpTaGlmdEtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKworICAgIE5TVGltZUlu
dGVydmFsIHRpbWVzdGFtcCA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRl
XTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygpOworICAgIE5T
SW50ZWdlciB3aW5kb3dOdW1iZXIgPSB3aW5kb3cud2luZG93TnVtYmVyOworCisgICAgTlNFdmVu
dFR5cGUgZG93bkV2ZW50VHlwZTsKKyAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlOworICAg
IE5TRXZlbnRUeXBlIHVwRXZlbnRUeXBlOworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKKyAg
ICAgICAgZG93bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5TRXZl
bnRUeXBlTW91c2VNb3ZlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgZG93bkV2ZW50
VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRG93bjsKKyAgICAgICAgZHJhZ0V2ZW50VHlwZSA9
IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsKKyAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2
ZW50VHlwZUxlZnRNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAgICAgIGRvd25F
dmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VEb3duOworICAgICAgICBkcmFnRXZlbnRU
eXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOworICAgICAgICB1cEV2ZW50VHlwZSA9
IE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICAgICAg
ZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZURvd247CisgICAgICAgIHVwRXZl
bnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlVXA7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIE5TTXV0YWJsZUFycmF5PE5TRXZlbnQgKj4gKmV2ZW50c1RvQmVTZW50ID0gW05TTXV0
YWJsZUFycmF5IG5ld107CisKKyAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgor
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRo
VHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBj
b250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBj
b3VudCB0byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxh
dGVkCisgICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQg
YXMgYSBkb3VibGUgY2xpY2sgZXZlbnQuCisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tD
b3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rp
b246OlVwOgorICAgICAgICAvLyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2lu
Y2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKKyAgICAgICAgLy8g
ZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGlj
ayBldmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3Vz
ZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZp
ZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93
TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAu
MGZdXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgLy8gU2VuZCBz
ZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBhcyBhIHNp
bmdsZS1jbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3Np
dGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEg
cHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0
aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1l
c3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjow
IGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG91Ymxl
Q2xpY2s6CisgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZlbnRzIHdpdGgg
cHJvcGVyIGNsaWNrIGNvdW50LgorICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMg
YSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCisgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25F
dmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlj
a11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZs
YWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1d
OworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJl
ciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRp
b24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoyIHBy
ZXNzdXJlOjAuMGZdXTsKKyAgICB9CisKKyAgICBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2Uo
cGFnZSwgZXZlbnRzVG9CZVNlbnQpOworfQorCisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGRjMDZhOGNiYzk0MGNiNGI4NGRjNTM2MTY2ZjA1YWU0
ZTI4NTgwNy4uNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3ZmU1NTI0MGE5ZmFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTIzOCw2ICsxMjM4LDcgQEAKIAkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2QTkzIC8qIEF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXJzLmggKi87IH07CiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1
dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmggKi87IH07CisJCTk5ODZCREQ3MUNBOUEyMkMwMDQ4MDBBQSAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRv
bWF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi87
IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBE
RkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFG
MzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQ
SUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTMyNzEsNiArMzI3Miw3IEBACiAJCTk5NTVB
NkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RjIxQzc5ODY2NDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uUHJvdG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NTFDMjBE
RkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8q
IEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYz
MSw2ICs0NjMzLDcgQEAKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0
ZS5tbSAqLywKIAkJCQlFNEU4NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5o
ICovLAogCQkJCUU0RTg2NDhGMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tICov
LAorCQkJCTk5ODZCREQ2MUNBOUEyMjIwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNv
Y29hLm1tICovLAogCQkJCTFBQzAyNzNFMTk2NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlD
b2NvYS5tbSAqLywKIAkJCQk3QzQ2OTRDQjFBNEI1MTBBMDBBRDU4NDUgLyogV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdlYlBy
b2Nlc3NQb29sQ29jb2EubW0gKi8sCkBAIC05NDU1LDYgKzk0NTgsNyBAQAogCQkJCUM1RTFBRkVB
MTZCMjBCN0IwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUEyRTU2NjE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFy
YW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDOTg5RDgxMTYxQTdFNUQwMDBENDZEMyAv
KiBXS1dlYlByb2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTg2QkRENzFDQTlB
MjJDMDA0ODAwQUEgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDOEYyRjJBMTYyNzNBMkMwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjc1MDZBRDE4NTkx
NjFDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVz
dFJlc3VsdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IGE5ZjE1
MjE2NGRlY2ZlNzVhOTUyY2M3MzNjZmExYjQ2NmJiYWM4NjcuLjU3NTA5Yjk3YTRjM2VkODNhNDAx
YjFhNzYxNGNmMmRmMDU2MzI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQ
cmVmaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTUxLDYgKzUx
LDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lmIFVTRShBUFBLSVQp
CiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8d3RmL21hYy9BcHBLaXRDb21wYXRp
YmlsaXR5RGVjbGFyYXRpb25zLmg+CiAjZW5kaWYKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275081</attachid>
            <date>2016-03-28 21:18:52 -0700</date>
            <delta_ts>2016-03-29 09:49:07 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-155606-20160328211855.patch</filename>
            <type>text/plain</type>
            <size>27577</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2N2U3MjgzNmFkZjkwMDJhMDAyNDU0
YzIyOGVlZWFmY2U5NzA2OTkuLjk1NWEyYTUzMDcwMDczYjQ2ZWFjM2QzNDQzMjczZWUwYjM0NjE4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGltcGxlbWVudCBBdXRvbWF0aW9u
LnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTU2MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MjI3NTc2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg6IEFkZCBtaXNzaW5nIHNvbWUg
TlNFdmVudFR5cGVzLgorCiAyMDE2LTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgY29tcGlsZSB0aW1lIGZsYWcgZm9yIHVz
aW5nIFFUS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmIwNzI3MzAwZjcwMDgxYzk5MmEwZmEzMzViY2FjMzk5
MDYwNjFhOS4uNWI1ZDQwOTFmYWNmMmU3NGQ4ZTcyYjEzOTkxM2QyNmRhNThjNzBjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTAzLTI4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpbXBsZW1lbnQgQXV0b21hdGlvbi5w
ZXJmb3JtTW91c2VJbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NjA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTIyNzU3Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgVGhpcyBt
ZXRob2QgaW1wbGVtZW50cyBjb21tb24gbW91c2UgaW50ZXJhY3Rpb25zIGJ5IHN5bnRoZXNpemlu
ZyBuYXRpdmUgZXZlbnRzLgorICAgICAgICBUaGUgY3JlYXRpb24gYW5kIGRpc3BhdGNoaW5nIG9m
IHNpbXVsYXRlZCBldmVudHMgaXMgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSBwZXIKKyAgICAgICAg
YXBwbGljYXRpb24vd2luZG93L2V2ZW50IGZyYW1ld29yay4gVGhpcyBwYXRjaCBhZGRzIGFuIGlt
cGxlbWVudGF0aW9uIGZvciBwb3J0cworICAgICAgICB0aGF0IHVzZSBBcHBLaXQuCisKKyAgICAg
ICAgVGhlIGV2ZW50IGlzIGNyZWF0ZWQgc3ludGhldGljYWxseSBpbiBhIHBsYXRmb3JtLXNwZWNp
ZmljIHdheSBhbmQgZGVsaXZlcmVkIHRvCisgICAgICAgIHRoZSBwbGF0Zm9ybSdzIHdpbmRvdyBp
biB0aGUgVUlQcm9jZXNzLiBUaGUgZXZlbnQgZ29lcyB0aHJvdWdoIGFsbCB0aGUKKyAgICAgICAg
bGF5ZXJzIG9mIHByb2Nlc3NpbmcgdGhhdCBhIHJlYWwgbW91c2UgZXZlbnQgY291bGQgZ28gdGhy
b3VnaCBvbmNlIGl0IHJlYWNoZXMKKyAgICAgICAgV2ViS2l0IGl0c2VsZi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyBlbnVtcyBhbmQg
Y29tbWFuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRN
b2RpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3Jt
TW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorICAgICAgICBDbGlwIHRoZSByZXF1ZXN0ZWQgY3Vy
c29yIHBvc2l0aW9uIHNvIHRoYXQgaXQgc3RheXMgd2l0aGluIHRoZSBzZWxlY3RlZCB3aW5kb3cn
cworICAgICAgICBmcmFtZSBhbmQgZG9lc24ndCB3YW5kZXIgb2ZmIGludG8gb3RoZXIgd2luZG93
cyBvciBhcHBsaWNhdGlvbnMuIEZpcmUgaXQgdXNpbmcKKyAgICAgICAgdGhlIHBsYXRmb3JtLXNw
ZWNpZmljIHNpbXVsYXRpb24gbWV0aG9kLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6IEFkZGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKTogQWRkZWQuCisgICAgICAgIENvbnZlcnQgQXV0b21hdGlvbiBwcm90b2Nv
bCB2YWx1ZXMgdG8gQXBwS2l0IHZhbHVlcy4gU2ltdWxhdGUgYW5kIGRpc3BhdGNoCisgICAgICAg
IG9uZSBvciBtb3JlIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIGRlc2lyZWQgaW50ZXJhY3Rpb24u
CisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOiBJbmNsdWRlIEFwcEtpdENvbXBhdGliaWxpdHlE
ZWNsYXJhdGlvbnMuaCBzbyBuZXdlcgorICAgICAgICBOU0V2ZW50VHlwZXMgY2FuIGJlIHVzZWQu
CisKIDIwMTYtMDMtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vZGVybiBJREI6IFJlbW92ZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGFsbCBJREIg
RE9NIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0
aWJpbGl0eURlY2xhcmF0aW9ucy5oIGIvU291cmNlL1dURi93dGYvbWFjL0FwcEtpdENvbXBhdGli
aWxpdHlEZWNsYXJhdGlvbnMuaAppbmRleCA3NjEzNGI3YzgyYTRhNzlmMWU2NzI1YzZjZWRjMDE4
ZTUzMjUyNjIxLi4xZmFmOTRhYzYwMDQyYmVkZjA4ZjZjNDQ3OTc5OTYyYTNkNTcwODEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvQXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL21hYy9BcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRp
b25zLmgKQEAgLTc4LDggKzc4LDEyIEBAIHN0YXRpYyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50
VHlwZUxlZnRNb3VzZURyYWdnZWQgPSBOU0xlZnRNb3VzZURyYWdnZWQ7CiBzdGF0aWMgY29uc3Qg
TlNFdmVudFR5cGUgTlNFdmVudFR5cGVMZWZ0TW91c2VVcCA9IE5TTGVmdE1vdXNlVXA7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVNb3VzZU1vdmVkID0gTlNNb3VzZU1vdmVk
Owogc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd24gPSBO
U090aGVyTW91c2VEb3duOworc3RhdGljIGNvbnN0IE5TRXZlbnRUeXBlIE5TRXZlbnRUeXBlT3Ro
ZXJNb3VzZURyYWdnZWQgPSBOU090aGVyTW91c2VEcmFnZ2VkOworc3RhdGljIGNvbnN0IE5TRXZl
bnRUeXBlIE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwID0gTlNPdGhlck1vdXNlVXA7CiBzdGF0aWMg
Y29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVQZXJpb2RpYyA9IE5TUGVyaW9kaWM7CiBzdGF0
aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNlRG93biA9IE5TUmlnaHRN
b3VzZURvd247CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUgTlNFdmVudFR5cGVSaWdodE1vdXNl
RHJhZ2dlZCA9IE5TUmlnaHRNb3VzZURyYWdnZWQ7CitzdGF0aWMgY29uc3QgTlNFdmVudFR5cGUg
TlNFdmVudFR5cGVSaWdodE1vdXNlVXAgPSBOU1JpZ2h0TW91c2VVcDsKIHN0YXRpYyBjb25zdCBO
U0V2ZW50VHlwZSBOU0V2ZW50VHlwZVNjcm9sbFdoZWVsID0gTlNTY3JvbGxXaGVlbDsKIHN0YXRp
YyBjb25zdCBOU0V2ZW50VHlwZSBOU0V2ZW50VHlwZVN5c3RlbURlZmluZWQgPSBOU1N5c3RlbURl
ZmluZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1
dG9tYXRpb24uanNvbgppbmRleCA0NzI4OTIxMTllODgyNWMyMTk3NGE5YjhiYTQ0MWY1Y2I4OGZi
NWVhLi44NTRhMGMyNTU3N2QxZTAwYTQwZDZlZmU0ZjNhNDRjY2U1OTQxOTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBA
IC02OCw2ICs2OCw0MSBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luZG93U2l6ZSIs
ICIkcmVmIjogIlNpemUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUg
YnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ3aW5kb3dPcmlnaW4iLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgY3Vy
cmVudCAoeCwgeSkgcG9zaXRpb24gb2YgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cgcmVs
YXRpdmUgdG8gdGhlIHRvcC1sZWZ0IG9mIHRoZSBzY3JlZW4uIiB9CiAgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJNb3VzZUludGVyYWN0aW9u
IiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRW51bWVyYXRlcyBkaWZmZXJlbnQgd2F5cyBvZiBpbnRlcmFjdGluZyB3aXRoIGEgbW91
c2UgY3Vyc29yLiIsCisgICAgICAgICAgICAiZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiTW92
ZSIsCisgICAgICAgICAgICAgICAgIkRvd24iLAorICAgICAgICAgICAgICAgICJVcCIsCisgICAg
ICAgICAgICAgICAgIlNpbmdsZUNsaWNrIiwKKyAgICAgICAgICAgICAgICAiRG91YmxlQ2xpY2si
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6
ICJNb3VzZUJ1dHRvbiIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMgZGlmZmVyZW50IG1vdXNlIGJ1dHRvbnMgdGhh
dCBjYW4gYmUgdXNlZC4iLAorICAgICAgICAgICAgImVudW0iOiBbCisgICAgICAgICAgICAgICAg
Ik5vbmUiLAorICAgICAgICAgICAgICAgICJMZWZ0IiwKKyAgICAgICAgICAgICAgICAiTWlkZGxl
IiwKKyAgICAgICAgICAgICAgICAiUmlnaHQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJLZXlNb2RpZmllciIsCisgICAgICAgICAgICAi
dHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVudW1lcmF0ZXMg
ZGlmZmVyZW50IGtleSBtb2RpZmllcnMgdGhhdCBjYW4gcmVtYWluIHByZXNzZWQgZHVyaW5nIG90
aGVyIG1vdXNlL3RvdWNoIGludGVyYWN0aW9ucy4iLAorICAgICAgICAgICAgImVudW0iOiBbCisg
ICAgICAgICAgICAgICAgIkNhcHNMb2NrIiwKKyAgICAgICAgICAgICAgICAiQ29udHJvbCIsCisg
ICAgICAgICAgICAgICAgIlNoaWZ0IiwKKyAgICAgICAgICAgICAgICAiTWV0YSIsCisgICAgICAg
ICAgICAgICAgIkFsdCIKKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNv
bW1hbmRzIjogWwpAQCAtMTcxLDYgKzIwNiwyMCBAQAogICAgICAgICAgICAgImFzeW5jIjogdHJ1
ZQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3JtTW91
c2VJbnRlcmFjdGlvbiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2ltdWxhdGVzIGlu
dGVyYWN0aW9uIHdpdGggYSBtb3VzZSBjdXJzb3IuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3Np
bmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRv
IGJlIGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3Np
dGlvbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSByZXF1ZXN0ZWQgcG9z
aXRpb24gZm9yIHRoZSBtb3VzZSBjdXJzb3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGlu
YXRlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJidXR0b24iLCAiJHJlZiI6ICJN
b3VzZUJ1dHRvbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnV0dG9uIHRvIHVzZSB0byBwZXJmb3Jt
IHRoZSBpbnRlcmFjdGlvbi4gVGhpcyBwYXJhbWV0ZXIgb25seSBoYXMgYW4gZWZmZWN0IGZvciB0
aGUgPGNvZGU+RG93bjwvY29kZT4sIDxjb2RlPlVwPC9jb2RlPiwgPGNvZGU+Q2xpY2s8L2NvZGU+
LCBhbmQgPGNvZGU+RG91YmxlQ2xpY2s8L2NvZGU+IG1vdXNlIGludGVyYWN0aW9ucy4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnRlcmFjdGlvbiIsICIkcmVmIjogIk1vdXNlSW50
ZXJhY3Rpb24iLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gdG8gYmUg
cGVyZm9ybWVkIHdpdGggdGhlIG1vdXNlIGN1cnNvci4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJtb2RpZmllcnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
S2V5TW9kaWZpZXIiIH0sICJkZXNjcmlwdGlvbiI6ICJLZXkgbW9kaWZpZXJzIHRvIGJlIGFjdGl2
ZSBkdXJpbmcgdGhlIG1vdXNlIGludGVyYWN0aW9uLiIgfQorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zaXRpb24i
LCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdXBkYXRlZCBwb3NpdGlvbiBv
ZiB0aGUgbW91c2UgY3Vyc29yLCBzcGVjaWZpZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuIiB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInJlc29sdmVDaGlsZEZyYW1lSGFuZGxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4gYmFzZWQgb24gdGhlIG9y
ZGluYWwsIG5hbWUgb3Igbm9kZSBoYW5kbGUgb2YgYSBjaGlsZCBmcmFtZS4iLAogICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYzIwMjA5OWI1
MmQwODY2Yjk0YTJhODlkYWFjYTFmNGE4YmZiNzY4MS4uMmQyMzM1MzdjODg0OTM5NWNhNTE4MDgy
ZjdmNTg1ODgxNzc3MmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VVSUQuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKQEAgLTYzMSw0ICs2MzIsODYgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHQoSW5zcGVjdG9y
OjpFcnIKICAgICBtX2NsaWVudC0+c2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9t
cHRPblBhZ2UodGhpcywgcGFnZSwgcHJvbXB0VmFsdWUpOwogfQogCisjaWYgVVNFKEFQUEtJVCkK
K3N0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9k
aWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXIgbW9kaWZp
ZXIpCit7CisgICAgc3dpdGNoIChtb2RpZmllcikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkFsdDoKKyAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpBbHRLZXk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlNb2RpZmllcjo6TWV0YToKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpNZXRhS2V5OworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXI6OkNvbnRy
b2w6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpTaGlmdDoKKyAgICAgICAg
cmV0dXJuIFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleU1vZGlmaWVyOjpDYXBzTG9jazoKKyAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpDYXBzTG9ja0tleTsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKwordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb25PYmplY3QsIGNvbnN0
IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlv
blN0cmluZywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYga2V5TW9kaWZpZXJTdHJp
bmdzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ+JiB1cGRh
dGVkUG9zaXRpb25PYmplY3QpCit7CisjaWYgIVVTRShBUFBLSVQpCisgICAgRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfTUVTU0FHRShOb3RJbXBsZW1lbnRlZCk7CisjZWxzZQorICAgIFdlYlBh
Z2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dO
b3RGb3VuZCk7CisKKyAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMjUwOTQxMDY+OiBTcGVj
aWZ5IHdoYXQgcGFyYW1ldGVyIHdhcyBtaXNzaW5nIG9yIGludmFsaWQgYW5kIGhvdy4KKyAgICAv
LyBUaGlzIHJlcXVpcmVzIHNvbWUgY2hhbmdlcyB0byB0aGUgb3RoZXIgZW5kJ3MgZXJyb3IgaGFu
ZGxpbmcuIFJpZ2h0IG5vdyBpdCBsb29rcyBmb3IgYW4KKyAgICAvLyBleGFjdCBlcnJvciBtZXNz
YWdlIG1hdGNoLiBXZSBjb3VsZCBzdHVmZiB0aGlzIGludG8gdGhlICdkYXRhJyBmaWVsZCBvbiBl
cnJvciBvYmplY3QuCisgICAgZmxvYXQgeDsKKyAgICBpZiAoIXJlcXVlc3RlZFBvc2l0aW9uT2Jq
ZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieCIpLCB4KSkKKyAgICAgICAgRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShNaXNzaW5nUGFyYW1ldGVyKTsKKworICAgIGZs
b2F0IHk7CisgICAgaWYgKCFyZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpB
U0NJSUxpdGVyYWwoInkiKSwgeSkpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgd2lu
ZG93RnJhbWU7CisgICAgcGFnZS0+Z2V0V2luZG93RnJhbWUod2luZG93RnJhbWUpOworCisgICAg
eCA9IHN0ZDo6bWF4KHN0ZDo6bWluKDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXplKCkud2lkdGgo
KSk7CisgICAgeSA9IHN0ZDo6bWF4KHN0ZDo6bWluKDAuMGYsIHkpLCB3aW5kb3dGcmFtZS5zaXpl
KCkuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgdmlld1Bvc2l0aW9uID0gV2Vi
Q29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7
CisKKyAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24+KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcpOworICAgIGlmICghcGFyc2Vk
SW50ZXJhY3Rpb24pCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
SW52YWxpZFBhcmFtZXRlcik7CisKKyAgICBhdXRvIHBhcnNlZEJ1dHRvbiA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4obW91c2VCdXR0b25TdHJpbmcpOworICAgIGlmICghcGFy
c2VkQnV0dG9uKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKElu
dmFsaWRQYXJhbWV0ZXIpOworCisgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMg
PSAoV2ViRXZlbnQ6Ok1vZGlmaWVycykwOworICAgIGZvciAoYXV0byBpdCA9IGtleU1vZGlmaWVy
U3RyaW5ncy5iZWdpbigpOyBpdCAhPSBrZXlNb2RpZmllclN0cmluZ3MuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgU3RyaW5nIG1vZGlmaWVyU3RyaW5nOworICAgICAgICBpZiAoIWl0LT5nZXQoKS0+
YXNTdHJpbmcobW9kaWZpZXJTdHJpbmcpKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShJbnZhbGlkUGFyYW1ldGVyKTsKKworICAgICAgICBhdXRvIHBhcnNl
ZE1vZGlmaWVyID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleU1vZGlmaWVyPihtb2RpZmllclN0
cmluZyk7CisgICAgICAgIGlmICghcGFyc2VkTW9kaWZpZXIpCisgICAgICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEludmFsaWRQYXJhbWV0ZXIpOworICAgICAgICBX
ZWJFdmVudDo6TW9kaWZpZXJzIGVudW1WYWx1ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50
TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIudmFsdWUoKSk7CisgICAgICAgIGtleU1vZGlmaWVycyA9
IChXZWJFdmVudDo6TW9kaWZpZXJzKShlbnVtVmFsdWUgfCBrZXlNb2RpZmllcnMpOworICAgIH0K
KworICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKCpwYWdlLCB2aWV3UG9zaXRp
b24sIHBhcnNlZEludGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlN
b2RpZmllcnMpOworCisgICAgdXBkYXRlZFBvc2l0aW9uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UG9pbnQ6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHgpCisgICAg
ICAgIC5zZXRZKHkpCisgICAgICAgIC5yZWxlYXNlKCk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkK
K30KKworI2lmICFVU0UoQVBQS0lUKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
SW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
LCBXZWJFdmVudDo6TW9kaWZpZXJzKQoreworfQorI2VuZGlmIC8vICFVU0UoQVBQS0lUKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDYxYzU5NzZhOGVk
YzM3MThkMDcwYWU5M2RmMjcwMDMzOTc3ODdlZDEuLmUyOWMyNWU1YTM2MzE3MzU1ZmUyMzg3NjFl
YWNkZTE1NDQ0NzExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMjMsMTIgKzIzLDEyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbl9oCi0jZGVmaW5lIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvbkJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKQEAgLTQ4LDYgKzQ4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEludFJlY3Q7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQor
CisjaWYgVVNFKEFQUEtJVCkKK09CSkNfQ0xBU1MgTlNBcnJheTsKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CkBAIC05NCw2
ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG1vdXNlQnV0
dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkmIGtleU1vZGlmaWVycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlBvaW50PiYgdXBkYXRlZFBvc2l0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c29sdmVDaGlsZEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFu
ZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5h
bWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJh
bWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJh
bWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVu
dEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUVsZW1l
bnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29u
c3QgYm9vbCogdXNlVmlld3BvcnRDb29yZGluYXRlcywgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CkBAIC0xMjEsNiArMTMwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwogICAgIHZvaWQgZGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVjdCwgY29uc3QgU3RyaW5nJiBl
cnJvclR5cGUpOwogCisgICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMgaGVscGVyIG1ldGhvZHMuCisg
ICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyk7CisKKyNpZiBVU0UoQVBQ
S0lUKQorICAgIHZvaWQgc2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBhZ2VQcm94eSYs
IE5TQXJyYXkgKmV2ZW50c1RvU2VuZCk7CisjZW5kaWYKKwogICAgIFdlYlByb2Nlc3NQb29sKiBt
X3Byb2Nlc3NQb29sIHsgbnVsbHB0ciB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwpAQCAtMTU0LDUgKzE3MCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1dG9tYXRp
b25TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkyNjcxMDE3YmZi
Yzc5NWM4ODI1MDc1MTgyNTRjOTBkNjRkMWFkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0w
LDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBv
cnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1N
b3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgVVNFKEFQUEtJVCkKKwordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKQoreworICAgIE5TV2luZG93ICp3
aW5kb3cgPSBwYWdlLnBsYXRmb3JtV2luZG93KCk7CisKKyAgICBmb3IgKE5TRXZlbnQgKmV2ZW50
IGluIGV2ZW50c1RvU2VuZCkgeworICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd3d3LndlYmtp
dC5vcmcvYi8xNTU5NjM+IFNldCBhbiBhc3NvY2lhdGVkIG9iamVjdCB3aXRoIGEgcGVyLXNlc3Np
b24gaWRlbnRpZmllci4KKyAgICAgICAgLy8gVGhpcyB3aWxsIGFsbG93IGEgV2ViS2l0MiBjbGll
bnQgdG8gdGVsbCBhcGFydCBldmVudHMgc3ludGhlc2l6ZWQgb24gYmVoYWxmIG9mIGFuIGF1dG9t
YXRpb24gY29tbWFuZC4KKyAgICAgICAgW3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworICAgIH0K
K30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmll
d1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbiBidXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQoreworICAgIElu
dFJlY3Qgd2luZG93UmVjdDsKKyAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3
UG9zaXRpb24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOworICAgIEludFBvaW50IHdpbmRvd1Bv
c2l0aW9uID0gd2luZG93UmVjdC5sb2NhdGlvbigpOworCisgICAgTlNFdmVudE1vZGlmaWVyRmxh
Z3MgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFL
ZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKKyAg
ICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb247CisgICAgaWYgKGtleU1vZGlmaWVycyAmIFdl
YkV2ZW50OjpDb250cm9sS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gTlNFdmVudE1vZGlmaWVy
RmxhZ0NvbnRyb2w7CisgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2ZW50OjpTaGlmdEtleSkK
KyAgICAgICAgbW9kaWZpZXJzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKworICAgIE5T
VGltZUludGVydmFsIHRpbWVzdGFtcCA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVu
Y2VEYXRlXTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gcGFnZS5wbGF0Zm9ybVdpbmRvdygpOwor
ICAgIE5TSW50ZWdlciB3aW5kb3dOdW1iZXIgPSB3aW5kb3cud2luZG93TnVtYmVyOworCisgICAg
TlNFdmVudFR5cGUgZG93bkV2ZW50VHlwZTsKKyAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBl
OworICAgIE5TRXZlbnRUeXBlIHVwRXZlbnRUeXBlOworICAgIHN3aXRjaCAoYnV0dG9uKSB7Cisg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9u
ZToKKyAgICAgICAgZG93bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9
IE5TRXZlbnRUeXBlTW91c2VNb3ZlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgZG93
bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRG93bjsKKyAgICAgICAgZHJhZ0V2ZW50
VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsKKyAgICAgICAgdXBFdmVudFR5cGUg
PSBOU0V2ZW50VHlwZUxlZnRNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAgICAg
IGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VEb3duOworICAgICAgICBkcmFn
RXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOworICAgICAgICB1cEV2ZW50
VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAg
ICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZURvd247CisgICAgICAg
IHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlVXA7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIE5TTXV0YWJsZUFycmF5PE5TRXZlbnQgKj4gKmV2ZW50c1RvQmVTZW50ID0g
W05TTXV0YWJsZUFycmF5IG5ld107CisKKyAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpN
b3ZlOgorICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBm
XV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBj
bGljayBjb3VudCB0byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUg
c2ltdWxhdGVkCisgICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNv
dW50ZWQgYXMgYSBkb3VibGUgY2xpY2sgZXZlbnQuCisgICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRp
b246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAg
Y2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb246OlVwOgorICAgICAgICAvLyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9u
ZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKKyAgICAg
ICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJs
ZSBjbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVu
dCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24g
bW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6
d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNz
dXJlOjAuMGZdXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgLy8g
U2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBh
cyBhIHNpbmdsZS1jbGljayBldmVudC4KKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5k
b3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdp
bmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBl
IGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjowIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6
RG91YmxlQ2xpY2s6CisgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZlbnRz
IHdpdGggcHJvcGVyIGNsaWNrIGNvdW50LgorICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2VlIHRo
aXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCisgICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2Rp
ZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRl
eHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNl
QXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1v
dXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1cmU6
MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNl
RXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlm
aWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRv
d051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpX
ZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93
UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5k
b3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3Vu
dDoyIHByZXNzdXJlOjAuMGZdXTsKKyAgICB9CisKKyAgICBzZW5kU3ludGhlc2l6ZWRFdmVudHNU
b1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQpOworfQorCisjZW5kaWYgLy8gVVNFKEFQUEtJVCkK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGRjMDZhOGNiYzk0MGNiNGI4NGRjNTM2MTY2
ZjA1YWU0ZTI4NTgwNy4uNGRhNTcxZWEwNjRjNDQ5Mjk5MmRkMzhmODg3ZmU1NTI0MGE5ZmFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIzOCw2ICsxMjM4LDcgQEAKIAkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2QTkzIC8qIEF1
dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
QmFja2VuZERpc3BhdGNoZXJzLmggKi87IH07CiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CisJCTk5ODZCREQ3MUNBOUEyMkMwMDQ4MDBBQSAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAv
KiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQu
bW0gKi87IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1
NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1
RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0Qzgy
IC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTMyNzEsNiArMzI3Miw3IEBACiAJ
CTk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25CYWNrZW5kRGlz
cGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RjIxQzc5ODY2
NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBB
dXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTk4NkJERDYxQ0E5QTIyMjAwNDgwMEFBIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1
NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAwNUM0
QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDYzMSw2ICs0NjMzLDcgQEAKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlE
ZWxlZ2F0ZS5tbSAqLywKIAkJCQlFNEU4NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNo
ZWNrcy5oICovLAogCQkJCUU0RTg2NDhGMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tz
Lm1tICovLAorCQkJCTk5ODZCREQ2MUNBOUEyMjIwMDQ4MDBBQSAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tICovLAogCQkJCTFBQzAyNzNFMTk2NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdl
UHJveHlDb2NvYS5tbSAqLywKIAkJCQk3QzQ2OTRDQjFBNEI1MTBBMDBBRDU4NDUgLyogV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8q
IFdlYlByb2Nlc3NQb29sQ29jb2EubW0gKi8sCkBAIC05NDU1LDYgKzk0NTgsNyBAQAogCQkJCUM1
RTFBRkVBMTZCMjBCN0IwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUEyRTU2NjE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVu
ZGxlUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDOTg5RDgxMTYxQTdFNUQwMDBE
NDZEMyAvKiBXS1dlYlByb2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTg2QkRE
NzFDQTlBMjJDMDA0ODAwQUEgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDOEYyRjJBMTYyNzNBMkMwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjc1MDZB
RDE4NTkxNjFDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4
IGE5ZjE1MjE2NGRlY2ZlNzVhOTUyY2M3MzNjZmExYjQ2NmJiYWM4NjcuLjU3NTA5Yjk3YTRjM2Vk
ODNhNDAxYjFhNzYxNGNmMmRmMDU2MzI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDJQcmVmaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTUx
LDYgKzUxLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lmIFVTRShB
UFBLSVQpCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8d3RmL21hYy9BcHBLaXRD
b21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg+CiAjZW5kaWYKICNlbmRpZgogCg==
</data>
<flag name="review"
          id="299461"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>