<?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>161086</bug_id>
          
          <creation_ts>2016-08-23 09:37:27 -0700</creation_ts>
          <short_desc>GameController.framework backend for gamepad API</short_desc>
          <delta_ts>2016-08-30 15:27:21 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222247</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-23 09:37:27 -0700</bug_when>
    <thetext>GameController.framework backend for gamepad API

This will be necessary for iOS support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222248</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-23 09:37:58 -0700</bug_when>
    <thetext>And will include getting the tests working on iOS-sim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222914</commentid>
    <comment_count>2</comment_count>
      <attachid>286923</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-24 17:41:44 -0700</bug_when>
    <thetext>Created attachment 286923
Patch

Attaching WIP patch.

Still some cleanup to do in WebCore, and the WK2 part is obviously a hack just to let me test it...

...but it works as is!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223105</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 10:08:28 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; And will include getting the tests working on iOS-sim

Not actually true - Filing a new separate bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223107</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 10:09:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; And will include getting the tests working on iOS-sim
&gt; 
&gt; Not actually true - Filing a new separate bug for that.

Filed https://bugs.webkit.org/show_bug.cgi?id=161198 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223112</commentid>
    <comment_count>5</comment_count>
      <attachid>286979</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 10:13:08 -0700</bug_when>
    <thetext>Created attachment 286979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223118</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-25 10:22:37 -0700</bug_when>
    <thetext>Attachment 286979 did not pass style-queue:


ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:61:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:85:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:88:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:94:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:103:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:106:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:110:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:116:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:119:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:136:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:147:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:150:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:156:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:159:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:163:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:166:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 24 in 16 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>1223140</commentid>
    <comment_count>7</comment_count>
      <attachid>286988</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 11:22:14 -0700</bug_when>
    <thetext>Created attachment 286988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223142</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-25 11:24:56 -0700</bug_when>
    <thetext>Attachment 286988 did not pass style-queue:


ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:84:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:87:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:90:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:96:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:99:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:105:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:109:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:112:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:121:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:124:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:146:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:149:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:152:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:155:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:158:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:165:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 24 in 16 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>1223168</commentid>
    <comment_count>9</comment_count>
      <attachid>286994</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 12:18:26 -0700</bug_when>
    <thetext>Created attachment 286994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223171</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-25 12:22:14 -0700</bug_when>
    <thetext>Attachment 286994 did not pass style-queue:


ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:84:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:87:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:90:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:96:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:99:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:105:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:109:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:112:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:121:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:124:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:146:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:149:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:152:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:155:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:158:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:165:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 24 in 16 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>1223179</commentid>
    <comment_count>11</comment_count>
      <attachid>286996</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-25 12:48:09 -0700</bug_when>
    <thetext>Created attachment 286996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223180</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-25 12:52:51 -0700</bug_when>
    <thetext>Attachment 286996 did not pass style-queue:


ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:60:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:84:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:87:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:90:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:96:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:99:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:105:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:109:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:112:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:121:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:124:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:146:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:149:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:152:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:155:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:158:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:165:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 24 in 16 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>1223345</commentid>
    <comment_count>13</comment_count>
      <attachid>286996</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-25 17:36:23 -0700</bug_when>
    <thetext>Comment on attachment 286996
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        * platform/gamepad/cocoa/GameControllerGamepad.h: Copied from Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp.
&gt; +        * platform/gamepad/cocoa/GameControllerGamepad.mm: Added.
&gt; +        (WebCore::GameControllerGamepad::GameControllerGamepad):
&gt; +        (WebCore::GameControllerGamepad::setupAsExtendedGamepad):
&gt; +        (WebCore::GameControllerGamepad::setupAsGamepad):

Do these actually get used by the UI process? Seems a bit weird for WK2 code to be conjuring up classes from WebCore/platform.

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h:28
&gt; +#if ENABLE(GAMEPAD) &amp;&amp; defined(__LP64__)

Shouldn&apos;t ENABLE(GAMEPAD) only be set in 64-bit, via xcconfig files?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h:45
&gt; +    GameControllerGamepad(GCController *, unsigned index);

Gamepads are identified by index? What happens when they plug and unplug?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:82
&gt; +    m_axisValues.resize(6);
&gt; +    m_buttonValues.resize(8);
&gt; +
&gt; +    m_buttonValues[0] = m_extendedGamepad.get().buttonA.value;
&gt; +    m_buttonValues[1] = m_extendedGamepad.get().buttonB.value;
&gt; +    m_buttonValues[2] = m_extendedGamepad.get().buttonX.value;
&gt; +    m_buttonValues[3] = m_extendedGamepad.get().buttonY.value;
&gt; +    m_buttonValues[4] = m_extendedGamepad.get().leftShoulder.value;
&gt; +    m_buttonValues[5] = m_extendedGamepad.get().rightShoulder.value;
&gt; +    m_buttonValues[6] = m_extendedGamepad.get().leftTrigger.value;
&gt; +    m_buttonValues[7] = m_extendedGamepad.get().rightTrigger.value;
&gt; +
&gt; +    m_axisValues[0] = m_extendedGamepad.get().leftThumbstick.xAxis.value;
&gt; +    m_axisValues[1] = m_extendedGamepad.get().leftThumbstick.yAxis.value;
&gt; +    m_axisValues[2] = m_extendedGamepad.get().rightThumbstick.xAxis.value;
&gt; +    m_axisValues[3] = m_extendedGamepad.get().rightThumbstick.yAxis.value;
&gt; +    m_axisValues[4] = m_extendedGamepad.get().dpad.xAxis.value;
&gt; +    m_axisValues[5] = m_extendedGamepad.get().dpad.yAxis.value;

Cognitive dissonance that you resize m_axisValues first, then fill it second.

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:86
&gt; +    m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
&gt; +        m_buttonValues[0] = value;
&gt; +    };

Are these callbacks called on the main thread? Is there really one per button?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:136
&gt; +        m_lastUpdateTime = monotonicallyIncreasingTime();

Performance.now() time?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:86
&gt; +    Timer m_inputNotificationTimer;

I don&apos;t think Timers work in the UI process.

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:37
&gt; +static const double InputNotificationDelay = 0.05;

What units?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:51
&gt; +void GameControllerGamepadProvider::controllerDidConnect(GCController *controller, ConnectionVisibility visibility)

Can GCController be a reference?

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:64
&gt; +
&gt; +

Two lines.

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:76
&gt; +void GameControllerGamepadProvider::controllerDidDisconnect(GCController *controller)

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:297
&gt; +    WebKit::UIGamepadProvider::setUsesGameControllerFramework();

What is happening here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224021</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-27 22:16:47 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 286996 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286996&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        * platform/gamepad/cocoa/GameControllerGamepad.h: Copied from Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp.
&gt; &gt; +        * platform/gamepad/cocoa/GameControllerGamepad.mm: Added.
&gt; &gt; +        (WebCore::GameControllerGamepad::GameControllerGamepad):
&gt; &gt; +        (WebCore::GameControllerGamepad::setupAsExtendedGamepad):
&gt; &gt; +        (WebCore::GameControllerGamepad::setupAsGamepad):
&gt; 
&gt; Do these actually get used by the UI process? Seems a bit weird for WK2 code
&gt; to be conjuring up classes from WebCore/platform.

Yes they do, and that&apos;s not weird.

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h:28
&gt; &gt; +#if ENABLE(GAMEPAD) &amp;&amp; defined(__LP64__)
&gt; 
&gt; Shouldn&apos;t ENABLE(GAMEPAD) only be set in 64-bit, via xcconfig files?

ENABLE(GAMEPAD) works fine in 32 bit with the IOHID backend.

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h:45
&gt; &gt; +    GameControllerGamepad(GCController *, unsigned index);
&gt; 
&gt; Gamepads are identified by index?

Yes.

&gt; What happens when they plug and unplug?

When you unplug, that index is freed.
e.g. Plug-in two gamepads, indices 0 and 1 are taken.
Unplug gamepad 0, index 0 is now null.
Plug in a new gamepad, it takes over index 0.

This is specced behavior we already implement in IOHID and the other browsers implement.

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:82
&gt; &gt; +    m_axisValues.resize(6);
&gt; &gt; +    m_buttonValues.resize(8);
&gt; &gt; +
&gt; &gt; +    m_buttonValues[0] = m_extendedGamepad.get().buttonA.value;
&gt; &gt; +    m_buttonValues[1] = m_extendedGamepad.get().buttonB.value;
&gt; &gt; +    m_buttonValues[2] = m_extendedGamepad.get().buttonX.value;
&gt; &gt; +    m_buttonValues[3] = m_extendedGamepad.get().buttonY.value;
&gt; &gt; +    m_buttonValues[4] = m_extendedGamepad.get().leftShoulder.value;
&gt; &gt; +    m_buttonValues[5] = m_extendedGamepad.get().rightShoulder.value;
&gt; &gt; +    m_buttonValues[6] = m_extendedGamepad.get().leftTrigger.value;
&gt; &gt; +    m_buttonValues[7] = m_extendedGamepad.get().rightTrigger.value;
&gt; &gt; +
&gt; &gt; +    m_axisValues[0] = m_extendedGamepad.get().leftThumbstick.xAxis.value;
&gt; &gt; +    m_axisValues[1] = m_extendedGamepad.get().leftThumbstick.yAxis.value;
&gt; &gt; +    m_axisValues[2] = m_extendedGamepad.get().rightThumbstick.xAxis.value;
&gt; &gt; +    m_axisValues[3] = m_extendedGamepad.get().rightThumbstick.yAxis.value;
&gt; &gt; +    m_axisValues[4] = m_extendedGamepad.get().dpad.xAxis.value;
&gt; &gt; +    m_axisValues[5] = m_extendedGamepad.get().dpad.yAxis.value;
&gt; 
&gt; Cognitive dissonance that you resize m_axisValues first, then fill it second.

Maybe I misunderstand... Are you suggesting reserveInitialCapacity with uncheckedAppend?
Because while I might be able to do that in this patch, I would immediately have to revert back to this in a near-future patch, where the number of elements might dynamically change.

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:86
&gt; &gt; +    m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
&gt; &gt; +        m_buttonValues[0] = value;
&gt; &gt; +    };
&gt; 
&gt; Are these callbacks called on the main thread?

Yes

&gt; Is there really one per button?

Yup.

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:136
&gt; &gt; +        m_lastUpdateTime = monotonicallyIncreasingTime();
&gt; 
&gt; Performance.now() time?

I&apos;m deferring until https://bugs.webkit.org/show_bug.cgi?id=161150, as that will require changing more than just the platform layers.

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:86
&gt; &gt; +    Timer m_inputNotificationTimer;
&gt; 
&gt; I don&apos;t think Timers work in the UI process.

Hmmmm... Weird. The HIDGamepadProvider also uses them and works just fine in the UI process.

What problem should I be on the lookout for?

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:37
&gt; &gt; +static const double InputNotificationDelay = 0.05;
&gt; 
&gt; What units?

Will update with std::chrono.

&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:51
&gt; &gt; +void GameControllerGamepadProvider::controllerDidConnect(GCController *controller, ConnectionVisibility visibility)
&gt; 
&gt; Can GCController be a reference?

Probably!

&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:64
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Two lines.
&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:76
&gt; &gt; +void GameControllerGamepadProvider::controllerDidDisconnect(GCController *controller)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:297
&gt; &gt; +    WebKit::UIGamepadProvider::setUsesGameControllerFramework();
&gt; 
&gt; What is happening here?

Allows an SPI client (such as MiniBrowser) tell WK2 on Mac to use GameController.framework instead of the default IOHID.

Critical for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224022</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-27 22:18:18 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Comment on attachment 286996 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=286996&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; &gt; +        * platform/gamepad/cocoa/GameControllerGamepad.h: Copied from Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp.
&gt; &gt; &gt; +        * platform/gamepad/cocoa/GameControllerGamepad.mm: Added.
&gt; &gt; &gt; +        (WebCore::GameControllerGamepad::GameControllerGamepad):
&gt; &gt; &gt; +        (WebCore::GameControllerGamepad::setupAsExtendedGamepad):
&gt; &gt; &gt; +        (WebCore::GameControllerGamepad::setupAsGamepad):
&gt; &gt; 
&gt; &gt; Do these actually get used by the UI process? Seems a bit weird for WK2 code
&gt; &gt; to be conjuring up classes from WebCore/platform.
&gt; 
&gt; Yes they do, and that&apos;s not weird.

I meant to expand on this before saving the comment: It&apos;s not weird in that this is certainly not the first use, and there&apos;s no real reason I&apos;m aware of that it shouldn&apos;t be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224104</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-08-28 17:36:04 -0700</bug_when>
    <thetext>
&gt; &gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:86
&gt; &gt; &gt; +    Timer m_inputNotificationTimer;
&gt; &gt; 
&gt; &gt; I don&apos;t think Timers work in the UI process.
&gt; 
&gt; Hmmmm... Weird. The HIDGamepadProvider also uses them and works just fine in
&gt; the UI process.
&gt; 
&gt; What problem should I be on the lookout for?

It works, but you shouldn&apos;t, because of WK1/WK2 coexistence issues (web thread vs main thread confusion IIRC). Use RunLoop timer instead, like you&apos;ll notice all of the WK2 UI process code does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224711</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 14:33:13 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)&gt; 
&gt; &gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:51
&gt; &gt; &gt; +void GameControllerGamepadProvider::controllerDidConnect(GCController *controller, ConnectionVisibility visibility)
&gt; &gt; 
&gt; &gt; Can GCController be a reference?
&gt; 
&gt; Probably!

Update: GCController is an Objective-C object from a framework - Should not be passed around as a C++ reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224715</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 14:39:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; &gt; &gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:86
&gt; &gt; &gt; &gt; +    Timer m_inputNotificationTimer;
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think Timers work in the UI process.
&gt; &gt; 
&gt; &gt; Hmmmm... Weird. The HIDGamepadProvider also uses them and works just fine in
&gt; &gt; the UI process.
&gt; &gt; 
&gt; &gt; What problem should I be on the lookout for?
&gt; 
&gt; It works, but you shouldn&apos;t, because of WK1/WK2 coexistence issues (web
&gt; thread vs main thread confusion IIRC). Use RunLoop timer instead, like
&gt; you&apos;ll notice all of the WK2 UI process code does.

Changing the WebCore::Timer over in this patch, and filed https://bugs.webkit.org/show_bug.cgi?id=161407 for the IOHID provider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224723</commentid>
    <comment_count>19</comment_count>
      <attachid>287435</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 14:52:09 -0700</bug_when>
    <thetext>Created attachment 287435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224724</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 14:52:43 -0700</bug_when>
    <thetext>This new patch addresses all of Simon&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224743</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 15:26:58 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/205199</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286923</attachid>
            <date>2016-08-24 17:41:44 -0700</date>
            <delta_ts>2016-08-25 10:13:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31579</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiZjQ5NWZiLi43NzU2ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgsNyBAQAogCQk1MUFCQUUx
RTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1
MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovOyB9OwogCQk1MUFCRjY0RDE2MzkyRTI4MDAxMzJBN0Eg
LyogTG9hZGVyU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5LmNw
cCAqLzsgfTsKKwkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgKi87
IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFGNTAzNTE2
RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1
QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFy
Y2hpdmVNYWMubW0gKi87IH07CiAJCTUxQjQ1NEVBMUI0REFFN0QwMDg1RUFBNiAvKiBQaW5nSGFu
ZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0
NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjA1LDYgKzIyMDYsMTAgQEAKIAkJNTFF
MUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1QiAvKiBJ
Y29uUmVjb3JkLmggKi87IH07CiAJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJM
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCAqLzsgfTsKIAkJ
NTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JEMEM5MUM5MDQwMERDMjU1
QiAvKiBQYWdlVVJMUmVjb3JkLmggKi87IH07CisJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlDODgzMSAv
KiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkQx
RDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsKKwkJNTFF
Mzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFE
NkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUUzOTkwMzFENkU0
NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0NzRCMDA5
Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJCTUxRTNB
QTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0FBMDgxQjk4QkM5QTAwMzZB
RDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi87IH07CiAJCTUxRTNBQTBCMUI5OEJDQUIw
MDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0
eU9yaWdpbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBEQTA1OURDMDAy
NTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MTA0LDYgKzkxMDksNyBAQAogCQk1MUFC
QUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0cmF0ZWd5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBRUE0QzgxRDZFM0NDMTAwRTAy
NjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gR2FtZUNv
bnRyb2xsZXIuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9HYW1lQ29udHJvbGxlci5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5
cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAwRTgz
RjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05MTcwLDYgKzkxNzYsMTAgQEAKIAkJNTFFMUVDQkIwQzkxQzkwNDAw
REMyNTVCIC8qIEljb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWNvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNCQzBDOTFD
OTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVVSTFJlY29yZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVDb250cm9s
bGVyR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRDFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0FBMDkxQjk4QkM5QTAwMzZBRDgx
IC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZWN1cml0eU9yaWdpbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFF
M0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQy
NzksNiArMTQyODksNyBAQAogCQkJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5M0YxOUIxNzA4MjQ1RTU5
MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJCTFDRkFF
MzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCisJ
CQkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAogCQkJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwy
LmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMzc5OTE5QjIxMjAwREU1MDAwRUEwNDFDIC8q
IGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODhBRDUyRjA5NTI0QjkyMDAxREQx
OTYgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0NzQ1LDYg
KzE0NzU2LDcgQEAKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0ZS5m
cmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9vbGJv
eC5mcmFtZXdvcmsgKi8sCiAJCQkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQgLyogR2Ft
ZUNvbnRyb2xsZXIuZnJhbWV3b3JrICovLAogCQkJCTFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAv
KiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5M0YxRDMxQTA1NThDQzVDMDA4MjFCQzAg
LyogbGliaWN1Y29yZS5keWxpYiAqLywKQEAgLTE2NDU3LDYgKzE2NDY5LDcgQEAKIAkJNTE1QkUx
ODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUVBNEJGMUQ2RTNDMjMwMEUwMjY5RCAvKiBjb2NvYSAq
LywKIAkJCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovLAogCQkJCTUxNUJFMTg4
MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1
QkUxODkxRDU0RjVGNjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggKi8sCkBAIC0x
NjU1Myw2ICsxNjU2NiwxNyBAQAogCQkJbmFtZSA9IEdhbWVwYWQ7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQk1MUFFQTRCRjFENkUzQzIzMDBFMDI2OUQgLyogY29jb2EgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5OEZDMUQ2
RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLywKKwkJCQk1MUUzOThG
RDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovLAorCQkJCTUx
RTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5o
ICovLAorCQkJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQk1MUM0QUE1MTE4QjI4MzU3MDA3QkZFOUIgLyogbWFjICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE1LDYgKzI1
MTM5LDcgQEAKIAkJCQlCMkZBM0Q2NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1bWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8qIEpTU1ZHRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTkwQUU1Qzk0NDAwREY1OERGIC8qIEpT
U1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUUzOTkwMDFE
NkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q2OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjI2NkNENEUwQzNBRUM2NTAwRUIwOEQyIC8qIEpTU1ZHRXhjZXB0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3MCw2ICsyNjU5NSw3IEBA
CiAJCQkJQ0RBMDdGQkUxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQTA3RkMyMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0ZW1TbGVl
cExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDU5NzVCMzE5NjM1RjExMDBEMDA4
NzggLyogU3lzdGVtVmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFMzk5MDIxRDZFNDc1
MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25l
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4ODAwLDYgKzI4ODI2LDcgQEAKIAkJCQlC
MkZBM0Q2ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjY2Q0Q0RDBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNlcHRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDMxRDZFNDc1MDAw
OUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJG
QTNENzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjkyNTYsNiArMjkyODMsNyBAQAogCQkJCUU0MzEwNUI4MTY3NTBGMEMw
MERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzNTAzQ0M3
MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8q
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1MTNENTEx
Njc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDBBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjliNGRjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIEdDQ29udHJvbGxlcjsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyQXhpc0lucHV0
OworT0JKQ19DTEFTUyBHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dDsKK09CSkNfQ0xBU1MgR0NDb250
cm9sbGVyRWxlbWVudDsKK09CSkNfQ0xBU1MgR0NFeHRlbmRlZEdhbWVwYWQ7CitPQkpDX0NMQVNT
IEdDR2FtZXBhZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lQ29udHJvbGxl
ckdhbWVwYWQgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShHYW1lQ29udHJvbGxlckdhbWVwYWQpOworcHVibGljOgorICAgIEdhbWVDb250cm9sbGVy
R2FtZXBhZChHQ0NvbnRyb2xsZXIgKiwgdW5zaWduZWQgaW5kZXgpOworCisgICAgY29uc3QgVmVj
dG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1
ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldHVw
QXNFeHRlbmRlZEdhbWVwYWQoKTsKKyAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CisKKyAgICBS
ZXRhaW5QdHI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKKworICAgIFZlY3Rvcjxkb3Vi
bGU+IG1fYXhpc1ZhbHVlczsKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKwor
ICAgIFJldGFpblB0cjxHQ0dhbWVwYWQ+IG1fZ2FtZXBhZDsKKyAgICBSZXRhaW5QdHI8R0NFeHRl
bmRlZEdhbWVwYWQ+IG1fZXh0ZW5kZWRHYW1lcGFkOworfTsKKworCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWFlMGNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWQubW0KQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgorCisjaWYg
RU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5oIgorI2luY2x1ZGUgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZUNvbnRy
b2xsZXJHYW1lcGFkOjpHYW1lQ29udHJvbGxlckdhbWVwYWQoR0NDb250cm9sbGVyICpjb250cm9s
bGVyLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAs
IG1fZ2NDb250cm9sbGVyKGNvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKGluZGV4IDwgNCk7Cisg
ICAgY29udHJvbGxlci5wbGF5ZXJJbmRleCA9IChHQ0NvbnRyb2xsZXJQbGF5ZXJJbmRleCkoR0ND
b250cm9sbGVyUGxheWVySW5kZXgxICsgaW5kZXgpOworCisgICAgbV9leHRlbmRlZEdhbWVwYWQg
PSBjb250cm9sbGVyLmV4dGVuZGVkR2FtZXBhZDsKKyAgICBpZiAoIW1fZXh0ZW5kZWRHYW1lcGFk
KQorICAgICAgICBtX2dhbWVwYWQgPSBjb250cm9sbGVyLmdhbWVwYWQ7CisKKyAgICBBU1NFUlQo
bV9leHRlbmRlZEdhbWVwYWQgfHwgbV9nYW1lcGFkKTsKKworICAgIGlmIChtX2V4dGVuZGVkR2Ft
ZXBhZCkKKyAgICAgICAgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgpOworICAgIGVsc2UKKyAgICAg
ICAgc2V0dXBBc0dhbWVwYWQoKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNl
dHVwQXNFeHRlbmRlZEdhbWVwYWQoKQoreworICAgIEFTU0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7
CisKKyAgICBtX2lkID0gbWFrZVN0cmluZyhTdHJpbmcobV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVu
ZG9yTmFtZSksIEFTQ0lJTGl0ZXJhbCgiIEV4dGVuZGVkIEdhbWVwYWQiKSk7CisKKyAgICBtX2V4
dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXiAoR0NFeHRlbmRlZEdh
bWVwYWQgKiwgR0NDb250cm9sbGVyRWxlbWVudCAqKSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRp
bWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7Cisg
ICAgfTsKKworICAgIG1fYXhpc1ZhbHVlcy5yZXNpemUoNik7CisgICAgbV9idXR0b25WYWx1ZXMu
cmVzaXplKDgpOworCisgICAgbV9idXR0b25WYWx1ZXNbMF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5idXR0b25BLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVzWzFdID0gbV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkuYnV0dG9uQi52YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1syXSA9IG1fZXh0
ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbM10g
PSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25ZLnZhbHVlOworICAgIG1fYnV0dG9uVmFs
dWVzWzRdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFNob3VsZGVyLnZhbHVlOworICAg
IG1fYnV0dG9uVmFsdWVzWzVdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRl
ci52YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1s2XSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LmxlZnRUcmlnZ2VyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVzWzddID0gbV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkucmlnaHRUcmlnZ2VyLnZhbHVlOworCisgICAgbV9heGlzVmFsdWVzWzBdID0g
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRodW1ic3RpY2sueEF4aXMudmFsdWU7CisgICAg
bV9heGlzVmFsdWVzWzFdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRodW1ic3RpY2su
eUF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkucmlnaHRUaHVtYnN0aWNrLnhBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1szXSA9IG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGljay55QXhpcy52YWx1ZTsKKyAgICBt
X2F4aXNWYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnhBeGlzLnZhbHVl
OworICAgIG1fYXhpc1ZhbHVlc1s1XSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQueUF4
aXMudmFsdWU7CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25BLnZhbHVlQ2hh
bmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwg
Qk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAg
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXiAo
R0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAg
bV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4gKEdDQ29udHJvbGxlckJ1dHRv
bklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzJd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25ZLnZh
bHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2
YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1szXSA9IHZhbHVlOworICAgIH07
CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhh
bmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkg
eworICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXiAo
R0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAg
bV9idXR0b25WYWx1ZXNbNV0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmxlZnRUcmlnZ2VyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJC
dXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVl
c1s2XSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRU
cmlnZ2VyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAq
LCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s3XSA9IHZhbHVl
OworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay54
QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXiAoR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZs
b2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1swXSA9IHZhbHVlOworICAgIH07Cisg
ICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRodW1ic3RpY2sueUF4aXMudmFsdWVDaGFu
Z2VkSGFuZGxlciA9IF4gKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgewor
ICAgICAgICBtX2F4aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0g
XiAoR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhp
c1ZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
cmlnaHRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xs
ZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzNdID0g
dmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnhBeGlzLnZh
bHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFs
dWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzRdID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4
dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeIChH
Q0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFs
dWVzWzVdID0gdmFsdWU7CisgICAgfTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6
OnNldHVwQXNHYW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFkKTsKKworICAgIG1faWQg
PSBtYWtlU3RyaW5nKFN0cmluZyhtX2djQ29udHJvbGxlci5nZXQoKS52ZW5kb3JOYW1lKSwgQVND
SUlMaXRlcmFsKCIgR2FtZXBhZCIpKTsKKworICAgIG1fZ2FtZXBhZC5nZXQoKS52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXiAoR0NHYW1lcGFkICosIEdDQ29udHJvbGxlckVsZW1lbnQgKikgeworICAg
ICAgICBtX2xhc3RVcGRhdGVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5nYW1lcGFk
SGFkSW5wdXQoKnRoaXMpOworICAgIH07CisKKyAgICBtX2F4aXNWYWx1ZXMucmVzaXplKDIpOwor
ICAgIG1fYnV0dG9uVmFsdWVzLnJlc2l6ZSg2KTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdl
dCgpLmJ1dHRvbkEudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4gKEdDQ29udHJvbGxlckJ1dHRvbklu
cHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzBdID0g
dmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVl
Q2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1
ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9IHZhbHVlOworICAgIH07Cisg
ICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZUNoYW5nZWRIYW5kbGVyID0g
XiAoR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAg
ICAgbV9idXR0b25WYWx1ZXNbMl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1l
cGFkLmdldCgpLmJ1dHRvblkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4gKEdDQ29udHJvbGxlckJ1
dHRvbklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVz
WzNdID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0U2hv
dWxkZXIudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4gKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICos
IGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzRdID0gdmFsdWU7
CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZhbHVl
Q2hhbmdlZEhhbmRsZXIgPSBeIChHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1
ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07CisK
KyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXiAoR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVlKSB7
CisgICAgICAgIG1fYXhpc1ZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkubGVmdFRodW1ic3RpY2sueUF4aXMudmFsdWVDaGFuZ2VkSGFuZGxlciA9
IF4gKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBtX2F4
aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmIzNTY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29u
dHJvbGxlcjsKK09CSkNfQ0xBU1MgTlNPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
OworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFk
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRW
ZWN0b3I7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKworICAg
IHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYpOworCitwcml2YXRl
OgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBlbnVtIGNsYXNz
IENvbm5lY3Rpb25WaXNpYmlsaXR5IHsKKyAgICAgICAgVmlzaWJsZSwKKyAgICAgICAgSW52aXNp
YmxlLAorICAgIH07CisKKyAgICB2b2lkIGNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxl
ciAqLCBDb25uZWN0aW9uVmlzaWJpbGl0eSk7CisgICAgdm9pZCBjb250cm9sbGVyRGlkRGlzY29u
bmVjdChHQ0NvbnRyb2xsZXIgKik7CisKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKCk7CisKKyAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwor
CisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgSGFzaFNl
dDxHYW1lcGFkUHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7CisKKyAgICBIYXNoTWFwPEdDQ29u
dHJvbGxlciAqLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPj4gbV9nYW1l
cGFkTWFwOworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7Cisg
ICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRzOworCisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBtX2Nvbm5lY3RPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNP
YmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOworCisgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQzYjFhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgi
CisjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBJbnB1dE5vdGlmaWNhdGlvbkRlbGF5ID0g
MC4wNTsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXImIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJu
IHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6R2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIoKQorICAgIDogbV9pbnB1dE5vdGlmaWNhdGlvblRp
bWVyKCp0aGlzLCAmR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0
aW9uVGltZXJGaXJlZCkKKworeworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIENvbm5l
Y3Rpb25WaXNpYmlsaXR5IHZpc2liaWxpdHkpCit7CisgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7
CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsK
KyAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBh
ZD4oY29udHJvbGxlciwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkg
PD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKwor
ICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBnYW1lcGFkLmdldCgpOworICAgIG1fZ2FtZXBh
ZE1hcC5zZXQoY29udHJvbGxlciwgV1RGTW92ZShnYW1lcGFkKSk7CisKKworICAgIGlmICh2aXNp
YmlsaXR5ID09IENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJbnZpc2libGUpIHsKKyAgICAgICAgbV9p
bnZpc2libGVHYW1lcGFkcy5hZGQobV9nYW1lcGFkVmVjdG9yW2luZGV4XSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisg
ICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdKTsKK30KKwordm9pZCBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZERpc2Nvbm5lY3QoR0ND
b250cm9sbGVyICpjb250cm9sbGVyKQoreworICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCByZW1vdmVkIiwgY29udHJvbGxlcik7CisK
KyAgICBhdXRvIHJlbW92ZWRHYW1lcGFkID0gbV9nYW1lcGFkTWFwLnRha2UoY29udHJvbGxlcik7
CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZl
Y3Rvci5maW5kKHJlbW92ZWRHYW1lcGFkLmdldCgpKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkK
KyAgICAgICAgbV9nYW1lcGFkVmVjdG9yW2ldID0gbnVsbHB0cjsKKworICAgIG1faW52aXNpYmxl
R2FtZXBhZHMucmVtb3ZlKHJlbW92ZWRHYW1lcGFkLmdldCgpKTsKKworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nv
bm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7Cisg
ICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIGlmIChtX2Nvbm5lY3RPYnNlcnZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0T2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpHQ0NvbnRyb2xsZXJE
aWRDb25uZWN0Tm90aWZpY2F0aW9uIG9iamVjdDpuaWwgcXVldWU6bmlsIHVzaW5nQmxvY2s6XihO
U05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jb250cm9sbGVyRGlkQ29ubmVjdChub3RpZmljYXRp
b24ub2JqZWN0LCBDb25uZWN0aW9uVmlzaWJpbGl0eTo6VmlzaWJsZSk7CisgICAgfV07CisKKyAg
ICBtX2Rpc2Nvbm5lY3RPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOkdDQ29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmlj
YXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpu
b3RpZmljYXRpb24pIHsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmNvbnRyb2xsZXJEaWREaXNjb25uZWN0KG5vdGlmaWNhdGlvbi5vYmplY3QpOwor
ICAgIH1dOworCisgICAgZm9yIChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgaW4gW0dDQ29udHJv
bGxlciBjb250cm9sbGVyc10pCisgICAgICAgIGNvbnRyb2xsZXJEaWRDb25uZWN0KGNvbnRyb2xs
ZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJbnZpc2libGUpOworfQorCit2b2lkIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CisKKyAgICBpZiAoIW1fY29u
bmVjdE9ic2VydmVyIHx8ICFtX2NsaWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
Om1fY29ubmVjdE9ic2VydmVyLmdldCgpXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fZGlzY29ubmVjdE9ic2VydmVyLmdldCgpXTsK
K30KKwordW5zaWduZWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3
bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGls
ZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRl
eF0pCisgICAgICAgICsraW5kZXg7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxl
ckdhbWVwYWQmKQoreworICAgIGlmICghbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1faW5wdXROb3RpZmljYXRpb25UaW1lci5zdGFydE9uZVNob3QoSW5wdXRO
b3RpZmljYXRpb25EZWxheSk7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCkKK3sKKyAgICBmb3IgKGF1dG8qIGdh
bWVwYWQgOiBtX2ludmlzaWJsZUdhbWVwYWRzKSB7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0
ZWQoKmdhbWVwYWQpOworICAgIH0KKworICAgIG1faW52aXNpYmxlR2FtZXBhZHMuY2xlYXIoKTsK
K30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRp
b25UaW1lckZpcmVkKCkKK3sKKyAgICBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwor
CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxh
dGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCmlu
ZGV4IDM5MGNkZjguLmY4NjZlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0dh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1l
cGFkUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tHYW1lcGFkUHJvdmlkZXIuaD4K
IApAQCAtNDAsNyArNDEsOCBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERl
ZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHYW1l
cGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkpOworLy8gICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJl
ZFByb3ZpZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiB9
CiAKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286979</attachid>
            <date>2016-08-25 10:13:08 -0700</date>
            <delta_ts>2016-08-25 11:22:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161086-20160825101106.patch</filename>
            <type>text/plain</type>
            <size>55018</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUyNWU5ZjMxMDI0M2Rj
