<?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>25755</bug_id>
          
          <creation_ts>2009-05-13 12:46:33 -0700</creation_ts>
          <short_desc>Implement ARIA grid role</short_desc>
          <delta_ts>2009-05-14 12:56:17 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>121077</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 12:46:33 -0700</bug_when>
    <thetext>Need to implement ARIA role=&quot;grid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121078</commentid>
    <comment_count>1</comment_count>
      <attachid>30282</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 12:50:21 -0700</bug_when>
    <thetext>Created attachment 30282
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121094</commentid>
    <comment_count>2</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-05-13 14:07:38 -0700</bug_when>
    <thetext>Overall this patch looks good. My concern is with all of the static_casts in the AccessibilityTable classes -- both the casts that are added with the patch and the ones that already existed. Now that these AccessibilityGrid classes inherit from AccessibilityTable classes and implement the ARIA role, it seems to me that there is no guarantee that the renderers will be table parts as they are often cast to be. Are you sure these casts are still safe? If so, why? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121103</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 14:39:26 -0700</bug_when>
    <thetext>i&apos;m not a C++ wrangler yet.

If i do this
static_cast&lt;AccessibilityTableRow*&gt;(m_rows[k].get())-&gt;headerObject();
I assume it uses the virtual method to get the right one, so i&apos;m guessing those are not the casts you&apos;re talking about

i assume you&apos;re talking about these casts
RenderTable* table = static_cast&lt;RenderTable*&gt;(m_renderer);

So in those cases, WebKit would crash pretty fast if the thing wasn&apos;t a RenderTable. To counter those, i&apos;ve carefully looked at where those are used across the three classes and i have virtual methods that override each one

here are the classes that use static casts and why this patch doesn&apos;t interfere
AccessibilityTable::isTableExposableThroughAccessibility()

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121104</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 14:39:51 -0700</bug_when>
    <thetext>hit commit by accident. still going thru this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121105</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 14:46:41 -0700</bug_when>
    <thetext>AccessibilityTable::isTableExposableThroughAccessibility()
  -- returns as soon as it sees the renderer is not a RenderTable

AccessibilityTable::addChildren()
  -- overridden by AccessibilityAriaGrid 

AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow
  -- overriden by AccessibilityAriaGrid

AccessibilityTable::title
   -- this assumes a HTMLTableElement node... i need to protect against this and will do so, and update the patch

AccessibilityTableColumn::headerObject()
   -- code that first checks if the parent table is an aria table and handles that separately. after that check, it then checks if it is a RenderTable before proceeding

AccessibilityTableCell::parentTable()  and AccessibilityTableCell::rowIndexRange,  and AccessibilityTableCell::columnIndexRange
  -- overridden by AccessibilityAriaGridCell

AccessibilityTableCell::titleUIElement()
  -- checks that the renderer is a RenderTableCell before proceeding

AccessibilityTableRow::parentTable() and AccessibilityTableRow::headerObject()
 -- overriden by AccessibilityAriaGridRow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121106</commentid>
    <comment_count>6</comment_count>
      <attachid>30288</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 14:50:02 -0700</bug_when>
    <thetext>Created attachment 30288
patch

this patch makes sure that in AccessibilityTable, it checks that the Node is a HTMLTableElement before proceeding to take the caption as the title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121107</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-05-13 14:51:55 -0700</bug_when>
    <thetext>Okay, that breakdown is really helpful, thanks Chris. Based on the breakdown, it looks like there is only one spot where we are currently at risk of crashing, so it is good that you will be patching it.

But for the sake of readable code and a coherent class, I think some of the other spots should be patched as well. The places that check that you are a table or return early if you are an aria table are all fine too. But when you see code that automatically casts a renderer to a RenderTable it could make you believe that any AccessibilityTable&apos;s renderer is a RenderTable, which we know is not true now that we have grids implemented. As you said, we won&apos;t crash in these spots because all of these functions are overridden in the various Grid classes, but for coherency I think you should patch them with early returns anyway. Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121111</commentid>
    <comment_count>8</comment_count>
      <attachid>30289</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 15:01:22 -0700</bug_when>
    <thetext>Created attachment 30289
patch

adds checks to all the places where we do static casts to make sure the element is the correct type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121150</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 16:45:10 -0700</bug_when>
    <thetext>landed.
http://trac.webkit.org/changeset/43669

now to see if anything breaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121151</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 16:48:34 -0700</bug_when>
    <thetext>windows failed. working on fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121153</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 16:51:20 -0700</bug_when>
    <thetext>there&apos;s a number of gtk warnings. working on those

../../WebCore/page/AccessibilityTable.h:66: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:67: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityRenderObject.cpp:2118: warning: ‘WebCore::createARIARoleMap()::RoleEntry’ declared with greater visibility than the type of its field ‘WebCore::createARIARoleMap()::RoleEntry::ariaRole’
../../WebCore/page/AccessibilityTable.h:66: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:67: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.cpp:353: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.cpp:361: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:66: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:67: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:66: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:67: warning: type qualifiers ignored on function return type
../../WebCore/rendering/RenderTextControl.cpp:390: warning: ‘breakOffset’ may be used uninitialized in this function
../../WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp:95: warning: ‘WebCore::AccessibilityObject* core(AtkStreamableContent*)’ defined but not used
../../WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp:169: warning: ‘gint webkit_accessible_get_index_in_parent(AtkObject*)’ defined but not used
../../WebCore/page/AccessibilityTable.h:66: warning: type qualifiers ignored on function return type
../../WebCore/page/AccessibilityTable.h:67: warning: type qualifiers ignored on function return type
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121156</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 16:53:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/43700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121157</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 16:53:33 -0700</bug_when>
    <thetext>that was for the windows fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121164</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-13 17:03:26 -0700</bug_when>
    <thetext>those warnings actually not caused by this check in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121358</commentid>
    <comment_count>15</comment_count>
      <attachid>30282</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-14 12:52:06 -0700</bug_when>
    <thetext>Comment on attachment 30282
patch

I&apos;m not the right reviewer for this, but AccessibilityAriaGrid should be AccessibilityARIAGrid.

Per our style guidelines: &quot;Use CamelCase. Capitalize the first letter, including all letters in an acronym, in a class, struct, protocol, or namespace name.&quot;

And ARIA is an acronym.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121359</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-14 12:55:28 -0700</bug_when>
    <thetext>alright will file a new bug for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121362</commentid>
    <comment_count>17</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-14 12:56:17 -0700</bug_when>
    <thetext>filed https://bugs.webkit.org/show_bug.cgi?id=25802</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30282</attachid>
            <date>2009-05-13 12:50:21 -0700</date>
            <delta_ts>2009-05-13 14:50:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>59079</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMDktMDUtMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU3NTU6IEltcGxlbWVudCBBUklBIGdyaWQgcm9sZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU3NTUKKworICAgICAgICBUZXN0OiBhY2Nl