ZTE5ZWRhNDc3ZDU3YTY1OWM1Y2FiYzNiMC4uNzM0NzAyMDQwNTRiZjk2MTQzYThlMWQwZGNkY2Y0
Y2U1ZGNkODNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5m
cmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBhZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5hdGl2ZSBmcmFtZXdvcmsg
YmFja2VuZHMgbm90IGRpcmVjdGx5IHRlc3RhYmxlKQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAg
ICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRy
b2xsZXJHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6
c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29u
dHJvbGxlckRpZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkSGFkSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNWFlNjRjMDZhNGE4MDc5Y2QxNDRiZmY2Nzg3ZWRmMjdkMmFkMTUyYi4u
M2NmZTEwNzcyZmIwODIwNmI3ZjEzMDQwMTU5ZjdmNDIyZWYyNDVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBh
ZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKCtbV0tQcm9j
ZXNzUG9vbCBfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29ya10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNw
cC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldFVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yayk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQpOgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTA4LTI0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGltZXN0
YW1wcyBhbmQgaWRzIHdvcmtpbmcgaW4gV0syIGdhbWVwYWRzIChhbmQgdGVzdCB0aGVtISkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiZjQ5NWZiYzVlZTQxOGI5Y2FiNmM3NjRmOTZhODYyNTg1OGU4ZmI3Li43NzU2ZDk5ZWU1NWYz
MzU0Nzg3YzI0ZDY5NGE3MDQ3MjkxYjhmNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgsNyBAQAogCQk1
MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovOyB9OwogCQk1MUFCRjY0RDE2MzkyRTI4MDAx
MzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLzsgfTsKKwkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9s
bGVyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdv
cmsgKi87IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFG
NTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQjQ1NEVBMUI0REFFN0QwMDg1RUFBNiAvKiBQ
aW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjA1LDYgKzIyMDYsMTAgQEAK
IAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmggKi87IH07CiAJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQ
YWdlVVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCAqLzsg
fTsKIAkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JEMEM5MUM5MDQw
MERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmggKi87IH07CisJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlD
ODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
Mzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsK
KwkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUz
OThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUUzOTkw
MzFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJ
CTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0FBMDgxQjk4QkM5
QTAwMzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi87IH07CiAJCTUxRTNBQTBCMUI5
OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBT
ZWN1cml0eU9yaWdpbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBEQTA1
OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MTA0LDYgKzkxMDksNyBAQAog
CQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0
cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0
cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBRUE0QzgxRDZFM0ND
MTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
R2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9HYW1lQ29udHJvbGxlci5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxv
YWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYz
RjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTcwLDYgKzkxNzYsMTAgQEAKIAkJNTFFMUVDQkIwQzkx
QzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSWNvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNC
QzBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVVSTFJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVD
b250cm9sbGVyR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThG
RDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0FBMDkxQjk4QkM5QTAw
MzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWN1cml0eU9yaWdpbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFFM0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQyNzksNiArMTQyODksNyBAQAogCQkJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5M0YxOUIxNzA4
MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8sCisJCQkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBs
aWJ4bWwyLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMzc5OTE5QjIxMjAwREU1MDAwRUEw
NDFDIC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODhBRDUyRjA5NTI0Qjky
MDAxREQxOTYgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0
NzQ1LDYgKzE0NzU2LDcgQEAKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxl
cmF0ZS5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlv
VG9vbGJveC5mcmFtZXdvcmsgKi8sCiAJCQkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQg
LyogR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrICovLAogCQkJCTFBQjMzREE0MTI1NTFFMzIwMDI0
NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMx
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5M0YxRDMxQTA1NThDQzVDMDA4
MjFCQzAgLyogbGliaWN1Y29yZS5keWxpYiAqLywKQEAgLTE2NDU3LDYgKzE2NDY5LDcgQEAKIAkJ
NTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUVBNEJGMUQ2RTNDMjMwMEUwMjY5RCAvKiBj
b2NvYSAqLywKIAkJCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovLAogCQkJCTUx
NUJFMTg4MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJ
CQkJNTE1QkUxODkxRDU0RjVGNjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggKi8s
CkBAIC0xNjU1Myw2ICsxNjU2NiwxNyBAQAogCQkJbmFtZSA9IEdhbWVwYWQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUFFQTRCRjFENkUzQzIzMDBFMDI2OUQgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5
OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLywKKwkJCQk1
MUUzOThGRDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovLAor
CQkJCTUxRTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5oICovLAorCQkJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MUM0QUE1MTE4QjI4MzU3MDA3QkZFOUIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE1
LDYgKzI1MTM5LDcgQEAKIAkJCQlCMkZBM0Q2NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTkwQUU1Qzk0NDAwREY1OERG
IC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUUz
OTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0Q2OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI2NkNENEUwQzNBRUM2NTAwRUIwOEQyIC8qIEpTU1ZH
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2QjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3MCw2ICsyNjU5
NSw3IEBACiAJCQkJQ0RBMDdGQkUxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTA3RkMyMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDU5NzVCMzE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFMzk5MDIx
RDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVs
ZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4ODAwLDYgKzI4ODI2LDcgQEAK
IAkJCQlCMkZBM0Q2ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjY2Q0Q0RDBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkEwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDMxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkyNTYsNiArMjkyODMsNyBAQAogCQkJCUU0MzEwNUI4MTY3
NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
NTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1
MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDBBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNGRjOGZkYjY1
ODY5OTNhNTZlZTUxYTZjOTdmODY1YzQ4Mjc3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29udHJvbGxlcjsKK09CSkNfQ0xBU1MgR0NDb250
cm9sbGVyQXhpc0lucHV0OworT0JKQ19DTEFTUyBHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dDsKK09C
SkNfQ0xBU1MgR0NDb250cm9sbGVyRWxlbWVudDsKK09CSkNfQ0xBU1MgR0NFeHRlbmRlZEdhbWVw
YWQ7CitPQkpDX0NMQVNTIEdDR2FtZXBhZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHYW1lQ29udHJvbGxlckdhbWVwYWQgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShHYW1lQ29udHJvbGxlckdhbWVwYWQpOworcHVibGljOgorICAg
IEdhbWVDb250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIgKiwgdW5zaWduZWQgaW5kZXgpOwor
CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2F4aXNWYWx1ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFs
dWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KKworcHJpdmF0ZToK
KyAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKKyAgICB2b2lkIHNldHVwQXNHYW1l
cGFkKCk7CisKKyAgICBSZXRhaW5QdHI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKKwor
ICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2J1
dHRvblZhbHVlczsKKworICAgIFJldGFpblB0cjxHQ0dhbWVwYWQ+IG1fZ2FtZXBhZDsKKyAgICBS
ZXRhaW5QdHI8R0NFeHRlbmRlZEdhbWVwYWQ+IG1fZXh0ZW5kZWRHYW1lcGFkOworfTsKKworCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyR2FtZXBhZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjMyMGI2OWIyMzIzY2QzNmUwZmQ2
NTIwMGMyMTMyNWFkYzY4NjIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0KQEAgLTAsMCArMSwx
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVDb250
cm9sbGVyR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPEdhbWVDb250cm9sbGVyL0dh
bWVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpHYW1lQ29udHJvbGxlckdhbWVw
YWQoR0NDb250cm9sbGVyICpjb250cm9sbGVyLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6IFBsYXRm
b3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZ2NDb250cm9sbGVyKGNvbnRyb2xsZXIpCit7Cisg
ICAgQVNTRVJUKGluZGV4IDwgNCk7CisgICAgY29udHJvbGxlci5wbGF5ZXJJbmRleCA9IChHQ0Nv
bnRyb2xsZXJQbGF5ZXJJbmRleCkoR0NDb250cm9sbGVyUGxheWVySW5kZXgxICsgaW5kZXgpOwor
CisgICAgbV9leHRlbmRlZEdhbWVwYWQgPSBjb250cm9sbGVyLmV4dGVuZGVkR2FtZXBhZDsKKyAg
ICBpZiAoIW1fZXh0ZW5kZWRHYW1lcGFkKQorICAgICAgICBtX2dhbWVwYWQgPSBjb250cm9sbGVy
LmdhbWVwYWQ7CisKKyAgICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQgfHwgbV9nYW1lcGFkKTsK
KworICAgIGlmIChtX2V4dGVuZGVkR2FtZXBhZCkKKyAgICAgICAgc2V0dXBBc0V4dGVuZGVkR2Ft
ZXBhZCgpOworICAgIGVsc2UKKyAgICAgICAgc2V0dXBBc0dhbWVwYWQoKTsKK30KKwordm9pZCBH
YW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQoreworICAgIEFT
U0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7CisKKyAgICBtX2lkID0gbWFrZVN0cmluZyhTdHJpbmco
bV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVuZG9yTmFtZSksIEFTQ0lJTGl0ZXJhbCgiIEV4dGVuZGVk
IEdhbWVwYWQiKSk7CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1ZUNoYW5nZWRI
YW5kbGVyID0gXihHQ0V4dGVuZGVkR2FtZXBhZCAqLCBHQ0NvbnRyb2xsZXJFbGVtZW50ICopIHsK
KyAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuZ2Ft
ZXBhZEhhZElucHV0KCp0aGlzKTsKKyAgICB9OworCisgICAgbV9heGlzVmFsdWVzLnJlc2l6ZSg2
KTsKKyAgICBtX2J1dHRvblZhbHVlcy5yZXNpemUoOCk7CisKKyAgICBtX2J1dHRvblZhbHVlc1sw
XSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWU7CisgICAgbV9idXR0b25W
YWx1ZXNbMV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVlOworICAgIG1f
YnV0dG9uVmFsdWVzWzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZTsK
KyAgICBtX2J1dHRvblZhbHVlc1szXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblku
dmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5s
ZWZ0U2hvdWxkZXIudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNV0gPSBtX2V4dGVuZGVkR2Ft
ZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVzWzZdID0g
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWU7CisgICAgbV9idXR0b25W
YWx1ZXNbN10gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIudmFsdWU7CisK
KyAgICBtX2F4aXNWYWx1ZXNbMF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJz
dGljay54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbMV0gPSBtX2V4dGVuZGVkR2FtZXBh
ZC5nZXQoKS5sZWZ0VGh1bWJzdGljay55QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbMl0g
PSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFsdWU7Cisg
ICAgbV9heGlzVmFsdWVzWzNdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0
aWNrLnlBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1s0XSA9IG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmRwYWQueEF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzVdID0gbV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmJ1dHRvbkEudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9u
SW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMF0g
PSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkIudmFs
dWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFs
dWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9Owor
ICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFuZGxlciA9
IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAg
ICAgbV9idXR0b25WYWx1ZXNbMl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1l
cGFkLmdldCgpLmJ1dHRvblkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0
dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNb
M10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRTaG91
bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBm
bG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZhbHVlOwor
ICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwg
Qk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07CisgICAg
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWVDaGFuZ2VkSGFuZGxlciA9
IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAg
ICAgbV9idXR0b25WYWx1ZXNbNl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1l
cGFkLmdldCgpLnJpZ2h0VHJpZ2dlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xs
ZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZh
bHVlc1s3XSA9IHZhbHVlOworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5s
ZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJB
eGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzBdID0gdmFs
dWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay55
QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxv
YXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzFdID0gdmFsdWU7CisgICAgfTsKKyAg
ICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFsdWVDaGFu
Z2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVlKSB7Cisg
ICAgICAgIG1fYXhpc1ZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBe
KEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBtX2F4aXNW
YWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRw
YWQueEF4aXMudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICos
IGZsb2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1s0XSA9IHZhbHVlOworICAgIH07
CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZUNoYW5nZWRIYW5k
bGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAg
bV9heGlzVmFsdWVzWzVdID0gdmFsdWU7CisgICAgfTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFkKTsKKwor
ICAgIG1faWQgPSBtYWtlU3RyaW5nKFN0cmluZyhtX2djQ29udHJvbGxlci5nZXQoKS52ZW5kb3JO
YW1lKSwgQVNDSUlMaXRlcmFsKCIgR2FtZXBhZCIpKTsKKworICAgIG1fZ2FtZXBhZC5nZXQoKS52
YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0dhbWVwYWQgKiwgR0NDb250cm9sbGVyRWxlbWVudCAq
KSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7CisgICAgfTsKKworICAgIG1fYXhpc1ZhbHVlcy5yZXNp
emUoMik7CisgICAgbV9idXR0b25WYWx1ZXMucmVzaXplKDYpOworCisgICAgbV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJC
dXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVl
c1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9u
Qi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9h
dCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9IHZhbHVlOworICAg
IH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZUNoYW5nZWRIYW5k
bGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgewor
ICAgICAgICBtX2J1dHRvblZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xs
ZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZh
bHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVm
dFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0
ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzRdID0gdmFs
dWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZh
bHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICosIGZsb2F0IHZh
bHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzVdID0gdmFsdWU7CisgICAgfTsK
KworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlzLnZhbHVl
Q2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkg
eworICAgICAgICBtX2F4aXNWYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIg
PSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBtX2F4
aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmIzNTY5MTA5ZTYxNzAyZGU4Y2Y3YjhkNTk5NDNl
NmViNDk1MmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisj
aW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NM
QVNTIEdDQ29udHJvbGxlcjsKK09CSkNfQ0xBU1MgTlNPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50OworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciA6IHB1Ymxp
YyBHYW1lcGFkUHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3Jp
bmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0
b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBt
X2dhbWVwYWRWZWN0b3I7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3Jp
bmdJbnB1dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQo
KTsKKworICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYpOwor
Citwcml2YXRlOgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBl
bnVtIGNsYXNzIENvbm5lY3Rpb25WaXNpYmlsaXR5IHsKKyAgICAgICAgVmlzaWJsZSwKKyAgICAg
ICAgSW52aXNpYmxlLAorICAgIH07CisKKyAgICB2b2lkIGNvbnRyb2xsZXJEaWRDb25uZWN0KEdD
Q29udHJvbGxlciAqLCBDb25uZWN0aW9uVmlzaWJpbGl0eSk7CisgICAgdm9pZCBjb250cm9sbGVy
RGlkRGlzY29ubmVjdChHQ0NvbnRyb2xsZXIgKik7CisKKyAgICB1bnNpZ25lZCBpbmRleEZvck5l
d2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJG
aXJlZCgpOworCisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisg
ICAgSGFzaFNldDxHYW1lcGFkUHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7CisKKyAgICBIYXNo
TWFwPEdDQ29udHJvbGxlciAqLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFk
Pj4gbV9nYW1lcGFkTWFwOworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRW
ZWN0b3I7CisgICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRz
OworCisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2Nvbm5lY3RPYnNlcnZlcjsKKyAgICBSZXRh
aW5QdHI8TlNPYmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOworCisgICAgVGltZXIgbV9pbnB1
dE5vdGlmaWNhdGlvblRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNzQzYjFhN2Q4N2U2YzUzMzc5NjEyOTM1MGZhMjllMjgxYTg5
ZjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDE2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2ltcG9ydCAiR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmgiCisjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBJbnB1dE5v
dGlmaWNhdGlvbkRlbGF5ID0gMC4wNTsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIm
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJv
dmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIoKQorICAgIDogbV9p
bnB1dE5vdGlmaWNhdGlvblRpbWVyKCp0aGlzLCAmR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKworeworfQorCit2b2lkIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIg
KmNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5IHZpc2liaWxpdHkpCit7CisgICAgTE9H
KEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFk
ZGVkIiwgY29udHJvbGxlcik7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdh
bWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworCisgICAgaWYgKG1fZ2Ft
ZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNp
emUoaW5kZXggKyAxKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBnYW1lcGFkLmdl
dCgpOworICAgIG1fZ2FtZXBhZE1hcC5zZXQoY29udHJvbGxlciwgV1RGTW92ZShnYW1lcGFkKSk7
CisKKworICAgIGlmICh2aXNpYmlsaXR5ID09IENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJbnZpc2li
bGUpIHsKKyAgICAgICAgbV9pbnZpc2libGVHYW1lcGFkcy5hZGQobV9nYW1lcGFkVmVjdG9yW2lu
ZGV4XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYWtlSW52aXNpYmlsZUdhbWVw
YWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5k
ZXhdKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxl
ckRpZERpc2Nvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGVyKQoreworICAgIExPRyhHYW1l
cGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCByZW1vdmVk
IiwgY29udHJvbGxlcik7CisKKyAgICBhdXRvIHJlbW92ZWRHYW1lcGFkID0gbV9nYW1lcGFkTWFw
LnRha2UoY29udHJvbGxlcik7CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIGF1
dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlbW92ZWRHYW1lcGFkLmdldCgpKTsKKyAgICBp
ZiAoaSAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yW2ldID0gbnVsbHB0cjsK
KworICAgIG1faW52aXNpYmxlR2FtZXBhZHMucmVtb3ZlKHJlbW92ZWRHYW1lcGFkLmdldCgpKTsK
KworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBs
YXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOworfQorCit2b2lkIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250
YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIGlmICht
X2Nvbm5lY3RPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0T2JzZXJ2
ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9y
TmFtZTpHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uIG9iamVjdDpuaWwgcXVldWU6
bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAgICAg
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jb250cm9sbGVyRGlk
Q29ubmVjdChub3RpZmljYXRpb24ub2JqZWN0LCBDb25uZWN0aW9uVmlzaWJpbGl0eTo6VmlzaWJs
ZSk7CisgICAgfV07CisKKyAgICBtX2Rpc2Nvbm5lY3RPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOkdDQ29udHJvbGxlckRp
ZERpc2Nvbm5lY3ROb3RpZmljYXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpe
KE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNvbnRyb2xsZXJEaWREaXNjb25uZWN0KG5vdGlm
aWNhdGlvbi5vYmplY3QpOworICAgIH1dOworCisgICAgZm9yIChHQ0NvbnRyb2xsZXIgKmNvbnRy
b2xsZXIgaW4gW0dDQ29udHJvbGxlciBjb250cm9sbGVyc10pCisgICAgICAgIGNvbnRyb2xsZXJE
aWRDb25uZWN0KGNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJbnZpc2libGUpOwor
fQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7
CisKKyAgICBpZiAoIW1fY29ubmVjdE9ic2VydmVyIHx8ICFtX2NsaWVudHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOm1fY29ubmVjdE9ic2VydmVyLmdldCgpXTsKKyAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fZGlzY29ubmVj
dE9ic2VydmVyLmdldCgpXTsKK30KKwordW5zaWduZWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1f
Z2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAgICByZXR1cm4gaW5k
ZXg7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRIYWRJ
bnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmKQoreworICAgIGlmICghbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1faW5wdXROb3RpZmljYXRpb25UaW1lci5z
dGFydE9uZVNob3QoSW5wdXROb3RpZmljYXRpb25EZWxheSk7Cit9CisKK3ZvaWQgR2FtZUNvbnRy
b2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCkKK3sK
KyAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBtX2ludmlzaWJsZUdhbWVwYWRzKSB7CisgICAgICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5wbGF0
Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKmdhbWVwYWQpOworICAgIH0KKworICAgIG1faW52aXNpYmxl
R2FtZXBhZHMuY2xlYXIoKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtYWtlSW52aXNpYmlsZUdh
bWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRl
eCA3ZTkyMTJhYzNiZTUyMTBmZTVkMThhMWNjYTIzZmJjNzA1Yjk4Y2Y1Li4xOTUwN2E1NDE1N2U4
MTg2MzJlZTI5OTBlZmM5MzhhOWMxY2E1ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNp
bXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAiV2Vi
Q2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yOTAsNiArMjkxLDExIEBAIC0gKHZvaWQpX3Rlcm1pbmF0
ZURhdGFiYXNlUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlRGF0YWJhc2VQcm9j
ZXNzKCk7CiB9CiAKKysgKHZvaWQpX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsKK3sKKyAg
ICBXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmsoKTsKK30KKwogLSAoQk9PTClfaXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZAog
ewogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmNvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFi
bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggNzJmMDM2ZDYyZGVkYWIzZDQ2YzljZDNlZDMy
MWIwOTg5NzQ1Y2FjOS4uMzI5YTZkNGVkMDgzN2MzYTE4OThjZmZiYjg1YTdlMDYwMzJiNmY0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNjQsNiArNjQsOSBAQAogLy8gVGVzdCBvbmx5LiBTaG91
bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5u
aW5nLgogLSAodm9pZClfdGVybWluYXRlRGF0YWJhc2VQcm9jZXNzOwogCisvLyBUZXN0IG9ubHku
IFNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGFueSB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIGxh
dW5jaGVkLgorKyAodm9pZClfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29yazsKKwogQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1faXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxl
ZCwgc2V0dGVyPV9zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBmODZmOGQ1
MThjYmVkZDkwMzY1ZjRlYmQ2OWZjZGI5ZWYzMDc3MDI5Li4wYWY5ZDUzZjEzMjM1NjE0NmY0OTVh
ZWEzZDMzYmM1OGNjYWNmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTUyLDYgKzUyLDEwIEBAIHB1YmxpYzoK
IAogICAgIFZlY3RvcjxHYW1lcGFkRGF0YT4gZ2FtZXBhZFN0YXRlcygpIGNvbnN0OwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHZvaWQgc2V0VXNlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8
VUlHYW1lcGFkUHJvdmlkZXI+OwogICAgIFVJR2FtZXBhZFByb3ZpZGVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1l
cGFkUHJvdmlkZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDJhMTRkMDRjYjg4NGIxNjgxYmNjNTgw
NjAwNTU5NzVkZjA3MjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQpAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBh
ZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgPFdlYkNvcmUv
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBib29sIHVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrID0gZmFsc2U7CisKK3ZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnNldFVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yaygpCit7CisgICAg
dXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsgPSB0cnVlOworfQorCit2b2lkIFVJR2FtZXBhZFBy
b3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAg
ICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgR2FtZXBhZFByb3ZpZGVyOjpz
ZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkpOworI2Vsc2UKKyAgICBpZiAodXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCisgICAgICAg
IEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICBlbHNlCisgICAgICAgIEdhbWVwYWRQcm92aWRl
cjo6c2V0U2hhcmVkUHJvdmlkZXIoSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7Cisj
ZW5kaWYKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmlu
Z0lucHV0KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCF1c2VHYW1lQ29udHJvbGxl
ckZyYW1ld29yaykKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9w
TW9uaXRvcmluZ0lucHV0KCk7CisjZW5kaWYKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGlmICghdXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCisgICAgICAgIEhJREdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKyNlbmRpZgorfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTBjZGY4YzRjNTlkMWIwMTlkMzYzZjY3MTY3
MDJjNjBhZjYyYzU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRl
ckhJRC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCi0KLSNpZiBF
TkFCTEUoR0FNRVBBRCkKLQotI2luY2x1ZGUgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkKLXsKLSAgICBpZiAoR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pc01vY2tHYW1lcGFkUHJvdmlkZXIoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKLX0KLQotdm9pZCBVSUdhbWVwYWRQcm92aWRl
cjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKLXsKLSAgICAvLyBObyBlZmZlY3Qgd2hl
biB0aGUgTW9ja0dhbWVwYWRQcm92aWRlciBpcyBiZWluZyB1c2VkLgotICAgIHJldHVybiBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nSW5wdXQoKTsKLX0KLQot
dm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCi17
Ci0gICAgLy8gTm8gZWZmZWN0IHdoZW4gdGhlIE1vY2tHYW1lcGFkUHJvdmlkZXIgaXMgYmVpbmcg
dXNlZC4KLSAgICByZXR1cm4gSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1v
bml0b3JpbmdJbnB1dCgpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0Y2Y0YzU5ODFjYjQ2ZWVlNjAzOTY4Yjc4NTg4MTQ3YjIyZWQzZjgyLi4yMDIzYWY5ZjdhOTQ0
Mjc4NmZkZGIyYmExMjYyZDI1MmEzMjdjZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzUsNyArOTM1LDYgQEAKIAkJNTE1
NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElE
YXRhLmggKi87IH07CiAJCTUxNUJFMTc3MUQ1M0ZFODcwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE1QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07
CiAJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTc0MUQ1M0ZE
REMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgfTsKLQkJNTE1QkUxQTcxRDU1
MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAv
KiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi87IH07CiAJCTUxNUJFMUE4MUQ1NTI5MzQwMERE
N0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFk
UHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyogVUlHYW1l
cGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovOyB9
OwogCQk1MTVCRTFBQTFENTU1QTlCMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE5RjFENTUwQUIwMDBE
RDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi87IH07CkBAIC0xMDE1LDYgKzEwMTQsNyBAQAogCQk1
MUUzNTIwMDE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1
MUZEMTgwRjVEMEIwMEU1M0JFOSAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
ICovOyB9OwogCQk1MUUzNTIwMjE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUy
MDExODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJNTFF
MzUyMDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwODE4MEY1
RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAqLzsgfTsKKwkJNTFF
Mzk5MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOTkwNTFENkY1NEM1
MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLzsgfTsKIAkJNTFFRkMxQ0Yx
NTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBD
MUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIg
LyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8q
IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBX
ZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0yOTg4LDcgKzI5
ODgsNiBAQAogCQk1MTVCRTFBMDFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92
aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVSUdhbWVwYWRQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUE1MUQ1NTI5
MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MTVCRTFBNjFENTUyOTMwMDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwOyBwYXRoID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElE
LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1MTVCRTFBQzFENTU1QzUxMDBE
RDdDNjggLyogVUlHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVJR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUFE
MUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVUlHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJF
MUIwMUQ1OTAwNjkwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHYW1lcGFkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzA3NSw2ICszMDc0LDcgQEAKIAkJNTFFMzUyMDExODBGNUQxRTAwRTUzQkU5IC8qIERhdGFi
YXNlUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERhdGFiYXNlUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFF
MzUyMDcxODBGNUQ2MTAwRTUzQkU5IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8u
cGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTM1MjA4MTgwRjVENkIwMEU1
M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2Ft
ZXBhZFByb3ZpZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERTE2NTQz
MTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRjdEQzRBMTgwQ0M5MzYwMDIxMkNBMyAvKiBjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNl
cy5EZXZlbG9wbWVudC54cGMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJ3cmFwcGVyLnhwYy1zZXJ2aWNlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZXMuRGV2ZWxvcG1lbnQueHBjOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTQ5OCw2ICs1NDk4LDcgQEAKIAkJNTE1QkUx
N0IxRDU0RUY1QTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5OTA0MUQ2RjU0QUQwMDlDODgzMSAvKiBjb2NvYSAq
LywKIAkJCQk1MTVCRTFBMTFENTUyM0IzMDBERDdDNjggLyogbWFjICovLAogCQkJCTUxNUJFMUFD
MUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovLAogCQkJCTUxNUJFMUFEMUQ1NTVD
NTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLywKQEAgLTU1MTAsNyArNTUxMSw2IEBACiAJCTUx
NUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVw
YWRQcm92aWRlckhJRC5jcHAgKi8sCiAJCQkJNTE1QkUxQjYxRDVBOTRGOTAwREQ3QzY4IC8qIFVJ
R2FtZXBhZFByb3ZpZGVyTWFjLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBtYWM7CkBAIC01NjE1
LDYgKzU2MTUsMTQgQEAKIAkJCXBhdGggPSBJbmRleGVkREI7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk1MUUzOTkwNDFENkY1NEFEMDA5Qzg4MzEgLyogY29jb2EgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5OTA1MUQ2RjU0
QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBh
dGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxRjdEQzBB
MTgwQ0M0MTEwMDIxMkNBMyAvKiBEYXRhYmFzZVByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTE4Niw2ICs5MTk0LDcgQEAKIAkJCQkxQTBFQzkx
MDEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNzg2NUI5MTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyQkI2RDAxNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRTM5OTA2MUQ2RjU0QzcwMDlD
ODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEy
RDkwRDMxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNDc5MjMxMkE1OUZEOTAwODIzNkMzIC8qIFBsdWdp
blByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTBFQzYwNDEyNEE5RjJDMDA3RUY0
QTUgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjcwLDcg
KzkyNzksNiBAQAogCQkJCTFBRkU0MzY1MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxQjQxRDU5MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBh
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTFBODFENTUyOTM0MDBERDdDNjggLyogVUlH
YW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE1QkUxQTcxRDU1MjkzNDAw
REQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NUJFMUI3MUQ1QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNjQyNDVGMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQzEzMzY3MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA5ZWIzYTNmZDNjZDYxYTFhMzc5NDdkM2ZmNzU3YmE2YTA1ZTg4ZDUwLi45
NWVkMTc0OWFmMmM5MTc1NDU2MGVkNmIzYTA5NjQ4ZjA2YTZiNTQ3IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYt
MDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdhbWVD
b250cm9sbGVyLmZyYW1ld29yayBiYWNrZW5kIGZvciBnYW1lcGFkIEFQSS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTA4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Fw
cERlbGVnYXRlLm06CisgICAgICAgICgtW0Jyb3dzZXJBcHBEZWxlZ2F0ZSBhd2FrZUZyb21OaWJd
KToKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgt
W1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxhdGVNZW51XSk6CisgICAgICAgICgtW1NldHRpbmdz
Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRy
b2xsZXIgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSk6CisgICAgICAgICgtW1NldHRpbmdz
Q29udHJvbGxlciB0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6XSk6CisKIDIwMTYt
MDgtMjQgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
aW5dIFdhcm5pbmcgZml4ZXMuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCmluZGV4IDk1
YTU3NmFjYjYzNjdiODQwOGQxNWY2YTVkOTA3NTNhZTZlMmE3MjguLmRkYzViZGU5ZThkODJmZjkx
N2E4MTg3YThhN2MzM2MwZDhiZjM0ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9BcHBEZWxlZ2F0ZS5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5t
CkBAIC02Niw2ICs2Niw4IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiB7CiAgICAgTlNNZW51SXRl
bSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdF07CiAgICAgW2l0ZW0gc2V0U3VibWVu
dTpbW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdIG1lbnVdXTsKKyAgICBpZiAoW1tTZXR0aW5n
c0NvbnRyb2xsZXIgc2hhcmVkXSB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdKQorICAgICAg
ICBbV0tQcm9jZXNzUG9vbCBfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29ya107CiAgICAgW1tO
U0FwcCBtYWluTWVudV0gaW5zZXJ0SXRlbTpbaXRlbSBhdXRvcmVsZWFzZV0gYXRJbmRleDpbW05T
QXBwIG1haW5NZW51XSBpbmRleE9mSXRlbVdpdGhUaXRsZTpAIkRlYnVnIl1dOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmggYi9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKaW5kZXggYmNjZWY5YWM2Yzhh
MGQwNWJlZjM3NTY1MzBkMTBkYWIyN2QxOGVmZi4uZGQ4M2FiMTljZjExN2U1N2ZlYjYwMThkZWY5
MDU1MTA3MTgyNTA1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdz
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xs
ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHZpc3VhbFZpZXdwb3J0RW5hYmxlZDsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB1c2VzR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcms7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmRlZmF1
bHRVUkw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRy
b2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQppbmRl
eCA0MTQ4ZjQ4OWE3MjFhNzdmOGE1M2NjMTMwY2I0YjBkMmYxMDA5YjFmLi43NGY3ZTlhN2ZmZGFi
YzUwNTUyM2ExOWMzNjU1ZjgxOGU0YWZjMjA3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tCkBAIC00MSw2ICs0MSw3IEBACiBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBTaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBA
IlNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIjsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlRp
bGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBS
ZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJSZXNvdXJjZVVzYWdl
T3ZlcmxheVZpc2libGUiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVXNlc0dhbWVDb250cm9s
bGVyRnJhbWV3b3JrS2V5ID0gQCJVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsiOwogc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkUHJlZmVyZW5j
ZUtleSA9IEAiSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkIjsKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ID0gQCJBY2Nl
bGVyYXRlZERyYXdpbmdFbmFibGVkIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IERpc3BsYXlM
aXN0RHJhd2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ID0gQCJEaXNwbGF5TGlzdERyYXdpbmdFbmFi
bGVkIjsKQEAgLTEzMiw2ICsxMzMsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2Vs
ZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlVzZSBVSS1TaWRlIENvbXBvc2l0aW5nIiBhY3Rpb246QHNl
bGVjdG9yKHRvZ2dsZVVzZVVJU2lkZUNvbXBvc2l0aW5nOikgaW5kZW50ZWQ6WUVTXTsKICAgICBb
c2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkRpc2FibGUgUGVyLVdpbmRvdyBXZWIgUHJvY2Vzc2Vz
IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkOikg
aW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlNob3cgUmVzb3Vy
Y2UgVXNhZ2UgT3ZlcmxheSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk6KSBpbmRlbnRlZDpZRVNdOworICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAi
VXNlIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBvbiBtYWNPUyAoUmVzdGFydCByZXF1aXJlZCki
IGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOikgaW5k
ZW50ZWQ6WUVTXTsKIAogICAgIE5TTWVudUl0ZW0gKmRlYnVnT3ZlcmxheXNTdWJtZW51SXRlbSA9
IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIiBhY3Rp
b246bmlsIGtleUVxdWl2YWxlbnQ6QCIiXTsKICAgICBOU01lbnUgKmRlYnVnT3ZlcmxheXNNZW51
ID0gW1tOU01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJEZWJ1ZyBPdmVybGF5cyJdOwpAQCAt
MjAzLDYgKzIwNSw4IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1l
bnVJdGVtCiAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiB0aWxlZFNjcm9sbGluZ0lu
ZGljYXRvclZpc2libGVdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTaG93UmVzb3VyY2VVc2FnZU92ZXJsYXk6KSkKICAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJs
ZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHRvZ2dsZVVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazopKQorICAgICAgICBbbWVu
dUl0ZW0gc2V0U3RhdGU6W3NlbGYgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSA/IE5TT25T
dGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9n
Z2xlVXNlVUlTaWRlQ29tcG9zaXRpbmc6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltz
ZWxmIHVzZVVJU2lkZUNvbXBvc2l0aW5nXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAg
IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vzc2Vz
RGlzYWJsZWQ6KSkKQEAgLTM1MCw2ICszNTQsMTYgQEAgLSAodm9pZCl0b2dnbGVTaG93UmVzb3Vy
Y2VVc2FnZU92ZXJsYXk6KGlkKXNlbmRlcgogICAgIFtzZWxmIF90b2dnbGVCb29sZWFuRGVmYXVs
dDpSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9P
TCl1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsKK3sKKyAgICByZXR1cm4gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpVc2VzR2FtZUNvbnRyb2xsZXJG
cmFtZXdvcmtLZXldOworfQorCistICh2b2lkKXRvZ2dsZVVzZXNHYW1lQ29udHJvbGxlckZyYW1l
d29yazooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZhdWx0OlVzZXNH
YW1lQ29udHJvbGxlckZyYW1ld29ya0tleV07Cit9CisKIC0gKEJPT0wpdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JWaXNpYmxlCiB7CiAgICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJl
ZmVyZW5jZUtleV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286988</attachid>
            <date>2016-08-25 11:22:14 -0700</date>
            <delta_ts>2016-08-25 12:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161086-20160825112012.patch</filename>
            <type>text/plain</type>
            <size>55173</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUyNWU5ZjMxMDI0M2Rj