c3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGFnZS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KiBwYWdlL0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
OjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
QXJpYUdyaWQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFy
aWFHcmlkOjppc0FyaWFUYWJsZSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpwYXJlbnRUYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJbmRleFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNvbHVtbklu
ZGV4UmFuZ2UpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nlc3NpYmls
aXR5QXJpYUdyaWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIHBhZ2UvQWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3QuaDoKKyAg
ICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJvbGVFbnRyeTo6KToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxp
dHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmls
aXR5VGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNBcmlh
VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVudCk6Cisg
ICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAgICAgICogcGFnZS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnRUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCk6CisgICAgICAgICogcGFnZS9BY2Nl
c3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93Ojppc1RhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93
Lmg6CisgICAgICAgICogcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06Cisg
ICAgICAgIChSb2xlRW50cnk6Oik6CisKIDIwMDktMDUtMTMgIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGJ1aWxkIGZpeC4K
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQ3LDYgKzExNDcsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL2xvYWRlci9sb2FkZXIuaCBcCiAJV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUu
Y3BwIFwKIAlXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmNwcCBcCisJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgXAor
CVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggXAorCVdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkUm93LmggXAogCVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmNwcCBcCiAJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCBcCiAJ
V2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQzNjUw
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtODM4LDYgKzgzOCw5
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIFwgICAg
CiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgXCAgICAKICAgICBwYWdl
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmls
aXR5QXJpYUdyaWQuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
LmNwcCBcICAgIAorICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCBcICAgIAog
ICAgIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAgXCAgICAKICAgICBwYWdlL0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAgXCAgICAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDkgQEAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgIDwvc2V0PgogCiAg
ICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX1BBR0UiPgorICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAKKyAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5
QXJpYUdyaWRDZWxsLmNwcAorICAgICAgICBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAKICAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAogICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAgICAgICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxp
c3QuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDQzNjUwKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyNSw2ICsxODI1LDMwIEBACiAJCQlOYW1lPSJwYWdlIg0KIAkJCT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZENlbGwuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGFnZVxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxp
dHlBcmlhR3JpZFJvdy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTEzLDYgKzUxMywxMiBAQAogCQkyOTUxQTJBRTBFNjQ2Qzg4MDBEQjlBREUgLyog
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5NTFBMkFEMEU2NDZDODgwMERCOUFERSAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tICovOyB9OwogCQkyOTU1QkUyQzBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkEwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuaCAqLzsgfTsKIAkJMjk1NUJFMkQwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkIwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwICovOyB9OworCQkyOTU4OTA3MDBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNz
aWJpbGl0eUFyaWFHcmlkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmggKi87IH07CisJCTI5NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mjk1ODkwNkYwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAgKi87
IH07CisJCTI5NTg5MDc0MEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRS
b3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLzsgfTsK
KwkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTU4OTA3
MzBGQkEwRjhDMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCAqLzsgfTsK
KwkJMjk1ODkwNzgwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc2
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi87IH07CisJ
CTI5NTg5MDc5MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc3
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNwcCAqLzsgfTsK
IAkJMjk4MDBDM0IwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MDBDMzkwRTUyMkE1
MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovOyB9OwogCQkyOTgwMEMzQzBFNTIy
QTUzMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODAwQzNBMEU1MjJBNTMwMDAyNTUzNiAvKiBB
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwICovOyB9OwogCQkyOTgwMEM5NTBFNTI0QzhCMDAwMjU1MzYg
LyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmggKi87IH07CkBAIC01NDIyLDYgKzU0MjgsMTIgQEAKIAkJMjk1MUEyQUQwRTY0
NkM4ODAwREI5QURFIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA2RTBG
QkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0
eUFyaWFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5MDczMEZCQTBGOEMwMEQ1MEIzQSAvKiBB
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjk1ODkwNzYwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlh
R3JpZENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eUFyaWFHcmlkQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA3NzBG
QkEwRjk1MDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MDBDMzkwRTUyMkE1MzAwMDI1NTM2
IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MDBDM0EwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAy
MTIsNiArMTAyMjQsMTIgQEAKIAkJCQk0QjI0RjlBNzBEQTcwNTBCMDAyNjlFNTggLyogQVhPYmpl
Y3RDYWNoZS5jcHAgKi8sCiAJCQkJMUFGMzI2NzYwRDc4Qjk0NDAwNjhGMEM0IC8qIEFYT2JqZWN0
Q2FjaGUuaCAqLywKIAkJCQk4NTM4RjAwMDBBRDcxNzcwMDA2QTgxRDEgLyogQWJzdHJhY3RWaWV3
LmlkbCAqLywKKwkJCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFy
aWFHcmlkLmNwcCAqLywKKwkJCQkyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmggKi8sCisJCQkJMjk1ODkwNzcwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGwuY3BwICovLAorCQkJCTI5NTg5MDc2MEZCQTBGOTUwMEQ1MEIz
QSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi8sCisJCQkJMjk1ODkwNzMwRkJBMEY4
QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAgKi8sCisJCQkJMjk1ODkw
NzIwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oICovLAogCQkJ
CTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNw
cCAqLywKIAkJCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oICovLAogCQkJCTI5RkZCQjgwMEU3QzVBM0QwMDQwNzczMCAvKiBBY2Nlc3NpYmls
aXR5TGlzdC5jcHAgKi8sCkBAIC0xNjg2Niw2ICsxNjg4NCw5IEBACiAJCQkJMUE1NjlEMjMwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjk1ODkwNzAwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzQwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzgwRkJBMEY5
NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTg4ODEsNiArMTg5MDIsOSBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBy
dW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5
RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5
NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTU4OTA3OTBGQkEwRjk1MDBENTBC
M0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FY
T2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMaXN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgpAQCAtNzYsNiArNzksMTQgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KAogICAgIAogICAgIHJldHVy
biBvYmo7CiB9CisgICAgCitib29sIEFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKE5vZGUq
IG5vZGUsIFN0cmluZyByb2xlKQoreworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdDYXNlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKHJvbGVB
dHRyKSwgcm9sZSk7Cit9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CkBAIC05MSwxMiArMTAyLDIzIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAgICAgICAgIG5l
d09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBl
bHNlIGlmIChub2RlICYmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdO
YW1lKG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIGFyaWEgdGFibGVzCisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUs
ICJncmlkIikpCisgICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQ6OmNy
ZWF0ZShyZW5kZXJlcik7CisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUsICJy
b3ciKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZUlzQXJpYVR5cGUobm9kZSwgImdy
aWRjZWxsIikgfHwgbm9kZUlzQXJpYVR5cGUobm9kZSwgImNvbHVtbmhlYWRlciIpIHx8IG5vZGVJ
c0FyaWFUeXBlKG5vZGUsICJyb3doZWFkZXIiKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisKKyAgICAgICAgLy8gc3Rh
bmRhcmQgdGFibGVzCiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlKCkpCiAgICAg
ICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShyZW5kZXJlcik7CiAg
ICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlUm93KCkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVs
c2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgbmV3T2JqID0gQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKKwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVu
ZGVyZXIpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSGFzaFNldDxBWElEPiBtX2lk
c0luVXNlOwogICAgICAgICAKICAgICAgICAgQVhJRCBnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKKyAgICAgICAgYm9vbCBub2RlSXNBcmlhVHlwZShOb2RlKiBub2RlLCBTdHJpbmcgcm9s
ZSk7CiAgICAgfTsKIAogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oIgor
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDog
QWNjZXNzaWJpbGl0eVRhYmxlKHJlbmRlcmVyKQoreworI2lmIEFDQ0VTU0lCSUxJVFlfVEFCTEVT
CisgICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IHRydWU7CisjZWxzZQorICAgIG1faXNBY2Nl
c3NpYmlsaXR5VGFibGUgPSBmYWxzZTsKKyNlbmRpZgorfQorCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWQoKQoreworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlBcmlhR3JpZD4gQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlh
R3JpZChyZW5kZXJlcikpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hp
bGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoIWNo
aWxkIHx8ICFjaGlsZC0+aXNUYWJsZVJvdygpIHx8ICFjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBSb3dSb2xlKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Kj4oY2hp
bGQpOworICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMocm93KSkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwor
ICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy0+Y2hpbGRyZW4oKS5zaXplKCk7CisgICAg
aWYgKHJvd0NlbGxDb3VudCA+IGNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3VudCA9IHJv
d0NlbGxDb3VudDsKKyAgICAKKyAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUo
KSk7ICAgICAgICAKKyAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7CisgICAgbV9jaGlsZHJlbi5hcHBl
bmQocm93KTsKKyAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Cit9CisgICAgCit2b2lkIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGRyZW4oKQoreworICAgIEFTU0VSVCghbV9oYXZlQ2hp
bGRyZW4pOyAKKyAgICAKKyAgICBpZiAoIWlzRGF0YVRhYmxlKCkpIHsKKyAgICAgICAgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7CisgICAgaWYgKCFtX3JlbmRlcmVy
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhDYWNoZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAKKyAgICAvLyBhZGQg
b25seSByb3dzIHRoYXQgYXJlIGxhYmVsZWQgYXMgYXJpYSByb3dzCisgICAgSGFzaFNldDxBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOworICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50
ID0gMDsKKyAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKworICAgICAg
ICAvLyBpbiBjYXNlIHRoZSByZW5kZXIgdHJlZSBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBB
UklBIGhpZXJhcmNoeSwgbG9vayBhdCB0aGUgY2hpbGRyZW4KKyAgICAgICAgaWYgKGNoaWxkLT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmhhc0No
aWxkcmVuKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmFkZENoaWxkcmVuKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IGNoaWxkLT5jaGlsZHJlbigpOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2hpbGRy
ZW4uc2l6ZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGFkZENoaWxkKGNoaWxkcmVuW2ldLmdldCgpLCBhcHBlbmRl
ZFJvd3MsIGNvbHVtbkNvdW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhZGRDaGls
ZChjaGlsZC5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7ICAgICAgICAgICAgCisg
ICAgfQorICAgIAorICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBv
ZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbHVtbkNvdW50OyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKiBj
b2x1bW4gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4qPihheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGNvbHVtbi0+c2V0Q29sdW1uSW5kZXgo
KGludClpKTsKKyAgICAgICAgY29sdW1uLT5zZXRQYXJlbnRUYWJsZSh0aGlzKTsKKyAgICAgICAg
bV9jb2x1bW5zLmFwcGVuZChjb2x1bW4pOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjb2x1
bW4pOworICAgIH0KKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWlu
ZXJPYmplY3QgPSBoZWFkZXJDb250YWluZXIoKTsKKyAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2Jq
ZWN0KQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwor
fQorICAgIAorQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQoreworICAg
IGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFoYXND
aGlsZHJlbigpKQorICAgICAgICBhZGRDaGlsZHJlbigpOworICAgIAorICAgIGlmIChjb2x1bW4g
Pj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCAqdGFibGVSb3cgPSBtX3Jvd3Nbcm93XS5n
ZXQoKTsKKyAgICBpZiAoIXRhYmxlUm93KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0YWJsZVJvdy0+Y2hpbGRyZW4o
KTsKKyAgICAvLyBpbiBjYXNlIHRoaXMgcm93IGhhZCBmZXdlciBjb2x1bW5zIHRoYW4gb3RoZXIg
cm93cworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlQ2VsbCA9IDA7CisgICAgaWYgKGNv
bHVtbiA+PSBjaGlsZHJlbi5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdGFibGVD
ZWxsID0gY2hpbGRyZW5bY29sdW1uXS5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KHRhYmxlQ2VsbCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisjZGVm
aW5lIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU3RyaW5nOworY2xhc3Mg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lcjsKKworY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlkIDogcHVibGljIEFjY2Vzc2li
aWxpdHlUYWJsZSB7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlBcmlhR3JpZChS
ZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5QXJpYUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5QXJpYUdyaWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpOworICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAorCisjZW5kaWYgLy8gQWNjZXNzaWJp
bGl0eUFyaWFHcmlkX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRD
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVy
ZXIpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJp
YUdyaWRDZWxsKCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
PiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwo
cmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghcGFyZW50IHx8ICFw
YXJlbnQtPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVudCB8fCAh
cGFyZW50LT5pc0RhdGFUYWJsZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gcGFyZW50OworfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5pc1RhYmxlUm93KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGFz
IGZhciBhcyBJIGNhbiB0ZWxsLCBncmlkIGNlbGxzIGNhbm5vdCBzcGFuIHJvd3MKKyAgICByb3dS
YW5nZS5maXJzdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHBhcmVudCkt
PnJvd0luZGV4KCk7CisgICAgcm93UmFuZ2Uuc2Vjb25kID0gMTsgICAgCit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNUYWJsZVJv
dygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVu
U2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hp
bGRyZW5TaXplOyArK2spIHsKKyAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHRoaXMp
IHsKKyAgICAgICAgICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gazsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBn
cmlkIGNlbGxzIGNhbm5vdCBzcGFuIGNvbHVtbnMKKyAgICBjb2x1bW5SYW5nZS5zZWNvbmQgPSAx
OyAgICAKK30KKyAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGxfaAorI2RlZmluZSBBY2Nlc3NpYmls
aXR5QXJpYUdyaWRDZWxsX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbChSZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsPiBjcmVhdGUoUmVu
ZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbCgpOwor
ICAgIAorICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2Yg
Y2VsbAorICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dS
YW5nZSk7CisgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3Bh
biBvZiBjZWxsCisgICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGlu
dD4mIGNvbHVtblJhbmdlKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Q7Cit9OyAKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsX2gKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3cuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyhyZW5kZXJlcikKK3sKK30KKworQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3c+IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3Np
YmlsaXR5QXJpYUdyaWRSb3cocmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0Cit7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAg
aWYgKCFwYXJlbnQtPmlzRGF0YVRhYmxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IHJldHVybiBwYXJlbnQ7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdzo6aGVhZGVyT2JqZWN0KCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3Igcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVuQ291
bnQgPSByb3dDaGlsZHJlbi5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNo
aWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0g
cm93Q2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgIGlmIChjZWxsLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IFJvd0hlYWRlclJvbGUpCisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKyNkZWZpbmUgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWRSb3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlUm93IHsKKyAgICAKK3ByaXZhdGU6
CisgICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KFJlbmRlck9iamVjdCopOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdz4gY3JlYXRlKFJl
bmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdygpOwor
ICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0OyAgICAK
K307IAorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKKworI2VuZGlmIC8vIEFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvd19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJl
dmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUxp
c3Q+IEFjY2Vzc2liaWwKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogewogICAgIC8vIGxpc3RzIGRvbid0IGFwcGVhciBvbiB0aWdlci9sZW9w
YXJkIG9uIHRoZSBtYWMKLSNpZiBQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQotICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKKyNpZiBBQ0NFU1NJQklMSVRZX0xJU1RTCiAgICAgcmV0dXJuIGZhbHNlOworI2Vs
c2UKKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfSAgICAKICAgICAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nl
c3NpYmlsaXR5TGlzdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMiBAQAogI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5TGlzdF9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlMaXN0X2gKIAorI2lmIFBM
QVRGT1JNKE1BQykgJiYgKGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkpCisjZGVmaW5lIEFDQ0VTU0lCSUxJVFlfTElTVFMgMAorI2Vsc2UK
KyNkZWZpbmUgQUNDRVNTSUJJTElUWV9MSVNUUyAxCisjZW5kaWYKKwogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2Vi
Q29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBA
QCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAog
ICAgIEdyaWRSb2xlLAogICAgIENlbGxSb2xlLCAKKyAgICBDb2x1bW5IZWFkZXJSb2xlLAorICAg
IFJvd0hlYWRlclJvbGUsCiAgICAgLy8gQXBwS2l0IGluY2x1ZGVzIFNvcnRCdXR0b25Sb2xlIGJ1
dCBpdCBpcyBtaXNuYW1lZCBhbmQgcmVhbGx5IGEgc3Vicm9sZSBvZiBCdXR0b25Sb2xlIHNvIHdl
IGRvIG5vdCBpbmNsdWRlIGl0IGhlcmUuCiAKICAgICAvLyBXZWJDb3JlLXNwZWNpZmljIHJvbGVz
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEyMyw2ICsyMTIzLDEwIEBAIHN0YXRpYyBjb25zdCBBUklB
Um9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICBjb25zdCBSb2xlRW50cnkgcm9sZXNbXSA9IHsK
ICAgICAgICAgeyAiYnV0dG9uIiwgQnV0dG9uUm9sZSB9LAogICAgICAgICB7ICJjaGVja2JveCIs
IENoZWNrQm94Um9sZSB9LAorICAgICAgICB7ICJncmlkIiwgVGFibGVSb2xlIH0sCisgICAgICAg
IHsgImdyaWRjZWxsIiwgQ2VsbFJvbGUgfSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIiwgQ29s
dW1uSGVhZGVyUm9sZSB9LAorICAgICAgICB7ICJyb3doZWFkZXIiLCBSb3dIZWFkZXJSb2xlIH0s
CiAgICAgICAgIHsgImdyb3VwIiwgR3JvdXBSb2xlIH0sCiAgICAgICAgIHsgImhlYWRpbmciLCBI
ZWFkaW5nUm9sZSB9LAogICAgICAgICB7ICJpbWciLCBJbWFnZVJvbGUgfSwKQEAgLTIxMzYsNiAr
MjE0MCw3IEBAIHN0YXRpYyBjb25zdCBBUklBUm9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUm9sZSB9LAogICAgICAgICB7ICJwcm9ncmVz
c2JhciIsIFByb2dyZXNzSW5kaWNhdG9yUm9sZSB9LAogICAgICAgICB7ICJyYWRpbyIsIFJhZGlv
QnV0dG9uUm9sZSB9LAorICAgICAgICB7ICJyb3ciLCBSb3dSb2xlIH0sCiAgICAgICAgIHsgInJh
bmdlIiwgU2xpZGVyUm9sZSB9LAogICAgICAgICB7ICJzbGlkZXIiLCBTbGlkZXJSb2xlIH0sCiAg
ICAgICAgIHsgInNwaW5idXR0b24iLCBQcm9ncmVzc0luZGljYXRvclJvbGUgfSwKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMs
MTAgQEAgQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUgogICAgIDogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlciksCiAgICAgbV9oZWFkZXJDb250YWluZXIo
MCkKIHsKLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwotI2Vsc2UK
KyNpZiBBQ0NFU1NJQklMSVRZX1RBQkxFUwogICAgIG1faXNBY2Nlc3NpYmlsaXR5VGFibGUgPSBp
c1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKKyNlbHNlCisgICAgbV9pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwogI2VuZGlmCiB9CiAKQEAgLTgxLDggKzgxLDYgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibAogICAgIC8vIGlmIHRoZSBk
ZXZlbG9wZXIgYXNzaWduZWQgYW4gYXJpYSByb2xlIHRvIHRoaXMsIHRoZW4gd2Ugc2hvdWxkbid0
IAogICAgIC8vIGV4cG9zZSBpdCBhcyBhIHRhYmxlLCB1bmxlc3MsIG9mIGNvdXJzZSwgdGhlIGFy
aWEgcm9sZSBpcyBhIHRhYmxlCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlh
Um9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChhcmlhUm9sZSA9PSBUYWJsZVJvbGUpCi0gICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChhcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIApJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkocmV2
aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDEyIEBACiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgiCiAKKyNpZiBQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQorI2RlZmluZSBBQ0NFU1NJ
QklMSVRZX1RBQkxFUyAwCisjZWxzZQorI2RlZmluZSBBQ0NFU1NJQklMSVRZX1RBQkxFUyAxCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHJpbmc7CkBAIC0zOSw3ICs0
NSw3IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjsKICAgICAKIGNs
YXNzIEFjY2Vzc2liaWxpdHlUYWJsZSA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
IHsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVy
T2JqZWN0Kik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRh
YmxlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CkBAIC00Nyw2ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0Fy
aWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICAKQEAgLTYzLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRhYmxlCiAgICAgdm9p
ZCBjZWxscyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQg
cm93KTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGxGb3JDb2x1bW5B
bmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwogICAgIAogICAgIHZvaWQgY29s
dW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIHJvd0hl
YWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CkBAIC03MSw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0
aGUgb2JqZWN0cyB0aGF0IGFjdCBhcyBoZWFkZXJzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
aGVhZGVyQ29udGFpbmVyKCk7CiAgICAgCi1wcml2YXRlOiAgICAKK3Byb3RlY3RlZDogICAgCiAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOwogICAgIApJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmNwcAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDE0ICs2MSwxOSBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmFjY2Vzc2liaWxpCiAgICAgCiAgICAgcmV0
dXJuIGZhbHNlOwogfQotICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxl
Q2VsbCgpIGNvbnN0CisgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW5kZXJU
YWJsZSA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoc3RhdGljX2Nhc3Q8UmVuZGVyVGFi
bGVDZWxsKj4obV9yZW5kZXJlciktPnRhYmxlKCkpOwotICAgIGlmICghcmVuZGVyVGFibGUtPmlz
RGF0YVRhYmxlKCkpCisgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoc3Rh
dGljX2Nhc3Q8UmVuZGVyVGFibGVDZWxsKj4obV9yZW5kZXJlciktPnRhYmxlKCkpOworfQorICAg
IAorYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCgpIGNvbnN0Cit7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFibGUgPSBwYXJlbnRUYWJsZSgpOworICAgIGlmICgh
dGFibGUgfHwgIXRhYmxlLT5pc0RhdGFUYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjcsNyArMTMyLDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQwogICAgIC8vIFRyeSB0byBmaW5kIGlmIHRoZSBmaXJz
dCBjZWxsIGluIHRoaXMgcm93IGlzIGEgPHRoPi4gSWYgaXQgaXMsCiAgICAgLy8gdGhlbiBpdCBj
YW4gYWN0IGFzIHRoZSB0aXRsZSB1aSBlbGVtZW50LiAoVGhpcyBpcyBvbmx5IGluIHRoZQogICAg
IC8vIGNhc2Ugd2hlbiB0aGUgdGFibGUgaXMgbm90IGFwcGVhcmluZyBhcyBhbiBBWFRhYmxlLikK
LSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgaXNUYWJsZUNlbGwoKSkKKyAgICBpZiAoaXNUYWJsZUNl
bGwoKSB8fCAhbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiByZW5kZXJDZWxsID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGFibGVDZWxsKj4obV9yZW5kZXJlcik7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogICAgIAotcHJpdmF0ZToKK3By
b3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRlck9iamVjdCopOwogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0
ZShSZW5kZXJPYmplY3QqKTsKQEAgLTQ3LDE3ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKIAogICAgIC8vIGZpbGxzIGlu
IHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgY2VsbAotICAgIHZvaWQgcm93SW5k
ZXhSYW5nZShwYWlyPGludCwgaW50PiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSk7CiAgICAgLy8gZmlsbHMgaW4gdGhl
IHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdm9pZCBjb2x1bW5J
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSk7CisgICAgdmlydHVhbCB2b2lk
IGNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKTsKICAgICAKICAg
ICAvLyBpZiBhIHRhYmxlIGNlbGwgaXMgbm90IGV4cG9zZWQgYXMgYSB0YWJsZSBjZWxsLCBhIFRI
IGVsZW1lbnQgY2FuCiAgICAgLy8gc2VydmUgYXMgaXRzIHRpdGxlIHVpIGVsZW1lbnQKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0OwogICAgIAotcHJpdmF0
ZToKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRh
YmxlKCkgY29uc3Q7CiAgICAgaW50IG1fcm93SW5kZXg7Ci0gICAgCiB9OyAKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUgCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNiBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6c2V0UGFyZW50CiAgICAgbV9wYXJlbnRUYWJsZSA9IHRh
YmxlOwogICAgIAogICAgIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBhZGRDaGlsZHJlbigpOwogfQog
ICAgIAogSW50UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVsZW1lbnRSZWN0KCkgY29u
c3QKQEAgLTg3LDcgKzg2LDI2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlU
YWJsZUMKICAgICBpZiAoIW1fcGFyZW50VGFibGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAot
ICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlKj4obV9wYXJl
bnRUYWJsZS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fcGFy
ZW50VGFibGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgaWYgKG1fcGFyZW50VGFibGUtPmlzQXJpYVRhYmxlKCkpIHsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0NoaWxkcmVuID0gY2hpbGRyZW4oKTsK
KyAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5Db3VudCA9IHJvd0NoaWxkcmVuLnNpemUoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbCA9IHJvd0NoaWxkcmVuW2ldLmdldCgp
OworICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQ29sdW1uSGVh
ZGVyUm9sZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFyZW5kZXJlci0+aXNUYWJs
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJUYWJsZSogdGFibGUgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZSo+KHJlbmRlcmVyKTsKICAgICAKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBoZWFkZXJPYmplY3QgPSAwOwogICAgIApJbmRleDogV2ViQ29yZS9wYWdlL0Fj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5jcHAJKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0Fj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDExICs2Nyw4IEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzoKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmlzVGFibGVSb3coKSBjb25zdAogewotICAgIGlmICghbV9yZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cmVuZGVyVGFibGUgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHN0YXRpY19jYXN0PFJl
bmRlclRhYmxlUm93Kj4obV9yZW5kZXJlciktPnRhYmxlKCkpOwotICAgIGlmICghcmVuZGVyVGFi
bGUtPmlzRGF0YVRhYmxlKCkpCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFibGUgPSBwYXJl
bnRUYWJsZSgpOworICAgIGlmICghdGFibGUgfHwgIXRhYmxlLT5pc0RhdGFUYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC04NSw2ICs4Miwx
NCBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWNjZXNzaWJpbGl0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogICAgIAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxl
Um93OjpwYXJlbnRUYWJsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVJvdyo+KG1fcmVuZGVyZXIpLT50YWJsZSgpKTsKK30K
KyAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVy
T2JqZWN0KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hpbGRyZW4g
PSBjaGlsZHJlbigpOwpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAkocmV2
aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
Y2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgewogICAgIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3coUmVuZGVyT2JqZWN0Kik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRhYmxlUm93PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CkBAIC00MywxMSArNDMs
MTEgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogCiAgICAgLy8gcmV0
cmlldmVzIHRoZSAicm93IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1u
KQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwotCi0gICAgdmlydHVh
bCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4
KGludCByb3dJbmRleCkgeyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KICAgICBpbnQgcm93SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3Jvd0luZGV4OyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQzNjUwKQorKysg
V2ViQ29yZS9wYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAwMywxNiArMTAwMywxNSBAQCBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJv
bGVNYXAmIGNyZWF0CiAgICAgICAgIHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAogICAg
ICAgICB7IExpc3RCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAogICAgICAgICB7
IExpc3RCb3hPcHRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAg
ICAgICAvLyBjZWxscyBkb24ndCBleGlzdCBvbiB0aWdlciBvciBsZW9wYXJkCi0jaWYgZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAg
ICAgICB7IENlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSNlbHNlCisjaWYg
QUNDRVNTSUJJTElUWV9UQUJMRVMKICAgICAgICAgeyBDZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
Q2VsbFJvbGUgfSwKKyNlbHNlCisgICAgICAgIHsgQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAogI2VuZGlmCiAgICAgICAgIHsgVGFibGVIZWFkZXJDb250YWluZXJSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBEZWZpbml0aW9uTGlzdERlZmlu
aXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBEZWZpbml0
aW9uTGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQotICAgICAgICAKKwog
ICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2li
aWxpdHlSb2xlTWFwOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDM2NTIpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wNS0x
MyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNTc1NTogSW1wbGVtZW50IEFS
SUEgZ3JpZCByb2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTc1NQorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLmh0bWw6
CisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxl
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlh
LXJvbGUtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTA1LTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTA1IEBACis8aHRtbD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworPC9zY3JpcHQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgCisgICAgPCEtLSBUaGlzIHRl
c3QgcGVyZm9ybXMgYSBudW1iZXIgb2YgdGVzdHMgb24gQVJJQSB0YWJsZXMgdG8gbWFrZSBzdXJl
IHRoZXkgY29uZm9ybSBhcyBleHBlY3RlZCAtLT4KKworICAgIDxkaXYgcm9sZT0iZ3JpZCI+Cisg
ICAgICA8ZGl2IHJvbGU9InJvdyI+CisgICAgICAgIDxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIiBp
ZD0iaDEiPmhlYWRlciAxPC9kaXY+CisgICAgICAgIDxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIj5o
ZWFkZXIgMjwvZGl2PgorICAgICAgICA8ZGl2IHJvbGU9ImNvbHVtbmhlYWRlciI+aGVhZGVyIDM8
L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAgPGRpdiByb2xlPSJyb3ciPgorICAgICAgICA8ZGl2
IHJvbGU9ImdyaWRjZWxsIiBoZWFkZXJzPSJoMSI+Y2VsbCA8L2Rpdj4KKyAgICAgICAgPGRpdiBy
b2xlPSJncmlkY2VsbCI+Y2VsbCA8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJncmlkY2VsbCI+
Y2VsbCA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAgPGRpdiByb2xlPSJyb3ciPgorICAgICAg
ICA8ZGl2IHJvbGU9ImdyaWRjZWxsIj5jZWxsIDwvZGl2PgorICAgICAgICA8ZGl2IHJvbGU9Imdy
aWRjZWxsIj5jZWxsIDwvZGl2PgorICAgICAgICA8ZGl2IGhlYWRlcnM9ImgxIiByb2xlPSJyb3do
ZWFkZXIiPmNlbGwgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDx0YWJs
ZSBib3JkZXI9MSByb2xlPSJncmlkIj4KKyAgICAgIDx0ciByb2xlPSJyb3ciPgorICAgICAgICA8
dGggcm9sZT0iY29sdW1uaGVhZGVyIj5oZWFkZXIgMTwvdGg+CisgICAgICAgIDx0aCByb2xlPSJj
b2x1bW5oZWFkZXIiPmhlYWRlciAyPC90aD4KKyAgICAgICAgPHRoIHJvbGU9ImNvbHVtbmhlYWRl
ciI+aGVhZGVyIDI8L3RoPgorICAgICAgPC90cj4KKyAgICAgIDx0ciByb2xlPSJyb3ciPgorICAg
ICAgICA8dGQgcm9sZT0icm93aGVhZGVyIj5jZWxsPC90ZD4KKyAgICAgICAgPHRkIHJvbGU9Imdy
aWRjZWxsIj5jZWxsPC90ZD4KKyAgICAgICAgPHRkIHJvbGU9ImdyaWRjZWxsIj5jZWxsPC90ZD4K
KyAgICAgIDwvdHI+CisgICAgICA8dHIgcm9sZT0icm93Ij4KKyAgICAgICAgPHRkIHJvbGU9Imdy
aWRjZWxsIj5jZWxsPC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90YWJsZT4KKworICAgIDxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+CisgICAgCisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKworICAgICAgICAgICAgdmFyIGJvZHkg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1
cygpOworICAgICAgICAgICAgdmFyIGZvY3VzZWRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgdGFibGUxID0gZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgdmFyIHRhYmxlMiA9IGZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgxKTsKKworICAgICAgICAgICAgdmFyIGZhaWxlZCA9IDA7Cisg
ICAgICAgICAgICA8IS0tIG1ha2Ugc3VyZSB0aGV5IGFyZSB0YWJsZXMgLS0+CisgICAgICAgICAg
ICBpZiAodGFibGUxLmFsbEF0dHJpYnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYVGFibGUiKSA9
PSAtMSkgeworICAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAodGFibGUyLmFsbEF0dHJpYnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYVGFi
bGUiKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIDwhLS0gTWFrZSBzdXJlIHdlIGNhbiB1c2UgY2VsbCBmb3IgY29sdW1u
IGFuZCByb3cgYW5kIGl0IHdvcmtzIC0tPgorICAgICAgICAgICAgaWYgKHRhYmxlMS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsMCkuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhDZWxs
IikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAodGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwwKS5hbGxBdHRyaWJ1
dGVzKCkuaW5kZXhPZigiQVhSb2xlOiBBWENlbGwiKSA9PSAtMSkgeworICAgICAgICAgICAgICAg
ZmFpbGVkID0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRhYmxlMS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDIsMikuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhD
ZWxsIikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAodGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwxKS5hbGxBdHRy
aWJ1dGVzKCkuaW5kZXhPZigiQVhSb2xlOiBBWENlbGwiKSA9PSAtMSkgeworICAgICAgICAgICAg
ICAgZmFpbGVkID0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgPCEtLSBub3cgbWFr
ZSBzdXJlIHdlIGNhbiBjYWxsIGFsbCB0aGUgcmVsZXZhbnQgbWV0aG9kcyB3aXRob3V0IGNyYXNo
aW5nIC0tPgorICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsK
KyAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7CisKKyAgICAg
ICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CisgICAgICAgICAgICB0YWJs
ZTIuYXR0cmlidXRlc09mUm93SGVhZGVycygpOworICAgIAorICAgICAgICAgICAgdGFibGUxLmF0
dHJpYnV0ZXNPZkNvbHVtbnMoKTsKKyAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1
bW5zKCk7CisKKyAgICAgICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgICAg
ICAgICB0YWJsZTIuYXR0cmlidXRlc09mUm93cygpOworCisgICAgICAgICAgICB0YWJsZTEuYXR0
cmlidXRlc09mSGVhZGVyKCk7CisgICAgICAgICAgICB0YWJsZTIuYXR0cmlidXRlc09mSGVhZGVy
KCk7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZhaWxlZCkgeworICAgICAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3QgZmFpbGVkXG4iOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gIlRlc3QgcGFzc2VkXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXdpdGgtYXJpYS1yb2xlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS5odG1sCShyZXZpc2lvbiA0MzY1MCkKKysrIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgIDx0cj48dGQ+dGVzdDwvdGQ+PHRkPnRl
c3Q8L3RkPjx0ZD50ZXN0PC90ZD48L3RyPgogICAgIDwvdGFibGU+CiAKLSAgICA8dGFibGUgYm9y
ZGVyPTEgcm9sZT0idGFibGUiPgorICAgIDx0YWJsZSBib3JkZXI9MSByb2xlPSJtZW51Ij4KICAg
ICAgICA8dHI+PHRkPnRlc3Q8L3RkPjx0ZD50ZXN0PC90ZD48dGQ+dGVzdDwvdGQ+PC90cj4KICAg
ICAgICA8dHI+PHRkPnRlc3Q8L3RkPjx0ZD50ZXN0PC90ZD48dGQ+dGVzdDwvdGQ+PC90cj4KICAg
ICA8L3RhYmxlPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvYWNjZXNz
aWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNCBAQAoraGVhZGVyIDEKK2hlYWRlciAyCitoZWFkZXIgMworY2VsbAorY2VsbAorY2Vs
bAorY2VsbAorY2VsbAorY2VsbAoraGVhZGVyIDEJaGVhZGVyIDIJaGVhZGVyIDIKK2NlbGwJY2Vs
bAljZWxsCitjZWxsCitUZXN0IGZhaWxlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDM2NTAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQ3ICsz
OSwxNCBAQCBBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKIEFYQWNjZXNzS2V5OiAobnVsbCkKIAog
LS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYR3JvdXAKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVE
ZXNjcmlwdGlvbjogZ3JvdXAKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6
IAotQVhQYXJlbnQ6IDxBWEdyb3VwPgotQVhTaXplOiBOU1NpemU6IHsyNSwgMjJ9Ci1BWFRpdGxl
OiAKLUFYRGVzY3JpcHRpb246IAotQVhWYWx1ZTogCi1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDog
MQotQVhXaW5kb3c6IDxBWEdyb3VwPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwp
Ci1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEdyb3Vw
PgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDog
MAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgot
QVhUaXRsZVVJRWxlbWVudDogKG51bGwpCi0KLS0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWEdyb3Vw
Ci1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGdyb3VwCi1BWENoaWxkcmVu
OiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhHcm91cD4KLUFYU2l6
ZTogTlNTaXplOiB7MjUsIDIyfQotQVhUaXRsZTogCi1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6
IAotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhHcm91cD4KLUFYU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3Vw
PgotQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVs
ZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRv
cExldmVsVUlFbGVtZW50OiA8QVhHcm91cD4KLUFYVGl0bGVVSUVsZW1lbnQ6IChudWxsKQotCi0t
LS0tLS0tLS0tLS0KLUFYUm9sZTogQVhHcm91cAotQVhTdWJyb2xlOiAobnVsbCkKLUFYUm9sZURl
c2NyaXB0aW9uOiBncm91cAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMT4KLUFYSGVscDog
Ci1BWFBhcmVudDogPEFYR3JvdXA+Ci1BWFNpemU6IE5TU2l6ZTogezI1LCAyMn0KLUFYVGl0bGU6
IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAotQVhFbmFibGVkOiAx
Ci1BWFdpbmRvdzogPEFYR3JvdXA+Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkK
LUFYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+
Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCi1BWFNlbGVjdGVkOiAw
Ci1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYR3JvdXA+Ci1B
WFRpdGxlVUlFbGVtZW50OiAobnVsbCkKLQotLS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYR3JvdXAK
LUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogZ3JvdXAKLUFYQ2hpbGRyZW46
IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWEdyb3VwPgotQVhTaXpl
OiBOU1NpemU6IHsyNSwgMjJ9Ci1BWFRpdGxlOiAKLUFYRGVzY3JpcHRpb246IAotQVhWYWx1ZTog
Ci1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEdyb3VwPgotQVhTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+
Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxl
bWVudHM6IChudWxsKQotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9w
TGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgotQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCi0KLS0t
LS0tLS0tLS0tLQotQVhSb2xlOiBBWEdyb3VwCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVz
Y3JpcHRpb246IGdyb3VwCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOiAK
LUFYUGFyZW50OiA8QVhHcm91cD4KLUFYU2l6ZTogTlNTaXplOiB7MjUsIDIyfQotQVhUaXRsZTog
Ci1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEK
LUFYV2luZG93OiA8QVhHcm91cD4KLUFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQot
QVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4K
LUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAK
LUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhHcm91cD4KLUFY
VGl0bGVVSUVsZW1lbnQ6IChudWxsKQotCi0tLS0tLS0tLS0tLS0KLUFYUm9sZTogQVhHcm91cAot
QVhTdWJyb2xlOiAobnVsbCkKLUFYUm9sZURlc2NyaXB0aW9uOiBncm91cAotQVhDaGlsZHJlbjog
PGFycmF5IG9mIHNpemUgMT4KLUFYSGVscDogCi1BWFBhcmVudDogPEFYR3JvdXA+Ci1BWFNpemU6
IE5TU2l6ZTogezI1LCAyMn0KLUFYVGl0bGU6IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAK
LUFYRm9jdXNlZDogMAotQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYR3JvdXA+Ci1BWFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4K
LUFYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlFbGVt
ZW50czogKG51bGwpCi1BWFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BM
ZXZlbFVJRWxlbWVudDogPEFYR3JvdXA+CitBWFJvbGU6IEFYTWVudQorQVhSb2xlRGVzY3JpcHRp
b246IChudWxsKQorQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgNj4KK0FYUGFyZW50OiA8QVhN
ZW51PgorQVhFbmFibGVkOiAxCitBWFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KK0FYU2VsZWN0ZWRD
aGlsZHJlbjogKG51bGwpCitBWFZpc2libGVDaGlsZHJlbjogKG51bGwpCiBBWFRpdGxlVUlFbGVt
ZW50OiAobnVsbCkKIAogLS0tLS0tLS0tLS0tCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACitoZWFkZXIgMQoraGVhZGVyIDIKK2hlYWRlciAzCitjZWxsCitjZWxsCitjZWxsCitjZWxs
CitjZWxsCitjZWxsCitoZWFkZXIgMQloZWFkZXIgMgloZWFkZXIgMgorY2VsbAljZWxsCWNlbGwK
K2NlbGwKK1Rlc3QgcGFzc2VkCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEt
cm9sZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQzNjUwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwzNSArMzksMTUgQEAgQVhUaXRsZVVJRWxlbWVudDogKG51bGwp
CiBBWEFjY2Vzc0tleTogKG51bGwpCiAKIC0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWFRhYmxlCi1B
WFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IHRhYmxlCitBWFJvbGU6IEFYTWVu
dQorQVhSb2xlRGVzY3JpcHRpb246IChudWxsKQogQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUg
Nj4KLUFYSGVscDogCi1BWFBhcmVudDogPEFYVGFibGU+Ci1BWFNpemU6IE5TU2l6ZTogezg1LCA1
Mn0KLUFYVGl0bGU6IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAor
QVhQYXJlbnQ6IDxBWE1lbnU+CiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhUYWJsZT4KLUFY
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWFRh
YmxlPgotQVhFbmRUZXh0TWFya2VyOiA8QVhUYWJsZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRV
SUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1B
WFRvcExldmVsVUlFbGVtZW50OiA8QVhUYWJsZT4KLUFYUm93czogPGFycmF5IG9mIHNpemUgMj4K
LUFYVmlzaWJsZVJvd3M6IDxhcnJheSBvZiBzaXplIDI+Ci1BWENvbHVtbnM6IDxhcnJheSBvZiBz
aXplIDM+Ci1BWFZpc2libGVDb2x1bW5zOiA8YXJyYXkgb2Ygc2l6ZSAzPgotQVhWaXNpYmxlQ2Vs
bHM6IDxhcnJheSBvZiBzaXplIDY+Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBv
ZiBzaXplIDA+Ci1BWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWEhl
YWRlcjogPEFYVGFibGU+CitBWFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KK0FYU2VsZWN0ZWRDaGls
ZHJlbjogKG51bGwpCitBWFZpc2libGVDaGlsZHJlbjogKG51bGwpCitBWFRpdGxlVUlFbGVtZW50
OiAobnVsbCkKIAogLS0tLS0tLS0tLS0tCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30288</attachid>
            <date>2009-05-13 14:50:02 -0700</date>
            <delta_ts>2009-05-13 15:01:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>59480</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMDktMDUtMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU3NTU6IEltcGxlbWVudCBBUklBIGdyaWQgcm9sZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU3NTUKKworICAgICAgICBUZXN0OiBhY2Nl
c3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGFnZS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KiBwYWdlL0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
OjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
QXJpYUdyaWQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFy
aWFHcmlkOjppc0FyaWFUYWJsZSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpwYXJlbnRUYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJbmRleFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNvbHVtbklu
ZGV4UmFuZ2UpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nlc3NpYmls
aXR5QXJpYUdyaWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIHBhZ2UvQWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3QuaDoKKyAg
ICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJvbGVFbnRyeTo6KToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxp
dHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmls
aXR5VGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNBcmlh
VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVudCk6Cisg
ICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAgICAgICogcGFnZS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnRUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCk6CisgICAgICAgICogcGFnZS9BY2Nl
c3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93Ojppc1RhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93
Lmg6CisgICAgICAgICogcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06Cisg
ICAgICAgIChSb2xlRW50cnk6Oik6CisKIDIwMDktMDUtMTMgIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGJ1aWxkIGZpeC4K
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQ3LDYgKzExNDcsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL2xvYWRlci9sb2FkZXIuaCBcCiAJV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUu
Y3BwIFwKIAlXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmNwcCBcCisJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgXAor
CVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggXAorCVdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkUm93LmggXAogCVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmNwcCBcCiAJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCBcCiAJ
V2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQzNjUw
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtODM4LDYgKzgzOCw5
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIFwgICAg
CiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgXCAgICAKICAgICBwYWdl
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmls
aXR5QXJpYUdyaWQuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
LmNwcCBcICAgIAorICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCBcICAgIAog
ICAgIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAgXCAgICAKICAgICBwYWdlL0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAgXCAgICAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDkgQEAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgIDwvc2V0PgogCiAg
ICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX1BBR0UiPgorICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAKKyAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5
QXJpYUdyaWRDZWxsLmNwcAorICAgICAgICBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAKICAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAogICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAgICAgICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxp
c3QuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDQzNjUwKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyNSw2ICsxODI1LDMwIEBACiAJCQlOYW1lPSJwYWdlIg0KIAkJCT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZENlbGwuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGFnZVxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxp
dHlBcmlhR3JpZFJvdy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTEzLDYgKzUxMywxMiBAQAogCQkyOTUxQTJBRTBFNjQ2Qzg4MDBEQjlBREUgLyog
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5NTFBMkFEMEU2NDZDODgwMERCOUFERSAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tICovOyB9OwogCQkyOTU1QkUyQzBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkEwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuaCAqLzsgfTsKIAkJMjk1NUJFMkQwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkIwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwICovOyB9OworCQkyOTU4OTA3MDBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNz
aWJpbGl0eUFyaWFHcmlkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmggKi87IH07CisJCTI5NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mjk1ODkwNkYwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAgKi87
IH07CisJCTI5NTg5MDc0MEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRS
b3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLzsgfTsK
KwkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTU4OTA3
MzBGQkEwRjhDMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCAqLzsgfTsK
KwkJMjk1ODkwNzgwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc2
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi87IH07CisJ
CTI5NTg5MDc5MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc3
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNwcCAqLzsgfTsK
IAkJMjk4MDBDM0IwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MDBDMzkwRTUyMkE1
MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovOyB9OwogCQkyOTgwMEMzQzBFNTIy
QTUzMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODAwQzNBMEU1MjJBNTMwMDAyNTUzNiAvKiBB
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwICovOyB9OwogCQkyOTgwMEM5NTBFNTI0QzhCMDAwMjU1MzYg
LyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmggKi87IH07CkBAIC01NDIyLDYgKzU0MjgsMTIgQEAKIAkJMjk1MUEyQUQwRTY0
NkM4ODAwREI5QURFIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA2RTBG
QkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0
eUFyaWFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5MDczMEZCQTBGOEMwMEQ1MEIzQSAvKiBB
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjk1ODkwNzYwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlh
R3JpZENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eUFyaWFHcmlkQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA3NzBG
QkEwRjk1MDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MDBDMzkwRTUyMkE1MzAwMDI1NTM2
IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MDBDM0EwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAy
MTIsNiArMTAyMjQsMTIgQEAKIAkJCQk0QjI0RjlBNzBEQTcwNTBCMDAyNjlFNTggLyogQVhPYmpl
Y3RDYWNoZS5jcHAgKi8sCiAJCQkJMUFGMzI2NzYwRDc4Qjk0NDAwNjhGMEM0IC8qIEFYT2JqZWN0
Q2FjaGUuaCAqLywKIAkJCQk4NTM4RjAwMDBBRDcxNzcwMDA2QTgxRDEgLyogQWJzdHJhY3RWaWV3
LmlkbCAqLywKKwkJCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFy
aWFHcmlkLmNwcCAqLywKKwkJCQkyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmggKi8sCisJCQkJMjk1ODkwNzcwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGwuY3BwICovLAorCQkJCTI5NTg5MDc2MEZCQTBGOTUwMEQ1MEIz
QSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi8sCisJCQkJMjk1ODkwNzMwRkJBMEY4
QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAgKi8sCisJCQkJMjk1ODkw
NzIwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oICovLAogCQkJ
CTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNw
cCAqLywKIAkJCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oICovLAogCQkJCTI5RkZCQjgwMEU3QzVBM0QwMDQwNzczMCAvKiBBY2Nlc3NpYmls
aXR5TGlzdC5jcHAgKi8sCkBAIC0xNjg2Niw2ICsxNjg4NCw5IEBACiAJCQkJMUE1NjlEMjMwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjk1ODkwNzAwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzQwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzgwRkJBMEY5
NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTg4ODEsNiArMTg5MDIsOSBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBy
dW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5
RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5
NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTU4OTA3OTBGQkEwRjk1MDBENTBC
M0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FY
T2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMaXN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgpAQCAtNzYsNiArNzksMTQgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KAogICAgIAogICAgIHJldHVy
biBvYmo7CiB9CisgICAgCitib29sIEFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKE5vZGUq
IG5vZGUsIFN0cmluZyByb2xlKQoreworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdDYXNlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKHJvbGVB
dHRyKSwgcm9sZSk7Cit9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CkBAIC05MSwxMiArMTAyLDIzIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAgICAgICAgIG5l
d09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBl
bHNlIGlmIChub2RlICYmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdO
YW1lKG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIGFyaWEgdGFibGVzCisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUs
ICJncmlkIikpCisgICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQ6OmNy
ZWF0ZShyZW5kZXJlcik7CisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUsICJy
b3ciKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZUlzQXJpYVR5cGUobm9kZSwgImdy
aWRjZWxsIikgfHwgbm9kZUlzQXJpYVR5cGUobm9kZSwgImNvbHVtbmhlYWRlciIpIHx8IG5vZGVJ
c0FyaWFUeXBlKG5vZGUsICJyb3doZWFkZXIiKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisKKyAgICAgICAgLy8gc3Rh
bmRhcmQgdGFibGVzCiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlKCkpCiAgICAg
ICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShyZW5kZXJlcik7CiAg
ICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlUm93KCkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVs
c2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgbmV3T2JqID0gQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKKwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVu
ZGVyZXIpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSGFzaFNldDxBWElEPiBtX2lk
c0luVXNlOwogICAgICAgICAKICAgICAgICAgQVhJRCBnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKKyAgICAgICAgYm9vbCBub2RlSXNBcmlhVHlwZShOb2RlKiBub2RlLCBTdHJpbmcgcm9s
ZSk7CiAgICAgfTsKIAogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oIgor
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDog
QWNjZXNzaWJpbGl0eVRhYmxlKHJlbmRlcmVyKQoreworI2lmIEFDQ0VTU0lCSUxJVFlfVEFCTEVT
CisgICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IHRydWU7CisjZWxzZQorICAgIG1faXNBY2Nl
c3NpYmlsaXR5VGFibGUgPSBmYWxzZTsKKyNlbmRpZgorfQorCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWQoKQoreworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlBcmlhR3JpZD4gQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlh
R3JpZChyZW5kZXJlcikpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hp
bGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoIWNo
aWxkIHx8ICFjaGlsZC0+aXNUYWJsZVJvdygpIHx8ICFjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBSb3dSb2xlKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Kj4oY2hp
bGQpOworICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMocm93KSkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwor
ICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy0+Y2hpbGRyZW4oKS5zaXplKCk7CisgICAg
aWYgKHJvd0NlbGxDb3VudCA+IGNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3VudCA9IHJv
d0NlbGxDb3VudDsKKyAgICAKKyAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUo
KSk7ICAgICAgICAKKyAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7CisgICAgbV9jaGlsZHJlbi5hcHBl
bmQocm93KTsKKyAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Cit9CisgICAgCit2b2lkIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGRyZW4oKQoreworICAgIEFTU0VSVCghbV9oYXZlQ2hp
bGRyZW4pOyAKKyAgICAKKyAgICBpZiAoIWlzRGF0YVRhYmxlKCkpIHsKKyAgICAgICAgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7CisgICAgaWYgKCFtX3JlbmRlcmVy
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhDYWNoZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAKKyAgICAvLyBhZGQg
b25seSByb3dzIHRoYXQgYXJlIGxhYmVsZWQgYXMgYXJpYSByb3dzCisgICAgSGFzaFNldDxBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOworICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50
ID0gMDsKKyAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKworICAgICAg
ICAvLyBpbiBjYXNlIHRoZSByZW5kZXIgdHJlZSBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBB
UklBIGhpZXJhcmNoeSwgbG9vayBhdCB0aGUgY2hpbGRyZW4KKyAgICAgICAgaWYgKGNoaWxkLT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmhhc0No
aWxkcmVuKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmFkZENoaWxkcmVuKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IGNoaWxkLT5jaGlsZHJlbigpOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2hpbGRy
ZW4uc2l6ZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGFkZENoaWxkKGNoaWxkcmVuW2ldLmdldCgpLCBhcHBlbmRl
ZFJvd3MsIGNvbHVtbkNvdW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhZGRDaGls
ZChjaGlsZC5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7ICAgICAgICAgICAgCisg
ICAgfQorICAgIAorICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBv
ZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbHVtbkNvdW50OyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKiBj
b2x1bW4gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4qPihheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGNvbHVtbi0+c2V0Q29sdW1uSW5kZXgo
KGludClpKTsKKyAgICAgICAgY29sdW1uLT5zZXRQYXJlbnRUYWJsZSh0aGlzKTsKKyAgICAgICAg
bV9jb2x1bW5zLmFwcGVuZChjb2x1bW4pOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjb2x1
bW4pOworICAgIH0KKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWlu
ZXJPYmplY3QgPSBoZWFkZXJDb250YWluZXIoKTsKKyAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2Jq
ZWN0KQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwor
fQorICAgIAorQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQoreworICAg
IGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFoYXND
aGlsZHJlbigpKQorICAgICAgICBhZGRDaGlsZHJlbigpOworICAgIAorICAgIGlmIChjb2x1bW4g
Pj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCAqdGFibGVSb3cgPSBtX3Jvd3Nbcm93XS5n
ZXQoKTsKKyAgICBpZiAoIXRhYmxlUm93KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0YWJsZVJvdy0+Y2hpbGRyZW4o
KTsKKyAgICAvLyBpbiBjYXNlIHRoaXMgcm93IGhhZCBmZXdlciBjb2x1bW5zIHRoYW4gb3RoZXIg
cm93cworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlQ2VsbCA9IDA7CisgICAgaWYgKGNv
bHVtbiA+PSBjaGlsZHJlbi5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdGFibGVD
ZWxsID0gY2hpbGRyZW5bY29sdW1uXS5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KHRhYmxlQ2VsbCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisjZGVm
aW5lIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU3RyaW5nOworY2xhc3Mg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lcjsKKworY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlkIDogcHVibGljIEFjY2Vzc2li
aWxpdHlUYWJsZSB7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlBcmlhR3JpZChS
ZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5QXJpYUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5QXJpYUdyaWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpOworICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAorCisjZW5kaWYgLy8gQWNjZXNzaWJp
bGl0eUFyaWFHcmlkX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRD
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVy
ZXIpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJp
YUdyaWRDZWxsKCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
PiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwo
cmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghcGFyZW50IHx8ICFw
YXJlbnQtPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVudCB8fCAh
cGFyZW50LT5pc0RhdGFUYWJsZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gcGFyZW50OworfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5pc1RhYmxlUm93KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGFz
IGZhciBhcyBJIGNhbiB0ZWxsLCBncmlkIGNlbGxzIGNhbm5vdCBzcGFuIHJvd3MKKyAgICByb3dS
YW5nZS5maXJzdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHBhcmVudCkt
PnJvd0luZGV4KCk7CisgICAgcm93UmFuZ2Uuc2Vjb25kID0gMTsgICAgCit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNUYWJsZVJv
dygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVu
U2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hp
bGRyZW5TaXplOyArK2spIHsKKyAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHRoaXMp
IHsKKyAgICAgICAgICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gazsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBn
cmlkIGNlbGxzIGNhbm5vdCBzcGFuIGNvbHVtbnMKKyAgICBjb2x1bW5SYW5nZS5zZWNvbmQgPSAx
OyAgICAKK30KKyAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGxfaAorI2RlZmluZSBBY2Nlc3NpYmls
aXR5QXJpYUdyaWRDZWxsX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbChSZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsPiBjcmVhdGUoUmVu
ZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbCgpOwor
ICAgIAorICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2Yg
Y2VsbAorICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dS
YW5nZSk7CisgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3Bh
biBvZiBjZWxsCisgICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGlu
dD4mIGNvbHVtblJhbmdlKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Q7Cit9OyAKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsX2gKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3cuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyhyZW5kZXJlcikKK3sKK30KKworQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3c+IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3Np
YmlsaXR5QXJpYUdyaWRSb3cocmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0Cit7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAg
aWYgKCFwYXJlbnQtPmlzRGF0YVRhYmxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IHJldHVybiBwYXJlbnQ7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdzo6aGVhZGVyT2JqZWN0KCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3Igcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVuQ291
bnQgPSByb3dDaGlsZHJlbi5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNo
aWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0g
cm93Q2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgIGlmIChjZWxsLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IFJvd0hlYWRlclJvbGUpCisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKyNkZWZpbmUgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWRSb3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlUm93IHsKKyAgICAKK3ByaXZhdGU6
CisgICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KFJlbmRlck9iamVjdCopOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdz4gY3JlYXRlKFJl
bmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdygpOwor
ICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0OyAgICAK
K307IAorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKKworI2VuZGlmIC8vIEFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvd19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJl
dmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUxp
c3Q+IEFjY2Vzc2liaWwKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogewogICAgIC8vIGxpc3RzIGRvbid0IGFwcGVhciBvbiB0aWdlci9sZW9w
YXJkIG9uIHRoZSBtYWMKLSNpZiBQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQotICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKKyNpZiBBQ0NFU1NJQklMSVRZX0xJU1RTCiAgICAgcmV0dXJuIGZhbHNlOworI2Vs
c2UKKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfSAgICAKICAgICAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nl
c3NpYmlsaXR5TGlzdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMiBAQAogI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5TGlzdF9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlMaXN0X2gKIAorI2lmIFBM
QVRGT1JNKE1BQykgJiYgKGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkpCisjZGVmaW5lIEFDQ0VTU0lCSUxJVFlfTElTVFMgMAorI2Vsc2UK
KyNkZWZpbmUgQUNDRVNTSUJJTElUWV9MSVNUUyAxCisjZW5kaWYKKwogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2Vi
Q29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBA
QCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAog
ICAgIEdyaWRSb2xlLAogICAgIENlbGxSb2xlLCAKKyAgICBDb2x1bW5IZWFkZXJSb2xlLAorICAg
IFJvd0hlYWRlclJvbGUsCiAgICAgLy8gQXBwS2l0IGluY2x1ZGVzIFNvcnRCdXR0b25Sb2xlIGJ1
dCBpdCBpcyBtaXNuYW1lZCBhbmQgcmVhbGx5IGEgc3Vicm9sZSBvZiBCdXR0b25Sb2xlIHNvIHdl
IGRvIG5vdCBpbmNsdWRlIGl0IGhlcmUuCiAKICAgICAvLyBXZWJDb3JlLXNwZWNpZmljIHJvbGVz
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEyMyw2ICsyMTIzLDEwIEBAIHN0YXRpYyBjb25zdCBBUklB
Um9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICBjb25zdCBSb2xlRW50cnkgcm9sZXNbXSA9IHsK
ICAgICAgICAgeyAiYnV0dG9uIiwgQnV0dG9uUm9sZSB9LAogICAgICAgICB7ICJjaGVja2JveCIs
IENoZWNrQm94Um9sZSB9LAorICAgICAgICB7ICJncmlkIiwgVGFibGVSb2xlIH0sCisgICAgICAg
IHsgImdyaWRjZWxsIiwgQ2VsbFJvbGUgfSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIiwgQ29s
dW1uSGVhZGVyUm9sZSB9LAorICAgICAgICB7ICJyb3doZWFkZXIiLCBSb3dIZWFkZXJSb2xlIH0s
CiAgICAgICAgIHsgImdyb3VwIiwgR3JvdXBSb2xlIH0sCiAgICAgICAgIHsgImhlYWRpbmciLCBI
ZWFkaW5nUm9sZSB9LAogICAgICAgICB7ICJpbWciLCBJbWFnZVJvbGUgfSwKQEAgLTIxMzYsNiAr
MjE0MCw3IEBAIHN0YXRpYyBjb25zdCBBUklBUm9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUm9sZSB9LAogICAgICAgICB7ICJwcm9ncmVz
c2JhciIsIFByb2dyZXNzSW5kaWNhdG9yUm9sZSB9LAogICAgICAgICB7ICJyYWRpbyIsIFJhZGlv
QnV0dG9uUm9sZSB9LAorICAgICAgICB7ICJyb3ciLCBSb3dSb2xlIH0sCiAgICAgICAgIHsgInJh
bmdlIiwgU2xpZGVyUm9sZSB9LAogICAgICAgICB7ICJzbGlkZXIiLCBTbGlkZXJSb2xlIH0sCiAg
ICAgICAgIHsgInNwaW5idXR0b24iLCBQcm9ncmVzc0luZGljYXRvclJvbGUgfSwKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMs
MTAgQEAgQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUgogICAgIDogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlciksCiAgICAgbV9oZWFkZXJDb250YWluZXIo
MCkKIHsKLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwotI2Vsc2UK
KyNpZiBBQ0NFU1NJQklMSVRZX1RBQkxFUwogICAgIG1faXNBY2Nlc3NpYmlsaXR5VGFibGUgPSBp
c1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKKyNlbHNlCisgICAgbV9pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwogI2VuZGlmCiB9CiAKQEAgLTgxLDggKzgxLDYgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibAogICAgIC8vIGlmIHRoZSBk
ZXZlbG9wZXIgYXNzaWduZWQgYW4gYXJpYSByb2xlIHRvIHRoaXMsIHRoZW4gd2Ugc2hvdWxkbid0
IAogICAgIC8vIGV4cG9zZSBpdCBhcyBhIHRhYmxlLCB1bmxlc3MsIG9mIGNvdXJzZSwgdGhlIGFy
aWEgcm9sZSBpcyBhIHRhYmxlCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlh
Um9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChhcmlhUm9sZSA9PSBUYWJsZVJvbGUpCi0gICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChhcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIApAQCAtNDY3LDcgKzQ2NSw3IEBAIFN0cmluZyBBY2Nlc3NpYmls
aXR5VGFibGU6OnRpdGxlKCkgY29uc3QKICAgICAKICAgICAvLyBzZWUgaWYgdGhlcmUgaXMgYSBj
YXB0aW9uCiAgICAgTm9kZSogdGFibGVFbGVtZW50ID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAg
IGlmICh0YWJsZUVsZW1lbnQpIHsKKyAgICBpZiAodGFibGVFbGVtZW50ICYmIHRhYmxlRWxlbWVu
dC0+aGFzVGFnTmFtZSh0YWJsZVRhZykpIHsKICAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQqIGNhcHRpb24gPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGVFbGVtZW50
KS0+Y2FwdGlvbigpOwogICAgICAgICBpZiAoY2FwdGlvbikKICAgICAgICAgICAgIHRpdGxlID0g
Y2FwdGlvbi0+aW5uZXJUZXh0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZS5oCShy
ZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTIgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaCIKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgKGRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCisjZGVmaW5lIEFDQ0VT
U0lCSUxJVFlfVEFCTEVTIDAKKyNlbHNlCisjZGVmaW5lIEFDQ0VTU0lCSUxJVFlfVEFCTEVTIDEK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0cmluZzsKQEAgLTM5LDcg
KzQ1LDcgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOwogICAgIAog
Y2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlIDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QgewogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZShSZW5k
ZXJPYmplY3QqKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGFibGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKQEAgLTQ3LDYgKzUzLDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
QXJpYVRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIApAQCAtNjMsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gYWxsIHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2
b2lkIGNlbGxzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25l
ZCByb3cpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CiAgICAgCiAgICAgdm9pZCBj
b2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93
SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTcxLDcgKzc4LDcgQEAg
cHVibGljOgogICAgIC8vIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zLCBhcyBjaGlsZHJlbiwgYWxs
IHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhlYWRlcnMKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBoZWFkZXJDb250YWluZXIoKTsKICAgICAKLXByaXZhdGU6ICAgIAorcHJvdGVjdGVkOiAgICAK
ICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9yb3dzOwogICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBtX2NvbHVtbnM7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTQgKzYxLDE5
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YWNjZXNzaWJpbGkKICAgICAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9Ci0gICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFi
bGVDZWxsKCkgY29uc3QKKyAgIAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbmRl
clRhYmxlID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShzdGF0aWNfY2FzdDxSZW5kZXJU
YWJsZUNlbGwqPihtX3JlbmRlcmVyKS0+dGFibGUoKSk7Ci0gICAgaWYgKCFyZW5kZXJUYWJsZS0+
aXNEYXRhVGFibGUoKSkKKyAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihtX3JlbmRlcmVyKS0+dGFibGUoKSk7Cit9Cisg
ICAgCitib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVDZWxsKCkgY29uc3QKK3sK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBhcmVudFRhYmxlKCk7CisgICAgaWYg
KCF0YWJsZSB8fCAhdGFibGUtPmlzRGF0YVRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDCiAgICAgLy8gVHJ5IHRvIGZpbmQgaWYgdGhlIGZp
cnN0IGNlbGwgaW4gdGhpcyByb3cgaXMgYSA8dGg+LiBJZiBpdCBpcywKICAgICAvLyB0aGVuIGl0
IGNhbiBhY3QgYXMgdGhlIHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkgaW4gdGhlCiAg
ICAgLy8gY2FzZSB3aGVuIHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFuIEFYVGFibGUu
KQotICAgIGlmICghbV9yZW5kZXJlciB8fCBpc1RhYmxlQ2VsbCgpKQorICAgIGlmIChpc1RhYmxl
Q2VsbCgpIHx8ICFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRlckNlbGwgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihtX3JlbmRlcmVyKTsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiAgICAgCi1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0Kik7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gY3Jl
YXRlKFJlbmRlck9iamVjdCopOwpAQCAtNDcsMTcgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogCiAgICAgLy8gZmlsbHMg
aW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdm9pZCByb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIHJv
d0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0
aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIGNlbGwKLSAgICB2b2lkIGNvbHVt
bkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpOwogICAgIAog
ICAgIC8vIGlmIGEgdGFibGUgY2VsbCBpcyBub3QgZXhwb3NlZCBhcyBhIHRhYmxlIGNlbGwsIGEg
VEggZWxlbWVudCBjYW4KICAgICAvLyBzZXJ2ZSBhcyBpdHMgdGl0bGUgdWkgZWxlbWVudAogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7CiAgICAgCi1wcml2
YXRlOgorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
VGFibGUoKSBjb25zdDsKICAgICBpbnQgbV9yb3dJbmRleDsKLSAgICAKIH07IAogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnQKICAgICBtX3BhcmVudFRhYmxlID0g
dGFibGU7CiAgICAgCiAgICAgY2xlYXJDaGlsZHJlbigpOwotICAgIGFkZENoaWxkcmVuKCk7CiB9
CiAgICAgCiBJbnRSZWN0IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6ZWxlbWVudFJlY3QoKSBj
b25zdApAQCAtODcsNyArODYsMjYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVRhYmxlQwogICAgIGlmICghbV9wYXJlbnRUYWJsZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ci0gICAgUmVuZGVyVGFibGUqIHRhYmxlID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGUqPihtX3Bh
cmVudFRhYmxlLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9w
YXJlbnRUYWJsZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICBpZiAobV9wYXJlbnRUYWJsZS0+aXNBcmlhVGFibGUoKSkgeworICAg
ICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigp
OworICAgICAgICB1bnNpZ25lZCBjaGlsZHJlbkNvdW50ID0gcm93Q2hpbGRyZW4uc2l6ZSgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytpKSB7Cisg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0gcm93Q2hpbGRyZW5baV0uZ2V0
KCk7CisgICAgICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBDb2x1bW5I
ZWFkZXJSb2xlKQorICAgICAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1Rh
YmxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9
IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlKj4ocmVuZGVyZXIpOwogICAgIAogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCA9IDA7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDgg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OgogCiBib29sIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRl
cmVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByZW5kZXJUYWJsZSA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoc3RhdGljX2Nhc3Q8
UmVuZGVyVGFibGVSb3cqPihtX3JlbmRlcmVyKS0+dGFibGUoKSk7Ci0gICAgaWYgKCFyZW5kZXJU
YWJsZS0+aXNEYXRhVGFibGUoKSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBh
cmVudFRhYmxlKCk7CisgICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmlzRGF0YVRhYmxlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg1LDYgKzgy
LDE0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjphY2Nlc3NpYmlsaXQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAgICAgCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c6OnBhcmVudFRhYmxlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKHN0YXRpY19jYXN0PFJlbmRlclRhYmxlUm93Kj4obV9yZW5kZXJlciktPnRhYmxlKCkpOwor
fQorICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFk
ZXJPYmplY3QoKQogewogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dDaGlsZHJl
biA9IGNoaWxkcmVuKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCShy
ZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCB7CiAgICAgCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdyhSZW5kZXJPYmplY3QqKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKQEAgLTQzLDExICs0
MywxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25z
dDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CiAKICAgICAvLyBy
ZXRyaWV2ZXMgdGhlICJyb3ciIGhlYWRlciAoYSB0aCB0YWcgaW4gdGhlIHJpZ2h0bW9zdCBjb2x1
bW4pCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0Um93SW5k
ZXgoaW50IHJvd0luZGV4KSB7IG1fcm93SW5kZXggPSByb3dJbmRleDsgfQogICAgIGludCByb3dJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcm93SW5kZXg7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gNDM2NTApCisr
KyBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAzLDE2ICsxMDAzLDE1IEBAIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5
Um9sZU1hcCYgY3JlYXQKICAgICAgICAgeyBIZWFkaW5nUm9sZSwgQCJBWEhlYWRpbmciIH0sCiAg
ICAgICAgIHsgTGlzdEJveFJvbGUsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCiAgICAgICAg
IHsgTGlzdEJveE9wdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlIH0sCi0g
ICAgICAgIC8vIGNlbGxzIGRvbid0IGV4aXN0IG9uIHRpZ2VyIG9yIGxlb3BhcmQKLSNpZiBkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0g
ICAgICAgIHsgQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotI2Vsc2UKKyNp
ZiBBQ0NFU1NJQklMSVRZX1RBQkxFUwogICAgICAgICB7IENlbGxSb2xlLCBOU0FjY2Vzc2liaWxp
dHlDZWxsUm9sZSB9LAorI2Vsc2UKKyAgICAgICAgeyBDZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCiAjZW5kaWYKICAgICAgICAgeyBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IERlZmluaXRpb25MaXN0RGVm
aW5pdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IERlZmlu
aXRpb25MaXN0VGVybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9Ci0gICAgICAgIAor
CiAgICAgfTsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNz
aWJpbGl0eVJvbGVNYXA7CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MzY1MikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA1
LTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI1NzU1OiBJbXBsZW1lbnQg
QVJJQSBncmlkIHJvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1NzU1CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUuaHRt
bDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFi
bGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQv
YWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFy
aWEtcm9sZS1leHBlY3RlZC50eHQ6CisKIDIwMDktMDUtMTMgIERhdmlkIExldmluICA8bGV2aW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDUgQEAKKzxodG1sPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Cis8L3NjcmlwdD4KKzxib2R5IGlkPSJib2R5Ij4KKyAgICAKKyAgICA8IS0tIFRoaXMg
dGVzdCBwZXJmb3JtcyBhIG51bWJlciBvZiB0ZXN0cyBvbiBBUklBIHRhYmxlcyB0byBtYWtlIHN1
cmUgdGhleSBjb25mb3JtIGFzIGV4cGVjdGVkIC0tPgorCisgICAgPGRpdiByb2xlPSJncmlkIj4K
KyAgICAgIDxkaXYgcm9sZT0icm93Ij4KKyAgICAgICAgPGRpdiByb2xlPSJjb2x1bW5oZWFkZXIi
IGlkPSJoMSI+aGVhZGVyIDE8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJjb2x1bW5oZWFkZXIi
PmhlYWRlciAyPC9kaXY+CisgICAgICAgIDxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIj5oZWFkZXIg
MzwvZGl2PgorICAgICAgPC9kaXY+CisgICAgICA8ZGl2IHJvbGU9InJvdyI+CisgICAgICAgIDxk
aXYgcm9sZT0iZ3JpZGNlbGwiIGhlYWRlcnM9ImgxIj5jZWxsIDwvZGl2PgorICAgICAgICA8ZGl2
IHJvbGU9ImdyaWRjZWxsIj5jZWxsIDwvZGl2PgorICAgICAgICA8ZGl2IHJvbGU9ImdyaWRjZWxs
Ij5jZWxsIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgICA8ZGl2IHJvbGU9InJvdyI+CisgICAg
ICAgIDxkaXYgcm9sZT0iZ3JpZGNlbGwiPmNlbGwgPC9kaXY+CisgICAgICAgIDxkaXYgcm9sZT0i
Z3JpZGNlbGwiPmNlbGwgPC9kaXY+CisgICAgICAgIDxkaXYgaGVhZGVycz0iaDEiIHJvbGU9InJv
d2hlYWRlciI+Y2VsbCA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPHRh
YmxlIGJvcmRlcj0xIHJvbGU9ImdyaWQiPgorICAgICAgPHRyIHJvbGU9InJvdyI+CisgICAgICAg
IDx0aCByb2xlPSJjb2x1bW5oZWFkZXIiPmhlYWRlciAxPC90aD4KKyAgICAgICAgPHRoIHJvbGU9
ImNvbHVtbmhlYWRlciI+aGVhZGVyIDI8L3RoPgorICAgICAgICA8dGggcm9sZT0iY29sdW1uaGVh
ZGVyIj5oZWFkZXIgMjwvdGg+CisgICAgICA8L3RyPgorICAgICAgPHRyIHJvbGU9InJvdyI+Cisg
ICAgICAgIDx0ZCByb2xlPSJyb3doZWFkZXIiPmNlbGw8L3RkPgorICAgICAgICA8dGQgcm9sZT0i
Z3JpZGNlbGwiPmNlbGw8L3RkPgorICAgICAgICA8dGQgcm9sZT0iZ3JpZGNlbGwiPmNlbGw8L3Rk
PgorICAgICAgPC90cj4KKyAgICAgIDx0ciByb2xlPSJyb3ciPgorICAgICAgICA8dGQgcm9sZT0i
Z3JpZGNlbGwiPmNlbGw8L3RkPgorICAgICAgPC90cj4KKyAgICA8L3RhYmxlPgorCisgICAgPGRp
diBpZD0icmVzdWx0Ij48L2Rpdj4KKyAgICAKKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworCisgICAgICAgICAgICB2YXIgYm9k
eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgICAgICAgICBib2R5LmZv
Y3VzKCk7CisgICAgICAgICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgICAgIHZhciB0YWJsZTEgPSBmb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICB2YXIgdGFibGUyID0gZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOworCisgICAgICAgICAgICB2YXIgZmFpbGVkID0gMDsK
KyAgICAgICAgICAgIDwhLS0gbWFrZSBzdXJlIHRoZXkgYXJlIHRhYmxlcyAtLT4KKyAgICAgICAg
ICAgIGlmICh0YWJsZTEuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhUYWJsZSIp
ID09IC0xKSB7CisgICAgICAgICAgICAgICAgZmFpbGVkID0gMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICh0YWJsZTIuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhU
YWJsZSIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgZmFpbGVkID0gMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgPCEtLSBNYWtlIHN1cmUgd2UgY2FuIHVzZSBjZWxsIGZvciBjb2x1
bW4gYW5kIHJvdyBhbmQgaXQgd29ya3MgLS0+CisgICAgICAgICAgICBpZiAodGFibGUxLmNlbGxG
b3JDb2x1bW5BbmRSb3coMCwwKS5hbGxBdHRyaWJ1dGVzKCkuaW5kZXhPZigiQVhSb2xlOiBBWENl
bGwiKSA9PSAtMSkgeworICAgICAgICAgICAgICAgZmFpbGVkID0gMTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICh0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJvdygwLDApLmFsbEF0dHJp
YnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYQ2VsbCIpID09IC0xKSB7CisgICAgICAgICAgICAg
ICBmYWlsZWQgPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFibGUxLmNl
bGxGb3JDb2x1bW5BbmRSb3coMiwyKS5hbGxBdHRyaWJ1dGVzKCkuaW5kZXhPZigiQVhSb2xlOiBB
WENlbGwiKSA9PSAtMSkgeworICAgICAgICAgICAgICAgZmFpbGVkID0gMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICh0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJvdygxLDEpLmFsbEF0
dHJpYnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYQ2VsbCIpID09IC0xKSB7CisgICAgICAgICAg
ICAgICBmYWlsZWQgPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICA8IS0tIG5vdyBt
YWtlIHN1cmUgd2UgY2FuIGNhbGwgYWxsIHRoZSByZWxldmFudCBtZXRob2RzIHdpdGhvdXQgY3Jh
c2hpbmcgLS0+CisgICAgICAgICAgICB0YWJsZTEuYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygp
OworICAgICAgICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKworICAg
ICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMoKTsKKyAgICAgICAgICAgIHRh
YmxlMi5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CisgICAgCisgICAgICAgICAgICB0YWJsZTEu
YXR0cmlidXRlc09mQ29sdW1ucygpOworICAgICAgICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNv
bHVtbnMoKTsKKworICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAg
ICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZSb3dzKCk7CisKKyAgICAgICAgICAgIHRhYmxlMS5h
dHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZIZWFk
ZXIoKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZmFpbGVkKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdCBmYWlsZWRcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCArPSAiVGVzdCBwYXNzZWRcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
dGFibGUtd2l0aC1hcmlhLXJvbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLmh0bWwJKHJldmlzaW9uIDQzNjUwKQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgICAgPHRyPjx0ZD50ZXN0PC90ZD48dGQ+
dGVzdDwvdGQ+PHRkPnRlc3Q8L3RkPjwvdHI+CiAgICAgPC90YWJsZT4KIAotICAgIDx0YWJsZSBi
b3JkZXI9MSByb2xlPSJ0YWJsZSI+CisgICAgPHRhYmxlIGJvcmRlcj0xIHJvbGU9Im1lbnUiPgog
ICAgICAgIDx0cj48dGQ+dGVzdDwvdGQ+PHRkPnRlc3Q8L3RkPjx0ZD50ZXN0PC90ZD48L3RyPgog
ICAgICAgIDx0cj48dGQ+dGVzdDwvdGQ+PHRkPnRlc3Q8L3RkPjx0ZD50ZXN0PC90ZD48L3RyPgog
ICAgIDwvdGFibGU+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nl
c3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJk
L2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0IEBACitoZWFkZXIgMQoraGVhZGVyIDIKK2hlYWRlciAzCitjZWxsCitjZWxsCitj
ZWxsCitjZWxsCitjZWxsCitjZWxsCitoZWFkZXIgMQloZWFkZXIgMgloZWFkZXIgMgorY2VsbAlj
ZWxsCWNlbGwKK2NlbGwKK1Rlc3QgZmFpbGVkCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1sZW9wYXJkL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2FjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MzY1
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2FjY2Vzc2liaWxpdHkvdGFi
bGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNDcg
KzM5LDE0IEBAIEFYVGl0bGVVSUVsZW1lbnQ6IChudWxsKQogQVhBY2Nlc3NLZXk6IChudWxsKQog
CiAtLS0tLS0tLS0tLS0KLUFYUm9sZTogQVhHcm91cAotQVhTdWJyb2xlOiAobnVsbCkKLUFYUm9s
ZURlc2NyaXB0aW9uOiBncm91cAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMT4KLUFYSGVs
cDogCi1BWFBhcmVudDogPEFYR3JvdXA+Ci1BWFNpemU6IE5TU2l6ZTogezI1LCAyMn0KLUFYVGl0
bGU6IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAotQVhFbmFibGVk
OiAxCi1BWFdpbmRvdzogPEFYR3JvdXA+Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVs
bCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYR3Jv
dXA+Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCi1BWFNlbGVjdGVk
OiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYR3JvdXA+
Ci1BWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKLQotLS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYR3Jv
dXAKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogZ3JvdXAKLUFYQ2hpbGRy
ZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWEdyb3VwPgotQVhT
aXplOiBOU1NpemU6IHsyNSwgMjJ9Ci1BWFRpdGxlOiAKLUFYRGVzY3JpcHRpb246IAotQVhWYWx1
ZTogCi1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEdyb3VwPgotQVhT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3Jv
dXA+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJ
RWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFY
VG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgotQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCi0K
LS0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWEdyb3VwCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xl
RGVzY3JpcHRpb246IGdyb3VwCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxw
OiAKLUFYUGFyZW50OiA8QVhHcm91cD4KLUFYU2l6ZTogTlNTaXplOiB7MjUsIDIyfQotQVhUaXRs
ZTogCi1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6
IDEKLUFYV2luZG93OiA8QVhHcm91cD4KLUFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxs
KQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91
cD4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6
IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhHcm91cD4K
LUFYVGl0bGVVSUVsZW1lbnQ6IChudWxsKQotCi0tLS0tLS0tLS0tLS0KLUFYUm9sZTogQVhHcm91
cAotQVhTdWJyb2xlOiAobnVsbCkKLUFYUm9sZURlc2NyaXB0aW9uOiBncm91cAotQVhDaGlsZHJl
bjogPGFycmF5IG9mIHNpemUgMT4KLUFYSGVscDogCi1BWFBhcmVudDogPEFYR3JvdXA+Ci1BWFNp
emU6IE5TU2l6ZTogezI1LCAyMn0KLUFYVGl0bGU6IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVl
OiAKLUFYRm9jdXNlZDogMAotQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYR3JvdXA+Ci1BWFNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91
cD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlF
bGVtZW50czogKG51bGwpCi1BWFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhU
b3BMZXZlbFVJRWxlbWVudDogPEFYR3JvdXA+Ci1BWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKLQot
LS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYR3JvdXAKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVE
ZXNjcmlwdGlvbjogZ3JvdXAKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6
IAotQVhQYXJlbnQ6IDxBWEdyb3VwPgotQVhTaXplOiBOU1NpemU6IHsyNSwgMjJ9Ci1BWFRpdGxl
OiAKLUFYRGVzY3JpcHRpb246IAotQVhWYWx1ZTogCi1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDog
MQotQVhXaW5kb3c6IDxBWEdyb3VwPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwp
Ci1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEdyb3Vw
PgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDog
MAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgot
QVhUaXRsZVVJRWxlbWVudDogKG51bGwpCi0KLS0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWEdyb3Vw
Ci1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGdyb3VwCi1BWENoaWxkcmVu
OiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhHcm91cD4KLUFYU2l6
ZTogTlNTaXplOiB7MjUsIDIyfQotQVhUaXRsZTogCi1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6
IAotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhHcm91cD4KLUFYU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3Vw
PgotQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVs
ZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRv
cExldmVsVUlFbGVtZW50OiA8QVhHcm91cD4KK0FYUm9sZTogQVhNZW51CitBWFJvbGVEZXNjcmlw
dGlvbjogKG51bGwpCitBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSA2PgorQVhQYXJlbnQ6IDxB
WE1lbnU+CitBWEVuYWJsZWQ6IDEKK0FYU2l6ZTogTlNTaXplOiB7ODUsIDUyfQorQVhTZWxlY3Rl
ZENoaWxkcmVuOiAobnVsbCkKK0FYVmlzaWJsZUNoaWxkcmVuOiAobnVsbCkKIEFYVGl0bGVVSUVs
ZW1lbnQ6IChudWxsKQogCiAtLS0tLS0tLS0tLS0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTQgQEAKK2hlYWRlciAxCitoZWFkZXIgMgoraGVhZGVyIDMKK2NlbGwKK2NlbGwKK2NlbGwKK2Nl
bGwKK2NlbGwKK2NlbGwKK2hlYWRlciAxCWhlYWRlciAyCWhlYWRlciAyCitjZWxsCWNlbGwJY2Vs
bAorY2VsbAorVGVzdCBwYXNzZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJp
YS1yb2xlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDM2NTApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDM1ICszOSwxNSBAQCBBWFRpdGxlVUlFbGVtZW50OiAobnVs
bCkKIEFYQWNjZXNzS2V5OiAobnVsbCkKIAogLS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYVGFibGUK
LUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogdGFibGUKK0FYUm9sZTogQVhN
ZW51CitBWFJvbGVEZXNjcmlwdGlvbjogKG51bGwpCiBBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6
ZSA2PgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhUYWJsZT4KLUFYU2l6ZTogTlNTaXplOiB7ODUs
IDUyfQotQVhUaXRsZTogCi1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAw
CitBWFBhcmVudDogPEFYTWVudT4KIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWFRhYmxlPgot
QVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFY
VGFibGU+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWFRhYmxlPgotQVhWaXNpdGVkOiAwCi1BWExpbmtl
ZFVJRWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAK
LUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWFRhYmxlPgotQVhSb3dzOiA8YXJyYXkgb2Ygc2l6ZSAy
PgotQVhWaXNpYmxlUm93czogPGFycmF5IG9mIHNpemUgMj4KLUFYQ29sdW1uczogPGFycmF5IG9m
IHNpemUgMz4KLUFYVmlzaWJsZUNvbHVtbnM6IDxhcnJheSBvZiBzaXplIDM+Ci1BWFZpc2libGVD
ZWxsczogPGFycmF5IG9mIHNpemUgNj4KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5
IG9mIHNpemUgMD4KLUFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KLUFY
SGVhZGVyOiA8QVhUYWJsZT4KK0FYU2l6ZTogTlNTaXplOiB7ODUsIDUyfQorQVhTZWxlY3RlZENo
aWxkcmVuOiAobnVsbCkKK0FYVmlzaWJsZUNoaWxkcmVuOiAobnVsbCkKK0FYVGl0bGVVSUVsZW1l
bnQ6IChudWxsKQogCiAtLS0tLS0tLS0tLS0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30289</attachid>
            <date>2009-05-13 15:01:22 -0700</date>
            <delta_ts>2009-05-13 16:10:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>60888</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMDktMDUtMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjU3NTU6IEltcGxlbWVudCBBUklBIGdyaWQgcm9sZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU3NTUKKworICAgICAgICBUZXN0OiBhY2Nl