ZTE5ZWRhNDc3ZDU3YTY1OWM1Y2FiYzNiMC4uNzM0NzAyMDQwNTRiZjk2MTQzYThlMWQwZGNkY2Y0
Y2U1ZGNkODNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5m
cmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBhZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5hdGl2ZSBmcmFtZXdvcmsg
YmFja2VuZHMgbm90IGRpcmVjdGx5IHRlc3RhYmxlKQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAg
ICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRy
b2xsZXJHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6
c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29u
dHJvbGxlckRpZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkSGFkSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNWFlNjRjMDZhNGE4MDc5Y2QxNDRiZmY2Nzg3ZWRmMjdkMmFkMTUyYi4u
M2NmZTEwNzcyZmIwODIwNmI3ZjEzMDQwMTU5ZjdmNDIyZWYyNDVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBh
ZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKCtbV0tQcm9j
ZXNzUG9vbCBfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29ya10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNw
cC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldFVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yayk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQpOgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTA4LTI0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGltZXN0
YW1wcyBhbmQgaWRzIHdvcmtpbmcgaW4gV0syIGdhbWVwYWRzIChhbmQgdGVzdCB0aGVtISkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiZjQ5NWZiYzVlZTQxOGI5Y2FiNmM3NjRmOTZhODYyNTg1OGU4ZmI3Li43NzU2ZDk5ZWU1NWYz
MzU0Nzg3YzI0ZDY5NGE3MDQ3MjkxYjhmNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgsNyBAQAogCQk1
MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovOyB9OwogCQk1MUFCRjY0RDE2MzkyRTI4MDAx
MzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLzsgfTsKKwkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9s
bGVyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdv
cmsgKi87IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFG
NTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQjQ1NEVBMUI0REFFN0QwMDg1RUFBNiAvKiBQ
aW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjA1LDYgKzIyMDYsMTAgQEAK
IAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmggKi87IH07CiAJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQ
YWdlVVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCAqLzsg
fTsKIAkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JEMEM5MUM5MDQw
MERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmggKi87IH07CisJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlD
ODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
Mzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsK
KwkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUz
OThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUUzOTkw
MzFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJ
CTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0FBMDgxQjk4QkM5
QTAwMzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi87IH07CiAJCTUxRTNBQTBCMUI5
OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBT
ZWN1cml0eU9yaWdpbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBEQTA1
OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MTA0LDYgKzkxMDksNyBAQAog
CQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0
cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0
cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBRUE0QzgxRDZFM0ND
MTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
R2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9HYW1lQ29udHJvbGxlci5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxv
YWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYz
RjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTcwLDYgKzkxNzYsMTAgQEAKIAkJNTFFMUVDQkIwQzkx
QzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSWNvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNC
QzBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVVSTFJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVD
b250cm9sbGVyR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThG
RDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0FBMDkxQjk4QkM5QTAw
MzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWN1cml0eU9yaWdpbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFFM0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQyNzksNiArMTQyODksNyBAQAogCQkJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5M0YxOUIxNzA4
MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8sCisJCQkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBs
aWJ4bWwyLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMzc5OTE5QjIxMjAwREU1MDAwRUEw
NDFDIC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODhBRDUyRjA5NTI0Qjky
MDAxREQxOTYgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0
NzQ1LDYgKzE0NzU2LDcgQEAKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxl
cmF0ZS5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlv
VG9vbGJveC5mcmFtZXdvcmsgKi8sCiAJCQkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQg
LyogR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrICovLAogCQkJCTFBQjMzREE0MTI1NTFFMzIwMDI0
NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMx
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5M0YxRDMxQTA1NThDQzVDMDA4
MjFCQzAgLyogbGliaWN1Y29yZS5keWxpYiAqLywKQEAgLTE2NDU3LDYgKzE2NDY5LDcgQEAKIAkJ
NTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUVBNEJGMUQ2RTNDMjMwMEUwMjY5RCAvKiBj
b2NvYSAqLywKIAkJCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovLAogCQkJCTUx
NUJFMTg4MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJ
CQkJNTE1QkUxODkxRDU0RjVGNjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggKi8s
CkBAIC0xNjU1Myw2ICsxNjU2NiwxNyBAQAogCQkJbmFtZSA9IEdhbWVwYWQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUFFQTRCRjFENkUzQzIzMDBFMDI2OUQgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5
OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLywKKwkJCQk1
MUUzOThGRDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovLAor
CQkJCTUxRTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5oICovLAorCQkJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MUM0QUE1MTE4QjI4MzU3MDA3QkZFOUIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE1
LDYgKzI1MTM5LDcgQEAKIAkJCQlCMkZBM0Q2NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTkwQUU1Qzk0NDAwREY1OERG
IC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUUz
OTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0Q2OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI2NkNENEUwQzNBRUM2NTAwRUIwOEQyIC8qIEpTU1ZH
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2QjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3MCw2ICsyNjU5
NSw3IEBACiAJCQkJQ0RBMDdGQkUxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTA3RkMyMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDU5NzVCMzE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFMzk5MDIx
RDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVs
ZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4ODAwLDYgKzI4ODI2LDcgQEAK
IAkJCQlCMkZBM0Q2ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjY2Q0Q0RDBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkEwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDMxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkyNTYsNiArMjkyODMsNyBAQAogCQkJCUU0MzEwNUI4MTY3
NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
NTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1
MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDBBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Y2MwN2RmZWJk
YTRlOTY0OGExNWI3ODM1ZGJlZjEwYzA2MWMzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
QU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFk
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29udHJvbGxl
cjsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyQXhpc0lucHV0OworT0JKQ19DTEFTUyBHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dDsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyRWxlbWVudDsKK09CSkNf
Q0xBU1MgR0NFeHRlbmRlZEdhbWVwYWQ7CitPQkpDX0NMQVNTIEdDR2FtZXBhZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWQgOiBwdWJsaWMgUGxh
dGZvcm1HYW1lcGFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYW1lQ29udHJvbGxlckdh
bWVwYWQpOworcHVibGljOgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIg
KiwgdW5zaWduZWQgaW5kZXgpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KKyAgICBjb25zdCBWZWN0
b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25W
YWx1ZXM7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsK
KyAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CisKKyAgICBSZXRhaW5QdHI8R0NDb250cm9sbGVy
PiBtX2djQ29udHJvbGxlcjsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKKyAg
ICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKworICAgIFJldGFpblB0cjxHQ0dhbWVw
YWQ+IG1fZ2FtZXBhZDsKKyAgICBSZXRhaW5QdHI8R0NFeHRlbmRlZEdhbWVwYWQ+IG1fZXh0ZW5k
ZWRHYW1lcGFkOworfTsKKworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMWMxNWZmZDBjMTE0ZDcwYWVjOTlkNDQ1MGMzMGFiZDEw
NjE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZUNvbnRyb2xsZXJHYW1lcGFk
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyNpbmNsdWRl
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPEdhbWVDb250cm9s
bGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQoR0NDb250cm9sbGVyICpjb250cm9sbGVyLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6
IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZ2NDb250cm9sbGVyKGNvbnRyb2xsZXIp
Cit7CisgICAgQVNTRVJUKGluZGV4IDwgNCk7CisgICAgY29udHJvbGxlci5wbGF5ZXJJbmRleCA9
IChHQ0NvbnRyb2xsZXJQbGF5ZXJJbmRleCkoR0NDb250cm9sbGVyUGxheWVySW5kZXgxICsgaW5k
ZXgpOworCisgICAgbV9leHRlbmRlZEdhbWVwYWQgPSBjb250cm9sbGVyLmV4dGVuZGVkR2FtZXBh
ZDsKKyAgICBpZiAoIW1fZXh0ZW5kZWRHYW1lcGFkKQorICAgICAgICBtX2dhbWVwYWQgPSBjb250
cm9sbGVyLmdhbWVwYWQ7CisKKyAgICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQgfHwgbV9nYW1l
cGFkKTsKKworICAgIGlmIChtX2V4dGVuZGVkR2FtZXBhZCkKKyAgICAgICAgc2V0dXBBc0V4dGVu
ZGVkR2FtZXBhZCgpOworICAgIGVsc2UKKyAgICAgICAgc2V0dXBBc0dhbWVwYWQoKTsKK30KKwor
dm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQorewor
ICAgIEFTU0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7CisKKyAgICBtX2lkID0gbWFrZVN0cmluZyhT
dHJpbmcobV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVuZG9yTmFtZSksIEFTQ0lJTGl0ZXJhbCgiIEV4
dGVuZGVkIEdhbWVwYWQiKSk7CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXihHQ0V4dGVuZGVkR2FtZXBhZCAqLCBHQ0NvbnRyb2xsZXJFbGVtZW50
ICopIHsKKyAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuZ2FtZXBhZEhhZElucHV0KCp0aGlzKTsKKyAgICB9OworCisgICAgbV9heGlzVmFsdWVzLnJl
c2l6ZSg2KTsKKyAgICBtX2J1dHRvblZhbHVlcy5yZXNpemUoOCk7CisKKyAgICBtX2J1dHRvblZh
bHVlc1swXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbMV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVlOwor
ICAgIG1fYnV0dG9uVmFsdWVzWzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52
YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1szXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1
dHRvblkudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0U2hvdWxkZXIudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNV0gPSBtX2V4dGVu
ZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVz
WzZdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbN10gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIudmFs
dWU7CisKKyAgICBtX2F4aXNWYWx1ZXNbMF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0
VGh1bWJzdGljay54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbMV0gPSBtX2V4dGVuZGVk
R2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay55QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1
ZXNbMl0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWU7CisgICAgbV9heGlzVmFsdWVzWzNdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRU
aHVtYnN0aWNrLnlBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1s0XSA9IG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmRwYWQueEF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzVdID0gbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZTsKKworICAgIG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVy
QnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1
ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRv
bkIudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxv
YXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAg
ICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbMl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmJ1dHRvblkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9s
bGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25W
YWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxl
ZnRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1
dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZh
bHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52
YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2
YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07
CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbNl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLnJpZ2h0VHJpZ2dlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1s3XSA9IHZhbHVlOworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzBd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJz
dGljay55QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQg
KiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzFdID0gdmFsdWU7CisgICAg
fTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVl
KSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRs
ZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBt
X2F4aXNWYWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdl
dCgpLmRwYWQueEF4aXMudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lu
cHV0ICosIGZsb2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1s0XSA9IHZhbHVlOwor
ICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAg
ICAgICAgbV9heGlzVmFsdWVzWzVdID0gdmFsdWU7CisgICAgfTsKK30KKwordm9pZCBHYW1lQ29u
dHJvbGxlckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFk
KTsKKworICAgIG1faWQgPSBtYWtlU3RyaW5nKFN0cmluZyhtX2djQ29udHJvbGxlci5nZXQoKS52
ZW5kb3JOYW1lKSwgQVNDSUlMaXRlcmFsKCIgR2FtZXBhZCIpKTsKKworICAgIG1fZ2FtZXBhZC5n
ZXQoKS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0dhbWVwYWQgKiwgR0NDb250cm9sbGVyRWxl
bWVudCAqKSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7CisgICAgfTsKKworICAgIG1fYXhpc1ZhbHVl
cy5yZXNpemUoMik7CisgICAgbV9idXR0b25WYWx1ZXMucmVzaXplKDYpOworCisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRv
blZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
YnV0dG9uQi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAq
LCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9IHZhbHVl
OworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9P
TCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkubGVmdFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRv
bklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzRd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3Vs
ZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICosIGZs
b2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzVdID0gdmFsdWU7Cisg
ICAgfTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlz
LnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2
YWx1ZSkgeworICAgICAgICBtX2F4aXNWYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhh
bmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAg
ICBtX2F4aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTE3
ZDg3Y2YyZTI5OTE1MGRmYWNmMjBlN2E1NjkwMjI1MDdhYTM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29u
dHJvbGxlcjsKK09CSkNfQ0xBU1MgTlNPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
OworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFk
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRW
ZWN0b3I7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKworICAg
IHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYpOworCitwcml2YXRl
OgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBlbnVtIGNsYXNz
IENvbm5lY3Rpb25WaXNpYmlsaXR5IHsKKyAgICAgICAgVmlzaWJsZSwKKyAgICAgICAgSW52aXNp
YmxlLAorICAgIH07CisKKyAgICB2b2lkIGNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxl
ciAqLCBDb25uZWN0aW9uVmlzaWJpbGl0eSk7CisgICAgdm9pZCBjb250cm9sbGVyRGlkRGlzY29u
bmVjdChHQ0NvbnRyb2xsZXIgKik7CisKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKCk7CisKKyAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwor
CisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgSGFzaFNl
dDxHYW1lcGFkUHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7CisKKyAgICBIYXNoTWFwPEdDQ29u
dHJvbGxlciAqLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPj4gbV9nYW1l
cGFkTWFwOworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7Cisg
ICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRzOworCisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBtX2Nvbm5lY3RPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNP
YmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOworCisgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZmFhZjkzYmU5MGQ3OWJjMWQ1MWI4YTU1NjNkYjAwZTA5NzdhNGZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKworI2lt
cG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCisjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJD
bGllbnQuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dh
bWVDb250cm9sbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRv
dWJsZSBJbnB1dE5vdGlmaWNhdGlvbkRlbGF5ID0gMC4wNTsKKworR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXImIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIo
KQorICAgIDogbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyKCp0aGlzLCAmR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKworeworfQorCit2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChH
Q0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5IHZpc2liaWxpdHkp
Cit7CisgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250
cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworCisg
ICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBh
ZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0g
PSBnYW1lcGFkLmdldCgpOworICAgIG1fZ2FtZXBhZE1hcC5zZXQoY29udHJvbGxlciwgV1RGTW92
ZShnYW1lcGFkKSk7CisKKworICAgIGlmICh2aXNpYmlsaXR5ID09IENvbm5lY3Rpb25WaXNpYmls
aXR5OjpJbnZpc2libGUpIHsKKyAgICAgICAgbV9pbnZpc2libGVHYW1lcGFkcy5hZGQobV9nYW1l
cGFkVmVjdG9yW2luZGV4XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYWtlSW52
aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6Y29udHJvbGxlckRpZERpc2Nvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGVyKQorewor
ICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxl
ciAlcCByZW1vdmVkIiwgY29udHJvbGxlcik7CisKKyAgICBhdXRvIHJlbW92ZWRHYW1lcGFkID0g
bV9nYW1lcGFkTWFwLnRha2UoY29udHJvbGxlcik7CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFk
KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlbW92ZWRHYW1lcGFkLmdl
dCgpKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yW2ld
ID0gbnVsbHB0cjsKKworICAgIG1faW52aXNpYmxlR2FtZXBhZHMucmVtb3ZlKHJlbW92ZWRHYW1l
cGFkLmdldCgpKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwor
fQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdH
YW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1f
Y2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsK
KworICAgIGlmIChtX2Nvbm5lY3RPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b25uZWN0T2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyRm9yTmFtZTpHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uIG9iamVj
dDpuaWwgcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9u
KSB7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5j
b250cm9sbGVyRGlkQ29ubmVjdChub3RpZmljYXRpb24ub2JqZWN0LCBDb25uZWN0aW9uVmlzaWJp
bGl0eTo6VmlzaWJsZSk7CisgICAgfV07CisKKyAgICBtX2Rpc2Nvbm5lY3RPYnNlcnZlciA9IFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOkdD
Q29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpuaWwg
dXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsKKyAgICAgICAgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNvbnRyb2xsZXJEaWREaXNj
b25uZWN0KG5vdGlmaWNhdGlvbi5vYmplY3QpOworICAgIH1dOworCisgICAgZm9yIChHQ0NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIgaW4gW0dDQ29udHJvbGxlciBjb250cm9sbGVyc10pCisgICAgICAg
IGNvbnRyb2xsZXJEaWRDb25uZWN0KGNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJ
bnZpc2libGUpOworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1v
dmUoJmNsaWVudCk7CisKKyAgICBpZiAoIW1fY29ubmVjdE9ic2VydmVyIHx8ICFtX2NsaWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fY29ubmVjdE9ic2VydmVyLmdldCgpXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
Om1fZGlzY29ubmVjdE9ic2VydmVyLmdldCgpXTsKK30KKwordW5zaWduZWQgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAg
ICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OmdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmKQoreworICAgIGlmICghbV9p
bnB1dE5vdGlmaWNhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1faW5wdXROb3RpZmlj
YXRpb25UaW1lci5zdGFydE9uZVNob3QoSW5wdXROb3RpZmljYXRpb25EZWxheSk7Cit9CisKK3Zv
aWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNW
aXNpYmxlKCkKK3sKKyAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBtX2ludmlzaWJsZUdhbWVwYWRz
KSB7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAg
Y2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKmdhbWVwYWQpOworICAgIH0KKworICAg
IG1faW52aXNpYmxlR2FtZXBhZHMuY2xlYXIoKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtYWtl
SW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQppbmRleCA3ZTkyMTJhYzNiZTUyMTBmZTVkMThhMWNjYTIzZmJjNzA1Yjk4Y2Y1Li4z
ZjQzYmZjNjVkZDc0MGI5NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zMiw2
ICszMiw3IEBACiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVu
dC5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgog
I2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yOTAsNiArMjkxLDEzIEBAIC0gKHZv
aWQpX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CiB9CiAKKysgKHZvaWQpX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmsKK3sKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRpZgorfQorCiAtIChC
T09MKV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkCiB7CiAgICAgcmV0dXJuIF9w
cm9jZXNzUG9vbC0+Y29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCA3MmYwMzZkNjJkZWRhYjNkNDZjOWNkM2VkMzIxYjA5ODk3NDVjYWM5Li4z
MjlhNmQ0ZWQwODM3YzNhMTg5OGNmZmJiODVhN2UwNjAzMmI2ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCkBAIC02NCw2ICs2NCw5IEBACiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25s
eSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3M7CiAKKy8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxl
ZCBiZWZvcmUgYW55IHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgbGF1bmNoZWQuCisrICh2b2lk
KV9mb3JjZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkLCBzZXR0ZXI9X3NldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBfY29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmluZGV4IGY4NmY4ZDUxOGNiZWRkOTAzNjVmNGVi
ZDY5ZmNkYjllZjMwNzcwMjkuLjBhZjlkNTNmMTMyMzU2MTQ2ZjQ5NWFlYTNkMzNiYzU4Y2NhY2Y0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1l
cGFkUHJvdmlkZXIuaApAQCAtNTIsNiArNTIsMTAgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEdh
bWVwYWREYXRhPiBnYW1lcGFkU3RhdGVzKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzdGF0aWMgdm9pZCBzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxVSUdhbWVwYWRQcm92aWRl
cj47CiAgICAgVUlHYW1lcGFkUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc0MmExNGQwNGNiODg0YjE2ODFiY2M1ODA2MDA1NTk3NWRmMDcyOWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2Nv
YS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGJvb2wgdXNlR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmsgPSBmYWxzZTsKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
c2V0VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrKCkKK3sKKyAgICB1c2VHYW1lQ29udHJvbGxl
ckZyYW1ld29yayA9IHRydWU7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCit7CisgICAgaWYgKEdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkpCisgICAgICAgIHJldHVybjsKKwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVy
KEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisjZWxzZQorICAg
IGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVy
OjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkpOworICAgIGVsc2UKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92
aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyNlbmRpZgorfQorCit2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQoKQoreworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIXVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQorICAg
ICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nSW5wdXQo
KTsKKyNlbmRpZgorfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9u
aXRvcmluZ0lucHV0KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCF1c2VHYW1lQ29u
dHJvbGxlckZyYW1ld29yaykKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zdGFydE1vbml0b3JpbmdJbnB1dCgpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVw
YWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDM5MGNkZjhjNGM1OWQxYjAxOWQzNjNmNjcxNjcwMmM2MGFmNjJjNTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShHQU1FUEFEKQot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL01vY2tHYW1lcGFkUHJvdmlkZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQotewotICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkpOwotfQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BN
b25pdG9yaW5nSW5wdXQoKQotewotICAgIC8vIE5vIGVmZmVjdCB3aGVuIHRoZSBNb2NrR2FtZXBh
ZFByb3ZpZGVyIGlzIGJlaW5nIHVzZWQuCi0gICAgcmV0dXJuIEhJREdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdJbnB1dCgpOwotfQotCi12b2lkIFVJR2FtZXBhZFBy
b3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKLXsKLSAgICAvLyBObyBlZmZl
Y3Qgd2hlbiB0aGUgTW9ja0dhbWVwYWRQcm92aWRlciBpcyBiZWluZyB1c2VkLgotICAgIHJldHVy
biBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZjRjNTk4MWNiNDZl
ZWU2MDM5NjhiNzg1ODgxNDdiMjJlZDNmODIuLjIwMjNhZjlmN2E5NDQyNzg2ZmRkYjJiYTEyNjJk
MjUyYTMyN2NlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkzNSw3ICs5MzUsNiBAQAogCQk1MTU3OEI4MzEyMDlFQ0VGMDBB
MzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLzsgfTsKIAkJ
NTE1QkUxNzcxRDUzRkU4NzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3MzFENTNGRERD
MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNTE1QkUxNzkxRDUz
RkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzQxRDUzRkREQzAwREQ3QzY4IC8qIFdl
YkdhbWVwYWRQcm92aWRlci5oICovOyB9OwotCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyog
VUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3Zp
ZGVySElELmNwcCAqLzsgfTsKIAkJNTE1QkUxQTgxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBh
ZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi87
IH07CiAJCTUxNUJFMUE5MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTUxRDU1
MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CiAJCTUxNUJFMUFBMUQ1
NTVBOUIwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTlGMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1l
cGFkLmNwcCAqLzsgfTsKQEAgLTEwMTUsNiArMTAxNCw3IEBACiAJCTUxRTM1MjAwMTgwRjVEMEYw
MEU1M0JFOSAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUxRkQxODBGNUQwQjAwRTUz
QkU5IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxRTM1
MjAyMTgwRjVEMUUwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwMTE4MEY1RDFFMDBFNTNC
RTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tICovOyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBF
NTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBE
YXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovOyB9OworCQk1MUUzOTkwNjFENkY1NEM3MDA5
Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdh
bWVwYWRQcm92aWRlckNvY29hLm1tICovOyB9OwogCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5Mzgg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdl
cy5oICovOyB9OwogCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTI5ODgsNyArMjk4OCw2IEBACiAJCTUxNUJF
MUEwMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJ
R2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJR2Ft
ZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNUJFMUE2MUQ1
NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHBhdGggPSBV
SVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxNUJFMUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVw
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4
IC8qIFVJR2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUdhbWVw
YWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3
QzY4IC8qIEdhbWVwYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdh
bWVwYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDc1LDYgKzMwNzQs
NyBAQAogCQk1MUUzNTIwMTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNz
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzNTIwNzE4MEY1RDYxMDBF
NTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNl
U2VydmljZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUUzOTkwNTFENkY1NEM1MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJR2FtZXBhZFBy
b3ZpZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1
NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBX
ZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0RDNEExODBD
QzkzNjAwMjEyQ0EzIC8qIGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLkRldmVsb3BtZW50Lnhw
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gIndyYXBw
ZXIueHBjLXNlcnZpY2UiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBjb20uYXBwbGUuV2Vi
S2l0LkRhdGFiYXNlcy5EZXZlbG9wbWVudC54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CkBAIC01NDk4LDYgKzU0OTgsNyBAQAogCQk1MTVCRTE3QjFENTRFRjVBMDBERDdD
NjggLyogR2FtZXBhZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTFFMzk5MDQxRDZGNTRBRDAwOUM4ODMxIC8qIGNvY29hICovLAogCQkJCTUxNUJFMUEx
MUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8sCiAJCQkJNTE1QkUxQUMxRDU1NUM1MTAwREQ3QzY4
IC8qIFVJR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJ
R2FtZXBhZC5oICovLApAQCAtNTUxMCw3ICs1NTExLDYgQEAKIAkJNTE1QkUxQTExRDU1MjNCMzAw
REQ3QzY4IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNw
cCAqLywKIAkJCQk1MTVCRTFCNjFENUE5NEY5MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJN
YWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKQEAgLTU2MTUsNiArNTYxNSwxNCBAQAog
CQkJcGF0aCA9IEluZGV4ZWREQjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTUxRTM5OTA0MUQ2RjU0QUQwMDlDODgzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJ
R2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTFGN0RDMEExODBDQzQxMTAwMjEyQ0Ez
IC8qIERhdGFiYXNlUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC05MTg2LDYgKzkxOTQsNyBAQAogCQkJCTFBMEVDOTEwMTI0QzBBRjUwMDdFRjRB
NSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE3ODY1QjkxNkNBQzcxNTAwQUNFODNBIC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJCQjZEMDE0MTE3
QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBh
ZFByb3ZpZGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTBEMzEyODFDOTY2MDAx
RUI5NjIgLyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUE0NzkyMzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBMEVDNjA0MTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkyNzAsNyArOTI3OSw2IEBACiAJCQkJ
MUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTVCRTFCNDFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNUJFMUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1l
cGFkUHJvdmlkZXJISUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxQjcxRDVBOTRGRDAw
REQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2
NDI0NUYxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDMTMzNjcxODU2NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDll
YjNhM2ZkM2NkNjFhMWEzNzk0N2QzZmY3NTdiYTZhMDVlODhkNTAuLjk1ZWQxNzQ5YWYyYzkxNzU0
NTYwZWQ2YjNhMDk2NDhmMDZhNmI1NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wOC0yNSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2FtZUNvbnRyb2xsZXIuZnJhbWV3
b3JrIGJhY2tlbmQgZm9yIGdhbWVwYWQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAg
ICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIGF3YWtlRnJvbU5pYl0pOgorCisgICAgICAgICog
TWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9s
bGVyIF9wb3B1bGF0ZU1lbnVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHZhbGlk
YXRlTWVudUl0ZW06XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB1c2VzR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHRvZ2ds
ZVVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazpdKToKKwogMjAxNi0wOC0yNCAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gV2FybmluZyBmaXhl
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KaW5kZXggOTVhNTc2YWNiNjM2N2I4NDA4
ZDE1ZjZhNWQ5MDc1M2FlNmUyYTcyOC4uZGRjNWJkZTllOGQ4MmZmOTE3YTgxODdhOGE3YzMzYzBk
OGJmMzRmOSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0K
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTY2LDYgKzY2LDgg
QEAgLSAodm9pZClhd2FrZUZyb21OaWIKIHsKICAgICBOU01lbnVJdGVtICppdGVtID0gW1tOU01l
bnVJdGVtIGFsbG9jXSBpbml0XTsKICAgICBbaXRlbSBzZXRTdWJtZW51OltbU2V0dGluZ3NDb250
cm9sbGVyIHNoYXJlZF0gbWVudV1dOworICAgIGlmIChbW1NldHRpbmdzQ29udHJvbGxlciBzaGFy
ZWRdIHVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya10pCisgICAgICAgIFtXS1Byb2Nlc3NQb29s
IF9mb3JjZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrXTsKICAgICBbW05TQXBwIG1haW5NZW51XSBp
bnNlcnRJdGVtOltpdGVtIGF1dG9yZWxlYXNlXSBhdEluZGV4OltbTlNBcHAgbWFpbk1lbnVdIGlu
ZGV4T2ZJdGVtV2l0aFRpdGxlOkAiRGVidWciXV07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCBiY2NlZjlhYzZjOGEwZDA1YmVmMzc1NjUzMGQx
MGRhYjI3ZDE4ZWZmLi5kZDgzYWIxOWNmMTE3ZTU3ZmViNjAxOGRlZjkwNTUxMDcxODI1MDVmIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCkBAIC01MCw2ICs1
MCw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGRpc3Bs
YXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgdmlzdWFsVmlld3BvcnRFbmFibGVkOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIHVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGVmYXVsdFVSTDsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tIGIvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCmluZGV4IDQxNDhmNDg5YTcyMWE3
N2Y4YTUzY2MxMzBjYjRiMGQyZjEwMDliMWYuLjc0ZjdlOWE3ZmZkYWJjNTA1NTIzYTE5YzM2NTVm
ODE4ZTRhZmMyMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0Nv
bnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVy
Lm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFNpbXBsZUxpbmVM
YXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJlZmVyZW5jZUtleSA9IEAiU2ltcGxlTGluZUxheW91
dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiVGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFJlc291cmNlVXNhZ2VPdmVy
bGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSI7
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtLZXkg
PSBAIlVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yayI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWRQcmVmZXJlbmNlS2V5ID0gQCJJbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgQWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBAIkFjY2VsZXJhdGVkRHJhd2luZ0Vu
YWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgRGlzcGxheUxpc3REcmF3aW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXkgPSBAIkRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQiOwpAQCAtMTMyLDYg
KzEzMyw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRp
dGxlOkAiVXNlIFVJLVNpZGUgQ29tcG9zaXRpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlVXNl
VUlTaWRlQ29tcG9zaXRpbmc6KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0
aFRpdGxlOkAiRGlzYWJsZSBQZXItV2luZG93IFdlYiBQcm9jZXNzZXMiIGFjdGlvbjpAc2VsZWN0
b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ6KSBpbmRlbnRlZDpZRVNdOwog
ICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiU2hvdyBSZXNvdXJjZSBVc2FnZSBPdmVybGF5
IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTopIGluZGVu
dGVkOllFU107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJVc2UgR2FtZUNvbnRyb2xs
ZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVkKSIgYWN0aW9uOkBzZWxlY3Rv
cih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBpbmRlbnRlZDpZRVNdOwogCiAg
ICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFs
bG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5RXF1aXZh
bGVudDpAIiJdOwogICAgIE5TTWVudSAqZGVidWdPdmVybGF5c01lbnUgPSBbW05TTWVudSBhbGxv
Y10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIl07CkBAIC0yMDMsNiArMjA1LDggQEAg
LSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KICAgICAgICAg
W21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZV0g
PyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVj
dG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTopKQogICAgICAgICBbbWVudUl0ZW0g
c2V0U3RhdGU6W3NlbGYgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlXSA/IE5TT25TdGF0ZSA6
IE5TT2ZmU3RhdGVdOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOikpCisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpb
c2VsZiB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0
ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVc2VVSVNpZGVDb21w
b3NpdGluZzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgdXNlVUlTaWRlQ29t
cG9zaXRpbmddID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9u
ID09IEBzZWxlY3Rvcih0b2dnbGVQZXJXaW5kb3dXZWJQcm9jZXNzZXNEaXNhYmxlZDopKQpAQCAt
MzUwLDYgKzM1NCwxNiBAQCAtICh2b2lkKXRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheToo
aWQpc2VuZGVyCiAgICAgW3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZhdWx0OlJlc291cmNlVXNhZ2VP
dmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKXVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yaworeworICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBib29sRm9yS2V5OlVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0tleV07Cit9
CisKKy0gKHZvaWQpdG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6VXNlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrS2V5XTsKK30KKwogLSAoQk9PTCl0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGUK
IHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpUaWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVQcmVmZXJlbmNlS2V5XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286994</attachid>
            <date>2016-08-25 12:18:26 -0700</date>
            <delta_ts>2016-08-25 12:48:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161086-20160825121624.patch</filename>
            <type>text/plain</type>
            <size>55272</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUyNWU5ZjMxMDI0M2Rj
ZTE5ZWRhNDc3ZDU3YTY1OWM1Y2FiYzNiMC4uNzM0NzAyMDQwNTRiZjk2MTQzYThlMWQwZGNkY2Y0
Y2U1ZGNkODNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5m
cmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBhZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5hdGl2ZSBmcmFtZXdvcmsg
YmFja2VuZHMgbm90IGRpcmVjdGx5IHRlc3RhYmxlKQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAg
ICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRy
b2xsZXJHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6
c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29u
dHJvbGxlckRpZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkSGFkSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNWFlNjRjMDZhNGE4MDc5Y2QxNDRiZmY2Nzg3ZWRmMjdkMmFkMTUyYi4u
M2NmZTEwNzcyZmIwODIwNmI3ZjEzMDQwMTU5ZjdmNDIyZWYyNDVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBh
ZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKCtbV0tQcm9j
ZXNzUG9vbCBfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29ya10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNw
cC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldFVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yayk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQpOgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTA4LTI0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGltZXN0
YW1wcyBhbmQgaWRzIHdvcmtpbmcgaW4gV0syIGdhbWVwYWRzIChhbmQgdGVzdCB0aGVtISkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiZjQ5NWZiYzVlZTQxOGI5Y2FiNmM3NjRmOTZhODYyNTg1OGU4ZmI3Li43NzU2ZDk5ZWU1NWYz
MzU0Nzg3YzI0ZDY5NGE3MDQ3MjkxYjhmNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgsNyBAQAogCQk1
MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovOyB9OwogCQk1MUFCRjY0RDE2MzkyRTI4MDAx
MzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLzsgfTsKKwkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9s
bGVyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdv
cmsgKi87IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFG
NTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQjQ1NEVBMUI0REFFN0QwMDg1RUFBNiAvKiBQ
aW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjA1LDYgKzIyMDYsMTAgQEAK
IAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmggKi87IH07CiAJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQ
YWdlVVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCAqLzsg
fTsKIAkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JEMEM5MUM5MDQw
MERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmggKi87IH07CisJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlD
ODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
Mzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsK
KwkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUz
OThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUUzOTkw
MzFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJ
CTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0FBMDgxQjk4QkM5
QTAwMzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi87IH07CiAJCTUxRTNBQTBCMUI5
OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBT
ZWN1cml0eU9yaWdpbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBEQTA1
OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MTA0LDYgKzkxMDksNyBAQAog
CQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0
cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0
cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBRUE0QzgxRDZFM0ND
MTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
R2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9HYW1lQ29udHJvbGxlci5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxv
YWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYz
RjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTcwLDYgKzkxNzYsMTAgQEAKIAkJNTFFMUVDQkIwQzkx
QzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSWNvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNC
QzBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVVSTFJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVD
b250cm9sbGVyR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThG
RDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0FBMDkxQjk4QkM5QTAw
MzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWN1cml0eU9yaWdpbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFFM0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQyNzksNiArMTQyODksNyBAQAogCQkJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5M0YxOUIxNzA4
MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8sCisJCQkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBs
aWJ4bWwyLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMzc5OTE5QjIxMjAwREU1MDAwRUEw
NDFDIC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODhBRDUyRjA5NTI0Qjky
MDAxREQxOTYgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0
NzQ1LDYgKzE0NzU2LDcgQEAKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxl
cmF0ZS5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlv
VG9vbGJveC5mcmFtZXdvcmsgKi8sCiAJCQkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQg
LyogR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrICovLAogCQkJCTFBQjMzREE0MTI1NTFFMzIwMDI0
NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMx
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5M0YxRDMxQTA1NThDQzVDMDA4
MjFCQzAgLyogbGliaWN1Y29yZS5keWxpYiAqLywKQEAgLTE2NDU3LDYgKzE2NDY5LDcgQEAKIAkJ
NTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUVBNEJGMUQ2RTNDMjMwMEUwMjY5RCAvKiBj
b2NvYSAqLywKIAkJCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovLAogCQkJCTUx
NUJFMTg4MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJ
CQkJNTE1QkUxODkxRDU0RjVGNjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggKi8s
CkBAIC0xNjU1Myw2ICsxNjU2NiwxNyBAQAogCQkJbmFtZSA9IEdhbWVwYWQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUFFQTRCRjFENkUzQzIzMDBFMDI2OUQgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5
OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLywKKwkJCQk1
MUUzOThGRDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovLAor
CQkJCTUxRTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5oICovLAorCQkJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MUM0QUE1MTE4QjI4MzU3MDA3QkZFOUIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE1
LDYgKzI1MTM5LDcgQEAKIAkJCQlCMkZBM0Q2NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTkwQUU1Qzk0NDAwREY1OERG
IC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUUz
OTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0Q2OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI2NkNENEUwQzNBRUM2NTAwRUIwOEQyIC8qIEpTU1ZH
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2QjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3MCw2ICsyNjU5
NSw3IEBACiAJCQkJQ0RBMDdGQkUxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTA3RkMyMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDU5NzVCMzE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFMzk5MDIx
RDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVs
ZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4ODAwLDYgKzI4ODI2LDcgQEAK
IAkJCQlCMkZBM0Q2ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjY2Q0Q0RDBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkEwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDMxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkyNTYsNiArMjkyODMsNyBAQAogCQkJCUU0MzEwNUI4MTY3
NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
NTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1
MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDBBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Y2MwN2RmZWJk
YTRlOTY0OGExNWI3ODM1ZGJlZjEwYzA2MWMzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
QU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFk
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29udHJvbGxl
cjsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyQXhpc0lucHV0OworT0JKQ19DTEFTUyBHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dDsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyRWxlbWVudDsKK09CSkNf
Q0xBU1MgR0NFeHRlbmRlZEdhbWVwYWQ7CitPQkpDX0NMQVNTIEdDR2FtZXBhZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWQgOiBwdWJsaWMgUGxh
dGZvcm1HYW1lcGFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYW1lQ29udHJvbGxlckdh
bWVwYWQpOworcHVibGljOgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIg
KiwgdW5zaWduZWQgaW5kZXgpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KKyAgICBjb25zdCBWZWN0
b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25W
YWx1ZXM7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsK
KyAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CisKKyAgICBSZXRhaW5QdHI8R0NDb250cm9sbGVy
PiBtX2djQ29udHJvbGxlcjsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKKyAg
ICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKworICAgIFJldGFpblB0cjxHQ0dhbWVw
YWQ+IG1fZ2FtZXBhZDsKKyAgICBSZXRhaW5QdHI8R0NFeHRlbmRlZEdhbWVwYWQ+IG1fZXh0ZW5k
ZWRHYW1lcGFkOworfTsKKworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMWMxNWZmZDBjMTE0ZDcwYWVjOTlkNDQ1MGMzMGFiZDEw
NjE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZUNvbnRyb2xsZXJHYW1lcGFk
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyNpbmNsdWRl
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPEdhbWVDb250cm9s
bGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQoR0NDb250cm9sbGVyICpjb250cm9sbGVyLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6
IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZ2NDb250cm9sbGVyKGNvbnRyb2xsZXIp
Cit7CisgICAgQVNTRVJUKGluZGV4IDwgNCk7CisgICAgY29udHJvbGxlci5wbGF5ZXJJbmRleCA9
IChHQ0NvbnRyb2xsZXJQbGF5ZXJJbmRleCkoR0NDb250cm9sbGVyUGxheWVySW5kZXgxICsgaW5k
ZXgpOworCisgICAgbV9leHRlbmRlZEdhbWVwYWQgPSBjb250cm9sbGVyLmV4dGVuZGVkR2FtZXBh
ZDsKKyAgICBpZiAoIW1fZXh0ZW5kZWRHYW1lcGFkKQorICAgICAgICBtX2dhbWVwYWQgPSBjb250
cm9sbGVyLmdhbWVwYWQ7CisKKyAgICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQgfHwgbV9nYW1l
cGFkKTsKKworICAgIGlmIChtX2V4dGVuZGVkR2FtZXBhZCkKKyAgICAgICAgc2V0dXBBc0V4dGVu
ZGVkR2FtZXBhZCgpOworICAgIGVsc2UKKyAgICAgICAgc2V0dXBBc0dhbWVwYWQoKTsKK30KKwor
dm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQorewor
ICAgIEFTU0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7CisKKyAgICBtX2lkID0gbWFrZVN0cmluZyhT
dHJpbmcobV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVuZG9yTmFtZSksIEFTQ0lJTGl0ZXJhbCgiIEV4
dGVuZGVkIEdhbWVwYWQiKSk7CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXihHQ0V4dGVuZGVkR2FtZXBhZCAqLCBHQ0NvbnRyb2xsZXJFbGVtZW50
ICopIHsKKyAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuZ2FtZXBhZEhhZElucHV0KCp0aGlzKTsKKyAgICB9OworCisgICAgbV9heGlzVmFsdWVzLnJl
c2l6ZSg2KTsKKyAgICBtX2J1dHRvblZhbHVlcy5yZXNpemUoOCk7CisKKyAgICBtX2J1dHRvblZh
bHVlc1swXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbMV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVlOwor
ICAgIG1fYnV0dG9uVmFsdWVzWzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52
YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1szXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1
dHRvblkudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0U2hvdWxkZXIudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNV0gPSBtX2V4dGVu
ZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVz
WzZdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbN10gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIudmFs
dWU7CisKKyAgICBtX2F4aXNWYWx1ZXNbMF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0
VGh1bWJzdGljay54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbMV0gPSBtX2V4dGVuZGVk
R2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay55QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1
ZXNbMl0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWU7CisgICAgbV9heGlzVmFsdWVzWzNdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRU
aHVtYnN0aWNrLnlBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1s0XSA9IG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmRwYWQueEF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzVdID0gbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZTsKKworICAgIG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVy
QnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1
ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRv
bkIudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxv
YXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAg
ICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbMl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmJ1dHRvblkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9s
bGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25W
YWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxl
ZnRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1
dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZh
bHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52
YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2
YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07
CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbNl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLnJpZ2h0VHJpZ2dlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1s3XSA9IHZhbHVlOworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzBd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJz
dGljay55QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQg
KiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzFdID0gdmFsdWU7CisgICAg
fTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVl
KSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRs
ZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBt
X2F4aXNWYWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdl
dCgpLmRwYWQueEF4aXMudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lu
cHV0ICosIGZsb2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1s0XSA9IHZhbHVlOwor
ICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAg
ICAgICAgbV9heGlzVmFsdWVzWzVdID0gdmFsdWU7CisgICAgfTsKK30KKwordm9pZCBHYW1lQ29u
dHJvbGxlckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFk
KTsKKworICAgIG1faWQgPSBtYWtlU3RyaW5nKFN0cmluZyhtX2djQ29udHJvbGxlci5nZXQoKS52
ZW5kb3JOYW1lKSwgQVNDSUlMaXRlcmFsKCIgR2FtZXBhZCIpKTsKKworICAgIG1fZ2FtZXBhZC5n
ZXQoKS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0dhbWVwYWQgKiwgR0NDb250cm9sbGVyRWxl
bWVudCAqKSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7CisgICAgfTsKKworICAgIG1fYXhpc1ZhbHVl
cy5yZXNpemUoMik7CisgICAgbV9idXR0b25WYWx1ZXMucmVzaXplKDYpOworCisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRv
blZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
YnV0dG9uQi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAq
LCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9IHZhbHVl
OworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9P
TCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkubGVmdFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRv
bklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzRd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3Vs
ZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICosIGZs
b2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzVdID0gdmFsdWU7Cisg
ICAgfTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlz
LnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2
YWx1ZSkgeworICAgICAgICBtX2F4aXNWYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhh
bmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAg
ICBtX2F4aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTE3
ZDg3Y2YyZTI5OTE1MGRmYWNmMjBlN2E1NjkwMjI1MDdhYTM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29u
dHJvbGxlcjsKK09CSkNfQ0xBU1MgTlNPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
OworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFk
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRW
ZWN0b3I7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKworICAg
IHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYpOworCitwcml2YXRl
OgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBlbnVtIGNsYXNz
IENvbm5lY3Rpb25WaXNpYmlsaXR5IHsKKyAgICAgICAgVmlzaWJsZSwKKyAgICAgICAgSW52aXNp
YmxlLAorICAgIH07CisKKyAgICB2b2lkIGNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxl
ciAqLCBDb25uZWN0aW9uVmlzaWJpbGl0eSk7CisgICAgdm9pZCBjb250cm9sbGVyRGlkRGlzY29u
bmVjdChHQ0NvbnRyb2xsZXIgKik7CisKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKCk7CisKKyAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwor
CisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgSGFzaFNl
dDxHYW1lcGFkUHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7CisKKyAgICBIYXNoTWFwPEdDQ29u
dHJvbGxlciAqLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPj4gbV9nYW1l
cGFkTWFwOworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7Cisg
ICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRzOworCisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBtX2Nvbm5lY3RPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNP
YmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOworCisgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZmFhZjkzYmU5MGQ3OWJjMWQ1MWI4YTU1NjNkYjAwZTA5NzdhNGZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKworI2lt
cG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCisjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJD
bGllbnQuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dh
bWVDb250cm9sbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRv
dWJsZSBJbnB1dE5vdGlmaWNhdGlvbkRlbGF5ID0gMC4wNTsKKworR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXImIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIo
KQorICAgIDogbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyKCp0aGlzLCAmR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKworeworfQorCit2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChH
Q0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5IHZpc2liaWxpdHkp
Cit7CisgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250
cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworCisg
ICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBh
ZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0g
PSBnYW1lcGFkLmdldCgpOworICAgIG1fZ2FtZXBhZE1hcC5zZXQoY29udHJvbGxlciwgV1RGTW92
ZShnYW1lcGFkKSk7CisKKworICAgIGlmICh2aXNpYmlsaXR5ID09IENvbm5lY3Rpb25WaXNpYmls
aXR5OjpJbnZpc2libGUpIHsKKyAgICAgICAgbV9pbnZpc2libGVHYW1lcGFkcy5hZGQobV9nYW1l
cGFkVmVjdG9yW2luZGV4XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYWtlSW52
aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6Y29udHJvbGxlckRpZERpc2Nvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGVyKQorewor
ICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxl
ciAlcCByZW1vdmVkIiwgY29udHJvbGxlcik7CisKKyAgICBhdXRvIHJlbW92ZWRHYW1lcGFkID0g
bV9nYW1lcGFkTWFwLnRha2UoY29udHJvbGxlcik7CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFk
KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlbW92ZWRHYW1lcGFkLmdl
dCgpKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yW2ld
ID0gbnVsbHB0cjsKKworICAgIG1faW52aXNpYmxlR2FtZXBhZHMucmVtb3ZlKHJlbW92ZWRHYW1l
cGFkLmdldCgpKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwor
fQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdH
YW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1f
Y2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsK
KworICAgIGlmIChtX2Nvbm5lY3RPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b25uZWN0T2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyRm9yTmFtZTpHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uIG9iamVj
dDpuaWwgcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9u
KSB7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5j
b250cm9sbGVyRGlkQ29ubmVjdChub3RpZmljYXRpb24ub2JqZWN0LCBDb25uZWN0aW9uVmlzaWJp
bGl0eTo6VmlzaWJsZSk7CisgICAgfV07CisKKyAgICBtX2Rpc2Nvbm5lY3RPYnNlcnZlciA9IFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOkdD
Q29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpuaWwg
dXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsKKyAgICAgICAgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNvbnRyb2xsZXJEaWREaXNj
b25uZWN0KG5vdGlmaWNhdGlvbi5vYmplY3QpOworICAgIH1dOworCisgICAgZm9yIChHQ0NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIgaW4gW0dDQ29udHJvbGxlciBjb250cm9sbGVyc10pCisgICAgICAg
IGNvbnRyb2xsZXJEaWRDb25uZWN0KGNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJ
bnZpc2libGUpOworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1v
dmUoJmNsaWVudCk7CisKKyAgICBpZiAoIW1fY29ubmVjdE9ic2VydmVyIHx8ICFtX2NsaWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fY29ubmVjdE9ic2VydmVyLmdldCgpXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
Om1fZGlzY29ubmVjdE9ic2VydmVyLmdldCgpXTsKK30KKwordW5zaWduZWQgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAg
ICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OmdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmKQoreworICAgIGlmICghbV9p
bnB1dE5vdGlmaWNhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1faW5wdXROb3RpZmlj
YXRpb25UaW1lci5zdGFydE9uZVNob3QoSW5wdXROb3RpZmljYXRpb25EZWxheSk7Cit9CisKK3Zv
aWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNW
aXNpYmxlKCkKK3sKKyAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBtX2ludmlzaWJsZUdhbWVwYWRz
KSB7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAg
Y2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKmdhbWVwYWQpOworICAgIH0KKworICAg
IG1faW52aXNpYmxlR2FtZXBhZHMuY2xlYXIoKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtYWtl
SW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQppbmRleCA3ZTkyMTJhYzNiZTUyMTBmZTVkMThhMWNjYTIzZmJjNzA1Yjk4Y2Y1Li4z
ZjQzYmZjNjVkZDc0MGI5NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zMiw2
ICszMiw3IEBACiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVu
dC5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgog
I2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yOTAsNiArMjkxLDEzIEBAIC0gKHZv
aWQpX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CiB9CiAKKysgKHZvaWQpX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmsKK3sKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRpZgorfQorCiAtIChC
T09MKV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkCiB7CiAgICAgcmV0dXJuIF9w
cm9jZXNzUG9vbC0+Y29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCA3MmYwMzZkNjJkZWRhYjNkNDZjOWNkM2VkMzIxYjA5ODk3NDVjYWM5Li4z
MjlhNmQ0ZWQwODM3YzNhMTg5OGNmZmJiODVhN2UwNjAzMmI2ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCkBAIC02NCw2ICs2NCw5IEBACiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25s
eSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3M7CiAKKy8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxl
ZCBiZWZvcmUgYW55IHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgbGF1bmNoZWQuCisrICh2b2lk
KV9mb3JjZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkLCBzZXR0ZXI9X3NldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBfY29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmluZGV4IGY4NmY4ZDUxOGNiZWRkOTAzNjVmNGVi
ZDY5ZmNkYjllZjMwNzcwMjkuLjBhZjlkNTNmMTMyMzU2MTQ2ZjQ5NWFlYTNkMzNiYzU4Y2NhY2Y0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1l
cGFkUHJvdmlkZXIuaApAQCAtNTIsNiArNTIsMTAgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEdh
bWVwYWREYXRhPiBnYW1lcGFkU3RhdGVzKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzdGF0aWMgdm9pZCBzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxVSUdhbWVwYWRQcm92aWRl
cj47CiAgICAgVUlHYW1lcGFkUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjMTdkZjg1ZGMwNmU0NDQxMWJjOGQ5ZDFiYWQ2MTI1ZjlhZWZmOTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2Nv
YS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGJvb2wgdXNlR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmsgPSBmYWxzZTsKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
c2V0VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrKCkKK3sKKyAgICB1c2VHYW1lQ29udHJvbGxl
ckZyYW1ld29yayA9IHRydWU7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCit7CisgICAgaWYgKEdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkpCisgICAgICAgIHJldHVybjsKKwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVy
KEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisjZWxpZiBkZWZp
bmVkKF9fTFA2NF9fKQorICAgIGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKKyAgICAg
ICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworICAgIGVsc2UKKyAgICAgICAgR2FtZXBhZFByb3Zp
ZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsK
KyNlbHNlCisgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyNlbmRpZgorfQorCit2b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQoKQoreworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBpZiAoIXVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQorICAgICAgICBISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nSW5wdXQoKTsKKyNlbmRpZgorfQor
Cit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCF1c2VHYW1lQ29udHJvbGxlckZyYW1ld29y
aykKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3Jp
bmdJbnB1dCgpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBh
ZFByb3ZpZGVySElELmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9V
SUdhbWVwYWRQcm92aWRlckhJRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5
MGNkZjhjNGM1OWQxYjAxOWQzNjNmNjcxNjcwMmM2MGFmNjJjNTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVUlH
YW1lcGFkUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01vY2tHYW1lcGFk
UHJvdmlkZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFk
UHJvdmlkZXIoKQotewotICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlzTW9j
a0dhbWVwYWRQcm92aWRlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHYW1lcGFkUHJvdmlk
ZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwot
fQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQo
KQotewotICAgIC8vIE5vIGVmZmVjdCB3aGVuIHRoZSBNb2NrR2FtZXBhZFByb3ZpZGVyIGlzIGJl
aW5nIHVzZWQuCi0gICAgcmV0dXJuIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rv
cE1vbml0b3JpbmdJbnB1dCgpOwotfQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKLXsKLSAgICAvLyBObyBlZmZlY3Qgd2hlbiB0aGUgTW9j
a0dhbWVwYWRQcm92aWRlciBpcyBiZWluZyB1c2VkLgotICAgIHJldHVybiBISURHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZjRjNTk4MWNiNDZlZWU2MDM5NjhiNzg1ODgx
NDdiMjJlZDNmODIuLjIwMjNhZjlmN2E5NDQyNzg2ZmRkYjJiYTEyNjJkMjUyYTMyN2NlMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkzNSw3ICs5MzUsNiBAQAogCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhC
ODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLzsgfTsKIAkJNTE1QkUxNzcxRDUzRkU4
NzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8q
IFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QkUxNzQxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRl
ci5oICovOyB9OwotCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlk
ZXJISUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLzsg
fTsKIAkJNTE1QkUxQTgxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE0MUQ1
NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07CiAJCTUxNUJFMUE5
MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CiAJCTUxNUJFMUFBMUQ1NTVBOUIwMEREN0M2OCAv
KiBXZWJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUJFMTlGMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCAqLzsgfTsK
QEAgLTEwMTUsNiArMTAxNCw3IEBACiAJCTUxRTM1MjAwMTgwRjVEMEYwMEU1M0JFOSAvKiBEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUxRkQxODBGNUQwQjAwRTUzQkU5IC8qIERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxRTM1MjAyMTgwRjVEMUUwMEU1
M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwMTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQ
cm9jZXNzTWFjLm1tICovOyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJh
c2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VF
bnRyeVBvaW50Lm1tICovOyB9OworCQk1MUUzOTkwNjFENkY1NEM3MDA5Qzg4MzEgLyogVUlHYW1l
cGFkUHJvdmlkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNv
Y29hLm1tICovOyB9OwogCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERTE2
NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwogCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
MDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKQEAgLTI5ODgsNyArMjk4OCw2IEBACiAJCTUxNUJFMUEwMUQ1NTBBQjAwMERE
N0M2OCAvKiBXZWJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQTQxRDU1Mjky
ODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAv
KiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBh
ZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTUxNUJFMUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUdhbWVwYWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdhbWVwYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVwYWREYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDc1LDYgKzMwNzQsNyBAQAogCQk1MUUzNTIw
MTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzNTIwNzE4MEY1RDYxMDBFNTNCRTkgLyogSW5mby5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9p
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVNl
cnZpY2VFbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOTkw
NTFENkY1NEM1MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAv
KiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0RDNEExODBDQzkzNjAwMjEyQ0EzIC8q
IGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLkRldmVsb3BtZW50LnhwYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gIndyYXBwZXIueHBjLXNlcnZpY2Ui
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlcy5E
ZXZlbG9wbWVudC54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01
NDk4LDYgKzU0OTgsNyBAQAogCQk1MTVCRTE3QjFENTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFFMzk5MDQx
RDZGNTRBRDAwOUM4ODMxIC8qIGNvY29hICovLAogCQkJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2
OCAvKiBtYWMgKi8sCiAJCQkJNTE1QkUxQUMxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5j
cHAgKi8sCiAJCQkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovLApA
QCAtNTUxMCw3ICs1NTExLDYgQEAKIAkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTE1QkUxQTYx
RDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLywKIAkJCQk1MTVC
RTFCNjFENUE5NEY5MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0gKi8sCiAJCQkp
OwogCQkJbmFtZSA9IG1hYzsKQEAgLTU2MTUsNiArNTYxNSwxNCBAQAogCQkJcGF0aCA9IEluZGV4
ZWREQjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTUxRTM5OTA0MUQ2RjU0
QUQwMDlDODgzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVy
Q29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNTFGN0RDMEExODBDQzQxMTAwMjEyQ0EzIC8qIERhdGFiYXNlUHJv
Y2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MTg2
LDYgKzkxOTQsNyBAQAogCQkJCTFBMEVDOTEwMTI0QzBBRjUwMDdFRjRBNSAvKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3ODY1QjkxNkNB
QzcxNTAwQUNFODNBIC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJCQjZEMDE0MTE3QjREMDAwRjM1RDQgLyog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFFMzk5MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTBEMzEyODFDOTY2MDAxRUI5NjIgLyogUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE0Nzky
MzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBMEVDNjA0MTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkyNzAsNyArOTI3OSw2IEBACiAJCQkJMUFGRTQzNjUxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTFCNDFE
NTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJF
MUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxQjcxRDVBOTRGRDAwREQ3QzY4IC8qIFVJR2Ft
ZXBhZFByb3ZpZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDI0NUYxMkRFMjlBMTAw
Q0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzNjcxODU2
NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllYjNhM2ZkM2NkNjFhMWEz
Nzk0N2QzZmY3NTdiYTZhMDVlODhkNTAuLjk1ZWQxNzQ5YWYyYzkxNzU0NTYwZWQ2YjNhMDk2NDhm
MDZhNmI1NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wOC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGJhY2tlbmQgZm9y
IGdhbWVwYWQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAgICAgKC1bQnJvd3Nl
ckFwcERlbGVnYXRlIGF3YWtlRnJvbU5pYl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1l
bnVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHRvZ2dsZVVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yazpdKToKKwogMjAxNi0wOC0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gV2FybmluZyBmaXhlcy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0FwcERlbGVnYXRlLm0KaW5kZXggOTVhNTc2YWNiNjM2N2I4NDA4ZDE1ZjZhNWQ5MDc1M2Fl
NmUyYTcyOC4uZGRjNWJkZTllOGQ4MmZmOTE3YTgxODdhOGE3YzMzYzBkOGJmMzRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTY2LDYgKzY2LDggQEAgLSAodm9pZClhd2Fr
ZUZyb21OaWIKIHsKICAgICBOU01lbnVJdGVtICppdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBp
bml0XTsKICAgICBbaXRlbSBzZXRTdWJtZW51OltbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0g
bWVudV1dOworICAgIGlmIChbW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdIHVzZXNHYW1lQ29u
dHJvbGxlckZyYW1ld29ya10pCisgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9mb3JjZUdhbWVDb250
cm9sbGVyRnJhbWV3b3JrXTsKICAgICBbW05TQXBwIG1haW5NZW51XSBpbnNlcnRJdGVtOltpdGVt
IGF1dG9yZWxlYXNlXSBhdEluZGV4OltbTlNBcHAgbWFpbk1lbnVdIGluZGV4T2ZJdGVtV2l0aFRp
dGxlOkAiRGVidWciXV07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9T
ZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRy
b2xsZXIuaAppbmRleCBiY2NlZjlhYzZjOGEwZDA1YmVmMzc1NjUzMGQxMGRhYjI3ZDE4ZWZmLi5k
ZDgzYWIxOWNmMTE3ZTU3ZmViNjAxOGRlZjkwNTUxMDcxODI1MDVmIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCkBAIC01MCw2ICs1MCw3IEBAIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGRpc3BsYXlMaXN0RHJhd2luZ0Vu
YWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
dmlzdWFsVmlld3BvcnRFbmFibGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIHVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yazsKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU1N0cmluZyAqZGVmYXVsdFVSTDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5tCmluZGV4IDQxNDhmNDg5YTcyMWE3N2Y4YTUzY2MxMzBjYjRi
MGQyZjEwMDliMWYuLjc0ZjdlOWE3ZmZkYWJjNTA1NTIzYTE5YzM2NTVmODE4ZTRhZmMyMDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQx
LDcgQEAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRl
cnNFbmFibGVkUHJlZmVyZW5jZUtleSA9IEAiU2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0Vu
YWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JW
aXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZl
cmVuY2VLZXkgPSBAIlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtLZXkgPSBAIlVzZXNHYW1lQ29u
dHJvbGxlckZyYW1ld29yayI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBJbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzZWRQcmVmZXJlbmNlS2V5ID0gQCJJbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgQWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZFByZWZlcmVuY2VLZXkgPSBAIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiOwogc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgRGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkg
PSBAIkRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQiOwpAQCAtMTMyLDYgKzEzMyw3IEBAIC0gKHZv
aWQpX3BvcHVsYXRlTWVudQogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiVXNlIFVJLVNp
ZGUgQ29tcG9zaXRpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRp
bmc6KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRGlzYWJs
ZSBQZXItV2luZG93IFdlYiBQcm9jZXNzZXMiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGVyV2lu
ZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ6KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJ
dGVtV2l0aFRpdGxlOkAiU2hvdyBSZXNvdXJjZSBVc2FnZSBPdmVybGF5IiBhY3Rpb246QHNlbGVj
dG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTopIGluZGVudGVkOllFU107CisgICAg
W3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJVc2UgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIG9u
IG1hY09TIChSZXN0YXJ0IHJlcXVpcmVkKSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVVc2VzR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBpbmRlbnRlZDpZRVNdOwogCiAgICAgTlNNZW51SXRlbSAq
ZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRp
dGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5RXF1aXZhbGVudDpAIiJdOwogICAg
IE5TTWVudSAqZGVidWdPdmVybGF5c01lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTpAIkRlYnVnIE92ZXJsYXlzIl07CkBAIC0yMDMsNiArMjA1LDggQEAgLSAoQk9PTCl2YWxpZGF0
ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOltzZWxmIHRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZV0gPyBOU09uU3RhdGUgOiBO
U09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVNob3dS
ZXNvdXJjZVVzYWdlT3ZlcmxheTopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYg
cmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwor
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNlc0dhbWVDb250cm9sbGVy
RnJhbWV3b3JrOikpCisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiB1c2VzR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBp
ZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVc2VVSVNpZGVDb21wb3NpdGluZzopKQogICAg
ICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNP
blN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0
b2dnbGVQZXJXaW5kb3dXZWJQcm9jZXNzZXNEaXNhYmxlZDopKQpAQCAtMzUwLDYgKzM1NCwxNiBA
QCAtICh2b2lkKXRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTooaWQpc2VuZGVyCiAgICAg
W3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZhdWx0OlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVBy
ZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKXVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yawor
eworICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29s
Rm9yS2V5OlVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0tleV07Cit9CisKKy0gKHZvaWQpdG9n
Z2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBf
dG9nZ2xlQm9vbGVhbkRlZmF1bHQ6VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5XTsKK30K
KwogLSAoQk9PTCl0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGUKIHsKICAgICByZXR1cm4g
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpUaWxlZFNj
cm9sbGluZ0luZGljYXRvclZpc2libGVQcmVmZXJlbmNlS2V5XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286996</attachid>
            <date>2016-08-25 12:48:09 -0700</date>
            <delta_ts>2016-08-30 14:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161086-20160825124607.patch</filename>
            <type>text/plain</type>
            <size>55305</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUyNWU5ZjMxMDI0M2Rj