c3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGFnZS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KiBwYWdlL0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
OjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFyaWFHcmlkOjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
QXJpYUdyaWQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFy
aWFHcmlkOjppc0FyaWFUYWJsZSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdy
aWRDZWxsOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpwYXJlbnRUYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJbmRleFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OmNvbHVtbklu
ZGV4UmFuZ2UpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nlc3NpYmls
aXR5QXJpYUdyaWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIHBhZ2UvQWNjZXNz
aWJpbGl0eUFyaWFHcmlkUm93Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3QuaDoKKyAg
ICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJvbGVFbnRyeTo6KToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxp
dHlUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmls
aXR5VGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNBcmlh
VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVudCk6Cisg
ICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAgICAgICogcGFnZS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnRUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCk6CisgICAgICAgICogcGFnZS9BY2Nl
c3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93Ojppc1RhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6cGFyZW50VGFibGUpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93
Lmg6CisgICAgICAgICogcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06Cisg
ICAgICAgIChSb2xlRW50cnk6Oik6CisKIDIwMDktMDUtMTMgIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGJ1aWxkIGZpeC4K
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQ3LDYgKzExNDcsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL2xvYWRlci9sb2FkZXIuaCBcCiAJV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUu
Y3BwIFwKIAlXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmNwcCBcCisJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlh
R3JpZC5oIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgXAor
CVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggXAorCVdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eUFyaWFHcmlkUm93LmggXAogCVdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmNwcCBcCiAJV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCBcCiAJ
V2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQzNjUw
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtODM4LDYgKzgzOCw5
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIFwgICAg
CiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgXCAgICAKICAgICBwYWdl
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmls
aXR5QXJpYUdyaWQuY3BwIFwgICAgCisgICAgcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
LmNwcCBcICAgIAorICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCBcICAgIAog
ICAgIHBhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAgXCAgICAKICAgICBwYWdlL0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAgXCAgICAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNiArNjg5LDkgQEAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgIDwvc2V0PgogCiAg
ICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX1BBR0UiPgorICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAKKyAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5
QXJpYUdyaWRDZWxsLmNwcAorICAgICAgICBwYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAKICAgICAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAogICAgICAgICBw
YWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAgICAgICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxp
c3QuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDQzNjUwKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyNSw2ICsxODI1LDMwIEBACiAJCQlOYW1lPSJwYWdlIg0KIAkJCT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZENlbGwuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGFnZVxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxp
dHlBcmlhR3JpZFJvdy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwYWdlXEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTEzLDYgKzUxMywxMiBAQAogCQkyOTUxQTJBRTBFNjQ2Qzg4MDBEQjlBREUgLyog
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5NTFBMkFEMEU2NDZDODgwMERCOUFERSAvKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tICovOyB9OwogCQkyOTU1QkUyQzBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkEwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuaCAqLzsgfTsKIAkJMjk1NUJFMkQwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk1NUJFMkIwRTI1NDhFQzAwODkzQUI1IC8qIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwICovOyB9OworCQkyOTU4OTA3MDBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNz
aWJpbGl0eUFyaWFHcmlkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlk
LmggKi87IH07CisJCTI5NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mjk1ODkwNkYwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5jcHAgKi87
IH07CisJCTI5NTg5MDc0MEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRS
b3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLzsgfTsK
KwkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTU4OTA3
MzBGQkEwRjhDMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcCAqLzsgfTsK
KwkJMjk1ODkwNzgwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc2
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi87IH07CisJ
CTI5NTg5MDc5MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTg5MDc3
MEZCQTBGOTUwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNwcCAqLzsgfTsK
IAkJMjk4MDBDM0IwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MDBDMzkwRTUyMkE1
MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovOyB9OwogCQkyOTgwMEMzQzBFNTIy
QTUzMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODAwQzNBMEU1MjJBNTMwMDAyNTUzNiAvKiBB
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwICovOyB9OwogCQkyOTgwMEM5NTBFNTI0QzhCMDAwMjU1MzYg
LyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmggKi87IH07CkBAIC01NDIyLDYgKzU0MjgsMTIgQEAKIAkJMjk1MUEyQUQwRTY0
NkM4ODAwREI5QURFIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA2RTBG
QkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0
eUFyaWFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5
MDcyMEZCQTBGOEMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTg5MDczMEZCQTBGOEMwMEQ1MEIzQSAvKiBB
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjk1ODkwNzYwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlh
R3JpZENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eUFyaWFHcmlkQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU4OTA3NzBG
QkEwRjk1MDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MDBDMzkwRTUyMkE1MzAwMDI1NTM2
IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MDBDM0EwRTUyMkE1MzAwMDI1NTM2IC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgwMEM5MzBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAy
MTIsNiArMTAyMjQsMTIgQEAKIAkJCQk0QjI0RjlBNzBEQTcwNTBCMDAyNjlFNTggLyogQVhPYmpl
Y3RDYWNoZS5jcHAgKi8sCiAJCQkJMUFGMzI2NzYwRDc4Qjk0NDAwNjhGMEM0IC8qIEFYT2JqZWN0
Q2FjaGUuaCAqLywKIAkJCQk4NTM4RjAwMDBBRDcxNzcwMDA2QTgxRDEgLyogQWJzdHJhY3RWaWV3
LmlkbCAqLywKKwkJCQkyOTU4OTA2RjBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJpbGl0eUFy
aWFHcmlkLmNwcCAqLywKKwkJCQkyOTU4OTA2RTBGQkEwQzYzMDBENTBCM0EgLyogQWNjZXNzaWJp
bGl0eUFyaWFHcmlkLmggKi8sCisJCQkJMjk1ODkwNzcwRkJBMEY5NTAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGwuY3BwICovLAorCQkJCTI5NTg5MDc2MEZCQTBGOTUwMEQ1MEIz
QSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmggKi8sCisJCQkJMjk1ODkwNzMwRkJBMEY4
QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAgKi8sCisJCQkJMjk1ODkw
NzIwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5oICovLAogCQkJ
CTI5NTVCRTJCMEUyNTQ4RUMwMDg5M0FCNSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNw
cCAqLywKIAkJCQkyOTU1QkUyQTBFMjU0OEVDMDA4OTNBQjUgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oICovLAogCQkJCTI5RkZCQjgwMEU3QzVBM0QwMDQwNzczMCAvKiBBY2Nlc3NpYmls
aXR5TGlzdC5jcHAgKi8sCkBAIC0xNjg2Niw2ICsxNjg4NCw5IEBACiAJCQkJMUE1NjlEMjMwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMjk1ODkwNzAwRkJBMEM2MzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3Jp
ZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzQwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk1ODkwNzgwRkJBMEY5
NTAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTg4ODEsNiArMTg5MDIsOSBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBy
dW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5
RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5
NTg5MDcxMEZCQTBDNjMwMEQ1MEIzQSAvKiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMjk1ODkwNzUwRkJBMEY4QzAwRDUwQjNBIC8qIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTU4OTA3OTBGQkEwRjk1MDBENTBC
M0EgLyogQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FY
T2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMaXN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgpAQCAtNzYsNiArNzksMTQgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KAogICAgIAogICAgIHJldHVy
biBvYmo7CiB9CisgICAgCitib29sIEFYT2JqZWN0Q2FjaGU6Om5vZGVJc0FyaWFUeXBlKE5vZGUq
IG5vZGUsIFN0cmluZyByb2xlKQoreworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdDYXNlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKHJvbGVB
dHRyKSwgcm9sZSk7Cit9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CkBAIC05MSwxMiArMTAyLDIzIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAgICAgICAgIG5l
d09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBl
bHNlIGlmIChub2RlICYmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdO
YW1lKG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIGFyaWEgdGFibGVzCisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUs
ICJncmlkIikpCisgICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5QXJpYUdyaWQ6OmNy
ZWF0ZShyZW5kZXJlcik7CisgICAgICAgIGVsc2UgaWYgKG5vZGVJc0FyaWFUeXBlKG5vZGUsICJy
b3ciKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZUlzQXJpYVR5cGUobm9kZSwgImdy
aWRjZWxsIikgfHwgbm9kZUlzQXJpYVR5cGUobm9kZSwgImNvbHVtbmhlYWRlciIpIHx8IG5vZGVJ
c0FyaWFUeXBlKG5vZGUsICJyb3doZWFkZXIiKSkKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vz
c2liaWxpdHlBcmlhR3JpZENlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisKKyAgICAgICAgLy8gc3Rh
bmRhcmQgdGFibGVzCiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlKCkpCiAgICAg
ICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShyZW5kZXJlcik7CiAg
ICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlUm93KCkpCiAgICAgICAgICAgICBuZXdP
YmogPSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVs
c2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgbmV3T2JqID0gQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKKwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVu
ZGVyZXIpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNDM2NTAp
CisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSGFzaFNldDxBWElEPiBtX2lk
c0luVXNlOwogICAgICAgICAKICAgICAgICAgQVhJRCBnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKKyAgICAgICAgYm9vbCBub2RlSXNBcmlhVHlwZShOb2RlKiBub2RlLCBTdHJpbmcgcm9s
ZSk7CiAgICAgfTsKIAogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBcmlhR3JpZC5oIgor
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDog
QWNjZXNzaWJpbGl0eVRhYmxlKHJlbmRlcmVyKQoreworI2lmIEFDQ0VTU0lCSUxJVFlfVEFCTEVT
CisgICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IHRydWU7CisjZWxzZQorICAgIG1faXNBY2Nl
c3NpYmlsaXR5VGFibGUgPSBmYWxzZTsKKyNlbmRpZgorfQorCitBY2Nlc3NpYmlsaXR5QXJpYUdy
aWQ6On5BY2Nlc3NpYmlsaXR5QXJpYUdyaWQoKQoreworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlBcmlhR3JpZD4gQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlh
R3JpZChyZW5kZXJlcikpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hp
bGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoIWNo
aWxkIHx8ICFjaGlsZC0+aXNUYWJsZVJvdygpIHx8ICFjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBSb3dSb2xlKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Kj4oY2hp
bGQpOworICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMocm93KSkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwor
ICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy0+Y2hpbGRyZW4oKS5zaXplKCk7CisgICAg
aWYgKHJvd0NlbGxDb3VudCA+IGNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3VudCA9IHJv
d0NlbGxDb3VudDsKKyAgICAKKyAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUo
KSk7ICAgICAgICAKKyAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7CisgICAgbV9jaGlsZHJlbi5hcHBl
bmQocm93KTsKKyAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Cit9CisgICAgCit2b2lkIEFjY2Vz
c2liaWxpdHlBcmlhR3JpZDo6YWRkQ2hpbGRyZW4oKQoreworICAgIEFTU0VSVCghbV9oYXZlQ2hp
bGRyZW4pOyAKKyAgICAKKyAgICBpZiAoIWlzRGF0YVRhYmxlKCkpIHsKKyAgICAgICAgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7CisgICAgaWYgKCFtX3JlbmRlcmVy
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQVhPYmplY3RDYWNoZSogYXhDYWNoZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAKKyAgICAvLyBhZGQg
b25seSByb3dzIHRoYXQgYXJlIGxhYmVsZWQgYXMgYXJpYSByb3dzCisgICAgSGFzaFNldDxBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOworICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50
ID0gMDsKKyAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKworICAgICAg
ICAvLyBpbiBjYXNlIHRoZSByZW5kZXIgdHJlZSBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBB
UklBIGhpZXJhcmNoeSwgbG9vayBhdCB0aGUgY2hpbGRyZW4KKyAgICAgICAgaWYgKGNoaWxkLT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmhhc0No
aWxkcmVuKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmFkZENoaWxkcmVuKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IGNoaWxkLT5jaGlsZHJlbigpOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2hpbGRy
ZW4uc2l6ZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGFkZENoaWxkKGNoaWxkcmVuW2ldLmdldCgpLCBhcHBlbmRl
ZFJvd3MsIGNvbHVtbkNvdW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhZGRDaGls
ZChjaGlsZC5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7ICAgICAgICAgICAgCisg
ICAgfQorICAgIAorICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBv
ZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbHVtbkNvdW50OyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKiBj
b2x1bW4gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4qPihheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGNvbHVtbi0+c2V0Q29sdW1uSW5kZXgo
KGludClpKTsKKyAgICAgICAgY29sdW1uLT5zZXRQYXJlbnRUYWJsZSh0aGlzKTsKKyAgICAgICAg
bV9jb2x1bW5zLmFwcGVuZChjb2x1bW4pOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjb2x1
bW4pOworICAgIH0KKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWlu
ZXJPYmplY3QgPSBoZWFkZXJDb250YWluZXIoKTsKKyAgICBpZiAoaGVhZGVyQ29udGFpbmVyT2Jq
ZWN0KQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwor
fQorICAgIAorQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFyaWFHcmlkOjpj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQoreworICAg
IGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFoYXND
aGlsZHJlbigpKQorICAgICAgICBhZGRDaGlsZHJlbigpOworICAgIAorICAgIGlmIChjb2x1bW4g
Pj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCAqdGFibGVSb3cgPSBtX3Jvd3Nbcm93XS5n
ZXQoKTsKKyAgICBpZiAoIXRhYmxlUm93KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0YWJsZVJvdy0+Y2hpbGRyZW4o
KTsKKyAgICAvLyBpbiBjYXNlIHRoaXMgcm93IGhhZCBmZXdlciBjb2x1bW5zIHRoYW4gb3RoZXIg
cm93cworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlQ2VsbCA9IDA7CisgICAgaWYgKGNv
bHVtbiA+PSBjaGlsZHJlbi5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdGFibGVD
ZWxsID0gY2hpbGRyZW5bY29sdW1uXS5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KHRhYmxlQ2VsbCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisjZGVm
aW5lIEFjY2Vzc2liaWxpdHlBcmlhR3JpZF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU3RyaW5nOworY2xhc3Mg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lcjsKKworY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlkIDogcHVibGljIEFjY2Vzc2li
aWxpdHlUYWJsZSB7CisgICAgCitwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlBcmlhR3JpZChS
ZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5QXJpYUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5QXJpYUdyaWQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpOworICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBhZGRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEhhc2hTZXQ8
QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3Vu
dCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAorCisjZW5kaWYgLy8gQWNjZXNzaWJp
bGl0eUFyaWFHcmlkX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRD
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgiCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6OkFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVy
ZXIpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGw6On5BY2Nlc3NpYmlsaXR5QXJp
YUdyaWRDZWxsKCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxs
PiBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGwo
cmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFyaWFH
cmlkQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghcGFyZW50IHx8ICFw
YXJlbnQtPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVudCB8fCAh
cGFyZW50LT5pc0RhdGFUYWJsZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gcGFyZW50OworfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsOjpyb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5pc1RhYmxlUm93KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGFz
IGZhciBhcyBJIGNhbiB0ZWxsLCBncmlkIGNlbGxzIGNhbm5vdCBzcGFuIHJvd3MKKyAgICByb3dS
YW5nZS5maXJzdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHBhcmVudCkt
PnJvd0luZGV4KCk7CisgICAgcm93UmFuZ2Uuc2Vjb25kID0gMTsgICAgCit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNUYWJsZVJv
dygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVu
U2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hp
bGRyZW5TaXplOyArK2spIHsKKyAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHRoaXMp
IHsKKyAgICAgICAgICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gazsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCBn
cmlkIGNlbGxzIGNhbm5vdCBzcGFuIGNvbHVtbnMKKyAgICBjb2x1bW5SYW5nZS5zZWNvbmQgPSAx
OyAgICAKK30KKyAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFjY2Vzc2liaWxpdHlBcmlhR3JpZENlbGxfaAorI2RlZmluZSBBY2Nlc3NpYmls
aXR5QXJpYUdyaWRDZWxsX2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Q2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbChSZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsPiBjcmVhdGUoUmVu
ZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFyaWFHcmlkQ2VsbCgpOwor
ICAgIAorICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2Yg
Y2VsbAorICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dS
YW5nZSk7CisgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3Bh
biBvZiBjZWxsCisgICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGlu
dD4mIGNvbHVtblJhbmdlKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Q7Cit9OyAKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5QXJpYUdyaWRDZWxsX2gKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3cuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyhyZW5kZXJlcikKK3sKK30KKworQWNjZXNzaWJpbGl0eUFyaWFHcmlk
Um93Ojp+QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5QXJpYUdyaWRSb3c+IEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdzo6Y3JlYXRlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3Np
YmlsaXR5QXJpYUdyaWRSb3cocmVuZGVyZXIpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0Cit7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAg
aWYgKCFwYXJlbnQtPmlzRGF0YVRhYmxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IHJldHVybiBwYXJlbnQ7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlB
cmlhR3JpZFJvdzo6aGVhZGVyT2JqZWN0KCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3Igcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAgIHVuc2lnbmVkIGNoaWxkcmVuQ291
bnQgPSByb3dDaGlsZHJlbi5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNo
aWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0g
cm93Q2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgIGlmIChjZWxsLT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IFJvd0hlYWRlclJvbGUpCisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5QXJpYUdyaWRSb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKyNkZWZpbmUgQWNj
ZXNzaWJpbGl0eUFyaWFHcmlkUm93X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5QXJp
YUdyaWRSb3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlUm93IHsKKyAgICAKK3ByaXZhdGU6
CisgICAgQWNjZXNzaWJpbGl0eUFyaWFHcmlkUm93KFJlbmRlck9iamVjdCopOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdz4gY3JlYXRlKFJl
bmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBcmlhR3JpZFJvdygpOwor
ICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0KCk7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0OyAgICAK
K307IAorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKKworI2VuZGlmIC8vIEFjY2Vzc2li
aWxpdHlBcmlhR3JpZFJvd19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJl
dmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUxp
c3Q+IEFjY2Vzc2liaWwKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogewogICAgIC8vIGxpc3RzIGRvbid0IGFwcGVhciBvbiB0aWdlci9sZW9w
YXJkIG9uIHRoZSBtYWMKLSNpZiBQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQotICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKKyNpZiBBQ0NFU1NJQklMSVRZX0xJU1RTCiAgICAgcmV0dXJuIGZhbHNlOworI2Vs
c2UKKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfSAgICAKICAgICAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nl
c3NpYmlsaXR5TGlzdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMiBAQAogI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5TGlzdF9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlMaXN0X2gKIAorI2lmIFBM
QVRGT1JNKE1BQykgJiYgKGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkpCisjZGVmaW5lIEFDQ0VTU0lCSUxJVFlfTElTVFMgMAorI2Vsc2UK
KyNkZWZpbmUgQUNDRVNTSUJJTElUWV9MSVNUUyAxCisjZW5kaWYKKwogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2Vi
Q29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBA
QCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAog
ICAgIEdyaWRSb2xlLAogICAgIENlbGxSb2xlLCAKKyAgICBDb2x1bW5IZWFkZXJSb2xlLAorICAg
IFJvd0hlYWRlclJvbGUsCiAgICAgLy8gQXBwS2l0IGluY2x1ZGVzIFNvcnRCdXR0b25Sb2xlIGJ1
dCBpdCBpcyBtaXNuYW1lZCBhbmQgcmVhbGx5IGEgc3Vicm9sZSBvZiBCdXR0b25Sb2xlIHNvIHdl
IGRvIG5vdCBpbmNsdWRlIGl0IGhlcmUuCiAKICAgICAvLyBXZWJDb3JlLXNwZWNpZmljIHJvbGVz
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEyMyw2ICsyMTIzLDEwIEBAIHN0YXRpYyBjb25zdCBBUklB
Um9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICBjb25zdCBSb2xlRW50cnkgcm9sZXNbXSA9IHsK
ICAgICAgICAgeyAiYnV0dG9uIiwgQnV0dG9uUm9sZSB9LAogICAgICAgICB7ICJjaGVja2JveCIs
IENoZWNrQm94Um9sZSB9LAorICAgICAgICB7ICJncmlkIiwgVGFibGVSb2xlIH0sCisgICAgICAg
IHsgImdyaWRjZWxsIiwgQ2VsbFJvbGUgfSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIiwgQ29s
dW1uSGVhZGVyUm9sZSB9LAorICAgICAgICB7ICJyb3doZWFkZXIiLCBSb3dIZWFkZXJSb2xlIH0s
CiAgICAgICAgIHsgImdyb3VwIiwgR3JvdXBSb2xlIH0sCiAgICAgICAgIHsgImhlYWRpbmciLCBI
ZWFkaW5nUm9sZSB9LAogICAgICAgICB7ICJpbWciLCBJbWFnZVJvbGUgfSwKQEAgLTIxMzYsNiAr
MjE0MCw3IEBAIHN0YXRpYyBjb25zdCBBUklBUm9sZU1hcCYgY3JlYXRlQVJJQVJvbGUKICAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUm9sZSB9LAogICAgICAgICB7ICJwcm9ncmVz
c2JhciIsIFByb2dyZXNzSW5kaWNhdG9yUm9sZSB9LAogICAgICAgICB7ICJyYWRpbyIsIFJhZGlv
QnV0dG9uUm9sZSB9LAorICAgICAgICB7ICJyb3ciLCBSb3dSb2xlIH0sCiAgICAgICAgIHsgInJh
bmdlIiwgU2xpZGVyUm9sZSB9LAogICAgICAgICB7ICJzbGlkZXIiLCBTbGlkZXJSb2xlIH0sCiAg
ICAgICAgIHsgInNwaW5idXR0b24iLCBQcm9ncmVzc0luZGljYXRvclJvbGUgfSwKSW5kZXg6IFdl
YkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMs
MTAgQEAgQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUgogICAgIDogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlciksCiAgICAgbV9oZWFkZXJDb250YWluZXIo
MCkKIHsKLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgbV9pc0FjY2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwotI2Vsc2UK
KyNpZiBBQ0NFU1NJQklMSVRZX1RBQkxFUwogICAgIG1faXNBY2Nlc3NpYmlsaXR5VGFibGUgPSBp
c1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKKyNlbHNlCisgICAgbV9pc0Fj
Y2Vzc2liaWxpdHlUYWJsZSA9IGZhbHNlOwogI2VuZGlmCiB9CiAKQEAgLTgxLDggKzgxLDYgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibAogICAgIC8vIGlmIHRoZSBk
ZXZlbG9wZXIgYXNzaWduZWQgYW4gYXJpYSByb2xlIHRvIHRoaXMsIHRoZW4gd2Ugc2hvdWxkbid0
IAogICAgIC8vIGV4cG9zZSBpdCBhcyBhIHRhYmxlLCB1bmxlc3MsIG9mIGNvdXJzZSwgdGhlIGFy
aWEgcm9sZSBpcyBhIHRhYmxlCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlh
Um9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChhcmlhUm9sZSA9PSBUYWJsZVJvbGUpCi0gICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChhcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjExLDcgKzIwOSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAg
IAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAg
aWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJs
ZSo+KG1fcmVuZGVyZXIpOwpAQCAtMzcwLDcgKzM2OCw3IEBAIGNvbnN0IHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlUYWJsZTo6cm93Q28KICAgICAKIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vz
c2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2ln
bmVkIHJvdykKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8
ICFtX3JlbmRlcmVyLT5pc1RhYmxlKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGlm
ICghaGFzQ2hpbGRyZW4oKSkKQEAgLTQ2Nyw3ICs0NjUsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eVRhYmxlOjp0aXRsZSgpIGNvbnN0CiAgICAgCiAgICAgLy8gc2VlIGlmIHRoZXJlIGlzIGEgY2Fw
dGlvbgogICAgIE5vZGUqIHRhYmxlRWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBp
ZiAodGFibGVFbGVtZW50KSB7CisgICAgaWYgKHRhYmxlRWxlbWVudCAmJiB0YWJsZUVsZW1lbnQt
Pmhhc1RhZ05hbWUodGFibGVUYWcpKSB7CiAgICAgICAgIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50
KiBjYXB0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KHRhYmxlRWxlbWVudCkt
PmNhcHRpb24oKTsKICAgICAgICAgaWYgKGNhcHRpb24pCiAgICAgICAgICAgICB0aXRsZSA9IGNh
cHRpb24tPmlubmVyVGV4dCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkocmV2
aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDEyIEBACiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgiCiAKKyNpZiBQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQorI2RlZmluZSBBQ0NFU1NJ
QklMSVRZX1RBQkxFUyAwCisjZWxzZQorI2RlZmluZSBBQ0NFU1NJQklMSVRZX1RBQkxFUyAxCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHJpbmc7CkBAIC0zOSw3ICs0
NSw3IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjsKICAgICAKIGNs
YXNzIEFjY2Vzc2liaWxpdHlUYWJsZSA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
IHsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVy
T2JqZWN0Kik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRh
YmxlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CkBAIC00Nyw2ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0Fy
aWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICAKQEAgLTYzLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRhYmxlCiAgICAgdm9p
ZCBjZWxscyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQg
cm93KTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGxGb3JDb2x1bW5B
bmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwogICAgIAogICAgIHZvaWQgY29s
dW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIHJvd0hl
YWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CkBAIC03MSw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0
aGUgb2JqZWN0cyB0aGF0IGFjdCBhcyBoZWFkZXJzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
aGVhZGVyQ29udGFpbmVyKCk7CiAgICAgCi1wcml2YXRlOiAgICAKK3Byb3RlY3RlZDogICAgCiAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOwogICAgIApJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmNwcAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDE0ICs2MSwxOSBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmFjY2Vzc2liaWxpCiAgICAgCiAgICAgcmV0
dXJuIGZhbHNlOwogfQotICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxl
Q2VsbCgpIGNvbnN0CisgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAg
aWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVuZGVyVGFibGUg
PSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHN0YXRpY19jYXN0PFJlbmRlclRhYmxlQ2Vs
bCo+KG1fcmVuZGVyZXIpLT50YWJsZSgpKTsKLSAgICBpZiAoIXJlbmRlclRhYmxlLT5pc0RhdGFU
YWJsZSgpKQorICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHN0YXRpY19j
YXN0PFJlbmRlclRhYmxlQ2VsbCo+KG1fcmVuZGVyZXIpLT50YWJsZSgpKTsKK30KKyAgICAKK2Jv
b2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwoKSBjb25zdAoreworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlID0gcGFyZW50VGFibGUoKTsKKyAgICBpZiAoIXRhYmxl
IHx8ICF0YWJsZS0+aXNEYXRhVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtODQsNyArODksNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsCiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJv
d0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQogewotICAgIGlmICghbV9yZW5k
ZXJlcikKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVDZWxsKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRlckNlbGwg
PSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihtX3JlbmRlcmVyKTsKQEAgLTExNCw3ICsx
MTksNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuCiAgICAgCiB2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGlu
dD4mIGNvbHVtblJhbmdlKQogewotICAgIGlmICghbV9yZW5kZXJlcikKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRlckNlbGwgPSBzdGF0aWNfY2FzdDxSZW5kZXJU
YWJsZUNlbGwqPihtX3JlbmRlcmVyKTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDCiAgICAgLy8gVHJ5IHRvIGZpbmQgaWYgdGhlIGZp
cnN0IGNlbGwgaW4gdGhpcyByb3cgaXMgYSA8dGg+LiBJZiBpdCBpcywKICAgICAvLyB0aGVuIGl0
IGNhbiBhY3QgYXMgdGhlIHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkgaW4gdGhlCiAg
ICAgLy8gY2FzZSB3aGVuIHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFuIEFYVGFibGUu
KQotICAgIGlmICghbV9yZW5kZXJlciB8fCBpc1RhYmxlQ2VsbCgpKQorICAgIGlmIChpc1RhYmxl
Q2VsbCgpIHx8ICFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRlckNlbGwgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihtX3JlbmRlcmVyKTsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiAgICAgCi1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0Kik7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gY3Jl
YXRlKFJlbmRlck9iamVjdCopOwpAQCAtNDcsMTcgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogCiAgICAgLy8gZmlsbHMg
aW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdm9pZCByb3dJ
bmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIHJv
d0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0
aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIGNlbGwKLSAgICB2b2lkIGNvbHVt
bkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpOwogICAgIAog
ICAgIC8vIGlmIGEgdGFibGUgY2VsbCBpcyBub3QgZXhwb3NlZCBhcyBhIHRhYmxlIGNlbGwsIGEg
VEggZWxlbWVudCBjYW4KICAgICAvLyBzZXJ2ZSBhcyBpdHMgdGl0bGUgdWkgZWxlbWVudAogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7CiAgICAgCi1wcml2
YXRlOgorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
VGFibGUoKSBjb25zdDsKICAgICBpbnQgbV9yb3dJbmRleDsKLSAgICAKIH07IAogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCShyZXZpc2lvbiA0MzY1MCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnQKICAgICBtX3BhcmVudFRhYmxlID0g
dGFibGU7CiAgICAgCiAgICAgY2xlYXJDaGlsZHJlbigpOwotICAgIGFkZENoaWxkcmVuKCk7CiB9
CiAgICAgCiBJbnRSZWN0IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6ZWxlbWVudFJlY3QoKSBj
b25zdApAQCAtODcsNyArODYsMjYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVRhYmxlQwogICAgIGlmICghbV9wYXJlbnRUYWJsZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ci0gICAgUmVuZGVyVGFibGUqIHRhYmxlID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGUqPihtX3Bh
cmVudFRhYmxlLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9w
YXJlbnRUYWJsZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICBpZiAobV9wYXJlbnRUYWJsZS0+aXNBcmlhVGFibGUoKSkgeworICAg
ICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigp
OworICAgICAgICB1bnNpZ25lZCBjaGlsZHJlbkNvdW50ID0gcm93Q2hpbGRyZW4uc2l6ZSgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytpKSB7Cisg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsID0gcm93Q2hpbGRyZW5baV0uZ2V0
KCk7CisgICAgICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBDb2x1bW5I
ZWFkZXJSb2xlKQorICAgICAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1Rh
YmxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9
IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlKj4ocmVuZGVyZXIpOwogICAgIAogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCA9IDA7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkocmV2aXNpb24gNDM2NTApCisrKyBXZWJDb3JlL3BhZ2Uv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDgg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OgogCiBib29sIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRl
cmVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByZW5kZXJUYWJsZSA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoc3RhdGljX2Nhc3Q8
UmVuZGVyVGFibGVSb3cqPihtX3JlbmRlcmVyKS0+dGFibGUoKSk7Ci0gICAgaWYgKCFyZW5kZXJU
YWJsZS0+aXNEYXRhVGFibGUoKSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZSA9IHBh
cmVudFRhYmxlKCk7CisgICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmlzRGF0YVRhYmxlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg1LDggKzgy
LDE5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjphY2Nlc3NpYmlsaXQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAgICAgCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c6OnBhcmVudFRhYmxlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1f
cmVuZGVyZXItPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0
dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGVS
b3cqPihtX3JlbmRlcmVyKS0+dGFibGUoKSk7Cit9CisgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiB7CisgICAgaWYgKCFtX3Jl
bmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlUm93KCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dDaGlsZHJlbiA9IGNoaWxk
cmVuKCk7CiAgICAgaWYgKCFyb3dDaGlsZHJlbi5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwpJ
bmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAkocmV2aXNpb24gNDM2NTApCisr
KyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgQWNjZXNzaWJp
bGl0eVRhYmxlUm93IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogICAgIAot
cHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3coUmVuZGVyT2Jq
ZWN0Kik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxl
Um93PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CkBAIC00MywxMSArNDMsMTEgQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Q7CiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogCiAgICAgLy8gcmV0cmlldmVzIHRoZSAicm93
IiBoZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwotCi0gICAgdmlydHVhbCBib29sIGFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGhlYWRlck9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
VGFibGUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFJvd0luZGV4KGludCByb3dJbmRleCkg
eyBtX3Jvd0luZGV4ID0gcm93SW5kZXg7IH0KICAgICBpbnQgcm93SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX3Jvd0luZGV4OyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQzNjUwKQorKysgV2ViQ29yZS9wYWdlL21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwMywx
NiArMTAwMywxNSBAQCBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIGNyZWF0CiAg
ICAgICAgIHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAogICAgICAgICB7IExpc3RCb3hS
b2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAogICAgICAgICB7IExpc3RCb3hPcHRpb25S
b2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAgICAvLyBjZWxscyBk
b24ndCBleGlzdCBvbiB0aWdlciBvciBsZW9wYXJkCi0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgICAgICB7IENlbGxSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSNlbHNlCisjaWYgQUNDRVNTSUJJTElUWV9U
QUJMRVMKICAgICAgICAgeyBDZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKKyNl
bHNlCisgICAgICAgIHsgQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogI2Vu
ZGlmCiAgICAgICAgIHsgVGFibGVIZWFkZXJDb250YWluZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKICAgICAgICAgeyBEZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBEZWZpbml0aW9uTGlzdFRlcm1Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQotICAgICAgICAKKwogICAgIH07CiAgICAgQWNj
ZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwog
ICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDM2NTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wNS0xMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyAyNTc1NTogSW1wbGVtZW50IEFSSUEgZ3JpZCByb2xlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTc1NQorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLmh0bWw6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLWxlb3BhcmQvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL2FjY2Vzc2liaWxpdHkvdGFi
bGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQu
dHh0OgorCiAyMDA5LTA1LTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1
IEBACis8aHRtbD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+
Cis8Ym9keSBpZD0iYm9keSI+CisgICAgCisgICAgPCEtLSBUaGlzIHRlc3QgcGVyZm9ybXMgYSBu
dW1iZXIgb2YgdGVzdHMgb24gQVJJQSB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZXkgY29uZm9ybSBh
cyBleHBlY3RlZCAtLT4KKworICAgIDxkaXYgcm9sZT0iZ3JpZCI+CisgICAgICA8ZGl2IHJvbGU9
InJvdyI+CisgICAgICAgIDxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIiBpZD0iaDEiPmhlYWRlciAx
PC9kaXY+CisgICAgICAgIDxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIj5oZWFkZXIgMjwvZGl2Pgor
ICAgICAgICA8ZGl2IHJvbGU9ImNvbHVtbmhlYWRlciI+aGVhZGVyIDM8L2Rpdj4KKyAgICAgIDwv
ZGl2PgorICAgICAgPGRpdiByb2xlPSJyb3ciPgorICAgICAgICA8ZGl2IHJvbGU9ImdyaWRjZWxs
IiBoZWFkZXJzPSJoMSI+Y2VsbCA8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJncmlkY2VsbCI+
Y2VsbCA8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJncmlkY2VsbCI+Y2VsbCA8L2Rpdj4KKyAg
ICAgIDwvZGl2PgorICAgICAgPGRpdiByb2xlPSJyb3ciPgorICAgICAgICA8ZGl2IHJvbGU9Imdy
aWRjZWxsIj5jZWxsIDwvZGl2PgorICAgICAgICA8ZGl2IHJvbGU9ImdyaWRjZWxsIj5jZWxsIDwv
ZGl2PgorICAgICAgICA8ZGl2IGhlYWRlcnM9ImgxIiByb2xlPSJyb3doZWFkZXIiPmNlbGwgPC9k
aXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDx0YWJsZSBib3JkZXI9MSByb2xl
PSJncmlkIj4KKyAgICAgIDx0ciByb2xlPSJyb3ciPgorICAgICAgICA8dGggcm9sZT0iY29sdW1u
aGVhZGVyIj5oZWFkZXIgMTwvdGg+CisgICAgICAgIDx0aCByb2xlPSJjb2x1bW5oZWFkZXIiPmhl
YWRlciAyPC90aD4KKyAgICAgICAgPHRoIHJvbGU9ImNvbHVtbmhlYWRlciI+aGVhZGVyIDI8L3Ro
PgorICAgICAgPC90cj4KKyAgICAgIDx0ciByb2xlPSJyb3ciPgorICAgICAgICA8dGQgcm9sZT0i
cm93aGVhZGVyIj5jZWxsPC90ZD4KKyAgICAgICAgPHRkIHJvbGU9ImdyaWRjZWxsIj5jZWxsPC90
ZD4KKyAgICAgICAgPHRkIHJvbGU9ImdyaWRjZWxsIj5jZWxsPC90ZD4KKyAgICAgIDwvdHI+Cisg
ICAgICA8dHIgcm9sZT0icm93Ij4KKyAgICAgICAgPHRkIHJvbGU9ImdyaWRjZWxsIj5jZWxsPC90
ZD4KKyAgICAgIDwvdHI+CisgICAgPC90YWJsZT4KKworICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+CisgICAgCisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKTsKKworICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1cygpOworICAgICAgICAg
ICAgdmFyIGZvY3VzZWRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgICAgICB2YXIgdGFibGUxID0gZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOworICAgICAgICAgICAgdmFyIHRhYmxlMiA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgxKTsKKworICAgICAgICAgICAgdmFyIGZhaWxlZCA9IDA7CisgICAgICAgICAgICA8IS0t
IG1ha2Ugc3VyZSB0aGV5IGFyZSB0YWJsZXMgLS0+CisgICAgICAgICAgICBpZiAodGFibGUxLmFs
bEF0dHJpYnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYVGFibGUiKSA9PSAtMSkgeworICAgICAg
ICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGFi
bGUyLmFsbEF0dHJpYnV0ZXMoKS5pbmRleE9mKCJBWFJvbGU6IEFYVGFibGUiKSA9PSAtMSkgewor
ICAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IDwhLS0gTWFrZSBzdXJlIHdlIGNhbiB1c2UgY2VsbCBmb3IgY29sdW1uIGFuZCByb3cgYW5kIGl0
IHdvcmtzIC0tPgorICAgICAgICAgICAgaWYgKHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93KDAs
MCkuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhDZWxsIikgPT0gLTEpIHsKKyAg
ICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
dGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwwKS5hbGxBdHRyaWJ1dGVzKCkuaW5kZXhPZigi
QVhSb2xlOiBBWENlbGwiKSA9PSAtMSkgeworICAgICAgICAgICAgICAgZmFpbGVkID0gMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsMikuYWxsQXR0cmlidXRlcygpLmluZGV4T2YoIkFYUm9sZTogQVhDZWxsIikgPT0gLTEpIHsK
KyAgICAgICAgICAgICAgIGZhaWxlZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwxKS5hbGxBdHRyaWJ1dGVzKCkuaW5kZXhP
ZigiQVhSb2xlOiBBWENlbGwiKSA9PSAtMSkgeworICAgICAgICAgICAgICAgZmFpbGVkID0gMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgPCEtLSBub3cgbWFrZSBzdXJlIHdlIGNhbiBj
YWxsIGFsbCB0aGUgcmVsZXZhbnQgbWV0aG9kcyB3aXRob3V0IGNyYXNoaW5nIC0tPgorICAgICAg
ICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgICAgIHRh
YmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7CisKKyAgICAgICAgICAgIHRhYmxlMS5h
dHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CisgICAgICAgICAgICB0YWJsZTIuYXR0cmlidXRlc09m
Um93SGVhZGVycygpOworICAgIAorICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVt
bnMoKTsKKyAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7CisKKyAgICAg
ICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgICAgICAgICB0YWJsZTIuYXR0
cmlidXRlc09mUm93cygpOworCisgICAgICAgICAgICB0YWJsZTEuYXR0cmlidXRlc09mSGVhZGVy
KCk7CisgICAgICAgICAgICB0YWJsZTIuYXR0cmlidXRlc09mSGVhZGVyKCk7CisgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKGZhaWxlZCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgKz0gIlRlc3QgZmFpbGVkXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3QgcGFzc2Vk
XG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1y
b2xlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13
aXRoLWFyaWEtcm9sZS5odG1sCShyZXZpc2lvbiA0MzY1MCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAs
NyArMTAsNyBAQAogICAgICAgIDx0cj48dGQ+dGVzdDwvdGQ+PHRkPnRlc3Q8L3RkPjx0ZD50ZXN0
PC90ZD48L3RyPgogICAgIDwvdGFibGU+CiAKLSAgICA8dGFibGUgYm9yZGVyPTEgcm9sZT0idGFi
bGUiPgorICAgIDx0YWJsZSBib3JkZXI9MSByb2xlPSJtZW51Ij4KICAgICAgICA8dHI+PHRkPnRl
c3Q8L3RkPjx0ZD50ZXN0PC90ZD48dGQ+dGVzdDwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPnRl
c3Q8L3RkPjx0ZD50ZXN0PC90ZD48dGQ+dGVzdDwvdGQ+PC90cj4KICAgICA8L3RhYmxlPgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvYWNjZXNzaWJpbGl0eS9hcmlhLXRh
Ymxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxlb3BhcmQvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L2Fy
aWEtdGFibGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAoraGVh
ZGVyIDEKK2hlYWRlciAyCitoZWFkZXIgMworY2VsbAorY2VsbAorY2VsbAorY2VsbAorY2VsbAor
Y2VsbAoraGVhZGVyIDEJaGVhZGVyIDIJaGVhZGVyIDIKK2NlbGwJY2VsbAljZWxsCitjZWxsCitU
ZXN0IGZhaWxlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nl
c3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdp
dGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDM2NTApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQ3ICszOSwxNCBAQCBBWFRpdGxl
VUlFbGVtZW50OiAobnVsbCkKIEFYQWNjZXNzS2V5OiAobnVsbCkKIAogLS0tLS0tLS0tLS0tCi1B
WFJvbGU6IEFYR3JvdXAKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogZ3Jv
dXAKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxB
WEdyb3VwPgotQVhTaXplOiBOU1NpemU6IHsyNSwgMjJ9Ci1BWFRpdGxlOiAKLUFYRGVzY3JpcHRp
b246IAotQVhWYWx1ZTogCi1BWEZvY3VzZWQ6IDAKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxB
WEdyb3VwPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogPEFYR3JvdXA+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhWaXNpdGVkOiAw
Ci1BWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3Rl
TGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEdyb3VwPgotQVhUaXRsZVVJRWxlbWVu
dDogKG51bGwpCi0KLS0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWEdyb3VwCi1BWFN1YnJvbGU6IChu
dWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGdyb3VwCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6
ZSAxPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhHcm91cD4KLUFYU2l6ZTogTlNTaXplOiB7MjUs
IDIyfQotQVhUaXRsZTogCi1BWERlc2NyaXB0aW9uOiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAw
Ci1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhHcm91cD4KLUFYU2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3VwPgotQVhFbmRUZXh0TWFy
a2VyOiA8QVhHcm91cD4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkK
LUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50
OiA8QVhHcm91cD4KLUFYVGl0bGVVSUVsZW1lbnQ6IChudWxsKQotCi0tLS0tLS0tLS0tLS0KLUFY
Um9sZTogQVhHcm91cAotQVhTdWJyb2xlOiAobnVsbCkKLUFYUm9sZURlc2NyaXB0aW9uOiBncm91
cAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMT4KLUFYSGVscDogCi1BWFBhcmVudDogPEFY
R3JvdXA+Ci1BWFNpemU6IE5TU2l6ZTogezI1LCAyMn0KLUFYVGl0bGU6IAotQVhEZXNjcmlwdGlv
bjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAotQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFY
R3JvdXA+Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFy
a2VyOiA8QVhHcm91cD4KLUFYRW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWFZpc2l0ZWQ6IDAK
LUFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCi1BWFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVM
ZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYR3JvdXA+Ci1BWFRpdGxlVUlFbGVtZW50
OiAobnVsbCkKLQotLS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYR3JvdXAKLUFYU3Vicm9sZTogKG51
bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogZ3JvdXAKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXpl
IDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWEdyb3VwPgotQVhTaXplOiBOU1NpemU6IHsyNSwg
MjJ9Ci1BWFRpdGxlOiAKLUFYRGVzY3JpcHRpb246IAotQVhWYWx1ZTogCi1BWEZvY3VzZWQ6IDAK
LUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEdyb3VwPgotQVhTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+Ci1BWEVuZFRleHRNYXJr
ZXI6IDxBWEdyb3VwPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQot
QVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6
IDxBWEdyb3VwPgotQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCi0KLS0tLS0tLS0tLS0tLQotQVhS
b2xlOiBBWEdyb3VwCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGdyb3Vw
Ci1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhH
cm91cD4KLUFYU2l6ZTogTlNTaXplOiB7MjUsIDIyfQotQVhUaXRsZTogCi1BWERlc2NyaXB0aW9u
OiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhH
cm91cD4KLUFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJr
ZXI6IDxBWEdyb3VwPgotQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYVmlzaXRlZDogMAot
QVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxl
dmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhHcm91cD4KLUFYVGl0bGVVSUVsZW1lbnQ6
IChudWxsKQotCi0tLS0tLS0tLS0tLS0KLUFYUm9sZTogQVhHcm91cAotQVhTdWJyb2xlOiAobnVs
bCkKLUFYUm9sZURlc2NyaXB0aW9uOiBncm91cAotQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUg
MT4KLUFYSGVscDogCi1BWFBhcmVudDogPEFYR3JvdXA+Ci1BWFNpemU6IE5TU2l6ZTogezI1LCAy
Mn0KLUFYVGl0bGU6IAotQVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAot
QVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYR3JvdXA+Ci1BWFNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4KLUFYRW5kVGV4dE1hcmtl
cjogPEFYR3JvdXA+Ci1BWFZpc2l0ZWQ6IDAKLUFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCi1B
WFNlbGVjdGVkOiAwCi1BWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDog
PEFYR3JvdXA+CitBWFJvbGU6IEFYTWVudQorQVhSb2xlRGVzY3JpcHRpb246IChudWxsKQorQVhD
aGlsZHJlbjogPGFycmF5IG9mIHNpemUgNj4KK0FYUGFyZW50OiA8QVhNZW51PgorQVhFbmFibGVk
OiAxCitBWFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KK0FYU2VsZWN0ZWRDaGlsZHJlbjogKG51bGwp
CitBWFZpc2libGVDaGlsZHJlbjogKG51bGwpCiBBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKIAog
LS0tLS0tLS0tLS0tCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJs
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitoZWFkZXIgMQor
aGVhZGVyIDIKK2hlYWRlciAzCitjZWxsCitjZWxsCitjZWxsCitjZWxsCitjZWxsCitjZWxsCito
ZWFkZXIgMQloZWFkZXIgMgloZWFkZXIgMgorY2VsbAljZWxsCWNlbGwKK2NlbGwKK1Rlc3QgcGFz
c2VkCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDQzNjUwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwzNSArMzksMTUgQEAgQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCiBBWEFjY2Vzc0tleTog
KG51bGwpCiAKIC0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWFRhYmxlCi1BWFN1YnJvbGU6IChudWxs
KQotQVhSb2xlRGVzY3JpcHRpb246IHRhYmxlCitBWFJvbGU6IEFYTWVudQorQVhSb2xlRGVzY3Jp
cHRpb246IChudWxsKQogQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgNj4KLUFYSGVscDogCi1B
WFBhcmVudDogPEFYVGFibGU+Ci1BWFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KLUFYVGl0bGU6IAot
QVhEZXNjcmlwdGlvbjogCi1BWFZhbHVlOiAKLUFYRm9jdXNlZDogMAorQVhQYXJlbnQ6IDxBWE1l
bnU+CiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhUYWJsZT4KLUFYU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWFRhYmxlPgotQVhFbmRUZXh0
TWFya2VyOiA8QVhUYWJsZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVs
bCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVt
ZW50OiA8QVhUYWJsZT4KLUFYUm93czogPGFycmF5IG9mIHNpemUgMj4KLUFYVmlzaWJsZVJvd3M6
IDxhcnJheSBvZiBzaXplIDI+Ci1BWENvbHVtbnM6IDxhcnJheSBvZiBzaXplIDM+Ci1BWFZpc2li
bGVDb2x1bW5zOiA8YXJyYXkgb2Ygc2l6ZSAzPgotQVhWaXNpYmxlQ2VsbHM6IDxhcnJheSBvZiBz
aXplIDY+Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWFJv
d0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+Ci1BWEhlYWRlcjogPEFYVGFibGU+
CitBWFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KK0FYU2VsZWN0ZWRDaGlsZHJlbjogKG51bGwpCitB
WFZpc2libGVDaGlsZHJlbjogKG51bGwpCitBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKIAogLS0t
LS0tLS0tLS0tCiAK
</data>
<flag name="review"
          id="15241"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>