ZTE5ZWRhNDc3ZDU3YTY1OWM1Y2FiYzNiMC4uNzM0NzAyMDQwNTRiZjk2MTQzYThlMWQwZGNkY2Y0
Y2U1ZGNkODNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5m
cmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBhZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5hdGl2ZSBmcmFtZXdvcmsg
YmFja2VuZHMgbm90IGRpcmVjdGx5IHRlc3RhYmxlKQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAg
ICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRy
b2xsZXJHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6
c2V0dXBBc0V4dGVuZGVkR2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29u
dHJvbGxlckRpZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkSGFkSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNWFlNjRjMDZhNGE4MDc5Y2QxNDRiZmY2Nzg3ZWRmMjdkMmFkMTUyYi4u
M2NmZTEwNzcyZmIwODIwNmI3ZjEzMDQwMTU5ZjdmNDIyZWYyNDVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgYmFja2VuZCBmb3IgZ2FtZXBh
ZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKCtbV0tQcm9j
ZXNzUG9vbCBfZm9yY2VHYW1lQ29udHJvbGxlckZyYW1ld29ya10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNw
cC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldFVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yayk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQpOgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTA4LTI0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgdGltZXN0
YW1wcyBhbmQgaWRzIHdvcmtpbmcgaW4gV0syIGdhbWVwYWRzIChhbmQgdGVzdCB0aGVtISkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiZjQ5NWZiYzVlZTQxOGI5Y2FiNmM3NjRmOTZhODYyNTg1OGU4ZmI3Li43NzU2ZDk5ZWU1NWYz
MzU0Nzg3YzI0ZDY5NGE3MDQ3MjkxYjhmNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgsNyBAQAogCQk1
MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovOyB9OwogCQk1MUFCRjY0RDE2MzkyRTI4MDAx
MzJBN0EgLyogTG9hZGVyU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0
ZWd5LmNwcCAqLzsgfTsKKwkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9s
bGVyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdv
cmsgKi87IH07CiAJCTUxQUY1MDM2MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxvYWRlclR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFG
NTAzNTE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQjQ1NEVBMUI0REFFN0QwMDg1RUFBNiAvKiBQ
aW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjA1LDYgKzIyMDYsMTAgQEAK
IAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmggKi87IH07CiAJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQ
YWdlVVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCAqLzsg
fTsKIAkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JEMEM5MUM5MDQw
MERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmggKi87IH07CisJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlD
ODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29u
dHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
Mzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsK
KwkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUz
OThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUUzOTkw
MzFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0
NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJ
CTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0FBMDgxQjk4QkM5
QTAwMzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi87IH07CiAJCTUxRTNBQTBCMUI5
OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBT
ZWN1cml0eU9yaWdpbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUUzRjlDNzBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlDNTBEQTA1
OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi87IH07CkBAIC05MTA0LDYgKzkxMDksNyBAQAog
CQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0
cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRlclN0
cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBRUE0QzgxRDZFM0ND
MTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
R2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9HYW1lQ29udHJvbGxlci5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJjZUxv
YWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9h
ZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYz
RjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTcwLDYgKzkxNzYsMTAgQEAKIAkJNTFFMUVDQkIwQzkx
QzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSWNvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNC
QzBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVVSTFJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVD
b250cm9sbGVyR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThG
RDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0FBMDkxQjk4QkM5QTAw
MzZBRDgxIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWN1cml0eU9yaWdpbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFFM0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQyNzksNiArMTQyODksNyBAQAogCQkJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5M0YxOUIxNzA4
MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8sCisJCQkJNTFBRUE0QzkxRDZFM0NDOTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCURENzYzQkIyMDk5MkMyQzkwMDc0MEI4RSAvKiBs
aWJ4bWwyLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMzc5OTE5QjIxMjAwREU1MDAwRUEw
NDFDIC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODhBRDUyRjA5NTI0Qjky
MDAxREQxOTYgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0
NzQ1LDYgKzE0NzU2LDcgQEAKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxl
cmF0ZS5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlv
VG9vbGJveC5mcmFtZXdvcmsgKi8sCiAJCQkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQg
LyogR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrICovLAogCQkJCTFBQjMzREE0MTI1NTFFMzIwMDI0
NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMx
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5M0YxRDMxQTA1NThDQzVDMDA4
MjFCQzAgLyogbGliaWN1Y29yZS5keWxpYiAqLywKQEAgLTE2NDU3LDYgKzE2NDY5LDcgQEAKIAkJ
NTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUVBNEJGMUQ2RTNDMjMwMEUwMjY5RCAvKiBj
b2NvYSAqLywKIAkJCQk1MTVCRTE5NjFENTRGNjQ1MDBERDdDNjggLyogbWFjICovLAogCQkJCTUx
NUJFMTg4MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJ
CQkJNTE1QkUxODkxRDU0RjVGNjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggKi8s
CkBAIC0xNjU1Myw2ICsxNjU2NiwxNyBAQAogCQkJbmFtZSA9IEdhbWVwYWQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUFFQTRCRjFENkUzQzIzMDBFMDI2OUQgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5
OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLywKKwkJCQk1
MUUzOThGRDFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tICovLAor
CQkJCTUxRTM5OEZFMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5oICovLAorCQkJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MUM0QUE1MTE4QjI4MzU3MDA3QkZFOUIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE1
LDYgKzI1MTM5LDcgQEAKIAkJCQlCMkZBM0Q2NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTkwQUU1Qzk0NDAwREY1OERG
IC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUUz
OTkwMDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0Q2OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI2NkNENEUwQzNBRUM2NTAwRUIwOEQyIC8qIEpTU1ZH
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2QjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU3MCw2ICsyNjU5
NSw3IEBACiAJCQkJQ0RBMDdGQkUxOEUwQTE2QTAwNDY5OUZBIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTA3RkMyMThFMEEyMkIwMDQ2OTlGQSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDU5NzVCMzE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFMzk5MDIx
RDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVs
ZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4ODAwLDYgKzI4ODI2LDcgQEAK
IAkJCQlCMkZBM0Q2ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdFbGxpcHNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjY2Q0Q0RDBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkEwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDMxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJGQTNENkMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENkUwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkyNTYsNiArMjkyODMsNyBAQAogCQkJCUU0MzEwNUI4MTY3
NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
NTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1
MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDBBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Y2MwN2RmZWJk
YTRlOTY0OGExNWI3ODM1ZGJlZjEwYzA2MWMzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
QU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFk
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29udHJvbGxl
cjsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyQXhpc0lucHV0OworT0JKQ19DTEFTUyBHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dDsKK09CSkNfQ0xBU1MgR0NDb250cm9sbGVyRWxlbWVudDsKK09CSkNf
Q0xBU1MgR0NFeHRlbmRlZEdhbWVwYWQ7CitPQkpDX0NMQVNTIEdDR2FtZXBhZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWQgOiBwdWJsaWMgUGxh
dGZvcm1HYW1lcGFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYW1lQ29udHJvbGxlckdh
bWVwYWQpOworcHVibGljOgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZChHQ0NvbnRyb2xsZXIg
KiwgdW5zaWduZWQgaW5kZXgpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KKyAgICBjb25zdCBWZWN0
b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25W
YWx1ZXM7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsK
KyAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CisKKyAgICBSZXRhaW5QdHI8R0NDb250cm9sbGVy
PiBtX2djQ29udHJvbGxlcjsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKKyAg
ICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKworICAgIFJldGFpblB0cjxHQ0dhbWVw
YWQ+IG1fZ2FtZXBhZDsKKyAgICBSZXRhaW5QdHI8R0NFeHRlbmRlZEdhbWVwYWQ+IG1fZXh0ZW5k
ZWRHYW1lcGFkOworfTsKKworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMWMxNWZmZDBjMTE0ZDcwYWVjOTlkNDQ1MGMzMGFiZDEw
NjE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZUNvbnRyb2xsZXJHYW1lcGFk
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyNpbmNsdWRl
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPEdhbWVDb250cm9s
bGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpHYW1lQ29udHJvbGxl
ckdhbWVwYWQoR0NDb250cm9sbGVyICpjb250cm9sbGVyLCB1bnNpZ25lZCBpbmRleCkKKyAgICA6
IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZ2NDb250cm9sbGVyKGNvbnRyb2xsZXIp
Cit7CisgICAgQVNTRVJUKGluZGV4IDwgNCk7CisgICAgY29udHJvbGxlci5wbGF5ZXJJbmRleCA9
IChHQ0NvbnRyb2xsZXJQbGF5ZXJJbmRleCkoR0NDb250cm9sbGVyUGxheWVySW5kZXgxICsgaW5k
ZXgpOworCisgICAgbV9leHRlbmRlZEdhbWVwYWQgPSBjb250cm9sbGVyLmV4dGVuZGVkR2FtZXBh
ZDsKKyAgICBpZiAoIW1fZXh0ZW5kZWRHYW1lcGFkKQorICAgICAgICBtX2dhbWVwYWQgPSBjb250
cm9sbGVyLmdhbWVwYWQ7CisKKyAgICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQgfHwgbV9nYW1l
cGFkKTsKKworICAgIGlmIChtX2V4dGVuZGVkR2FtZXBhZCkKKyAgICAgICAgc2V0dXBBc0V4dGVu
ZGVkR2FtZXBhZCgpOworICAgIGVsc2UKKyAgICAgICAgc2V0dXBBc0dhbWVwYWQoKTsKK30KKwor
dm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKQorewor
ICAgIEFTU0VSVChtX2V4dGVuZGVkR2FtZXBhZCk7CisKKyAgICBtX2lkID0gbWFrZVN0cmluZyhT
dHJpbmcobV9nY0NvbnRyb2xsZXIuZ2V0KCkudmVuZG9yTmFtZSksIEFTQ0lJTGl0ZXJhbCgiIEV4
dGVuZGVkIEdhbWVwYWQiKSk7CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS52YWx1ZUNo
YW5nZWRIYW5kbGVyID0gXihHQ0V4dGVuZGVkR2FtZXBhZCAqLCBHQ0NvbnRyb2xsZXJFbGVtZW50
ICopIHsKKyAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuZ2FtZXBhZEhhZElucHV0KCp0aGlzKTsKKyAgICB9OworCisgICAgbV9heGlzVmFsdWVzLnJl
c2l6ZSg2KTsKKyAgICBtX2J1dHRvblZhbHVlcy5yZXNpemUoOCk7CisKKyAgICBtX2J1dHRvblZh
bHVlc1swXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbMV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVlOwor
ICAgIG1fYnV0dG9uVmFsdWVzWzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52
YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1szXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1
dHRvblkudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0U2hvdWxkZXIudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNV0gPSBtX2V4dGVu
ZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3VsZGVyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVz
WzZdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWU7CisgICAgbV9i
dXR0b25WYWx1ZXNbN10gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIudmFs
dWU7CisKKyAgICBtX2F4aXNWYWx1ZXNbMF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0
VGh1bWJzdGljay54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbMV0gPSBtX2V4dGVuZGVk
R2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJzdGljay55QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1
ZXNbMl0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWU7CisgICAgbV9heGlzVmFsdWVzWzNdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRU
aHVtYnN0aWNrLnlBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1s0XSA9IG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmRwYWQueEF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzVdID0gbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZTsKKworICAgIG1fZXh0ZW5kZWRH
YW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVy
QnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1
ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRv
bkIudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxv
YXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAg
ICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbMl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmJ1dHRvblkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9s
bGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25W
YWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxl
ZnRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1
dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZh
bHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52
YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2
YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07
CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWVDaGFuZ2VkSGFu
ZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsK
KyAgICAgICAgbV9idXR0b25WYWx1ZXNbNl0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLnJpZ2h0VHJpZ2dlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1s3XSA9IHZhbHVlOworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzBd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJz
dGljay55QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQg
KiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzFdID0gdmFsdWU7CisgICAg
fTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueEF4aXMudmFs
dWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVl
KSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRs
ZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBt
X2F4aXNWYWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdl
dCgpLmRwYWQueEF4aXMudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lu
cHV0ICosIGZsb2F0IHZhbHVlKSB7CisgICAgICAgIG1fYXhpc1ZhbHVlc1s0XSA9IHZhbHVlOwor
ICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55QXhpcy52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAg
ICAgICAgbV9heGlzVmFsdWVzWzVdID0gdmFsdWU7CisgICAgfTsKK30KKwordm9pZCBHYW1lQ29u
dHJvbGxlckdhbWVwYWQ6OnNldHVwQXNHYW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFk
KTsKKworICAgIG1faWQgPSBtYWtlU3RyaW5nKFN0cmluZyhtX2djQ29udHJvbGxlci5nZXQoKS52
ZW5kb3JOYW1lKSwgQVNDSUlMaXRlcmFsKCIgR2FtZXBhZCIpKTsKKworICAgIG1fZ2FtZXBhZC5n
ZXQoKS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0dhbWVwYWQgKiwgR0NDb250cm9sbGVyRWxl
bWVudCAqKSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7CisgICAgfTsKKworICAgIG1fYXhpc1ZhbHVl
cy5yZXNpemUoMik7CisgICAgbV9idXR0b25WYWx1ZXMucmVzaXplKDYpOworCisgICAgbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRv
blZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCku
YnV0dG9uQi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAq
LCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9IHZhbHVl
OworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZUNoYW5n
ZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9P
TCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1syXSA9IHZhbHVlOworICAgIH07CisgICAgbV9l
eHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0
KCkubGVmdFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRv
bklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzRd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFNob3Vs
ZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICosIGZs
b2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzVdID0gdmFsdWU7Cisg
ICAgfTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlz
LnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2
YWx1ZSkgeworICAgICAgICBtX2F4aXNWYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1f
ZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhh
bmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAg
ICBtX2F4aXNWYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTE3
ZDg3Y2YyZTI5OTE1MGRmYWNmMjBlN2E1NjkwMjI1MDdhYTM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEdDQ29u
dHJvbGxlcjsKK09CSkNfQ0xBU1MgTlNPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
OworCitjbGFzcyBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFk
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRW
ZWN0b3I7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKworICAg
IHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYpOworCitwcml2YXRl
OgorICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBlbnVtIGNsYXNz
IENvbm5lY3Rpb25WaXNpYmlsaXR5IHsKKyAgICAgICAgVmlzaWJsZSwKKyAgICAgICAgSW52aXNp
YmxlLAorICAgIH07CisKKyAgICB2b2lkIGNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxl
ciAqLCBDb25uZWN0aW9uVmlzaWJpbGl0eSk7CisgICAgdm9pZCBjb250cm9sbGVyRGlkRGlzY29u
bmVjdChHQ0NvbnRyb2xsZXIgKik7CisKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKCk7CisKKyAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwor
CisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgSGFzaFNl
dDxHYW1lcGFkUHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7CisKKyAgICBIYXNoTWFwPEdDQ29u
dHJvbGxlciAqLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPj4gbV9nYW1l
cGFkTWFwOworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7Cisg
ICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRzOworCisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBtX2Nvbm5lY3RPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNP
YmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOworCisgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZmFhZjkzYmU5MGQ3OWJjMWQ1MWI4YTU1NjNkYjAwZTA5NzdhNGZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKworI2lt
cG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCisjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJD
bGllbnQuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dh
bWVDb250cm9sbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRv
dWJsZSBJbnB1dE5vdGlmaWNhdGlvbkRlbGF5ID0gMC4wNTsKKworR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXImIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIo
KQorICAgIDogbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyKCp0aGlzLCAmR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKworeworfQorCit2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChH
Q0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5IHZpc2liaWxpdHkp
Cit7CisgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250
cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworCisg
ICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBh
ZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0g
PSBnYW1lcGFkLmdldCgpOworICAgIG1fZ2FtZXBhZE1hcC5zZXQoY29udHJvbGxlciwgV1RGTW92
ZShnYW1lcGFkKSk7CisKKworICAgIGlmICh2aXNpYmlsaXR5ID09IENvbm5lY3Rpb25WaXNpYmls
aXR5OjpJbnZpc2libGUpIHsKKyAgICAgICAgbV9pbnZpc2libGVHYW1lcGFkcy5hZGQobV9nYW1l
cGFkVmVjdG9yW2luZGV4XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYWtlSW52
aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6Y29udHJvbGxlckRpZERpc2Nvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGVyKQorewor
ICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxl
ciAlcCByZW1vdmVkIiwgY29udHJvbGxlcik7CisKKyAgICBhdXRvIHJlbW92ZWRHYW1lcGFkID0g
bV9nYW1lcGFkTWFwLnRha2UoY29udHJvbGxlcik7CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFk
KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlbW92ZWRHYW1lcGFkLmdl
dCgpKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yW2ld
ID0gbnVsbHB0cjsKKworICAgIG1faW52aXNpYmxlR2FtZXBhZHMucmVtb3ZlKHJlbW92ZWRHYW1l
cGFkLmdldCgpKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwor
fQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdH
YW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1f
Y2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsK
KworICAgIGlmIChtX2Nvbm5lY3RPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b25uZWN0T2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyRm9yTmFtZTpHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uIG9iamVj
dDpuaWwgcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9u
KSB7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5j
b250cm9sbGVyRGlkQ29ubmVjdChub3RpZmljYXRpb24ub2JqZWN0LCBDb25uZWN0aW9uVmlzaWJp
bGl0eTo6VmlzaWJsZSk7CisgICAgfV07CisKKyAgICBtX2Rpc2Nvbm5lY3RPYnNlcnZlciA9IFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOkdD
Q29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpuaWwg
dXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsKKyAgICAgICAgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNvbnRyb2xsZXJEaWREaXNj
b25uZWN0KG5vdGlmaWNhdGlvbi5vYmplY3QpOworICAgIH1dOworCisgICAgZm9yIChHQ0NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIgaW4gW0dDQ29udHJvbGxlciBjb250cm9sbGVyc10pCisgICAgICAg
IGNvbnRyb2xsZXJEaWRDb25uZWN0KGNvbnRyb2xsZXIsIENvbm5lY3Rpb25WaXNpYmlsaXR5OjpJ
bnZpc2libGUpOworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1v
dmUoJmNsaWVudCk7CisKKyAgICBpZiAoIW1fY29ubmVjdE9ic2VydmVyIHx8ICFtX2NsaWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fY29ubmVjdE9ic2VydmVyLmdldCgpXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
Om1fZGlzY29ubmVjdE9ic2VydmVyLmdldCgpXTsKK30KKwordW5zaWduZWQgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAg
ICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OmdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmKQoreworICAgIGlmICghbV9p
bnB1dE5vdGlmaWNhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1faW5wdXROb3RpZmlj
YXRpb25UaW1lci5zdGFydE9uZVNob3QoSW5wdXROb3RpZmljYXRpb25EZWxheSk7Cit9CisKK3Zv
aWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNW
aXNpYmxlKCkKK3sKKyAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBtX2ludmlzaWJsZUdhbWVwYWRz
KSB7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAg
Y2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKmdhbWVwYWQpOworICAgIH0KKworICAg
IG1faW52aXNpYmxlR2FtZXBhZHMuY2xlYXIoKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtYWtl
SW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQppbmRleCA3ZTkyMTJhYzNiZTUyMTBmZTVkMThhMWNjYTIzZmJjNzA1Yjk4Y2Y1Li4z
ZjQzYmZjNjVkZDc0MGI5NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zMiw2
ICszMiw3IEBACiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVu
dC5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgog
I2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yOTAsNiArMjkxLDEzIEBAIC0gKHZv
aWQpX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CiB9CiAKKysgKHZvaWQpX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmsKK3sKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRpZgorfQorCiAtIChC
T09MKV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkCiB7CiAgICAgcmV0dXJuIF9w
cm9jZXNzUG9vbC0+Y29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCA3MmYwMzZkNjJkZWRhYjNkNDZjOWNkM2VkMzIxYjA5ODk3NDVjYWM5Li4z
MjlhNmQ0ZWQwODM3YzNhMTg5OGNmZmJiODVhN2UwNjAzMmI2ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCkBAIC02NCw2ICs2NCw5IEBACiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25s
eSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3M7CiAKKy8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxl
ZCBiZWZvcmUgYW55IHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgbGF1bmNoZWQuCisrICh2b2lk
KV9mb3JjZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkLCBzZXR0ZXI9X3NldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBfY29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmluZGV4IGY4NmY4ZDUxOGNiZWRkOTAzNjVmNGVi
ZDY5ZmNkYjllZjMwNzcwMjkuLjBhZjlkNTNmMTMyMzU2MTQ2ZjQ5NWFlYTNkMzNiYzU4Y2NhY2Y0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1l
cGFkUHJvdmlkZXIuaApAQCAtNTIsNiArNTIsMTAgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEdh
bWVwYWREYXRhPiBnYW1lcGFkU3RhdGVzKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzdGF0aWMgdm9pZCBzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmsoKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxVSUdhbWVwYWRQcm92aWRl
cj47CiAgICAgVUlHYW1lcGFkUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjMTdkZjg1ZGMwNmU0NDQxMWJjOGQ5ZDFiYWQ2MTI1ZjlhZWZmOTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9jb2Nv
YS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGJvb2wgdXNlR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmsgPSBmYWxzZTsKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
c2V0VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrKCkKK3sKKyAgICB1c2VHYW1lQ29udHJvbGxl
ckZyYW1ld29yayA9IHRydWU7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCit7CisgICAgaWYgKEdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkpCisgICAgICAgIHJldHVybjsKKwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVy
KEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisjZWxpZiBkZWZp
bmVkKF9fTFA2NF9fKQorICAgIGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKKyAgICAg
ICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworICAgIGVsc2UKKyAgICAgICAgR2FtZXBhZFByb3Zp
ZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsK
KyNlbHNlCisgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyNlbmRpZgorfQorCit2b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQoKQoreworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBpZiAoIXVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQorICAgICAgICBISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nSW5wdXQoKTsKKyNlbmRpZgorfQor
Cit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCF1c2VHYW1lQ29udHJvbGxlckZyYW1ld29y
aykKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3Jp
bmdJbnB1dCgpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBh
ZFByb3ZpZGVySElELmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9V
SUdhbWVwYWRQcm92aWRlckhJRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5
MGNkZjhjNGM1OWQxYjAxOWQzNjNmNjcxNjcwMmM2MGFmNjJjNTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVUlH
YW1lcGFkUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01vY2tHYW1lcGFk
UHJvdmlkZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFk
UHJvdmlkZXIoKQotewotICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlzTW9j
a0dhbWVwYWRQcm92aWRlcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHYW1lcGFkUHJvdmlk
ZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwot
fQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQo
KQotewotICAgIC8vIE5vIGVmZmVjdCB3aGVuIHRoZSBNb2NrR2FtZXBhZFByb3ZpZGVyIGlzIGJl
aW5nIHVzZWQuCi0gICAgcmV0dXJuIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rv
cE1vbml0b3JpbmdJbnB1dCgpOwotfQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKLXsKLSAgICAvLyBObyBlZmZlY3Qgd2hlbiB0aGUgTW9j
a0dhbWVwYWRQcm92aWRlciBpcyBiZWluZyB1c2VkLgotICAgIHJldHVybiBISURHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZjRjNTk4MWNiNDZlZWU2MDM5NjhiNzg1ODgx
NDdiMjJlZDNmODIuLjIwMjNhZjlmN2E5NDQyNzg2ZmRkYjJiYTEyNjJkMjUyYTMyN2NlMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkzNSw3ICs5MzUsNiBAQAogCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhC
ODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLzsgfTsKIAkJNTE1QkUxNzcxRDUzRkU4
NzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8q
IFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QkUxNzQxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRl
ci5oICovOyB9OwotCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlk
ZXJISUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLzsg
fTsKIAkJNTE1QkUxQTgxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE0MUQ1
NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07CiAJCTUxNUJFMUE5
MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CiAJCTUxNUJFMUFBMUQ1NTVBOUIwMEREN0M2OCAv
KiBXZWJHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUJFMTlGMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCAqLzsgfTsK
QEAgLTEwMTUsNiArMTAxNCw3IEBACiAJCTUxRTM1MjAwMTgwRjVEMEYwMEU1M0JFOSAvKiBEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUxRkQxODBGNUQwQjAwRTUzQkU5IC8qIERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxRTM1MjAyMTgwRjVEMUUwMEU1
M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwMTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQ
cm9jZXNzTWFjLm1tICovOyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJh
c2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VF
bnRyeVBvaW50Lm1tICovOyB9OworCQk1MUUzOTkwNjFENkY1NEM3MDA5Qzg4MzEgLyogVUlHYW1l
cGFkUHJvdmlkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNv
Y29hLm1tICovOyB9OwogCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERTE2
NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwogCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
MDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKQEAgLTI5ODgsNyArMjk4OCw2IEBACiAJCTUxNUJFMUEwMUQ1NTBBQjAwMERE
N0M2OCAvKiBXZWJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQTQxRDU1Mjky
ODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAv
KiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHBhdGggPSBVSVByb2Nlc3MvR2FtZXBh
ZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTUxNUJFMUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUdhbWVwYWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxQjAxRDU5MDA2OTAwREQ3QzY4IC8qIEdhbWVwYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVwYWREYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDc1LDYgKzMwNzQsNyBAQAogCQk1MUUzNTIw
MTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzNTIwNzE4MEY1RDYxMDBFNTNCRTkgLyogSW5mby5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9p
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVNl
cnZpY2VFbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUUzOTkw
NTFENkY1NEM1MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAv
KiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0RDNEExODBDQzkzNjAwMjEyQ0EzIC8q
IGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLkRldmVsb3BtZW50LnhwYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gIndyYXBwZXIueHBjLXNlcnZpY2Ui
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlcy5E
ZXZlbG9wbWVudC54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01
NDk4LDYgKzU0OTgsNyBAQAogCQk1MTVCRTE3QjFENTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFFMzk5MDQx
RDZGNTRBRDAwOUM4ODMxIC8qIGNvY29hICovLAogCQkJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2
OCAvKiBtYWMgKi8sCiAJCQkJNTE1QkUxQUMxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5j
cHAgKi8sCiAJCQkJNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovLApA
QCAtNTUxMCw3ICs1NTExLDYgQEAKIAkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTE1QkUxQTYx
RDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLywKIAkJCQk1MTVC
RTFCNjFENUE5NEY5MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0gKi8sCiAJCQkp
OwogCQkJbmFtZSA9IG1hYzsKQEAgLTU2MTUsNiArNTYxNSwxNCBAQAogCQkJcGF0aCA9IEluZGV4
ZWREQjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTUxRTM5OTA0MUQ2RjU0
QUQwMDlDODgzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVy
Q29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNTFGN0RDMEExODBDQzQxMTAwMjEyQ0EzIC8qIERhdGFiYXNlUHJv
Y2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MTg2
LDYgKzkxOTQsNyBAQAogCQkJCTFBMEVDOTEwMTI0QzBBRjUwMDdFRjRBNSAvKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3ODY1QjkxNkNB
QzcxNTAwQUNFODNBIC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJCQjZEMDE0MTE3QjREMDAwRjM1RDQgLyog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFFMzk5MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTBEMzEyODFDOTY2MDAxRUI5NjIgLyogUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE0Nzky
MzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBMEVDNjA0MTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkyNzAsNyArOTI3OSw2IEBACiAJCQkJMUFGRTQzNjUxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTFCNDFE
NTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJF
MUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MTVCRTFBNzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxQjcxRDVBOTRGRDAwREQ3QzY4IC8qIFVJR2Ft
ZXBhZFByb3ZpZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDI0NUYxMkRFMjlBMTAw
Q0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzNjcxODU2
NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllYjNhM2ZkM2NkNjFhMWEz
Nzk0N2QzZmY3NTdiYTZhMDVlODhkNTAuLjk1ZWQxNzQ5YWYyYzkxNzU0NTYwZWQ2YjNhMDk2NDhm
MDZhNmI1NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wOC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGJhY2tlbmQgZm9y
IGdhbWVwYWQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAgICAgKC1bQnJvd3Nl
ckFwcERlbGVnYXRlIGF3YWtlRnJvbU5pYl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1l
bnVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHRvZ2dsZVVzZXNHYW1lQ29udHJv
bGxlckZyYW1ld29yazpdKToKKwogMjAxNi0wOC0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gV2FybmluZyBmaXhlcy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0FwcERlbGVnYXRlLm0KaW5kZXggOTVhNTc2YWNiNjM2N2I4NDA4ZDE1ZjZhNWQ5MDc1M2Fl
NmUyYTcyOC4uYzRmYjhmYWQzZWQ1Mzc0OThmNWZkYzU3MTE1N2ZlNTk2OTEzYzRlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTY2LDYgKzY2LDEyIEBAIC0gKHZvaWQpYXdh
a2VGcm9tTmliCiB7CiAgICAgTlNNZW51SXRlbSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10g
aW5pdF07CiAgICAgW2l0ZW0gc2V0U3VibWVudTpbW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRd
IG1lbnVdXTsKKworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgaWYgKFtbU2V0dGluZ3NDb250cm9s
bGVyIHNoYXJlZF0gdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSkKKyAgICAgICAgW1dLUHJv
Y2Vzc1Bvb2wgX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdOworI2VuZGlmCisKICAgICBb
W05TQXBwIG1haW5NZW51XSBpbnNlcnRJdGVtOltpdGVtIGF1dG9yZWxlYXNlXSBhdEluZGV4Oltb
TlNBcHAgbWFpbk1lbnVdIGluZGV4T2ZJdGVtV2l0aFRpdGxlOkAiRGVidWciXV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCBiY2NlZjlhYzZj
OGEwZDA1YmVmMzc1NjUzMGQxMGRhYjI3ZDE4ZWZmLi5kZDgzYWIxOWNmMTE3ZTU3ZmViNjAxOGRl
ZjkwNTUxMDcxODI1MDVmIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGlu
Z3NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJv
bGxlci5oCkBAIC01MCw2ICs1MCw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdmlzdWFsVmlld3BvcnRFbmFibGVkOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHVzZXNHYW1lQ29udHJvbGxlckZy
YW1ld29yazsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGVm
YXVsdFVSTDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29u
dHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCmlu
ZGV4IDQxNDhmNDg5YTcyMWE3N2Y4YTUzY2MxMzBjYjRiMGQyZjEwMDliMWYuLjc0ZjdlOWE3ZmZk
YWJjNTA1NTIzYTE5YzM2NTVmODE4ZTRhZmMyMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
U2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJlZmVyZW5jZUtleSA9
IEAiU2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAi
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlJlc291cmNlVXNh
Z2VPdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VzR2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmtLZXkgPSBAIlVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yayI7CiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWRQcmVmZXJl
bmNlS2V5ID0gQCJJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWQiOwogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBAIkFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgRGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBAIkRpc3BsYXlMaXN0RHJhd2luZ0Vu
YWJsZWQiOwpAQCAtMTMyLDYgKzEzMyw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtz
ZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiVXNlIFVJLVNpZGUgQ29tcG9zaXRpbmciIGFjdGlvbjpA
c2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRpbmc6KSBpbmRlbnRlZDpZRVNdOwogICAg
IFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRGlzYWJsZSBQZXItV2luZG93IFdlYiBQcm9jZXNz
ZXMiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ6
KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiU2hvdyBSZXNv
dXJjZSBVc2FnZSBPdmVybGF5IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVz
YWdlT3ZlcmxheTopIGluZGVudGVkOllFU107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6
QCJVc2UgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVk
KSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBp
bmRlbnRlZDpZRVNdOwogCiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVt
ID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFj
dGlvbjpuaWwga2V5RXF1aXZhbGVudDpAIiJdOwogICAgIE5TTWVudSAqZGVidWdPdmVybGF5c01l
bnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIl07CkBA
IC0yMDMsNiArMjA1LDggQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICop
bWVudUl0ZW0KICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHRpbGVkU2Nyb2xsaW5n
SW5kaWNhdG9yVmlzaWJsZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTopKQog
ICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IodG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOikpCisgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdID8gTlNP
blN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0
b2dnbGVVc2VVSVNpZGVDb21wb3NpdGluZzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6
W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAg
ICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVQZXJXaW5kb3dXZWJQcm9jZXNz
ZXNEaXNhYmxlZDopKQpAQCAtMzUwLDYgKzM1NCwxNiBAQCAtICh2b2lkKXRvZ2dsZVNob3dSZXNv
dXJjZVVzYWdlT3ZlcmxheTooaWQpc2VuZGVyCiAgICAgW3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZh
dWx0OlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOwogfQogCistIChC
T09MKXVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yaworeworICAgIHJldHVybiBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OlVzZXNHYW1lQ29udHJvbGxl
ckZyYW1ld29ya0tleV07Cit9CisKKy0gKHZvaWQpdG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6VXNl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5XTsKK30KKwogLSAoQk9PTCl0aWxlZFNjcm9sbGlu
Z0luZGljYXRvclZpc2libGUKIHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpUaWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVQ
cmVmZXJlbmNlS2V5XTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287435</attachid>
            <date>2016-08-30 14:52:09 -0700</date>
            <delta_ts>2016-08-30 14:54:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161086-20160830144958.patch</filename>
            <type>text/plain</type>
            <size>57300</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Nzg2YmU3Njc2OTBjYzg1ODdlZGEw
ZDZlYTBiMzUwNTVlYWY5OGMuLjhlOWEzMWYyMTFlOTY2ODY3ZGRjYWM3ODlhMTRjMTliMzQ4MmU3
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDgtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBiYWNrZW5k
IGZvciBnYW1lcGFkIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydE9uZVNob3QpOgorCiAyMDE2LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJMUGFyc2VyIHNob3VsZCBwYXJzZSBy
ZWxhdGl2ZSBVUkxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBhMGRiZTQxMGFlMGY3OWU0MTI5NWYzNTlkOWQ5
NDYwZjk0Mjk1Ny4uNjJkOTFjNWIyODFmYjgwZDczM2JhYWJmMzhjOTMwY2UxODJjYTZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTMwICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgYmFja2Vu
ZCBmb3IgZ2FtZXBhZCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjEwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE5hdGl2ZSBmcmFtZXdvcmsgYmFja2VuZHMgbm90IGRp
cmVjdGx5IHRlc3RhYmxlKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwLgorICAgICAgICAqIHBsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZDo6c2V0dXBBc0V4dGVuZGVk
R2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWQ6OnNldHVw
QXNHYW1lcGFkKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0
b24pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Okdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZERpc2Nv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyOjpnYW1lcGFkSGFkSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlv
blRpbWVyRmlyZWQpOgorCiAyMDE2LTA4LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoInBvcHN0YXRlZXZlbnQiKSBzaG91
bGQgY3JlYXRlIGEgUG9wU3RhdGVFdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU3NjRjYmEwZDgyMTI1ZTY5
MTMyMTE5YTE1MmExNzIwMTMxYjFmNGYuLjM5ZWUyYThhODAzOWQwOTY5NjdlNzI2NjFhZGEzN2Fh
NDVkZTY2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0wOC0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2FtZUNvbnRyb2xsZXIuZnJh
bWV3b3JrIGJhY2tlbmQgZm9yIGdhbWVwYWQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW06CisgICAgICAgICgrW1dLUHJvY2Vzc1Bvb2wgX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJD
b2NvYS5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21h
Yy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFBy
b3ZpZGVyOjpzZXRVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspOgorICAgICAgICAoV2ViS2l0
OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToK
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3Jp
bmdJbnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0
YXJ0TW9uaXRvcmluZ0lucHV0KToKKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNi0wOC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVj
dGlvbiBpbiBXZWJQYWdlUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3Au
aCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCAzNjExZDdhMzljYjU5Y2MwZjQ4ZThi
MTdkYmIyYmUyNjY5YTk0ZDk1Li41NTVkNDQ3MzFjZjMwOGJjYmQ5ZWViZGZiZTY1YjIxZmRhYTU4
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUnVuTG9vcC5oCkBAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBz
dGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwpIHsgc3RhcnQocmVwZWF0SW50ZXJ2
YWwsIHRydWUpOyB9CiAgICAgICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyByZXBlYXRJbnRlcnZhbCkgeyBzdGFydFJlcGVhdGluZyhyZXBlYXRJbnRlcnZh
bC5jb3VudCgpICogMC4wMDEpOyB9CiAgICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KGRvdWJsZSBp
bnRlcnZhbCkgeyBzdGFydChpbnRlcnZhbCwgZmFsc2UpOyB9CisgICAgICAgIHZvaWQgc3RhcnRP
bmVTaG90KHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoaW50ZXJ2
YWwuY291bnQoKSAqIDAuMDAxLCBmYWxzZSk7IH0KIAogICAgICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzdG9wKCk7CiAgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzQWN0aXZl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzUxNTRkY2FjZjU1MzhkMzNkYzZjYmI4ZjdmYmQyMTkwZTZhMGJkMC4u
YWNjNDkzODhlZDU2MDRkYjM5NWFjZDQ5YTMyMTgyODU5MjIyODM5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE3NCw2ICsy
MTc0LDcgQEAKIAkJNTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBQkFFMUYxMDND
MTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCAqLzsgfTsKIAkJNTFBQkY2
NEQxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJGNjRDMTYzOTJFMjgwMDEzMkE3QSAv
KiBMb2FkZXJTdHJhdGVneS5jcHAgKi87IH07CisJCTUxQUVBNEM5MUQ2RTNDQzkwMEUwMjY5RCAv
KiBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFFQTRDODFENkUzQ0MxMDBFMDI2OUQgLyogR2FtZUNvbnRy
b2xsZXIuZnJhbWV3b3JrICovOyB9OwogCQk1MUFGNTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVz
b3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUIy
NDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFGM0YwMEU4
M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovOyB9OwogCQk1MUI0NTRFQTFCNERBRTdE
MDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCNDU0RTkxQjREQUU3RDAwODVFQUE2IC8qIFBpbmdIYW5kbGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIxMSw2
ICsyMjEyLDEwIEBACiAJCTUxRTFFQ0MxMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxRUNCQjBD
OTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5oICovOyB9OwogCQk1MUUxRUNDMjBDOTFDOTA0
MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxRUNCQzBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJl
Y29yZC5jcHAgKi87IH07CiAJCTUxRTFFQ0MzMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVj
b3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUx
RUNCRDBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5oICovOyB9OworCQk1MUUzOTkw
MDFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGQzFENkU0NzRCMDA5Qzg4
MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFFMzk5MDExRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVD
b250cm9sbGVyR2FtZXBhZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTM5OEZEMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVw
YWQubW0gKi87IH07CisJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFMzk4RkUxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTFFMzk5MDMxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFMzk4RkYxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
Lm1tICovOyB9OwogCQk1MUUzQUEwQTFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTNBQTA4MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwICovOyB9Owog
CQk1MUUzQUEwQjFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzQUEwOTFCOThCQzlB
MDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0
b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3BwICovOyB9OwpAQCAtOTEzMCw2
ICs5MTM1LDcgQEAKIAkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhh
bmRsZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFCQUUxRDEwM0Mx
OTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJGNjRDMTYzOTJFMjgwMDEzMkE3
QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMb2FkZXJTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
QUVBNEM4MUQ2RTNDQzEwMEUwMjY5RCAvKiBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IEdhbWVDb250cm9sbGVyLmZyYW1ld29yazsgcGF0aCA9IC4uLy4uLy4uLy4u
Ly4uLy4uL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFGNTAzNTE2RjEwMEY2MDA5NUIyRTgg
LyogUmVzb3VyY2VMb2FkZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWRlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDU0RTkxQjREQUU3RDAwODVFQUE2IC8q
IFBpbmdIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGluZ0hhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTE5Niw2ICs5MjAyLDEwIEBACiAJ
CTUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEljb25SZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMUVDQkMwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVVSTFJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTFFQ0JEMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdl
VVJMUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VVUkxSZWNv
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkMxRDZFNDc0QjAwOUM4
ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHYW1lQ29udHJvbGxlckdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFFMzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdhbWVDb250cm9sbGVy
R2FtZXBhZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFMzk4RkUxRDZFNDc0
QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRTM5OEZGMUQ2RTQ3NEIwMDlDODgzMSAvKiBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzQUEwODFCOThCQzlBMDAzNkFEODEgLyogU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
Y3VyaXR5T3JpZ2luRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTNB
QTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5EYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRTNGOUM0MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MzE3LDYgKzE0MzI3LDcgQEAKIAkJCQk5M0YxOUIxNjA4MjQ1RTU5
MDAxRTlBQkMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJ
CQkJOTNGMTlCMTcwODI0NUU1OTAwMUU5QUJDIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLywKIAkJCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBp
biBGcmFtZXdvcmtzICovLAorCQkJCTUxQUVBNEM5MUQ2RTNDQzkwMEUwMjY5RCAvKiBHYW1lQ29u
dHJvbGxlci5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlERDc2M0JCMjA5OTJDMkM5
MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJCTM3OTkxOUIy
MTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJQTg4
QUQ1MkYwOTUyNEI5MjAwMUREMTk2IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8sCkBAIC0xNDc5MSw2ICsxNDgwMiw3IEBACiAJCQkJRkQyREJGMEUxMkIwNDhBMzAwRUQ5
OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrICovLAogCQkJCUZEMkRCRjBGMTJCMDQ4QTMwMEVE
OThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrICovLAogCQkJCUFBNUYzQjkwMTZDQzVCRUIw
MDQ1NUVCMCAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJNTFBRUE0QzgxRDZF
M0NDMTAwRTAyNjlEIC8qIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayAqLywKIAkJCQkxQUIzM0RB
NDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCUY4MjE2Mjk5MDI5
RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJOTNGMUQz
MUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCkBAIC0xNjUwMyw2ICsx
NjUxNSw3IEBACiAJCTUxNUJFMTg3MUQ1NEY1REIwMEREN0M2OCAvKiBnYW1lcGFkICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFFQTRCRjFENkUzQzIz
MDBFMDI2OUQgLyogY29jb2EgKi8sCiAJCQkJNTE1QkUxOTYxRDU0RjY0NTAwREQ3QzY4IC8qIG1h
YyAqLywKIAkJCQk1MTVCRTE4ODFENTRGNUY2MDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlk
ZXIuY3BwICovLAogCQkJCTUxNUJFMTg5MUQ1NEY1RjYwMEREN0M2OCAvKiBFbXB0eUdhbWVwYWRQ
cm92aWRlci5oICovLApAQCAtMTY1OTksNiArMTY2MTIsMTcgQEAKIAkJCW5hbWUgPSBHYW1lcGFk
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTFBRUE0QkYxRDZFM0MyMzAw
RTAyNjlEIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk1MUUzOThGQzFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFk
LmggKi8sCisJCQkJNTFFMzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZC5tbSAqLywKKwkJCQk1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MUUzOThGRjFENkU0NzRCMDA5Qzg4MzEgLyog
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNv
Y29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTFDNEFBNTExOEIyODM1
NzAwN0JGRTlCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yNTE4Nyw2ICsyNTIxMSw3IEBACiAJCQkJQjJGQTNENjcwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjJGNjlEMEFCNzcxQjgw
MDIyRUZBRCAvKiBKU1NWR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDJBNzk5MEFF
NUM5NDQwMERGNThERiAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTFFMzk5MDAxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBh
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
RWxsaXBzZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNjZDRDRFMEMzQUVDNjUwMEVC
MDhEMiAvKiBKU1NWR0V4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENkIwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjY2NDEsNiArMjY2NjYsNyBAQAogCQkJCUNEQTA3RkJFMThFMEExNkEwMDQ2OTlGQSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEwN0ZDMjE4RTBBMjJCMDA0
Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1
OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxRTM5OTAyMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRh
YmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEg
LyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDYxMjUxRjEyRDAw
M0VGMjY5IC8qIFRlbGVwaG9uZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODg3OSw2
ICsyODkwNSw3IEBACiAJCQkJQjJGQTNENjgwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRWxsaXBz
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI2NkNENEQwQzNBRUM2NTAwRUIwOEQy
IC8qIEpTU1ZHRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDZBMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxRTM5OTAzMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDZDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDZFMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyRkEzRDcwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MzM1LDYgKzI5MzYyLDcgQEAKIAkJ
CQlFNDMxMDVCODE2NzUwRjBDMDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMzUwM0NDNzEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRp
b25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFMzk5MDExRDZFNDc1MDAwOUM4ODMx
IC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMjhDQTY4
MTQ3MzMxNTIwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxNTEzRDUxMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQwQTBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOGNjMDdkZmViZGE0ZTk2NDhhMTViNzgzNWRiZWYxMGMwNjFjM2NiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKworI2luY2x1ZGUgIlBs
YXRmb3JtR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFT
UyBHQ0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIEdDQ29udHJvbGxlckF4aXNJbnB1dDsKK09CSkNf
Q0xBU1MgR0NDb250cm9sbGVyQnV0dG9uSW5wdXQ7CitPQkpDX0NMQVNTIEdDQ29udHJvbGxlckVs
ZW1lbnQ7CitPQkpDX0NMQVNTIEdDRXh0ZW5kZWRHYW1lcGFkOworT0JKQ19DTEFTUyBHQ0dhbWVw
YWQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
IDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkKTsKK3B1YmxpYzoKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWQo
R0NDb250cm9sbGVyICosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXR1cEFzRXh0ZW5k
ZWRHYW1lcGFkKCk7CisgICAgdm9pZCBzZXR1cEFzR2FtZXBhZCgpOworCisgICAgUmV0YWluUHRy
PEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CisKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2F4
aXNWYWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gbV9idXR0b25WYWx1ZXM7CisKKyAgICBSZXRh
aW5QdHI8R0NHYW1lcGFkPiBtX2dhbWVwYWQ7CisgICAgUmV0YWluUHRyPEdDRXh0ZW5kZWRHYW1l
cGFkPiBtX2V4dGVuZGVkR2FtZXBhZDsKK307CisKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyR2FtZXBhZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGIwOTQzMDNlM2VhOGRhMjhlNGFj
ZjNiYzI5ODU0NjY0NjlkM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0KQEAgLTAsMCArMSwx
ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVDb250
cm9sbGVyR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIGRlZmluZWQoX19MUDY0
X18pCisjaW5jbHVkZSAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRl
IDxHYW1lQ29udHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dhbWVDb250cm9sbGVyR2FtZXBhZDo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkKEdDQ29udHJvbGxlciAqY29udHJvbGxlciwgdW5zaWduZWQg
aW5kZXgpCisgICAgOiBQbGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgLCBtX2djQ29udHJvbGxl
cihjb250cm9sbGVyKQoreworICAgIEFTU0VSVChpbmRleCA8IDQpOworICAgIGNvbnRyb2xsZXIu
cGxheWVySW5kZXggPSAoR0NDb250cm9sbGVyUGxheWVySW5kZXgpKEdDQ29udHJvbGxlclBsYXll
ckluZGV4MSArIGluZGV4KTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkID0gY29udHJvbGxlci5l
eHRlbmRlZEdhbWVwYWQ7CisgICAgaWYgKCFtX2V4dGVuZGVkR2FtZXBhZCkKKyAgICAgICAgbV9n
YW1lcGFkID0gY29udHJvbGxlci5nYW1lcGFkOworCisgICAgQVNTRVJUKG1fZXh0ZW5kZWRHYW1l
cGFkIHx8IG1fZ2FtZXBhZCk7CisKKyAgICBpZiAobV9leHRlbmRlZEdhbWVwYWQpCisgICAgICAg
IHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKKyAgICBlbHNlCisgICAgICAgIHNldHVwQXNHYW1l
cGFkKCk7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkOjpzZXR1cEFzRXh0ZW5kZWRH
YW1lcGFkKCkKK3sKKyAgICBBU1NFUlQobV9leHRlbmRlZEdhbWVwYWQpOworCisgICAgbV9pZCA9
IG1ha2VTdHJpbmcoU3RyaW5nKG1fZ2NDb250cm9sbGVyLmdldCgpLnZlbmRvck5hbWUpLCBBU0NJ
SUxpdGVyYWwoIiBFeHRlbmRlZCBHYW1lcGFkIikpOworCisgICAgbV9leHRlbmRlZEdhbWVwYWQu
Z2V0KCkudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NFeHRlbmRlZEdhbWVwYWQgKiwgR0NDb250
cm9sbGVyRWxlbWVudCAqKSB7CisgICAgICAgIG1fbGFzdFVwZGF0ZVRpbWUgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLmdhbWVwYWRIYWRJbnB1dCgqdGhpcyk7CisgICAgfTsKKworICAgIG1f
YnV0dG9uVmFsdWVzLnJlc2l6ZSg4KTsKKyAgICBtX2J1dHRvblZhbHVlc1swXSA9IG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbMV0gPSBt
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25CLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVz
WzJdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1ZTsKKyAgICBtX2J1dHRv
blZhbHVlc1szXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblkudmFsdWU7CisgICAg
bV9idXR0b25WYWx1ZXNbNF0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0U2hvdWxkZXIu
dmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbNV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5y
aWdodFNob3VsZGVyLnZhbHVlOworICAgIG1fYnV0dG9uVmFsdWVzWzZdID0gbV9leHRlbmRlZEdh
bWVwYWQuZ2V0KCkubGVmdFRyaWdnZXIudmFsdWU7CisgICAgbV9idXR0b25WYWx1ZXNbN10gPSBt
X2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRyaWdnZXIudmFsdWU7CisKKyAgICBtX2F4aXNW
YWx1ZXMucmVzaXplKDYpOworICAgIG1fYXhpc1ZhbHVlc1swXSA9IG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlzLnZhbHVlOworICAgIG1fYXhpc1ZhbHVlc1sxXSA9
IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlOworICAg
IG1fYXhpc1ZhbHVlc1syXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGlj
ay54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1ZXNbM10gPSBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5yaWdodFRodW1ic3RpY2sueUF4aXMudmFsdWU7CisgICAgbV9heGlzVmFsdWVzWzRdID0g
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC54QXhpcy52YWx1ZTsKKyAgICBtX2F4aXNWYWx1
ZXNbNV0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnlBeGlzLnZhbHVlOworCisgICAg
bV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihH
Q0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBt
X2J1dHRvblZhbHVlc1swXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQu
Z2V0KCkuYnV0dG9uQi52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25J
bnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1sxXSA9
IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWC52YWx1
ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1
ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1syXSA9IHZhbHVlOworICAgIH07Cisg
ICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZUNoYW5nZWRIYW5kbGVyID0g
XihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAg
ICBtX2J1dHRvblZhbHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRlZEdhbWVw
YWQuZ2V0KCkubGVmdFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxl
ckJ1dHRvbklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFs
dWVzWzRdID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdo
dFNob3VsZGVyLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0
ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7CisgICAgICAgIG1fYnV0dG9uVmFsdWVzWzVdID0gdmFs
dWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VHJpZ2dlci52YWx1
ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1
ZSwgQk9PTCkgeworICAgICAgICBtX2J1dHRvblZhbHVlc1s2XSA9IHZhbHVlOworICAgIH07Cisg
ICAgbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkucmlnaHRUcmlnZ2VyLnZhbHVlQ2hhbmdlZEhhbmRs
ZXIgPSBeKEdDQ29udHJvbGxlckJ1dHRvbklucHV0ICosIGZsb2F0IHZhbHVlLCBCT09MKSB7Cisg
ICAgICAgIG1fYnV0dG9uVmFsdWVzWzddID0gdmFsdWU7CisgICAgfTsKKworICAgIG1fZXh0ZW5k
ZWRHYW1lcGFkLmdldCgpLmxlZnRUaHVtYnN0aWNrLnhBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIg
PSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBtX2F4
aXNWYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LmxlZnRUaHVtYnN0aWNrLnlBeGlzLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxl
ckF4aXNJbnB1dCAqLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICBtX2F4aXNWYWx1ZXNbMV0gPSB2
YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLnJpZ2h0VGh1bWJzdGlj
ay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQgKiwg
ZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzJdID0gdmFsdWU7CisgICAgfTsK
KyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5yaWdodFRodW1ic3RpY2sueUF4aXMudmFsdWVD
aGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQXhpc0lucHV0ICosIGZsb2F0IHZhbHVlKSB7
CisgICAgICAgIG1fYXhpc1ZhbHVlc1szXSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkuZHBhZC54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzRd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5kcGFkLnlBeGlz
LnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDQ29udHJvbGxlckF4aXNJbnB1dCAqLCBmbG9hdCB2
YWx1ZSkgeworICAgICAgICBtX2F4aXNWYWx1ZXNbNV0gPSB2YWx1ZTsKKyAgICB9OworfQorCit2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZDo6c2V0dXBBc0dhbWVwYWQoKQoreworICAgIEFTU0VS
VChtX2dhbWVwYWQpOworCisgICAgbV9pZCA9IG1ha2VTdHJpbmcoU3RyaW5nKG1fZ2NDb250cm9s
bGVyLmdldCgpLnZlbmRvck5hbWUpLCBBU0NJSUxpdGVyYWwoIiBHYW1lcGFkIikpOworCisgICAg
bV9nYW1lcGFkLmdldCgpLnZhbHVlQ2hhbmdlZEhhbmRsZXIgPSBeKEdDR2FtZXBhZCAqLCBHQ0Nv
bnRyb2xsZXJFbGVtZW50ICopIHsKKyAgICAgICAgbV9sYXN0VXBkYXRlVGltZSA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkuZ2FtZXBhZEhhZElucHV0KCp0aGlzKTsKKyAgICB9OworCisgICAg
bV9idXR0b25WYWx1ZXMucmVzaXplKDYpOworICAgIG1fYnV0dG9uVmFsdWVzWzBdID0gbV9leHRl
bmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uQS52YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1sxXSA9
IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkIudmFsdWU7CisgICAgbV9idXR0b25WYWx1
ZXNbMl0gPSBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5idXR0b25YLnZhbHVlOworICAgIG1fYnV0
dG9uVmFsdWVzWzNdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuYnV0dG9uWS52YWx1ZTsKKyAg
ICBtX2J1dHRvblZhbHVlc1s0XSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRTaG91bGRl
ci52YWx1ZTsKKyAgICBtX2J1dHRvblZhbHVlc1s1XSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgp
LnJpZ2h0U2hvdWxkZXIudmFsdWU7CisKKyAgICBtX2F4aXNWYWx1ZXMucmVzaXplKDIpOworICAg
IG1fYXhpc1ZhbHVlc1swXSA9IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmRwYWQueEF4aXMudmFs
dWU7CisgICAgbV9heGlzVmFsdWVzWzFdID0gbV9leHRlbmRlZEdhbWVwYWQuZ2V0KCkuZHBhZC55
QXhpcy52YWx1ZTsKKworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkEudmFsdWVD
aGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUs
IEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMF0gPSB2YWx1ZTsKKyAgICB9OworICAg
IG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvbkIudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4o
R0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAg
bV9idXR0b25WYWx1ZXNbMV0gPSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFk
LmdldCgpLmJ1dHRvblgudmFsdWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9u
SW5wdXQgKiwgZmxvYXQgdmFsdWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbMl0g
PSB2YWx1ZTsKKyAgICB9OworICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmJ1dHRvblkudmFs
dWVDaGFuZ2VkSGFuZGxlciA9IF4oR0NDb250cm9sbGVyQnV0dG9uSW5wdXQgKiwgZmxvYXQgdmFs
dWUsIEJPT0wpIHsKKyAgICAgICAgbV9idXR0b25WYWx1ZXNbM10gPSB2YWx1ZTsKKyAgICB9Owor
ICAgIG1fZXh0ZW5kZWRHYW1lcGFkLmdldCgpLmxlZnRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5k
bGVyID0gXihHQ0NvbnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgewor
ICAgICAgICBtX2J1dHRvblZhbHVlc1s0XSA9IHZhbHVlOworICAgIH07CisgICAgbV9leHRlbmRl
ZEdhbWVwYWQuZ2V0KCkucmlnaHRTaG91bGRlci52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0Nv
bnRyb2xsZXJCdXR0b25JbnB1dCAqLCBmbG9hdCB2YWx1ZSwgQk9PTCkgeworICAgICAgICBtX2J1
dHRvblZhbHVlc1s1XSA9IHZhbHVlOworICAgIH07CisKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5n
ZXQoKS5sZWZ0VGh1bWJzdGljay54QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRy
b2xsZXJBeGlzSW5wdXQgKiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzBd
ID0gdmFsdWU7CisgICAgfTsKKyAgICBtX2V4dGVuZGVkR2FtZXBhZC5nZXQoKS5sZWZ0VGh1bWJz
dGljay55QXhpcy52YWx1ZUNoYW5nZWRIYW5kbGVyID0gXihHQ0NvbnRyb2xsZXJBeGlzSW5wdXQg
KiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgbV9heGlzVmFsdWVzWzFdID0gdmFsdWU7CisgICAg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQ
QUQpICYmIGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcwMGZjYzFlNmY0MzhiMjY5ODZjNzQ2NWI1NWZlMGU3OWRh
M2FlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDkxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgZGVmaW5l
ZChfX0xQNjRfXykKKworI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKworT0JKQ19DTEFTUyBHQ0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIE5TT2Jq
ZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVDb250cm9sbGVyR2FtZXBh
ZDsKK2NsYXNzIEdhbWVwYWRQcm92aWRlckNsaWVudDsKKworY2xhc3MgR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcik7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyPjsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50Jikg
ZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVw
YWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1lcGFkVmVjdG9yOyB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0b3BNb25pdG9yaW5nSW5wdXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7CisKKyAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1l
Q29udHJvbGxlckdhbWVwYWQmKTsKKworcHJpdmF0ZToKKyAgICBHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlcigpOworCisgICAgZW51bSBjbGFzcyBDb25uZWN0aW9uVmlzaWJpbGl0eSB7Cisg
ICAgICAgIFZpc2libGUsCisgICAgICAgIEludmlzaWJsZSwKKyAgICB9OworCisgICAgdm9pZCBj
b250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKiwgQ29ubmVjdGlvblZpc2liaWxpdHkp
OworICAgIHZvaWQgY29udHJvbGxlckRpZERpc2Nvbm5lY3QoR0NDb250cm9sbGVyICopOworCisg
ICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAgdm9pZCBp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKTsKKworICAgIHZvaWQgbWFrZUludmlzaWJpbGVH
YW1lcGFkc1Zpc2libGUoKTsKKworICAgIEhhc2hTZXQ8R2FtZXBhZFByb3ZpZGVyQ2xpZW50Kj4g
bV9jbGllbnRzOworCisgICAgSGFzaE1hcDxHQ0NvbnRyb2xsZXIgKiwgc3RkOjp1bmlxdWVfcHRy
PEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKKyAgICBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1lcGFk
Kj4gbV9pbnZpc2libGVHYW1lcGFkczsKKworICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9jb25u
ZWN0T2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2Rpc2Nvbm5lY3RPYnNlcnZl
cjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyPiBt
X2lucHV0Tm90aWZpY2F0aW9uVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwOGE1YzU2ZWEyNTNhNTNhNmRhNDc4ZDUxYmNmMTY5
ZDY5MGI4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBkZWZpbmVkKF9f
TFA2NF9fKQorCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWQuaCIKKyNpbXBvcnQgIkdh
bWVwYWRQcm92aWRlckNsaWVudC5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8R2Ft
ZUNvbnRyb2xsZXIvR2FtZUNvbnRyb2xsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBJbnB1dE5vdGlmaWNhdGlvbkRl
bGF5ID0gMTZtczsKKworR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXImIEdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7CisgICAg
cmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIoKQorICAgIDogbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpCisKK3sKK30KKwordm9pZCBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QoR0NDb250
cm9sbGVyICpjb250cm9sbGVyLCBDb25uZWN0aW9uVmlzaWJpbGl0eSB2aXNpYmlsaXR5KQorewor
ICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxl
ciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOworCisgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZv
ck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisgICAgYXV0byBnYW1lcGFkID0gc3RkOjptYWtlX3Vu
aXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKworICAgIGlm
IChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICBtX2dhbWVwYWRWZWN0
b3IucmVzaXplKGluZGV4ICsgMSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdID0gZ2Ft
ZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0KGNvbnRyb2xsZXIsIFdURk1vdmUoZ2Ft
ZXBhZCkpOworCisKKyAgICBpZiAodmlzaWJpbGl0eSA9PSBDb25uZWN0aW9uVmlzaWJpbGl0eTo6
SW52aXNpYmxlKSB7CisgICAgICAgIG1faW52aXNpYmxlR2FtZXBhZHMuYWRkKG1fZ2FtZXBhZFZl
Y3RvcltpbmRleF0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWFrZUludmlzaWJp
bGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVj
dG9yW2luZGV4XSk7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmNv
bnRyb2xsZXJEaWREaXNjb25uZWN0KEdDQ29udHJvbGxlciAqY29udHJvbGxlcikKK3sKKyAgICBM
T0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAg
cmVtb3ZlZCIsIGNvbnRyb2xsZXIpOworCisgICAgYXV0byByZW1vdmVkR2FtZXBhZCA9IG1fZ2Ft
ZXBhZE1hcC50YWtlKGNvbnRyb2xsZXIpOworICAgIEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisK
KyAgICBhdXRvIGkgPSBtX2dhbWVwYWRWZWN0b3IuZmluZChyZW1vdmVkR2FtZXBhZC5nZXQoKSk7
CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9IG51
bGxwdHI7CisKKyAgICBtX2ludmlzaWJsZUdhbWVwYWRzLnJlbW92ZShyZW1vdmVkR2FtZXBhZC5n
ZXQoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKK30KKwor
dm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVu
dHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAg
ICBpZiAobV9jb25uZWN0T2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVj
dE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNl
cnZlckZvck5hbWU6R0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgewor
ICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuY29udHJv
bGxlckRpZENvbm5lY3Qobm90aWZpY2F0aW9uLm9iamVjdCwgQ29ubmVjdGlvblZpc2liaWxpdHk6
OlZpc2libGUpOworICAgIH1dOworCisgICAgbV9kaXNjb25uZWN0T2JzZXJ2ZXIgPSBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpHQ0NvbnRy
b2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uIG9iamVjdDpuaWwgcXVldWU6bmlsIHVzaW5n
QmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAgICAgIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jb250cm9sbGVyRGlkRGlzY29ubmVj
dChub3RpZmljYXRpb24ub2JqZWN0KTsKKyAgICB9XTsKKworICAgIGZvciAoR0NDb250cm9sbGVy
ICpjb250cm9sbGVyIGluIFtHQ0NvbnRyb2xsZXIgY29udHJvbGxlcnNdKQorICAgICAgICBjb250
cm9sbGVyRGlkQ29ubmVjdChjb250cm9sbGVyLCBDb25uZWN0aW9uVmlzaWJpbGl0eTo6SW52aXNp
YmxlKTsKK30KKwordm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0
b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NF
UlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZj
bGllbnQpOworCisgICAgaWYgKCFtX2Nvbm5lY3RPYnNlcnZlciB8fCAhbV9jbGllbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2Nvbm5lY3RPYnNlcnZlci5nZXQoKV07CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2Rp
c2Nvbm5lY3RPYnNlcnZlci5nZXQoKV07Cit9CisKK3Vuc2lnbmVkIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUo
KSAmJiBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisgICAgcmV0
dXJuIGluZGV4OworfQorCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpnYW1l
cGFkSGFkSW5wdXQoR2FtZUNvbnRyb2xsZXJHYW1lcGFkJikKK3sKKyAgICBpZiAoIW1faW5wdXRO
b3RpZmljYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2lucHV0Tm90aWZpY2F0aW9u
VGltZXIuc3RhcnRPbmVTaG90KElucHV0Tm90aWZpY2F0aW9uRGVsYXkpOworfQorCit2b2lkIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjptYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJs
ZSgpCit7CisgICAgZm9yIChhdXRvKiBnYW1lcGFkIDogbV9pbnZpc2libGVHYW1lcGFkcykgewor
ICAgICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgICAgIGNsaWVu
dC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCpnYW1lcGFkKTsKKyAgICB9CisKKyAgICBtX2lu
dmlzaWJsZUdhbWVwYWRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCit7CisgICAgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KaW5kZXggN2U5MjEyYWMzYmU1MjEwZmU1ZDE4YTFjY2EyM2ZiYzcwNWI5OGNmNS4uM2Y0M2Jm
YzY1ZGQ3NDBiOTYwYzhhMDFhZTM2NDk3NDgxNDNkZjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzIsNiArMzIs
NyBAQAogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2ltcG9ydCAiRG93bmxvYWRDbGllbnQuaCIK
ICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVy
LmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBv
cnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgpAQCAtMjkwLDYgKzI5MSwxMyBAQCAtICh2b2lkKV90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZURhdGFi
YXNlUHJvY2VzcygpOwogfQogCisrICh2b2lkKV9mb3JjZUdhbWVDb250cm9sbGVyRnJhbWV3b3Jr
Cit7CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6
c2V0VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrKCk7CisjZW5kaWYKK30KKwogLSAoQk9PTClf
aXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZAogewogICAgIHJldHVybiBfcHJvY2Vz
c1Bvb2wtPmNvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKaW5kZXggNzJmMDM2ZDYyZGVkYWIzZDQ2YzljZDNlZDMyMWIwOTg5NzQ1Y2FjOS4uMzI5YTZk
NGVkMDgzN2MzYTE4OThjZmZiYjg1YTdlMDYwMzJiNmY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApA
QCAtNjQsNiArNjQsOSBAQAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hp
bGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWlu
YXRlRGF0YWJhc2VQcm9jZXNzOwogCisvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgYmVm
b3JlIGFueSB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIGxhdW5jaGVkLgorKyAodm9pZClfZm9y
Y2VHYW1lQ29udHJvbGxlckZyYW1ld29yazsKKwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRl
cj1faXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCwgc2V0dGVyPV9zZXRDb29raWVT
dG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25p
bmdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVw
YWQvVUlHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBmODZmOGQ1MThjYmVkZDkwMzY1ZjRlYmQ2OWZj
ZGI5ZWYzMDc3MDI5Li4wYWY5ZDUzZjEzMjM1NjE0NmY0OTVhZWEzZDMzYmM1OGNjYWNmNDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFBy
b3ZpZGVyLmgKQEAgLTUyLDYgKzUyLDEwIEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxHYW1lcGFk
RGF0YT4gZ2FtZXBhZFN0YXRlcygpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
c3RhdGljIHZvaWQgc2V0VXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrKCk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8VUlHYW1lcGFkUHJvdmlkZXI+Owog
ICAgIFVJR2FtZXBhZFByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYzE3ZGY4NWRjMDZlNDQ0MTFiYzhkOWQxYmFkNjEyNWY5YWVmZjkyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlH
YW1lcGFkUHJvdmlkZXJDb2NvYS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgPFdlYkNvcmUvR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29sIHVzZUdhbWVDb250
cm9sbGVyRnJhbWV3b3JrID0gZmFsc2U7CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnNldFVz
ZXNHYW1lQ29udHJvbGxlckZyYW1ld29yaygpCit7CisgICAgdXNlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmsgPSB0cnVlOworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERl
ZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworI2VsaWYgZGVmaW5lZChf
X0xQNjRfXykKKyAgICBpZiAodXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCisgICAgICAgIEdh
bWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICBlbHNlCisgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6
c2V0U2hhcmVkUHJvdmlkZXIoSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisjZWxz
ZQorICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoSElER2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKSk7CisjZW5kaWYKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKCF1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKKyAgICAgICAgSElER2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0lucHV0KCk7CisjZW5kaWYKK30KKwordm9p
ZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghdXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCisg
ICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nSW5w
dXQoKTsKKyNlbmRpZgorfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92
aWRlckhJRC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1l
cGFkUHJvdmlkZXJISUQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTBjZGY4
YzRjNTlkMWIwMTlkMzYzZjY3MTY3MDJjNjBhZjYyYzU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFk
L21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVJR2FtZXBh
ZFByb3ZpZGVyLmgiCi0KLSNpZiBFTkFCTEUoR0FNRVBBRCkKLQotI2luY2x1ZGUgPFdlYkNvcmUv
SElER2FtZXBhZFByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3Zp
ZGVyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3Zp
ZGVyKCkKLXsKLSAgICBpZiAoR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pc01vY2tHYW1l
cGFkUHJvdmlkZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR2FtZXBhZFByb3ZpZGVyOjpz
ZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKLX0KLQot
dm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKLXsK
LSAgICAvLyBObyBlZmZlY3Qgd2hlbiB0aGUgTW9ja0dhbWVwYWRQcm92aWRlciBpcyBiZWluZyB1
c2VkLgotICAgIHJldHVybiBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25p
dG9yaW5nSW5wdXQoKTsKLX0KLQotdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFy
dE1vbml0b3JpbmdJbnB1dCgpCi17Ci0gICAgLy8gTm8gZWZmZWN0IHdoZW4gdGhlIE1vY2tHYW1l
cGFkUHJvdmlkZXIgaXMgYmVpbmcgdXNlZC4KLSAgICByZXR1cm4gSElER2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdJbnB1dCgpOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5YjQ0NzdiMTI0OTY1NTlmNTUwNDgyNzhkZTg5YTgxNTk1
NmJhMDgwLi5iZGJjNjAzYjg2ZWU0NTQ4OTBiZGZmY2U1ZWJkYTAyOTliYTY0YTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MzQsNyArOTM0LDYgQEAKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIw
OUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi87IH07CiAJCTUxNUJFMTc3MUQ1M0ZFODcwMERE
N0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVw
YWRQcm92aWRlci5jcHAgKi87IH07CiAJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBXZWJH
YW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAq
LzsgfTsKLQkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElE
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJF
MUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi87IH07CiAJ
CTUxNUJFMUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBNDFENTUyOTI4
MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTFBOTFENTUy
OTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdh
bWVwYWRQcm92aWRlci5oICovOyB9OwogCQk1MTVCRTFBQTFENTU1QTlCMDBERDdDNjggLyogV2Vi
R2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTVCRTE5RjFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi87IH07CkBAIC0x
MDE0LDYgKzEwMTMsNyBAQAogCQk1MUUzNTIwMDE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTM1MUZEMTgwRjVEMEIwMEU1M0JFOSAvKiBEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MUUzNTIwMjE4MEY1RDFFMDBFNTNCRTkg
LyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFMzUyMDExODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vz
c01hYy5tbSAqLzsgfTsKIAkJNTFFMzUyMDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2Vy
dmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUUzNTIwODE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQ
b2ludC5tbSAqLzsgfTsKKwkJNTFFMzk5MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFBy
b3ZpZGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzOTkwNTFENkY1NEM1MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5t
bSAqLzsgfTsKIAkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYw
NjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMDYwREUxNjU0MzE3
NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGMDYw
RTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MERE
MTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CkBAIC0yOTg2LDcgKzI5ODYsNiBAQAogCQk1MTVCRTFBMDFENTUwQUIwMDBERDdDNjgg
LyogV2ViR2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHYW1l
cGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMUE0MUQ1NTI5MjgwMERE
N0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTVCRTFBNjFENTUyOTMwMDBERDdDNjggLyogVUlH
YW1lcGFkUHJvdmlkZXJISUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOyBwYXRoID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFj
L1VJR2FtZXBhZFByb3ZpZGVySElELmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk1MTVCRTFBQzFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNUJFMUFEMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNUJFMUIwMUQ1OTAwNjkwMEREN0M2OCAvKiBHYW1lcGFkRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYW1lcGFkRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA3Myw2ICszMDcyLDcgQEAKIAkJNTFFMzUyMDExODBG
NUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDcxODBGNUQ2MTAwRTUzQkU5IC8qIEluZm8ucGxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2aWNl
RW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFMzk5MDUxRDZG
NTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdEQzRBMTgwQ0M5MzYwMDIxMkNBMyAvKiBjb20u
YXBwbGUuV2ViS2l0LkRhdGFiYXNlcy5EZXZlbG9wbWVudC54cGMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJ3cmFwcGVyLnhwYy1zZXJ2aWNlIjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZXMuRGV2ZWxv
cG1lbnQueHBjOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTQ5NSw2
ICs1NDk1LDcgQEAKIAkJNTE1QkUxN0IxRDU0RUY1QTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxRTM5OTA0MUQ2RjU0
QUQwMDlDODgzMSAvKiBjb2NvYSAqLywKIAkJCQk1MTVCRTFBMTFENTUyM0IzMDBERDdDNjggLyog
bWFjICovLAogCQkJCTUxNUJFMUFDMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuY3BwICov
LAogCQkJCTUxNUJFMUFEMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCAqLywKQEAgLTU1
MDcsNyArNTUwOCw2IEBACiAJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNUJFMUE2MUQ1NTI5
MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8sCiAJCQkJNTE1QkUxQjYx
RDVBOTRGOTAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyTWFjLm1tICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBtYWM7CkBAIC01NjEyLDYgKzU2MTIsMTQgQEAKIAkJCXBhdGggPSBJbmRleGVkREI7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUUzOTkwNDFENkY1NEFEMDA5
Qzg4MzEgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTUxRjdEQzBBMTgwQ0M0MTEwMDIxMkNBMyAvKiBEYXRhYmFzZVByb2Nlc3Mg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTE4Miw2ICs5
MTkwLDcgQEAKIAkJCQkxQTBFQzkxMDEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzg2NUI5MTZDQUM3MTUw
MEFDRTgzQSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyQkI2RDAxNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxRTM5OTA2MUQ2RjU0QzcwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkwRDMxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNDc5MjMxMkE1
OUZEOTAwODIzNkMzIC8qIFBsdWdpblByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QTBFQzYwNDEyNEE5RjJDMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC05MjY2LDcgKzkyNzUsNiBAQAogCQkJCTFBRkU0MzY1MThCNkMwODEwMDlD
N0E0OCAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxQjQxRDU5MTdG
RjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTFBODFE
NTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNUJFMUI3MUQ1QTk0RkQwMEREN0M2OCAvKiBVSUdhbWVwYWRQ
cm92aWRlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyNDVGMTJERTI5QTEwMENBQUUy
QyAvKiBVcGRhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzY3MTg1NjVCNTcw
MEYzRUMwNSAvKiBVc2VyRGF0YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYmZiYThjZjViNWY3N2U3NjFhNTY2
YWI2OWMxZDFiZGU0M2M1MDFkLi41YmMyNDMyMTlmY2M4ZWJlZGFiOWYzMjFiNTUxYmU4ZDM1OTdl
MGJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTYtMDgtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBiYWNrZW5kIGZvciBnYW1l
cGFkIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgICgtW0Jyb3dzZXJBcHBE
ZWxlZ2F0ZSBhd2FrZUZyb21OaWJdKToKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0
aW5nc0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250
cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxhdGVNZW51XSk6
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAg
ICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSk6
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJG
cmFtZXdvcms6XSk6CisKIDIwMTYtMDgtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJ1ZyAxNjExNjUgLSBjaGVjay13ZWJraXQtc3R5bGUgZG9lc24ndCB1
bmRlcnN0YW5kIG1hY3JvcyBjb250YWluaW5nIGBlbHNlYCBvciBsYWJlbHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0FwcERlbGVnYXRlLm0KaW5kZXggOTVhNTc2YWNiNjM2N2I4NDA4ZDE1ZjZhNWQ5MDc1M2Fl
NmUyYTcyOC4uYzRmYjhmYWQzZWQ1Mzc0OThmNWZkYzU3MTE1N2ZlNTk2OTEzYzRlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTY2LDYgKzY2LDEyIEBAIC0gKHZvaWQpYXdh
a2VGcm9tTmliCiB7CiAgICAgTlNNZW51SXRlbSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10g
aW5pdF07CiAgICAgW2l0ZW0gc2V0U3VibWVudTpbW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRd
IG1lbnVdXTsKKworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgaWYgKFtbU2V0dGluZ3NDb250cm9s
bGVyIHNoYXJlZF0gdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSkKKyAgICAgICAgW1dLUHJv
Y2Vzc1Bvb2wgX2ZvcmNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdOworI2VuZGlmCisKICAgICBb
W05TQXBwIG1haW5NZW51XSBpbnNlcnRJdGVtOltpdGVtIGF1dG9yZWxlYXNlXSBhdEluZGV4Oltb
TlNBcHAgbWFpbk1lbnVdIGluZGV4T2ZJdGVtV2l0aFRpdGxlOkAiRGVidWciXV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCBiY2NlZjlhYzZj
OGEwZDA1YmVmMzc1NjUzMGQxMGRhYjI3ZDE4ZWZmLi5kZDgzYWIxOWNmMTE3ZTU3ZmViNjAxOGRl
ZjkwNTUxMDcxODI1MDVmIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGlu
Z3NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJv
bGxlci5oCkBAIC01MCw2ICs1MCw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdmlzdWFsVmlld3BvcnRFbmFibGVkOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHVzZXNHYW1lQ29udHJvbGxlckZy
YW1ld29yazsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGVm
YXVsdFVSTDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29u
dHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCmlu
ZGV4IDQxNDhmNDg5YTcyMWE3N2Y4YTUzY2MxMzBjYjRiMGQyZjEwMDliMWYuLjc0ZjdlOWE3ZmZk
YWJjNTA1NTIzYTE5YzM2NTVmODE4ZTRhZmMyMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
U2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkUHJlZmVyZW5jZUtleSA9
IEAiU2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAi
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlJlc291cmNlVXNh
Z2VPdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VzR2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmtLZXkgPSBAIlVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yayI7CiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWRQcmVmZXJl
bmNlS2V5ID0gQCJJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWQiOwogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBAIkFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgRGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgPSBAIkRpc3BsYXlMaXN0RHJhd2luZ0Vu
YWJsZWQiOwpAQCAtMTMyLDYgKzEzMyw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtz
ZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiVXNlIFVJLVNpZGUgQ29tcG9zaXRpbmciIGFjdGlvbjpA
c2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRpbmc6KSBpbmRlbnRlZDpZRVNdOwogICAg
IFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRGlzYWJsZSBQZXItV2luZG93IFdlYiBQcm9jZXNz
ZXMiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ6
KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiU2hvdyBSZXNv
dXJjZSBVc2FnZSBPdmVybGF5IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVz
YWdlT3ZlcmxheTopIGluZGVudGVkOllFU107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6
QCJVc2UgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0IHJlcXVpcmVk
KSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms6KSBp
bmRlbnRlZDpZRVNdOwogCiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVt
ID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFj
dGlvbjpuaWwga2V5RXF1aXZhbGVudDpAIiJdOwogICAgIE5TTWVudSAqZGVidWdPdmVybGF5c01l
bnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIl07CkBA
IC0yMDMsNiArMjA1LDggQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICop
bWVudUl0ZW0KICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHRpbGVkU2Nyb2xsaW5n
SW5kaWNhdG9yVmlzaWJsZV0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVNob3dSZXNvdXJjZVVzYWdlT3ZlcmxheTopKQog
ICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IodG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOikpCisgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtdID8gTlNP
blN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0
b2dnbGVVc2VVSVNpZGVDb21wb3NpdGluZzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6
W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAg
ICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVQZXJXaW5kb3dXZWJQcm9jZXNz
ZXNEaXNhYmxlZDopKQpAQCAtMzUwLDYgKzM1NCwxNiBAQCAtICh2b2lkKXRvZ2dsZVNob3dSZXNv
dXJjZVVzYWdlT3ZlcmxheTooaWQpc2VuZGVyCiAgICAgW3NlbGYgX3RvZ2dsZUJvb2xlYW5EZWZh
dWx0OlJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOwogfQogCistIChC
T09MKXVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29yaworeworICAgIHJldHVybiBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OlVzZXNHYW1lQ29udHJvbGxl
ckZyYW1ld29ya0tleV07Cit9CisKKy0gKHZvaWQpdG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6VXNl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrS2V5XTsKK30KKwogLSAoQk9PTCl0aWxlZFNjcm9sbGlu
Z0luZGljYXRvclZpc2libGUKIHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpUaWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVQ
cmVmZXJlbmNlS2V5XTsK
</data>
<flag name="review"
          id="310876"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>