<?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>15897</bug_id>
          
          <creation_ts>2007-11-08 05:44:31 -0800</creation_ts>
          <short_desc>Please implement getBoundingClientRect and getClientRects</short_desc>
          <delta_ts>2009-02-28 15:32:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marcus Better">marcus</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alex</cc>
    
    <cc>ap</cc>
    
    <cc>bleroy</cc>
    
    <cc>bugs+webkit</cc>
    
    <cc>bugzillawatcher</cc>
    
    <cc>colesbury</cc>
    
    <cc>eae</cc>
    
    <cc>erik.arvidsson</cc>
    
    <cc>futurama</cc>
    
    <cc>hyatt</cc>
    
    <cc>jeroen</cc>
    
    <cc>mail</cc>
    
    <cc>mike</cc>
    
    <cc>mitz</cc>
    
    <cc>ml</cc>
    
    <cc>ojan</cc>
    
    <cc>playmobil</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sjoerd</cc>
    
    <cc>xk1t</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60642</commentid>
    <comment_count>0</comment_count>
    <who name="Marcus Better">marcus</who>
    <bug_when>2007-11-08 05:44:31 -0800</bug_when>
    <thetext>The getBoundingClientRect method on HTMLElement is a reasonably clean way to find the position of an element. It was originally implemented in Internet Explorer [1] and has now been added to Gecko [2, 3]. Also its companion function getClientRects [4] could be useful.

The only option currently is an error prone summation along the offsetParent chain, followed by another one up the DOM tree to add in scrolling. This is very error-prone. Having a way to find element positions is absolutely necessary for rich web applications.

Since the request to add getBoxObjectFor (bug #8154) was rejected, please consider implementing this instead.


[1] http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/getboundingclientrect.asp
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=174397
[3] http://developer.mozilla.org/en/docs/DOM:element.getBoundingClientRect
[4] http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/getclientrects.asp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62087</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Wubben">bugs+webkit</who>
    <bug_when>2007-11-23 08:01:30 -0800</bug_when>
    <thetext>I&apos;d also like to see this added to Webkit. Especially getClientRects is useful for text editing applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69457</commentid>
    <comment_count>2</comment_count>
    <who name="José Jeria">bugzillawatcher</who>
    <bug_when>2008-02-05 03:50:50 -0800</bug_when>
    <thetext>Note that this has now also been implemented by Opera 9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72793</commentid>
    <comment_count>3</comment_count>
    <who name="Sjoerd Visscher">sjoerd</who>
    <bug_when>2008-03-05 03:40:58 -0800</bug_when>
    <thetext>See also the new W3C spec for these methods: 
http://www.w3.org/TR/cssom-view/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73553</commentid>
    <comment_count>4</comment_count>
    <who name="Robbert Broersma">mail</who>
    <bug_when>2008-03-13 01:49:53 -0700</bug_when>
    <thetext>I would also very much appreciate this feature being implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76161</commentid>
    <comment_count>5</comment_count>
    <who name="William J. Edney">bedney</who>
    <bug_when>2008-04-02 10:29:15 -0700</bug_when>
    <thetext>Webkit guys -

I&apos;ll vote for this one as well. See John Resig&apos;s post here:

http://ejohn.org/blog/getboundingclientrect-is-awesome

on why this method is cool and useful.

Note that Firefox 3 is deprecating their getBoxObjectFor() method in deference to this mechanism.

Cheers,

- Bill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88195</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-08-10 23:02:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/6139669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106551</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-01-21 17:34:04 -0800</bug_when>
    <thetext>Another reason to do this is that getBoundingClientRect() will take transforms into account, and therefore provide something better than offsetLeft/offsetParent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108747</commentid>
    <comment_count>8</comment_count>
      <attachid>27427</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-06 15:50:08 -0800</bug_when>
    <thetext>Created attachment 27427
First pass

Uploading an initial implementation of the feature.  Some things to note:
1) It needs tests
2) It is based of the January 23, 2009 Draft found at http://dev.w3.org/csswg/cssom-view/ .
3) I don&apos;t think we handle SVG correctly according to that draft.
4) I am not sure what to do about transformations/zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108806</commentid>
    <comment_count>9</comment_count>
      <attachid>27443</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-06 22:48:50 -0800</bug_when>
    <thetext>Created attachment 27443
Take 2

This takes care of transformations and adds a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108915</commentid>
    <comment_count>10</comment_count>
      <attachid>27471</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-08 14:39:40 -0800</bug_when>
    <thetext>Created attachment 27471
patch

I think this is ready for review now.  There are few known cases where we don&apos;t work correctly, but those can be handled in follow up bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108916</commentid>
    <comment_count>11</comment_count>
      <attachid>27471</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-08 15:36:41 -0800</bug_when>
    <thetext>Comment on attachment 27471
patch

Soo so sad that we&apos;re propagating the silly term &quot;client rect&quot; even further. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108931</commentid>
    <comment_count>12</comment_count>
      <attachid>27471</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-08 22:12:18 -0800</bug_when>
    <thetext>Comment on attachment 27471
patch

My big high-level concern here is that absoluteQuads isn&apos;t going to be a match for what you want.  It&apos;s really sort of doing just what Web inspector needs it to do, and so is very inconsistent.  It doesn&apos;t include visible overflow for blocks (or any spillage from floats/positioned elements).  For inlines, taller elements on the line *are* included, etc.

Ultimately absoluteRects/Quads may need a big set of options passed into them regarding what kind of rects we return.

We will need a lot of tests to know if these methods are a good fit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109169</commentid>
    <comment_count>13</comment_count>
      <attachid>27535</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-10 13:00:21 -0800</bug_when>
    <thetext>Created attachment 27535
updated patch

This updated patch includes a few more tests, some of which are known to fail, and a fix to RenderInline not to include children in the absoluteQuad/absoluteRect functions.  I will file bugs on all the remaining known issues so we can follow up on them individually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109196</commentid>
    <comment_count>14</comment_count>
      <attachid>27535</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-10 14:45:09 -0800</bug_when>
    <thetext>Comment on attachment 27535
updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109209</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-10 15:44:34 -0800</bug_when>
    <thetext>Landed in r40837.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109225</commentid>
    <comment_count>16</comment_count>
    <who name="Robert O&apos;Callahan">roc</who>
    <bug_when>2009-02-10 17:41:24 -0800</bug_when>
    <thetext>I was actually hoping the spec would treat CSS transforms like foreignobject, as establishing a new viewport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111628</commentid>
    <comment_count>17</comment_count>
      <attachid>28118</attachid>
    <who name="Garrett Smith">xk1t</who>
    <bug_when>2009-02-28 10:21:22 -0800</bug_when>
    <thetext>Created attachment 28118
Example (testcase) showing failure in Webkit

When the window is scrolled, the value returned is incorrect.

getBoundingClientRect method is designed to return the distance from viewport&apos;s top/left [1].  It works this way in IE, Gecko, Opera. 

However in Webkit, getBoundingClientRect returns the distance from the top/left of the documentElement. 

[1]http://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx

This means that if the viewport is scrolled, the returned position of box.top is incorrect. This is because the position is taken from documentElement, not viewport.  The example result shows that to be true.

Test Results:
Gecko, Opera:
  top: -100
  left: -99

Webkit:
  top: 0
  left: 1

Comment #10, Sam, can you please specify which known cases do not work correctly? 

Comment #4, it seems strange that work on this bug began without tests. Even more strange that the work got checked in. However, since I see no tests, it seems to be true. Can you please explain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111655</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-02-28 15:32:30 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=28118) [review]
&gt; Example (testcase) showing failure in Webkit
&gt; 
&gt; When the window is scrolled, the value returned is incorrect.
&gt; 
&gt; getBoundingClientRect method is designed to return the distance from viewport&apos;s
&gt; top/left [1].  It works this way in IE, Gecko, Opera. 
&gt; 
&gt; However in Webkit, getBoundingClientRect returns the distance from the top/left
&gt; of the documentElement. 
&gt; 
&gt; [1]http://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx
&gt; 
&gt; This means that if the viewport is scrolled, the returned position of box.top
&gt; is incorrect. This is because the position is taken from documentElement, not
&gt; viewport.  The example result shows that to be true.
&gt; 
&gt; Test Results:
&gt; Gecko, Opera:
&gt;   top: -100
&gt;   left: -99
&gt; 
&gt; Webkit:
&gt;   top: 0
&gt;   left: 1

This bug was fixed in http://trac.webkit.org/changeset/41207 .

&gt; 
&gt; Comment #10, Sam, can you please specify which known cases do not work
&gt; correctly? 
&gt; 
&gt; Comment #4, it seems strange that work on this bug began without tests. Even
&gt; more strange that the work got checked in. However, since I see no tests, it
&gt; seems to be true. Can you please explain?
&gt; 

This patch was checked in with two tests.
- http://trac.webkit.org/browser/trunk/LayoutTests/fast/dom/getBoundingClientRect.html
- http://trac.webkit.org/browser/trunk/LayoutTests/fast/dom/getClientRects.html

They are even in the attached patch so I am a little confused.

A subsequent test was added when fixing the scrolling issue.
- http://trac.webkit.org/browser/trunk/LayoutTests/fast/dom/getBoundingClientRect-getClientRects-relative-to-viewport.html

Regarding what is known not to work, the provided tests include known failures including an inline in a column, and a float in an inline for getBoundingClientRect and a table with a caption for getClientRects.  If you find other bugs, please file them in a new report.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27427</attachid>
            <date>2009-02-06 15:50:08 -0800</date>
            <delta_ts>2009-02-06 22:48:50 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>clientRectsPatch.diff</filename>
            <type>text/plain</type>
            <size>33947</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDktMDItMDYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NworICAgICAgICBQ
bGVhc2UgaW1wbGVtZW50IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQgZ2V0Q2xpZW50UmVjdHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzk2Njk+CisKKyAgICAgICAgQ3Vyc29yeSBpbXBs
ZW1lbnRhdGlvbiBvZiBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQKKyAgICAgICAg
RWxlbWVudC5nZXRDbGllbnRSZWN0cy4gQWRkcyBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgY2xh
c3NlcworICAgICAgICBDbGllbnRSZWN0IGFuZCBDbGllbnRSZWN0TGlzdC4KKworICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DbGllbnRSZWN0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDbGllbnRSZWN0OjpDbGllbnRSZWN0KToKKyAgICAgICAgKiBkb20vQ2xpZW50
UmVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0Ojp0b3ApOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
ZW50UmVjdDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6Ym90dG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpZW50UmVjdDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6aGVpZ2h0
KToKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9D
bGllbnRSZWN0TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdExp
c3Q6OkNsaWVudFJlY3RMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0Ojp+
Q2xpZW50UmVjdExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdExpc3Q6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0TGlzdDo6aXRlbSk6CisgICAgICAgICog
ZG9tL0NsaWVudFJlY3RMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVj
dExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0NsaWVudFJlY3RMaXN0LmlkbDogQWRkZWQu
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Z2V0Q2xpZW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0Qm91bmRpbmdD
bGllbnRSZWN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMDktMDItMDYgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNDA3MjgpCisrKyBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAg
RE9NX0NMQVNTRVMgPSBcCiAgICAgQ2FudmFzUGF0dGVybiBcCiAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEIFwKICAgICBDaGFyYWN0ZXJEYXRhIFwKKyAgICBDbGllbnRSZWN0IFwKKyAgICBD
bGllbnRSZWN0TGlzdCBcCiAgICAgQ2xpcGJvYXJkIFwKICAgICBDb21tZW50IFwKICAgICBDb25z
b2xlIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiA0MDcyOCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDk5LDYgKzQwOTksMTYgQEAKIAkJQkNCRDIxQUIwRTQx
N0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JGQjUz
QzBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi87IH07CiAJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNF
NSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVs
bC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
QzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAv
KiBDbGllbnRSZWN0LmNwcCAqLzsgfTsKKwkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENs
aWVudFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQzA2NTc4MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmggKi87IH07CisJCUJDQzA2
NTdGMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzkwRjNDRTFCNzAwQ0QyRDg3IC8q
IENsaWVudFJlY3QuaWRsICovOyB9OworCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xp
ZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNDMDY1N0EwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCAqLzsg
fTsKKwkJQkNDMDY1ODEwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3QjBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCAqLzsgfTsKKwkJQkNDMDY1ODIwRjNDRTFCNzAw
Q0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJl
Y3RMaXN0LmlkbCAqLzsgfTsKKwkJQkNDMDY1ODcwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0MwNjU4MzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCAqLzsgfTsKKwkJQkND
MDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8q
IEpTQ2xpZW50UmVjdC5oICovOyB9OworCQlCQ0MwNjU4OTBGM0NFMkE3MDBDRDJEODcgLyogSlND
bGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0MwNjU4NTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAg
Ki87IH07CisJCUJDQzA2NThBMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NjBG
M0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5oICovOyB9OwogCQlCQ0M0Mzg3ODBF
ODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzQzODc3MEU4ODZDQzcwMDUz
M0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQ0M1NzMzNTBE
Njk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNTczMzMwRDY5NUJCRTAwNkVGNTE3IC8qIERP
TVByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJQkNDNTczMzYwRDY5NUJCRTAwNkVGNTE3IC8qIERP
TVByb2dyZXNzRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0M1NzMzNDBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSAq
LzsgfTsKQEAgLTg4ODAsNiArODg5MCwxNiBAQAogCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIg
LyogS1VSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1VSTEhhc2gu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1
IC8qIEpTRE9NV2luZG93U2hlbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01XaW5kb3dTaGVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93U2hlbGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpZW50UmVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQzA2NTc4MEYzQ0UxQjcwMENEMkQ4NyAv
KiBDbGllbnRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaWVudFJl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1NzkwRjNDRTFCNzAwQ0Qy
RDg3IC8qIENsaWVudFJlY3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENsaWVudFJlY3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3QTBGM0NFMUI3MDBDRDJE
ODcgLyogQ2xpZW50UmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2xpZW50UmVjdExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
Q0MwNjU3QjBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpZW50UmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNDMDY1N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDbGllbnRSZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDQzA2NTgzMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDbGllbnRSZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODQwRjNDRTJBNzAwQ0Qy
RDg3IC8qIEpTQ2xpZW50UmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NsaWVudFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODUwRjND
RTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDbGllbnRSZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDQzA2NTg2MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2xpZW50UmVjdExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNDM4NzcwRTg4NkNDNzAwNTMzREQ1IC8q
IEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0M1NzMzMzBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Qcm9ncmVzc0V2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzU3MzM0MEQ2OTVCQkUwMDZFRjUxNyAv
KiBET01Qcm9ncmVzc0V2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NUHJvZ3Jlc3NFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk0MDksNiArOTQyOSwxMCBAQAogCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZl
ZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlCQ0MwNjU4MzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCAqLywKKwkJCQlC
Q0MwNjU4NDBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggKi8sCisJCQkJQkNDMDY1
ODUwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwICovLAorCQkJCUJDQzA2
NTg2MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggKi8sCiAJCQkJQTgzQjc5
MEUwQ0NBRkY5NzAwMEIwODI1IC8qIENTUyAqLywKIAkJCQlBODNCNzkxMDBDQ0IwMDFCMDAwQjA4
MjUgLyogQ29yZSAqLywKIAkJCQlBODNCNzkxMjBDQ0IwMDNGMDAwQjA4MjUgLyogRXZlbnRzICov
LApAQCAtMTQ0ODAsNiArMTQ1MDQsMTIgQEAKIAkJCQlGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0Eg
LyogWE1MVG9rZW5pemVyLmNwcCAqLywKIAkJCQlGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyog
WE1MVG9rZW5pemVyLmggKi8sCiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRv
a2VuaXplckxpYnhtbDIuY3BwICovLAorCQkJCUJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBD
bGllbnRSZWN0LmNwcCAqLywKKwkJCQlCQ0MwNjU3ODBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50
UmVjdC5oICovLAorCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0Lmlk
bCAqLywKKwkJCQlCQ0MwNjU3QTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3Bw
ICovLAorCQkJCUJDQzA2NTdCMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICov
LAorCQkJCUJDQzA2NTdDMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5pZGwgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
NjcxNSw2ICsxNjc0NSwxMCBAQAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50
aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAv
KiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk2REI0MzBGM0E4ODBFMDA1
NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQzA2
NTdFMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDQzA2NTg4MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDQzA2NThBMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE2ODMwLDYgKzE2ODY0LDggQEAKIAkJCQk4NTEzNkNBODBB
RUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUJDQzA2NTdGMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGll
bnRSZWN0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQkNDMDY1ODIwRjNDRTFCNzAwQ0QyRDg3
IC8qIENsaWVudFJlY3RMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODY5NSw2ICsxODcz
MSwxMCBAQAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVf
dW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NkRCNDYwRjNBODgyMjAwNTczQ0IzIC8q
IFJlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzA2NTdEMEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzA2
NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQ0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJDQzA2NTg5MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpZW50UmVjdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NsaWVudFJlY3Q6OkNsaWVudFJlY3QoKQorewor
fQorCitDbGllbnRSZWN0OjpDbGllbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgOiBt
X3JlY3QocmVjdCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
Om1lcmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9D
bGllbnRSZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKwor
I2lmbmRlZiBDbGllbnRSZWN0X2gKKyNkZWZpbmUgQ2xpZW50UmVjdF9oCisKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEludFJlY3Q7
IAorCisgICAgY2xhc3MgQ2xpZW50UmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPENsaWVudFJlY3Q+
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGllbnRSZWN0KTsgfQorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBjcmVhdGUoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3QocmVjdCkpOyB9CisKKyAgICAgICAgZmxvYXQg
dG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnkoKTsgfQorICAgICAgICBmbG9hdCByaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9CisgICAgICAgIGZsb2F0IGJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsgfQorICAgICAgICBmbG9hdCBsZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LngoKTsgfQorICAgICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAgICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xp
ZW50UmVjdCgpOworICAgICAgICBDbGllbnRSZWN0KGNvbnN0IEludFJlY3QmKTsKKworICAgICAg
ICBGbG9hdFJlY3QgbV9yZWN0OworICAgIH07IAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBDbGllbnRSZWN0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9t
L0NsaWVudFJlY3QuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJbmRleDogV2Vi
Q29yZS9kb20vQ2xpZW50UmVjdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpZW50
UmVjdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmlkbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCittb2R1bGUgdmlldyB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBDbGll
bnRSZWN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHRvcDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHJpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgZmxvYXQgYm90dG9tOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbGVmdDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHdpZHRoOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZmxvYXQgaGVpZ2h0OworICAgIH07CisKK30KClByb3BlcnR5IGNoYW5nZXMg
b246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaWRsCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptZXJn
ZWluZm8KCkluZGV4OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0TGlz
dC5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkNsaWVudFJlY3Qu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDbGllbnRSZWN0TGlzdDo6Q2xpZW50UmVjdExp
c3QoKQoreworfQorCitDbGllbnRSZWN0TGlzdDo6Q2xpZW50UmVjdExpc3QoY29uc3QgVmVjdG9y
PEludFJlY3Q+JiByZWN0cykKK3sKKyAgICBtX2xpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShy
ZWN0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fbGlzdC5hcHBlbmQoQ2xpZW50UmVjdDo6Y3JlYXRlKHJlY3RzW2ldKSk7
Cit9CisKK0NsaWVudFJlY3RMaXN0Ojp+Q2xpZW50UmVjdExpc3QoKQoreworfQorCit1bnNpZ25l
ZCBDbGllbnRSZWN0TGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0LnNp
emUoKTsKK30KKworQ2xpZW50UmVjdCogQ2xpZW50UmVjdExpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpCit7CisgICAgaWYgKGluZGV4ID49IG1fbGlzdC5zaXplKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IHRoaXMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgLy8gZWMgPSBJTkRF
WF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fbGlz
dFtpbmRleF0uZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICoKKyAqLworCisjaWZuZGVmIENsaWVudFJlY3RMaXN0X2gKKyNkZWZpbmUgQ2xpZW50
UmVjdExpc3RfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIENsaWVudFJlY3Q7CisKKyAg
ICBjbGFzcyBDbGllbnRSZWN0TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPENsaWVudFJlY3RMaXN0
PiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlz
dD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3RMaXN0KTsgfQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gY3JlYXRlKGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGllbnRSZWN0TGlzdChy
ZWN0cykpOyB9CisgICAgICAgIH5DbGllbnRSZWN0TGlzdCgpOworCisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OworICAgICAgICBDbGllbnRSZWN0KiBpdGVtKHVuc2lnbmVkIGluZGV4
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIENsaWVudFJlY3RMaXN0KCk7CisgICAgICAgIENs
aWVudFJlY3RMaXN0KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpOworCisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8Q2xpZW50UmVjdD4gPiBtX2xpc3Q7CisgICAgfTsgCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIENsaWVudFJlY3RMaXN0X2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1lcmdl
aW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2RvbS9DbGllbnRSZWN0TGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqCisgKi8KKworbW9kdWxlIHZpZXcgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2Vu
ZXJhdGVDb25zdHJ1Y3RvciwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIENsaWVudFJl
Y3RMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OworICAgICAgICBDbGllbnRSZWN0IGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOworICAgICAgICAvLyBGSVhNRTogRml4IGxpc3QgYmVoYXZpb3IgdG8gYWxsb3cgY3VzdG9t
IGV4Y2VwdGlvbnMgdG8gYmUgdGhyb3duLgorICAgIH07CisKK30KClByb3BlcnR5IGNoYW5nZXMg
b246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCisjaW5jbHVkZSAiQ2xpZW50UmVj
dExpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpAQCAtNDQsNiArNDYsNyBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2Nr
LmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAg
LTQyMiw2ICs0MjUsNDEgQEAgaW50IEVsZW1lbnQ6OnNjcm9sbEhlaWdodCgpCiAgICAgcmV0dXJu
IDA7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJl
Y3RzKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKKworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gdGhpcy0+cmVuZGVy
Qm94KCk7CisgICAgaWYgKCFyZW5kZXJCb3gpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlz
dDo6Y3JlYXRlKCk7CisKKyAgICBGbG9hdFBvaW50IGFic29sdXRlUG9zaXRpb24gPSByZW5kZXJC
b3gtPmxvY2FsVG9BYnNvbHV0ZSgpOworICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKKyAgICBy
ZW5kZXJCb3gtPmFic29sdXRlUmVjdHMocmVjdHMsIGFic29sdXRlUG9zaXRpb24ueCgpLCBhYnNv
bHV0ZVBvc2l0aW9uLnkoKSk7CisgICAgcmV0dXJuIENsaWVudFJlY3RMaXN0OjpjcmVhdGUocmVj
dHMpOworfQorCitQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSB0aGlzLT5yZW5k
ZXJCb3goKTsKKyAgICBpZiAoIXJlbmRlckJveCkKKyAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6
OmNyZWF0ZSgpOworCisgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uID0gcmVuZGVyQm94
LT5sb2NhbFRvQWJzb2x1dGUoKTsKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CisgICAgcmVu
ZGVyQm94LT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCBhYnNvbHV0ZVBvc2l0aW9uLngoKSwgYWJzb2x1
dGVQb3NpdGlvbi55KCkpOworICAgIAorICAgIGlmIChyZWN0cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKworICAgIEludFJlY3QgcmVzdWx0ID0gcmVj
dHNbMF07CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKKyAg
ICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKKworICAgIHJldHVybiBDbGllbnRSZWN0Ojpj
cmVhdGUocmVzdWx0KTsKK30KKwogc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJp
YnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKIHsKICAgICByZXR1cm4gZSAmJiBlLT5kb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGUtPmlzSFRNTEVsZW1lbnQoKTsKSW5kZXg6IFdlYkNv
cmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJl
dmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw4IEBAIGNsYXNzIEF0dHJpYnV0ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRp
b247CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgQ2xpZW50
UmVjdDsKK2NsYXNzIENsaWVudFJlY3RMaXN0OwogCiBjbGFzcyBFbGVtZW50IDogcHVibGljIENv
bnRhaW5lck5vZGUgewogcHVibGljOgpAQCAtODIsNiArODQsOSBAQCBwdWJsaWM6CiAgICAgaW50
IHNjcm9sbFdpZHRoKCk7CiAgICAgaW50IHNjcm9sbEhlaWdodCgpOwogCisgICAgUGFzc1JlZlB0
cjxDbGllbnRSZWN0TGlzdD4gZ2V0Q2xpZW50UmVjdHMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PENsaWVudFJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0OworCiAgICAgdm9pZCBy
ZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
U3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIApJbmRleDogV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlz
aW9uIDQwNzI4KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA5LDgg
KzEwOSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFs
bChpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHNlbGVj
dG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIC8vIEVs
ZW1lbnRUcmF2ZXJzYWwgQVBJCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfQ09NKQorICAgICAgICAv
LyBFbGVtZW50VHJhdmVyc2FsIEFQSQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dCBmaXJzdEVsZW1lbnRDaGlsZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQg
bGFzdEVsZW1lbnRDaGlsZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgcHJl
dmlvdXNFbGVtZW50U2libGluZzsKQEAgLTExOCw2ICsxMTgsMTIgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3Vu
dDsKICNlbmRpZgogCisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKQorICAgICAgICAv
LyBDU1NPTSBWaWV3IE1vZHVsZSBBUEkKKyAgICAgICAgQ2xpZW50UmVjdExpc3QgZ2V0Q2xpZW50
UmVjdHMoKTsKKyAgICAgICAgQ2xpZW50UmVjdCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyNl
bmRpZgorCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgLy8gT2Jq
ZWN0aXZlLUMgZXh0ZW5zaW9ucwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlubmVyVGV4dDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0MDcyOCkKKysrIFdlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDkgQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBNaW1lVHlwZUNvbnN0cnVjdG9yIE1p
bWVUeXBlOwogICAgICAgICBhdHRyaWJ1dGUgTWltZVR5cGVBcnJheUNvbnN0cnVjdG9yIE1pbWVU
eXBlQXJyYXk7CiAKKyAgICAgICAgYXR0cmlidXRlIENsaWVudFJlY3RDb25zdHJ1Y3RvciBDbGll
bnRSZWN0OworICAgICAgICBhdHRyaWJ1dGUgQ2xpZW50UmVjdExpc3RDb25zdHJ1Y3RvciBDbGll
bnRSZWN0TGlzdDsKKwogI2lmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgICAgICBhdHRyaWJ1dGUg
U3RvcmFnZUNvbnN0cnVjdG9yIFN0b3JhZ2U7CiAgICAgICAgIGF0dHJpYnV0ZSBTdG9yYWdlRXZl
bnRDb25zdHJ1Y3RvciBTdG9yYWdlRXZlbnQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MDczNikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDA5LTAyLTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIGZvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTcKKyAgICAgICAgUGxlYXNlIGlt
cGxlbWVudCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgYW5kIGdldENsaWVudFJlY3RzCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTM5NjY5PgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9kb21MaXN0
RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9k
b21MaXN0RW51bWVyYXRpb24uanM6CisgICAgICAgICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wMi0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDQwNzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVu
dW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBQ
QVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMg
bmFtZWROb2RlTWFwLml0ZW0oMikKIAogW29iamVjdCBIVE1MRm9ybUVsZW1lbnRdCi1QQVNTIHJl
c3VsdEFycmF5Lmxlbmd0aCBpcyAxMjgKK1BBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDEzMAog
UEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRBcnJheVswXS5pdGVtIGlz
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVswXQogUEFTUyByZXN1bHRB
cnJheVsxXS5pIGlzICcxJwpAQCAtNDEsNyArNDEsNyBAQCBQQVNTIHJlc3VsdEFycmF5WzJdLmkg
aXMgJzInCiBQQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3NlbGVjdCcpWzJdCiAKIFtvYmplY3QgSFRNTFNlbGVjdEVsZW1lbnRdCi1QQVNT
IHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxMzMKK1BBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDEz
NQogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRBcnJheVswXS5pdGVt
IGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24nKVswXQogUEFTUyByZXN1
bHRBcnJheVsxXS5pIGlzICcxJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0
MDcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw2ICszNjQsMTEgQEAgd2luZG93LkNo
YXJhY3RlckRhdGEucHJvdG90eXBlLnJlbW92ZUV2ZQogd2luZG93LkNoYXJhY3RlckRhdGEucHJv
dG90eXBlLnJlcGxhY2VDaGlsZCBbZnVuY3Rpb25dCiB3aW5kb3cuQ2hhcmFjdGVyRGF0YS5wcm90
b3R5cGUucmVwbGFjZURhdGEgW2Z1bmN0aW9uXQogd2luZG93LkNoYXJhY3RlckRhdGEucHJvdG90
eXBlLnN1YnN0cmluZ0RhdGEgW2Z1bmN0aW9uXQord2luZG93LkNsaWVudFJlY3QgW29iamVjdCBD
bGllbnRSZWN0Q29uc3RydWN0b3JdCit3aW5kb3cuQ2xpZW50UmVjdC5wcm90b3R5cGUgW29iamVj
dCBDbGllbnRSZWN0UHJvdG90eXBlXQord2luZG93LkNsaWVudFJlY3RMaXN0IFtvYmplY3QgQ2xp
ZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5DbGllbnRSZWN0TGlzdC5wcm90b3R5cGUg
W29iamVjdCBDbGllbnRSZWN0TGlzdFByb3RvdHlwZV0KK3dpbmRvdy5DbGllbnRSZWN0TGlzdC5w
cm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCiB3aW5kb3cuQ2xpcGJvYXJkIFtvYmplY3QgQ2xpcGJv
YXJkQ29uc3RydWN0b3JdCiB3aW5kb3cuQ2xpcGJvYXJkLnByb3RvdHlwZSBbb2JqZWN0IENsaXBi
b2FyZFByb3RvdHlwZV0KIHdpbmRvdy5DbGlwYm9hcmQucHJvdG90eXBlLmNsZWFyRGF0YSBbZnVu
Y3Rpb25dCkBAIC02MDgsNiArNjEzLDggQEAgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0
dHJpYnV0ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TIFtmdW5j
dGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlIFtmdW5jdGlv
bl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlTlMgW2Z1bmN0aW9u
XQord2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCBbZnVuY3Rp
b25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpZW50UmVjdHMgW2Z1bmN0aW9uXQog
d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9u
XQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlv
bl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtmdW5j
dGlvbl0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9kb21MaXN0RW51bWVy
YXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2Rv
bUxpc3RFbnVtZXJhdGlvbi5qcwkocmV2aXNpb24gNDA3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsNyArMTMwLDcgQEAgc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0iLCAibmFtZWRObwog
Ly8gSFRNTEZvcm1FbGVtZW50CiB2YXIgaHRtbEZvcm1FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKIHJlc3VsdEFycmF5ID0gaXRlcmF0ZUxpc3QoaHRt
bEZvcm1FbGVtZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTI4Iik7Citz
aG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzMCIpOwogc2hvdWxkQmUoInJlc3VsdEFy
cmF5WzBdLmkiLCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF0iKTsKIHNob3VsZEJlKCJyZXN1
bHRBcnJheVsxXS5pIiwgIicxJyIpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHNob3VsZEJlKCJyZXN1
bHRBcnJheVsyXS5pdGVtIiwgImRvY3VtZW4KIC8vIEhUTUxTZWxlY3RFbGVtZW50CiB2YXIgaHRt
bFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jylb
MF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxTZWxlY3RFbGVtZW50KTsKLXNob3Vs
ZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTMzIik7CitzaG91bGRCZSgicmVzdWx0QXJyYXku
bGVuZ3RoIiwgIjEzNSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7CiBz
aG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
Z2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYg
KzIzLDggQEAgUEFTUyBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi50b1N0cmluZygpIAogUEFTUyBD
U1NWYXJpYWJsZXNSdWxlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ1NTVmFyaWFibGVzUnVsZUNv
bnN0cnVjdG9yXScKIFBBU1MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ29uc3RydWN0b3JdJwogUEFTUyBDaGFy
YWN0ZXJEYXRhLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2hhcmFjdGVyRGF0YUNvbnN0cnVjdG9y
XScKK1BBU1MgQ2xpZW50UmVjdC50b1N0cmluZygpIGlzICdbb2JqZWN0IENsaWVudFJlY3RDb25z
dHJ1Y3Rvcl0nCitQQVNTIENsaWVudFJlY3RMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2xp
ZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0nCiBQQVNTIENsaXBib2FyZC50b1N0cmluZygpIGlzICdb
b2JqZWN0IENsaXBib2FyZENvbnN0cnVjdG9yXScKIFBBU1MgQ29tbWVudC50b1N0cmluZygpIGlz
ICdbb2JqZWN0IENvbW1lbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIENvdW50ZXIudG9TdHJpbmcoKSBp
cyAnW29iamVjdCBDb3VudGVyQ29uc3RydWN0b3JdJwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27443</attachid>
            <date>2009-02-06 22:48:50 -0800</date>
            <delta_ts>2009-02-08 14:39:40 -0800</delta_ts>
            <desc>Take 2</desc>
            <filename>getBounding2.diff</filename>
            <type>text/plain</type>
            <size>44609</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDc1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMDktMDItMDYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NworICAgICAgICBQ
bGVhc2UgaW1wbGVtZW50IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQgZ2V0Q2xpZW50UmVjdHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzk2Njk+CisKKyAgICAgICAgQ3Vyc29yeSBpbXBs
ZW1lbnRhdGlvbiBvZiBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQKKyAgICAgICAg
RWxlbWVudC5nZXRDbGllbnRSZWN0cy4gQWRkcyBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgY2xh
c3NlcworICAgICAgICBDbGllbnRSZWN0IGFuZCBDbGllbnRSZWN0TGlzdC4KKworICAgICAgICBU
ZXN0OiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
Q29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGRvbS9DbGllbnRSZWN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpDbGllbnRSZWN0KToKKyAgICAgICAgKiBkb20v
Q2xpZW50UmVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0Ojp0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpZW50UmVjdDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6Ym90
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpZW50UmVjdDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6
aGVpZ2h0KToKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IGRvbS9DbGllbnRSZWN0TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50
UmVjdExpc3Q6OkNsaWVudFJlY3RMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RM
aXN0Ojp+Q2xpZW50UmVjdExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdExpc3Q6
Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0TGlzdDo6aXRlbSk6CisgICAg
ICAgICogZG9tL0NsaWVudFJlY3RMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xp
ZW50UmVjdExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0NsaWVudFJlY3RMaXN0LmlkbDog
QWRkZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Z2V0Q2xpZW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0Qm91
bmRpbmdDbGllbnRSZWN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMDktMDIt
MDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEp1c3RpbiBHYXJjaWEuCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA0MDcyOCkKKysr
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcs
OCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBDYW52YXNQYXR0ZXJuIFwKICAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgXAogICAgIENoYXJhY3RlckRhdGEgXAorICAgIENsaWVudFJlY3QgXAor
ICAgIENsaWVudFJlY3RMaXN0IFwKICAgICBDbGlwYm9hcmQgXAogICAgIENvbW1lbnQgXAogICAg
IENvbnNvbGUgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0MDcyOCkKKysrIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsOCBAQCBJRExfQklORElOR1Mg
Kz0gXAogCVdlYkNvcmUvZG9tL0F0dHIuaWRsIFwKIAlXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24u
aWRsIFwKIAlXZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisJV2ViQ29yZS9kb20vQ2xp
ZW50UmVjdC5pZGwgXAorCVdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAJV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmlkbCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5pZGwgXAogCVdlYkNv
cmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaWRsIFwKQEAgLTU0Nyw2ICs1NDksMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9DbGFzc05hbWVzLmggXAogCVdlYkNvcmUvZG9t
L0NsYXNzTm9kZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmggXAorCVdl
YkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwIFwKKwlXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmggXAor
CVdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcCBcCisJV2ViQ29yZS9kb20vQ2xpZW50UmVj
dExpc3QuaCBcCiAJV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBcCiAJV2ViQ29yZS9kb20vQ2xp
cGJvYXJkLmggXAogCVdlYkNvcmUvZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwko
cmV2aXNpb24gNDA3MjgpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjUsNiArMjY1LDggQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBjc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaWRsIFwKICAgICBkb20vQXR0ci5pZGwgXAogICAgIGRvbS9DaGFyYWN0ZXJE
YXRhLmlkbCBcCisgICAgZG9tL0NsaWVudFJlY3QuaWRsIFwKKyAgICBkb20vQ2xpZW50UmVjdExp
c3QuaWRsIFwKICAgICBkb20vQ2xpcGJvYXJkLmlkbCBcCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5p
ZGwgXAogICAgIGRvbS9Db21tZW50LmlkbCBcCkBAIC01NjMsNiArNTY1LDggQEAgU09VUkNFUyAr
PSBcCiAgICAgZG9tL0NoaWxkTm9kZUxpc3QuY3BwIFwKICAgICBkb20vQ2xhc3NOYW1lcy5jcHAg
XAogICAgIGRvbS9DbGFzc05vZGVMaXN0LmNwcCBcCisgICAgZG9tL0NsaWVudFJlY3QuY3BwIFwK
KyAgICBkb20vQ2xpZW50UmVjdExpc3QuY3BwIFwKICAgICBkb20vQ2xpcGJvYXJkLmNwcCBcCiAg
ICAgZG9tL0NsaXBib2FyZEV2ZW50LmNwcCBcCiAgICAgZG9tL0NvbW1lbnQuY3BwIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0MDcyOCkKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMu
YmtsCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNiArMjI5LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5z
IHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Q2FudmFzUGF0dGVybi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NoYXJhY3RlckRhdGEuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGll
bnRSZWN0LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2xpZW50UmVjdExp
c3QuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGlwYm9hcmQuY3BwCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21tZW50LmNwcAogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQ29uc29sZS5jcHAKQEAgLTM5Miw2ICszOTQsOCBAQCBUaGlz
IGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9DaGlsZE5v
ZGVMaXN0LmNwcAogICAgICAgICBkb20vQ2xhc3NOYW1lcy5jcHAKICAgICAgICAgZG9tL0NsYXNz
Tm9kZUxpc3QuY3BwCisgICAgICAgIGRvbS9DbGllbnRSZWN0LmNwcAorICAgICAgICBkb20vQ2xp
ZW50UmVjdExpc3QuY3BwCiAgICAgICAgIGRvbS9DbGlwYm9hcmQuY3BwCiAgICAgICAgIGRvbS9D
bGlwYm9hcmRFdmVudC5jcHAKICAgICAgICAgZG9tL0NvbW1lbnQuY3BwCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE2LDYgKzYx
NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
Q2xpZW50UmVjdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0NsaWVudFJlY3RMaXN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ1NTVmFyaWFibGVzUnVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KQEAgLTExMDY2LDYgKzExMDc0LDM4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDbGllbnRSZWN0LmNwcCINCisJCQkJPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
CVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXENsaWVudFJlY3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDbGllbnRSZWN0TGlzdC5jcHAiDQorCQkJCT4NCisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJ
CT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGRvbVxDbGllbnRSZWN0TGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENsaXBib2FyZC5jcHAiDQogCQkJCT4NCiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwOTksNiArNDA5OSwxNiBAQAogCQlC
Q0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBL
VVJMSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQkZCNTNDMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNBMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAqLzsgfTsKIAkJQkNCRkI1M0QwRENE
MjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RP
TVdpbmRvd1NoZWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkNDMDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzcwRjNDRTFC
NzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwICovOyB9OworCQlCQ0MwNjU3RTBGM0NFMUI3MDBD
RDJEODcgLyogQ2xpZW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNDMDY1NzgwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCAqLzsg
fTsKKwkJQkNDMDY1N0YwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3OTBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdC5pZGwgKi87IH07CisJCUJDQzA2NTgwMEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3QTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExp
c3QuY3BwICovOyB9OworCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2
NTdCMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICovOyB9OworCQlCQ0MwNjU4
MjBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaWRsIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3QzBGM0NFMUI3MDBDRDJEODcg
LyogQ2xpZW50UmVjdExpc3QuaWRsICovOyB9OworCQlCQ0MwNjU4NzBGM0NFMkE3MDBDRDJEODcg
LyogSlNDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQzA2NTgzMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwICov
OyB9OworCQlCQ0MwNjU4ODBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NDBGM0NFMkE3
MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggKi87IH07CisJCUJDQzA2NTg5MEYzQ0UyQTcwMENE
MkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTg1MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJl
Y3RMaXN0LmNwcCAqLzsgfTsKKwkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQzA2NTg2MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggKi87IH07CiAJ
CUJDQzQzODc4MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNDM4Nzcw
RTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJ
CUJDQzU3MzM1MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzMzMzBENjk1QkJFMDA2
RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlCQ0M1NzMzNjBENjk1QkJFMDA2
RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzU3MzM0MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVz
c0V2ZW50Lm1tICovOyB9OwpAQCAtODg4MCw2ICs4ODkwLDE2IEBACiAJCUJDQkQyMUFBMEU0MTdB
RDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0Qy
OUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1NoZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dTaGVsbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3NzBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGll
bnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1NzgwRjNDRTFC
NzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2xpZW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3OTBG
M0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q2xpZW50UmVjdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQzA2NTdBMEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGllbnRSZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDQzA2NTdCMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRSZWN0TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3QzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50
UmVjdExpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENsaWVudFJlY3RMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODMwRjNDRTJBNzAwQ0QyRDg3IC8q
IEpTQ2xpZW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NsaWVudFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU4NDBG
M0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQ2xpZW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
Q0MwNjU4NTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NsaWVudFJlY3RMaXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODYwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xp
ZW50UmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbGllbnRS
ZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M0Mzg3NzBFODg2Q0M3
MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzU3MzMzMEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Q
cm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVByb2dy
ZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNTczMzQwRDY5NUJC
RTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01Qcm9ncmVzc0V2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTIxODEsNiArMTIyMDEsMTIgQEAKIAkJQTgzQjc5MEUwQ0NBRkY5NzAwMEIw
ODI1IC8qIENTUyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQkNDMDY1ODMwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5jcHAgKi8sCisJCQkJ
QkNDMDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oICovLAorCQkJCUJDQzA2
NTg1MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmNwcCAqLywKKwkJCQlCQ0Mw
NjU4NjBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5oICovLAorCQkJCTkzMDcw
NUQ3MDlFMEM5QjcwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwICovLAorCQkJCTkzMDcwNUQ5MDlF
MEM5QkYwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuaCAqLywKIAkJCQlCQzQ2QzFGMDBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NDaGFyc2V0UnVsZS5jcHAgKi8sCiAJCQkJQkM0NkMxRjEwQzBEREM4RjAw
MjBDRkMzIC8qIEpTQ1NTQ2hhcnNldFJ1bGUuaCAqLywKIAkJCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovLApAQCAtMTIyMTEsMTMgKzEyMjM3LDEx
IEBACiAJCQkJQkM2ODZDNzkwRTBDMzMwMTAwREU4QTA4IC8qIEpTQ1NTVmFyaWFibGVzRGVjbGFy
YXRpb24uaCAqLywKIAkJCQlCQzY4NkM3QTBFMEMzMzAxMDBERThBMDggLyogSlNDU1NWYXJpYWJs
ZXNSdWxlLmNwcCAqLywKIAkJCQlCQzY4NkM3QjBFMEMzMzAxMDBERThBMDggLyogSlNDU1NWYXJp
YWJsZXNSdWxlLmggKi8sCi0JCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291bnRl
ci5jcHAgKi8sCi0JCQkJOTMwNzA1RDkwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICov
LAogCQkJCUJDM0MzOUI0MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5jcHAgKi8sCiAJ
CQkJQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8sCi0JCQkJQkMz
NDUyNTUwRDdFMDI4NTAwMTY1NzRBIC8qIEpTUkdCQ29sb3IubHV0LmggKi8sCiAJCQkJQkNGRTJG
MEYwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgKi8sCiAJCQkJQkNGRTJGMTAwQzFCNTgz
NzAwMjAyMzVGIC8qIEpTUmVjdC5oICovLAorCQkJCUJDMzQ1MjU1MEQ3RTAyODUwMDE2NTc0QSAv
KiBKU1JHQkNvbG9yLmx1dC5oICovLAogCQkJCUJDRTAxMzk4MEMwQkVGMTgwMDQzODYwQSAvKiBK
U1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDRTAxMzk5MEMwQkVGMTgwMDQzODYwQSAvKiBKU1N0
eWxlU2hlZXQuaCAqLywKIAkJCQlBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNo
ZWV0TGlzdC5jcHAgKi8sCkBAIC0xNDQ4MCw2ICsxNDUwNCwxMiBAQAogCQkJCUY1MjNEMzA5MDJE
RTQ0NzYwMTg2MzVDQSAvKiBYTUxUb2tlbml6ZXIuY3BwICovLAogCQkJCUY1MjNEMzBBMDJERTQ0
NzYwMTg2MzVDQSAvKiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJCQk1NEM1MEY3QTBFODAxREYzMDA5
ODMyQTAgLyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAgKi8sCisJCQkJQkNDMDY1NzcwRjNDRTFC
NzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwICovLAorCQkJCUJDQzA2NTc4MEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmggKi8sCisJCQkJQkNDMDY1NzkwRjNDRTFCNzAwQ0QyRDg3IC8q
IENsaWVudFJlY3QuaWRsICovLAorCQkJCUJDQzA2NTdBMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGll
bnRSZWN0TGlzdC5jcHAgKi8sCisJCQkJQkNDMDY1N0IwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVu
dFJlY3RMaXN0LmggKi8sCisJCQkJQkNDMDY1N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJl
Y3RMaXN0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9tOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTE2NzE1LDYgKzE2NzQ1LDEwIEBACiAJCQkJMUE1NjlEMjUwRDdFMkI4MjAw
N0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUUwOTlF
NjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTZE
QjQzMEYzQTg4MEUwMDU3M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkNDMDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8qIEpT
Q2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTY4MzAsNiArMTY4NjQsOCBAQAog
CQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQkNDMDY1N0YwRjNDRTFCNzAw
Q0QyRDg3IC8qIENsaWVudFJlY3QuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlCQ0MwNjU4MjBG
M0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE4Njk1LDYgKzE4NzMxLDEwIEBACiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1
bnRpbWVfcm9vdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1
ODEgLyogdmlzaWJsZV91bml0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk2REI0NjBGM0E4
ODIyMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkNDMDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDQzA2NTg3MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpT
Q2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2RvbS9DbGll
bnRSZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDbGllbnRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2xpZW50UmVjdDo6Q2xp
ZW50UmVjdCgpCit7Cit9CisKK0NsaWVudFJlY3Q6OkNsaWVudFJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKKyAgICA6IG1fcmVjdChyZWN0KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICoKKyAqLworCisjaWZuZGVmIENsaWVudFJlY3RfaAorI2RlZmluZSBDbGllbnRSZWN0X2gK
KworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgSW50UmVjdDsgCisKKyAgICBjbGFzcyBDbGllbnRSZWN0IDogcHVibGljIFJlZkNvdW50
ZWQ8Q2xpZW50UmVjdD4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2xpZW50UmVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3QpOyB9
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IGNyZWF0ZShjb25zdCBJbnRS
ZWN0JiByZWN0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpZW50UmVjdChyZWN0KSk7IH0KKwor
ICAgICAgICBmbG9hdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QueSgpOyB9CisgICAgICAg
IGZsb2F0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KKyAgICAgICAg
ZmxvYXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisgICAgICAg
IGZsb2F0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QueCgpOyB9CisgICAgICAgIGZsb2F0
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KKyAgICAgICAgZmxvYXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBDbGllbnRSZWN0KCk7CisgICAgICAgIENsaWVudFJlY3QoY29uc3QgSW50UmVj
dCYpOworCisgICAgICAgIEZsb2F0UmVjdCBtX3JlY3Q7CisgICAgfTsgCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENsaWVudFJlY3RfaAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptZXJnZWlu
Zm8KCkluZGV4OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9DbGllbnRSZWN0LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsaWVu
dFJlY3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21v
ZHVsZSB2aWV3IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3IKKyAgICBdIENsaWVudFJlY3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQg
dG9wOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcmlnaHQ7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBib3R0b207CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBmbG9hdCBsZWZ0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgd2lkdGg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBoZWlnaHQ7CisgICAgfTsKKworfQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5pZGwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1lcmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNsaWVudFJlY3RMaXN0LmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiQ2xpZW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NsaWVudFJlY3RMaXN0
OjpDbGllbnRSZWN0TGlzdCgpCit7Cit9CisKK0NsaWVudFJlY3RMaXN0OjpDbGllbnRSZWN0TGlz
dChjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCit7CisgICAgbV9saXN0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocXVhZHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1YWRzLnNpemUoKTsgKytpKQorICAgICAgICBtX2xpc3QuYXBwZW5kKENsaWVudFJlY3Q6OmNy
ZWF0ZShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKSk7Cit9CisKK0NsaWVudFJlY3RM
aXN0Ojp+Q2xpZW50UmVjdExpc3QoKQoreworfQorCit1bnNpZ25lZCBDbGllbnRSZWN0TGlzdDo6
bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0LnNpemUoKTsKK30KKworQ2xpZW50
UmVjdCogQ2xpZW50UmVjdExpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGlu
ZGV4ID49IG1fbGlzdC5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHRo
cm93IGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgLy8gZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUv
ZG9tL0NsaWVudFJlY3RMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJ
bmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9DbGllbnRSZWN0TGlzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xpZW50
UmVjdExpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisj
aWZuZGVmIENsaWVudFJlY3RMaXN0X2gKKyNkZWZpbmUgQ2xpZW50UmVjdExpc3RfaAorCisjaW5j
bHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgQ2xpZW50UmVjdDsKKworICAgIGNsYXNzIENsaWVudFJl
Y3RMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpZW50UmVjdExpc3Q+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ2xpZW50UmVjdExpc3QpOyB9CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaWVudFJlY3RMaXN0PiBjcmVhdGUoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpZW50UmVjdExpc3QocXVhZHMpKTsgfQorICAg
ICAgICB+Q2xpZW50UmVjdExpc3QoKTsKKworICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKKyAgICAgICAgQ2xpZW50UmVjdCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBDbGllbnRSZWN0TGlzdCgpOworICAgICAgICBDbGllbnRSZWN0TGlzdChj
b25zdCBWZWN0b3I8RmxvYXRRdWFkPiYpOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q2xpZW50
UmVjdD4gPiBtX2xpc3Q7CisgICAgfTsgCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIENsaWVudFJlY3RMaXN0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9t
L0NsaWVudFJlY3RMaXN0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1lcmdlaW5mbwoKSW5kZXg6
IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9DbGllbnRSZWN0TGlzdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRS
ZWN0TGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKwor
bW9kdWxlIHZpZXcgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1
Y3RvciwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIENsaWVudFJlY3RMaXN0IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBD
bGllbnRSZWN0IGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAg
ICAvLyBGSVhNRTogRml4IGxpc3QgYmVoYXZpb3IgdG8gYWxsb3cgY3VzdG9tIGV4Y2VwdGlvbnMg
dG8gYmUgdGhyb3duLgorICAgIH07CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUv
ZG9tL0NsaWVudFJlY3RMaXN0LmlkbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJ
bmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIK
KyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCisjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1l
bnRSYXJlRGF0YS5oIgpAQCAtNDQsNiArNDYsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTQyMiw2ICs0MjUs
MzkgQEAgaW50IEVsZW1lbnQ6OnNjcm9sbEhlaWdodCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK1Bh
c3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkgY29uc3QK
K3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gdGhpcy0+cmVuZGVyQm94KCk7CisgICAg
aWYgKCFyZW5kZXJCb3gpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKCk7
CisKKyAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKKyAgICByZW5kZXJCb3gtPmFic29sdXRl
UXVhZHMocXVhZHMpOworICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKHF1YWRzKTsK
K30KKworUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKSBjb25zdAoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gdGhpcy0+cmVuZGVyQm94
KCk7CisgICAgaWYgKCFyZW5kZXJCb3gpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUoKTsKKworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOworICAgIHJlbmRlckJveC0+YWJz
b2x1dGVRdWFkcyhxdWFkcyk7CisKKyAgICBpZiAocXVhZHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CisKKyAgICBJbnRSZWN0IHJlc3VsdCA9IHF1YWRz
WzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBx
dWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzdWx0LnVuaXRlKHF1YWRzW2ldLmVuY2xvc2lu
Z0JvdW5kaW5nQm94KCkpOworCisgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZXN1bHQp
OworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25z
dCBFbGVtZW50KiBlKQogewogICAgIHJldHVybiBlICYmIGUtPmRvY3VtZW50KCktPmlzSFRNTERv
Y3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNDA3Mjgp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDgg
QEAgY2xhc3MgQXR0cmlidXRlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIEVs
ZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBDbGllbnRSZWN0OworY2xhc3Mg
Q2xpZW50UmVjdExpc3Q7CiAKIGNsYXNzIEVsZW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7
CiBwdWJsaWM6CkBAIC04Miw2ICs4NCw5IEBAIHB1YmxpYzoKICAgICBpbnQgc2Nyb2xsV2lkdGgo
KTsKICAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7CiAKKyAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RM
aXN0PiBnZXRDbGllbnRSZWN0cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4g
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3Q7CisKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2Fs
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNDA3MjgpCisr
KyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMDksOCArMTA5LDggQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKGluIFtDb252ZXJ0
VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgLy8gRWxlbWVudFRyYXZlcnNh
bCBBUEkKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DT00pCisgICAgICAgIC8vIEVsZW1lbnRUcmF2
ZXJzYWwgQVBJCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGZpcnN0RWxlbWVu
dENoaWxkOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBsYXN0RWxlbWVudENo
aWxkOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBwcmV2aW91c0VsZW1lbnRT
aWJsaW5nOwpAQCAtMTE4LDYgKzExOCwxMiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNoaWxkRWxlbWVudENvdW50OwogI2VuZGlmCiAK
KyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCisgICAgICAgIC8vIENTU09NIFZpZXcg
TW9kdWxlIEFQSQorICAgICAgICBDbGllbnRSZWN0TGlzdCBnZXRDbGllbnRSZWN0cygpOworICAg
ICAgICBDbGllbnRSZWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworI2VuZGlmCisKICNpZiBk
ZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKQogICAgICAgICAvLyBPYmplY3RpdmUtQyBleHRl
bnNpb25zCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwpJ
bmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDQwNzI4KQorKysgV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3OSw2ICszNzksOSBAQCBtb2R1bGUgd2luZG93
IHsKICAgICAgICAgYXR0cmlidXRlIE1pbWVUeXBlQ29uc3RydWN0b3IgTWltZVR5cGU7CiAgICAg
ICAgIGF0dHJpYnV0ZSBNaW1lVHlwZUFycmF5Q29uc3RydWN0b3IgTWltZVR5cGVBcnJheTsKIAor
ICAgICAgICBhdHRyaWJ1dGUgQ2xpZW50UmVjdENvbnN0cnVjdG9yIENsaWVudFJlY3Q7CisgICAg
ICAgIGF0dHJpYnV0ZSBDbGllbnRSZWN0TGlzdENvbnN0cnVjdG9yIENsaWVudFJlY3RMaXN0Owor
CiAjaWYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAgIGF0dHJpYnV0ZSBTdG9yYWdlQ29uc3Ry
dWN0b3IgU3RvcmFnZTsKICAgICAgICAgYXR0cmlidXRlIFN0b3JhZ2VFdmVudENvbnN0cnVjdG9y
IFN0b3JhZ2VFdmVudDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwNzM2KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDItMDYgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODk3CisgICAgICAgIFBsZWFzZSBpbXBsZW1lbnQgZ2V0Qm91bmRpbmdD
bGllbnRSZWN0IGFuZCBnZXRDbGllbnRSZWN0cworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEz
OTY2OT4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2RvbUxpc3RFbnVtZXJhdGlv
bi5qczoKKyAgICAgICAgKiBmYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
OgorCiAyMDA5LTAyLTA1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NDA3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIFBBU1MgcmVzdWx0QXJyYXlb
Ml0uaSBpcyAnMicKIFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBuYW1lZE5vZGVNYXAuaXRl
bSgyKQogCiBbb2JqZWN0IEhUTUxGb3JtRWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVuZ3Ro
IGlzIDEyOAorUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTMwCiBQQVNTIHJlc3VsdEFycmF5
WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMgJzEn
CkBAIC00MSw3ICs0MSw3IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1MgcmVz
dWx0QXJyYXlbMl0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0
JylbMl0KIAogW29iamVjdCBIVE1MU2VsZWN0RWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVu
Z3RoIGlzIDEzMworUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTM1CiBQQVNTIHJlc3VsdEFy
cmF5WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMg
JzEnCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5n
Q2xpZW50UmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYxIEBACitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEKK3RvcDogNDIKK2xlZnQ6
IDgKK3dpZHRoOiAzMDAKK2hlaWdodDogMTAwCisKK0NsaWVudCBib3VuZGluZyByZWN0IGZvciAj
MgordG9wOiAxOTIKK2xlZnQ6IDgKK3dpZHRoOiAzMjAKK2hlaWdodDogMTIwCisKK0NsaWVudCBi
b3VuZGluZyByZWN0IGZvciAjMwordG9wOiAzNjIKK2xlZnQ6IDE4Cit3aWR0aDogMzAwCitoZWln
aHQ6IDEwMAorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzQKK3RvcDogNDkxCitsZWZ0OiAz
Nword2lkdGg6IDE0MgoraGVpZ2h0OiAxNDIKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM1
Cit0b3A6IDY2MgorbGVmdDogOAord2lkdGg6IDMwMAoraGVpZ2h0OiAyMzQKKworQ2xpZW50IGJv
dW5kaW5nIHJlY3QgZm9yICM2Cit0b3A6IDk0NgorbGVmdDogOAord2lkdGg6IDI5OQoraGVpZ2h0
OiAxODAKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM3Cit0b3A6IDExNzYKK2xlZnQ6IDgK
K3dpZHRoOiAzMDAKK2hlaWdodDogNDYKKworMS4KKworMi4KKworMy4KKworNC4KKworNS4KKwor
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQs
IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh
dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx
dWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg
dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0
ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx
dWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KKzYuCisKK0xv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBz
ZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25h
IGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRp
b24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVh
dC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZl
bGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1
ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVp
IG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCis3LgorCit0YWJs
ZSBkYXRhCXRhYmxlIGRhdGEKK3RhYmxlIGRhdGEJdGFibGUgZGF0YQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOSBAQAorPHN0eWxlPgorICAgICNiYXNlIHsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNi
b3JkZXIgeworICAgICAgICBib3JkZXI6IDEwcHggc29saWQgIzk5OTsKKyAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNtYXJnaW4gewor
ICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICB9CisKKyAgICAjdHJhbnNmb3JtIHsKKyAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTBweCkgcm90YXRlKDQ1ZGVnKTsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNjb2xsdW1uIHsK
KyAgICAgICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7CisgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICB9CisKKyAgICAjaW5saW5lIHsKKyAgICAgICAgZGlzcGxheTogaW5saW5lOworICAgIH0K
KworICAgICN0YWJsZSB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICAudGVz
dEJveCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAgIC5w
YXJlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgfQorCisgICAgLmJib3ggeworICAg
ICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgb3V0bGluZTogNXB4IHNvbGlkIHJnYmEo
MjU1LCAwLCAwLCAuNzUpOworICAgIH0KKworICAgICNjb25zb2xlIHsKKyAgICAgICAgcG9zaXRp
b246YWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDUwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHA+MS48L3A+PGRpdiBpZD0iYmFzZSIgY2xhc3M9InRl
c3RCb3giPjwvZGl2PgorPHA+Mi48L3A+PGRpdiBpZD0iYm9yZGVyIiBjbGFzcz0idGVzdEJveCI+
PC9kaXY+Cis8cD4zLjwvcD48ZGl2IGlkPSJtYXJnaW4iIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4K
KzxwPjQuPC9wPjxkaXYgaWQ9InRyYW5zZm9ybSIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgorPHA+
NS48L3A+PGRpdiBpZD0iY29sbHVtbiIgY2xhc3M9InRlc3RCb3giPkxvcmVtIGlwc3VtIGRvbG9y
IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0
ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5p
bSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJv
cmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGly
dXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVt
IGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0
IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1
bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+Cis8cD42LjwvcD48ZGl2IGNsYXNz
PSJwYXJlbnQiPjxkaXYgaWQ9ImlubGluZSIgY2xhc3M9InRlc3RCb3giPkxvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21v
ZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQg
ZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBs
YWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRl
IGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2ls
bHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2Fl
Y2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVz
ZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+PC9kaXY+Cis8cD43LjwvcD48
dGFibGUgaWQ9InRhYmxlIiBjbGFzcz0idGVzdEJveCI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48
dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBk
YXRhPC90ZD48L3RyPjwvdGFibGU+CisKKworPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtc2cgKyAnXG4nKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9nQ2xpZW50UmVjdChyZWN0
KQorICAgIHsKKyAgICAgICAgbG9nKCJ0b3A6ICIgKyByZWN0LnRvcCk7CisgICAgICAgIGxvZygi
bGVmdDogIiArIHJlY3QubGVmdCk7CisgICAgICAgIGxvZygid2lkdGg6ICIgKyByZWN0LndpZHRo
KTsKKyAgICAgICAgbG9nKCJoZWlnaHQ6ICIgKyByZWN0LmhlaWdodCk7CisgICAgICAgIGxvZygi
Iik7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkQkJveE92ZXJDbGllbnRSZWN0KHJlY3QpCisg
ICAgeworICAgICAgICB2YXIgYmJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBiYm94LmNsYXNzTmFtZSA9ICJiYm94IjsKKyAgICAgICAgdmFyIHN0eWxlID0gIiI7
CisgICAgICAgIHN0eWxlICs9ICJsZWZ0OiAiICAgKyByZWN0LmxlZnQgKyAicHg7IjsKKyAgICAg
ICAgc3R5bGUgKz0gInRvcDogIiAgICArIHJlY3QudG9wICsgInB4OyI7CisgICAgICAgIHN0eWxl
ICs9ICJ3aWR0aDogIiAgKyByZWN0LndpZHRoICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJo
ZWlnaHQ6ICIgKyByZWN0LmhlaWdodCArICJweDsiOworICAgICAgICBiYm94LnNldEF0dHJpYnV0
ZSgic3R5bGUiLCBzdHlsZSk7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBl
bmRDaGlsZChiYm94KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KG51bWJlciwgZWxlbWVu
dCkKKyAgICB7CisgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgICAgICBhZGRCQm94T3ZlckNsaWVudFJlY3QoYm91bmRpbmdSZWN0
KTsKKyAgICAgICAgbG9nKCJDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIyIgKyBudW1iZXIpOwor
ICAgICAgICBsb2dDbGllbnRSZWN0KGJvdW5kaW5nUmVjdCk7CisgICAgfQorCisgICAgdmFyIHRl
c3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidGVzdEJveCIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRlc3QoaSArIDEs
IHRlc3RzW2ldKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA0MDcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw2ICszNjQsMTEgQEAgd2luZG93
LkNoYXJhY3RlckRhdGEucHJvdG90eXBlLnJlbW92ZUV2ZQogd2luZG93LkNoYXJhY3RlckRhdGEu
cHJvdG90eXBlLnJlcGxhY2VDaGlsZCBbZnVuY3Rpb25dCiB3aW5kb3cuQ2hhcmFjdGVyRGF0YS5w
cm90b3R5cGUucmVwbGFjZURhdGEgW2Z1bmN0aW9uXQogd2luZG93LkNoYXJhY3RlckRhdGEucHJv
dG90eXBlLnN1YnN0cmluZ0RhdGEgW2Z1bmN0aW9uXQord2luZG93LkNsaWVudFJlY3QgW29iamVj
dCBDbGllbnRSZWN0Q29uc3RydWN0b3JdCit3aW5kb3cuQ2xpZW50UmVjdC5wcm90b3R5cGUgW29i
amVjdCBDbGllbnRSZWN0UHJvdG90eXBlXQord2luZG93LkNsaWVudFJlY3RMaXN0IFtvYmplY3Qg
Q2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5DbGllbnRSZWN0TGlzdC5wcm90b3R5
cGUgW29iamVjdCBDbGllbnRSZWN0TGlzdFByb3RvdHlwZV0KK3dpbmRvdy5DbGllbnRSZWN0TGlz
dC5wcm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCiB3aW5kb3cuQ2xpcGJvYXJkIFtvYmplY3QgQ2xp
cGJvYXJkQ29uc3RydWN0b3JdCiB3aW5kb3cuQ2xpcGJvYXJkLnByb3RvdHlwZSBbb2JqZWN0IENs
aXBib2FyZFByb3RvdHlwZV0KIHdpbmRvdy5DbGlwYm9hcmQucHJvdG90eXBlLmNsZWFyRGF0YSBb
ZnVuY3Rpb25dCkBAIC02MDgsNiArNjEzLDggQEAgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdl
dEF0dHJpYnV0ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TIFtm
dW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlIFtmdW5j
dGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlTlMgW2Z1bmN0
aW9uXQord2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCBbZnVu
Y3Rpb25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpZW50UmVjdHMgW2Z1bmN0aW9u
XQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0
aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5j
dGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtm
dW5jdGlvbl0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9kb21MaXN0RW51
bWVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L2RvbUxpc3RFbnVtZXJhdGlvbi5qcwkocmV2aXNpb24gNDA3MjgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAsNyArMTMwLDcgQEAgc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0iLCAibmFtZWRO
bwogLy8gSFRNTEZvcm1FbGVtZW50CiB2YXIgaHRtbEZvcm1FbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKIHJlc3VsdEFycmF5ID0gaXRlcmF0ZUxpc3Qo
aHRtbEZvcm1FbGVtZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTI4Iik7
CitzaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzMCIpOwogc2hvdWxkQmUoInJlc3Vs
dEFycmF5WzBdLmkiLCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF0iKTsKIHNob3VsZEJlKCJy
ZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHNob3VsZEJlKCJy
ZXN1bHRBcnJheVsyXS5pdGVtIiwgImRvY3VtZW4KIC8vIEhUTUxTZWxlY3RFbGVtZW50CiB2YXIg
aHRtbFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0
JylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxTZWxlY3RFbGVtZW50KTsKLXNo
b3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTMzIik7CitzaG91bGRCZSgicmVzdWx0QXJy
YXkubGVuZ3RoIiwgIjEzNSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7
CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicx
JyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDcyOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDggQEAgUEFTUyBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi50b1N0cmluZygpIAogUEFT
UyBDU1NWYXJpYWJsZXNSdWxlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ1NTVmFyaWFibGVzUnVs
ZUNvbnN0cnVjdG9yXScKIFBBU1MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ29uc3RydWN0b3JdJwogUEFTUyBD
aGFyYWN0ZXJEYXRhLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2hhcmFjdGVyRGF0YUNvbnN0cnVj
dG9yXScKK1BBU1MgQ2xpZW50UmVjdC50b1N0cmluZygpIGlzICdbb2JqZWN0IENsaWVudFJlY3RD
b25zdHJ1Y3Rvcl0nCitQQVNTIENsaWVudFJlY3RMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qg
Q2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0nCiBQQVNTIENsaXBib2FyZC50b1N0cmluZygpIGlz
ICdbb2JqZWN0IENsaXBib2FyZENvbnN0cnVjdG9yXScKIFBBU1MgQ29tbWVudC50b1N0cmluZygp
IGlzICdbb2JqZWN0IENvbW1lbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIENvdW50ZXIudG9TdHJpbmco
KSBpcyAnW29iamVjdCBDb3VudGVyQ29uc3RydWN0b3JdJwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27471</attachid>
            <date>2009-02-08 14:39:40 -0800</date>
            <delta_ts>2009-02-10 13:00:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>55043</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDc3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDktMDItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NworICAgICAgICBQ
bGVhc2UgaW1wbGVtZW50IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQgZ2V0Q2xpZW50UmVjdHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzk2Njk+CisKKyAgICAgICAgQ3Vyc29yeSBpbXBs
ZW1lbnRhdGlvbiBvZiBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQKKyAgICAgICAg
RWxlbWVudC5nZXRDbGllbnRSZWN0cy4gQWRkcyBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgY2xh
c3NlcworICAgICAgICBDbGllbnRSZWN0IGFuZCBDbGllbnRSZWN0TGlzdC4KKworICAgICAgICBU
ZXN0czogZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldENsaWVudFJlY3RzLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2Vz
LmJrbDoKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpZW50UmVjdDo6Q2xpZW50UmVjdCk6CisgICAgICAgICogZG9tL0NsaWVudFJlY3Qu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJl
Y3Q6OnJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmJvdHRvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVu
dFJlY3Q6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmhlaWdodCk6Cisg
ICAgICAgICogZG9tL0NsaWVudFJlY3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQ2xpZW50
UmVjdExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0OjpD
bGllbnRSZWN0TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0TGlzdDo6fkNsaWVu
dFJlY3RMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0OjpsZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdExpc3Q6Oml0ZW0pOgorICAgICAgICAqIGRvbS9D
bGllbnRSZWN0TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9DbGllbnRSZWN0TGlzdC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldENs
aWVudFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50
UmVjdCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDA5LTAyLTA4ICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBm
aXguCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA0MDc3MCkKKysrIFdlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBET01fQ0xB
U1NFUyA9IFwKICAgICBDYW52YXNQYXR0ZXJuIFwKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgXAogICAgIENoYXJhY3RlckRhdGEgXAorICAgIENsaWVudFJlY3QgXAorICAgIENsaWVudFJl
Y3RMaXN0IFwKICAgICBDbGlwYm9hcmQgXAogICAgIENvbW1lbnQgXAogICAgIENvbnNvbGUgXApJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA0MDc3MCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNv
cmUvZG9tL0F0dHIuaWRsIFwKIAlXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaWRsIFwKIAlXZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisJV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5pZGwg
XAorCVdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAJV2ViQ29yZS9kb20vQ2xpcGJv
YXJkLmlkbCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5pZGwgXAogCVdlYkNvcmUvZG9tL0RPTUNv
cmVFeGNlcHRpb24uaWRsIFwKQEAgLTU0Nyw2ICs1NDksMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2RvbS9DbGFzc05hbWVzLmggXAogCVdlYkNvcmUvZG9tL0NsYXNzTm9kZUxp
c3QuY3BwIFwKIAlXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmggXAorCVdlYkNvcmUvZG9tL0Ns
aWVudFJlY3QuY3BwIFwKKwlXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmggXAorCVdlYkNvcmUvZG9t
L0NsaWVudFJlY3RMaXN0LmNwcCBcCisJV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaCBcCiAJ
V2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBcCiAJV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmggXAog
CVdlYkNvcmUvZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNDA3
NzApCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1
LDggQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aWRsIFwKICAgICBkb20vQXR0ci5pZGwgXAogICAgIGRvbS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisg
ICAgZG9tL0NsaWVudFJlY3QuaWRsIFwKKyAgICBkb20vQ2xpZW50UmVjdExpc3QuaWRsIFwKICAg
ICBkb20vQ2xpcGJvYXJkLmlkbCBcCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5pZGwgXAogICAgIGRv
bS9Db21tZW50LmlkbCBcCkBAIC01NjMsNiArNTY1LDggQEAgU09VUkNFUyArPSBcCiAgICAgZG9t
L0NoaWxkTm9kZUxpc3QuY3BwIFwKICAgICBkb20vQ2xhc3NOYW1lcy5jcHAgXAogICAgIGRvbS9D
bGFzc05vZGVMaXN0LmNwcCBcCisgICAgZG9tL0NsaWVudFJlY3QuY3BwIFwKKyAgICBkb20vQ2xp
ZW50UmVjdExpc3QuY3BwIFwKICAgICBkb20vQ2xpcGJvYXJkLmNwcCBcCiAgICAgZG9tL0NsaXBi
b2FyZEV2ZW50LmNwcCBcCiAgICAgZG9tL0NvbW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
CShyZXZpc2lvbiA0MDc3MCkKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjksNiArMjI5LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9m
IGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2FudmFzUGF0dGVy
bi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NoYXJhY3RlckRh
dGEuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGllbnRSZWN0LmNwcAor
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2xpZW50UmVjdExpc3QuY3BwCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGlwYm9hcmQuY3BwCiAgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21tZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQ29uc29sZS5jcHAKQEAgLTM5Miw2ICszOTQsOCBAQCBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNwcAog
ICAgICAgICBkb20vQ2xhc3NOYW1lcy5jcHAKICAgICAgICAgZG9tL0NsYXNzTm9kZUxpc3QuY3Bw
CisgICAgICAgIGRvbS9DbGllbnRSZWN0LmNwcAorICAgICAgICBkb20vQ2xpZW50UmVjdExpc3Qu
Y3BwCiAgICAgICAgIGRvbS9DbGlwYm9hcmQuY3BwCiAgICAgICAgIGRvbS9DbGlwYm9hcmRFdmVu
dC5jcHAKICAgICAgICAgZG9tL0NvbW1lbnQuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQwNzcwKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE2LDYgKzYxNiwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2xpZW50UmVjdC5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChX
ZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaWVu
dFJlY3RMaXN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ1NTVmFyaWFibGVzUnVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTExMDY2
LDYgKzExMDc0LDM4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxDbGllbnRSZWN0LmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3Jh
bU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENsaWVu
dFJlY3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxDbGllbnRSZWN0TGlzdC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1P
cHRpbWl6YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDbGllbnRS
ZWN0TGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXENsaXBib2FyZC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDQwNzcwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQwOTksNiArNDA5OSwxNiBAQAogCQlCQ0JEMjFBQjBFNDE3
QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZCNTND
MERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAv
KiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAqLzsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1
IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkND
MDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8q
IENsaWVudFJlY3QuY3BwICovOyB9OworCQlCQ0MwNjU3RTBGM0NFMUI3MDBDRDJEODcgLyogQ2xp
ZW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNDMDY1NzgwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCAqLzsgfTsKKwkJQkNDMDY1
N0YwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaWRsIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3OTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdC5pZGwgKi87IH07CisJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGll
bnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0MwNjU3QTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3BwICovOyB9
OworCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTdCMEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICovOyB9OworCQlCQ0MwNjU4MjBGM0NFMUI3MDBD
RDJEODcgLyogQ2xpZW50UmVjdExpc3QuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3QzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVj
dExpc3QuaWRsICovOyB9OworCQlCQ0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRS
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QzA2NTgzMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwICovOyB9OworCQlCQ0Mw
NjU4ODBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NDBGM0NFMkE3MDBDRDJEODcgLyog
SlNDbGllbnRSZWN0LmggKi87IH07CisJCUJDQzA2NTg5MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0Ns
aWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQzA2NTg1MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmNwcCAq
LzsgfTsKKwkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTg2MEYz
Q0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggKi87IH07CiAJCUJDQzQzODc4MEU4
ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNDM4NzcwRTg4NkNDNzAwNTMz
REQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJDQzU3MzM1MEQ2
OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzMzMzBENjk1QkJFMDA2RUY1MTcgLyogRE9N
UHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlCQ0M1NzMzNjBENjk1QkJFMDA2RUY1MTcgLyogRE9N
UHJvZ3Jlc3NFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQzU3MzM0MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50Lm1tICov
OyB9OwpAQCAtODg4MCw2ICs4ODkwLDE2IEBACiAJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAv
KiBLVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLVVJMSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RPTVdpbmRvd1NoZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dTaGVsbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0MwNjU3NzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGllbnRSZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1NzgwRjNDRTFCNzAwQ0QyRDg3IC8q
IENsaWVudFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpZW50UmVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3OTBGM0NFMUI3MDBDRDJE
ODcgLyogQ2xpZW50UmVjdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2xpZW50UmVjdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQzA2NTdBMEYzQ0UxQjcwMENEMkQ4
NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDbGllbnRSZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
QzA2NTdCMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRSZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0MwNjU3QzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENsaWVudFJlY3RMaXN0LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODMwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NsaWVudFJlY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU4NDBGM0NFMkE3MDBDRDJE
ODcgLyogSlNDbGllbnRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q2xpZW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU4NTBGM0NF
MkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NsaWVudFJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNDMDY1ODYwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbGllbnRSZWN0TGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M0Mzg3NzBFODg2Q0M3MDA1MzNERDUgLyog
SlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQzU3MzMzMEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVByb2dyZXNzRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNTczMzQwRDY5NUJCRTAwNkVGNTE3IC8q
IERPTVByb2dyZXNzRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01Qcm9ncmVzc0V2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTIxODEsNiArMTIyMDEsMTIgQEAKIAkJQTgzQjc5MEUwQ0NBRkY5NzAwMEIwODI1IC8qIENTUyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkNDMDY1ODMw
RjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5jcHAgKi8sCisJCQkJQkNDMDY1ODQwRjND
RTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oICovLAorCQkJCUJDQzA2NTg1MEYzQ0UyQTcw
MENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmNwcCAqLywKKwkJCQlCQ0MwNjU4NjBGM0NFMkE3
MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5oICovLAorCQkJCTkzMDcwNUQ3MDlFMEM5Qjcw
MEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwICovLAorCQkJCTkzMDcwNUQ5MDlFMEM5QkYwMEIxN0ZF
NCAvKiBKU0NvdW50ZXIuaCAqLywKIAkJCQlCQzQ2QzFGMDBDMEREQzhGMDAyMENGQzMgLyogSlND
U1NDaGFyc2V0UnVsZS5jcHAgKi8sCiAJCQkJQkM0NkMxRjEwQzBEREM4RjAwMjBDRkMzIC8qIEpT
Q1NTQ2hhcnNldFJ1bGUuaCAqLywKIAkJCQlCQzQ2QzFGMjBDMEREQzhGMDAyMENGQzMgLyogSlND
U1NGb250RmFjZVJ1bGUuY3BwICovLApAQCAtMTIyMTEsMTMgKzEyMjM3LDExIEBACiAJCQkJQkM2
ODZDNzkwRTBDMzMwMTAwREU4QTA4IC8qIEpTQ1NTVmFyaWFibGVzRGVjbGFyYXRpb24uaCAqLywK
IAkJCQlCQzY4NkM3QTBFMEMzMzAxMDBERThBMDggLyogSlNDU1NWYXJpYWJsZXNSdWxlLmNwcCAq
LywKIAkJCQlCQzY4NkM3QjBFMEMzMzAxMDBERThBMDggLyogSlNDU1NWYXJpYWJsZXNSdWxlLmgg
Ki8sCi0JCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291bnRlci5jcHAgKi8sCi0J
CQkJOTMwNzA1RDkwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICovLAogCQkJCUJDM0Mz
OUI0MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5jcHAgKi8sCiAJCQkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8sCi0JCQkJQkMzNDUyNTUwRDdFMDI4
NTAwMTY1NzRBIC8qIEpTUkdCQ29sb3IubHV0LmggKi8sCiAJCQkJQkNGRTJGMEYwQzFCNTgzNzAw
MjAyMzVGIC8qIEpTUmVjdC5jcHAgKi8sCiAJCQkJQkNGRTJGMTAwQzFCNTgzNzAwMjAyMzVGIC8q
IEpTUmVjdC5oICovLAorCQkJCUJDMzQ1MjU1MEQ3RTAyODUwMDE2NTc0QSAvKiBKU1JHQkNvbG9y
Lmx1dC5oICovLAogCQkJCUJDRTAxMzk4MEMwQkVGMTgwMDQzODYwQSAvKiBKU1N0eWxlU2hlZXQu
Y3BwICovLAogCQkJCUJDRTAxMzk5MEMwQkVGMTgwMDQzODYwQSAvKiBKU1N0eWxlU2hlZXQuaCAq
LywKIAkJCQlBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5jcHAg
Ki8sCkBAIC0xNDQ4MCw2ICsxNDUwNCwxMiBAQAogCQkJCUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVD
QSAvKiBYTUxUb2tlbml6ZXIuY3BwICovLAogCQkJCUY1MjNEMzBBMDJERTQ0NzYwMTg2MzVDQSAv
KiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJCQk1NEM1MEY3QTBFODAxREYzMDA5ODMyQTAgLyogWE1M
VG9rZW5pemVyTGlieG1sMi5jcHAgKi8sCisJCQkJQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8q
IENsaWVudFJlY3QuY3BwICovLAorCQkJCUJDQzA2NTc4MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGll
bnRSZWN0LmggKi8sCisJCQkJQkNDMDY1NzkwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3Qu
aWRsICovLAorCQkJCUJDQzA2NTdBMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5j
cHAgKi8sCisJCQkJQkNDMDY1N0IwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0Lmgg
Ki8sCisJCQkJQkNDMDY1N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmlkbCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gZG9tOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE2NzE1LDYgKzE2NzQ1LDEwIEBACiAJCQkJMUE1NjlEMjUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1
bnRpbWVfcm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUUwOTlFNjQ5MjAwNTZFNTgx
IC8qIHZpc2libGVfdW5pdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTZEQjQzMEYzQTg4MEUw
MDU3M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkND
MDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNDMDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTY4MzAsNiArMTY4NjQsOCBAQAogCQkJCTg1MTM2Q0E4
MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQkNDMDY1N0YwRjNDRTFCNzAwQ0QyRDg3IC8qIENs
aWVudFJlY3QuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlCQ0MwNjU4MjBGM0NFMUI3MDBDRDJE
ODcgLyogQ2xpZW50UmVjdExpc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4Njk1LDYgKzE4
NzMxLDEwIEBACiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJs
ZV91bml0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk2REI0NjBGM0E4ODIyMDA1NzNDQjMg
LyogUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNDMDY1N0Qw
RjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkND
MDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDQzA2NTg3MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQkNDMDY1ODkwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2xpZW50UmVjdDo6Q2xpZW50UmVjdCgpCit7
Cit9CisKK0NsaWVudFJlY3Q6OkNsaWVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICA6
IG1fcmVjdChyZWN0KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9t
L0NsaWVudFJlY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLwor
CisjaWZuZGVmIENsaWVudFJlY3RfaAorI2RlZmluZSBDbGllbnRSZWN0X2gKKworI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSW50UmVj
dDsgCisKKyAgICBjbGFzcyBDbGllbnRSZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpZW50UmVj
dD4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3QpOyB9CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IGNyZWF0ZShjb25zdCBJbnRSZWN0JiByZWN0KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpZW50UmVjdChyZWN0KSk7IH0KKworICAgICAgICBmbG9h
dCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QueSgpOyB9CisgICAgICAgIGZsb2F0IHJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KKyAgICAgICAgZmxvYXQgYm90dG9t
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisgICAgICAgIGZsb2F0IGxlZnQo
KSBjb25zdCB7IHJldHVybiBtX3JlY3QueCgpOyB9CisgICAgICAgIGZsb2F0IHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KKyAgICAgICAgZmxvYXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBD
bGllbnRSZWN0KCk7CisgICAgICAgIENsaWVudFJlY3QoY29uc3QgSW50UmVjdCYpOworCisgICAg
ICAgIEZsb2F0UmVjdCBtX3JlY3Q7CisgICAgfTsgCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIENsaWVudFJlY3RfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9k
b20vQ2xpZW50UmVjdC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptZXJnZWluZm8KCkluZGV4OiBX
ZWJDb3JlL2RvbS9DbGllbnRSZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGll
bnRSZWN0LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21vZHVsZSB2aWV3IHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIENs
aWVudFJlY3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgdG9wOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcmlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBmbG9hdCBib3R0b207CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBsZWZ0
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgd2lkdGg7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBmbG9hdCBoZWlnaHQ7CisgICAgfTsKKworfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5pZGwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1l
cmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNsaWVudFJlY3RM
aXN0LmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiQ2xpZW50UmVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NsaWVudFJlY3RMaXN0OjpDbGllbnRSZWN0
TGlzdCgpCit7Cit9CisKK0NsaWVudFJlY3RMaXN0OjpDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMpCit7CisgICAgbV9saXN0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocXVhZHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUo
KTsgKytpKQorICAgICAgICBtX2xpc3QuYXBwZW5kKENsaWVudFJlY3Q6OmNyZWF0ZShxdWFkc1tp
XS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKSk7Cit9CisKK0NsaWVudFJlY3RMaXN0Ojp+Q2xpZW50
UmVjdExpc3QoKQoreworfQorCit1bnNpZ25lZCBDbGllbnRSZWN0TGlzdDo6bGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9saXN0LnNpemUoKTsKK30KKworQ2xpZW50UmVjdCogQ2xpZW50
UmVjdExpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IG1fbGlz
dC5zaXplKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHRocm93IGFuIGV4Y2Vw
dGlvbi4KKyAgICAgICAgLy8gZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJl
Y3RMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29y
ZS9kb20vQ2xpZW50UmVjdExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRS
ZWN0TGlzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENsaWVu
dFJlY3RMaXN0X2gKKyNkZWZpbmUgQ2xpZW50UmVjdExpc3RfaAorCisjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgQ2xpZW50UmVjdDsKKworICAgIGNsYXNzIENsaWVudFJlY3RMaXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2xpZW50UmVjdExpc3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgQ2xpZW50UmVjdExpc3QpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaWVu
dFJlY3RMaXN0PiBjcmVhdGUoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ2xpZW50UmVjdExpc3QocXVhZHMpKTsgfQorICAgICAgICB+Q2xpZW50
UmVjdExpc3QoKTsKKworICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICAgICAg
Q2xpZW50UmVjdCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBDbGllbnRSZWN0TGlzdCgpOworICAgICAgICBDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0b3I8
RmxvYXRRdWFkPiYpOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q2xpZW50UmVjdD4gPiBtX2xp
c3Q7CisgICAgfTsgCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENsaWVu
dFJlY3RMaXN0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RM
aXN0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1lcmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9t
L0NsaWVudFJlY3RMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0
TGlzdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworbW9kdWxlIHZpZXcg
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvciwKKyAgICAg
ICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIENsaWVudFJlY3RMaXN0IHsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBDbGllbnRSZWN0IGl0
ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICAvLyBGSVhNRTog
Rml4IGxpc3QgYmVoYXZpb3IgdG8gYWxsb3cgY3VzdG9tIGV4Y2VwdGlvbnMgdG8gYmUgdGhyb3du
LgorICAgIH07CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJl
Y3RMaXN0LmlkbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDQwNzcwKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJD
bGllbnRSZWN0LmgiCisjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5o
IgpAQCAtNDQsNiArNDYsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTQxMyw2ICs0MTYsNDIgQEAgaW50IEVs
ZW1lbnQ6OnNjcm9sbEhlaWdodCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xp
ZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkgY29uc3QKK3sKKyAgICBkb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKworICAgIFJl
bmRlckJveCogcmVuZGVyQm94ID0gdGhpcy0+cmVuZGVyQm94KCk7CisgICAgaWYgKCFyZW5kZXJC
b3gpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKCk7CisKKyAgICAvLyBG
SVhNRTogSGFuZGxlIFNWRyBlbGVtZW50cy4KKyAgICAvLyBGSVhNRTogSGFuZGxlIHRhYmxlL2lu
bGluZS10YWJsZSB3aXRoIGEgY2FwdGlvbi4KKworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRz
OworICAgIHJlbmRlckJveC0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CisgICAgcmV0dXJuIENsaWVu
dFJlY3RMaXN0OjpjcmVhdGUocXVhZHMpOworfQorCitQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVs
ZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgUmVuZGVyQm94KiBy
ZW5kZXJCb3ggPSB0aGlzLT5yZW5kZXJCb3goKTsKKyAgICBpZiAoIXJlbmRlckJveCkKKyAgICAg
ICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworCisgICAgVmVjdG9yPEZsb2F0UXVhZD4g
cXVhZHM7CisgICAgcmVuZGVyQm94LT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKKworICAgIGlmIChx
dWFkcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKwor
ICAgIEludFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1
bHQudW5pdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7CisKKyAgICByZXR1cm4g
Q2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCiB7CiAgICAgcmV0dXJuIGUg
JiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5oCShyZXZpc2lvbiA0MDc3MCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDU1NT
dHlsZURlY2xhcmF0aW9uOwogY2xhc3MgRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgSW50U2l6ZTsK
K2NsYXNzIENsaWVudFJlY3Q7CitjbGFzcyBDbGllbnRSZWN0TGlzdDsKIAogY2xhc3MgRWxlbWVu
dCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoKQEAgLTgyLDYgKzg0LDkgQEAgcHVi
bGljOgogICAgIGludCBzY3JvbGxXaWR0aCgpOwogICAgIGludCBzY3JvbGxIZWlnaHQoKTsKIAor
ICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdDsK
KwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3Bh
Y2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKSW5kZXg6
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCShyZXZpc2lvbiA0MDc3MCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKQEAgLTEwOSw4ICsxMDksOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIE5vZGVMaXN0IHF1
ZXJ5U2VsZWN0b3JBbGwoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyBzZWxlY3RvcnMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAot
ICAgICAgICAvLyBFbGVtZW50VHJhdmVyc2FsIEFQSQogI2lmICFkZWZpbmVkKExBTkdVQUdFX0NP
TSkKKyAgICAgICAgLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEVsZW1lbnQgZmlyc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50IHByZXZpb3VzRWxlbWVudFNpYmxpbmc7CkBAIC0xMTgsNiArMTE4LDEyIEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hp
bGRFbGVtZW50Q291bnQ7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkKKyAgICAgICAgLy8gQ1NTT00gVmlldyBNb2R1bGUgQVBJCisgICAgICAgIENsaWVudFJlY3RM
aXN0IGdldENsaWVudFJlY3RzKCk7CisgICAgICAgIENsaWVudFJlY3QgZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisjZW5kaWYKKwogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCiAg
ICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpbm5lclRleHQ7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gNDA3
NzApCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzc5
LDYgKzM3OSw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgTWltZVR5cGVD
b25zdHJ1Y3RvciBNaW1lVHlwZTsKICAgICAgICAgYXR0cmlidXRlIE1pbWVUeXBlQXJyYXlDb25z
dHJ1Y3RvciBNaW1lVHlwZUFycmF5OwogCisgICAgICAgIGF0dHJpYnV0ZSBDbGllbnRSZWN0Q29u
c3RydWN0b3IgQ2xpZW50UmVjdDsKKyAgICAgICAgYXR0cmlidXRlIENsaWVudFJlY3RMaXN0Q29u
c3RydWN0b3IgQ2xpZW50UmVjdExpc3Q7CisKICNpZiBFTkFCTEVfRE9NX1NUT1JBR0UKICAgICAg
ICAgYXR0cmlidXRlIFN0b3JhZ2VDb25zdHJ1Y3RvciBTdG9yYWdlOwogICAgICAgICBhdHRyaWJ1
dGUgU3RvcmFnZUV2ZW50Q29uc3RydWN0b3IgU3RvcmFnZUV2ZW50OwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDA3NzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMCBAQAorMjAwOS0wMi0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTcKKyAgICAgICAgUGxl
YXNlIGltcGxlbWVudCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgYW5kIGdldENsaWVudFJlY3RzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTM5NjY5PgorCisgICAgICAgICogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9k
b21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2dldEJv
dW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9n
ZXRDbGllbnRSZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dl
dENsaWVudFJlY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9k
b21MaXN0RW51bWVyYXRpb24uanM6CisgICAgICAgICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wMi0wNyAgUm9iIEJ1aXMgIDxyd2xidWlzQGdtYWls
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNDA3NzApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIFBBU1MgcmVzdWx0QXJy
YXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBuYW1lZE5vZGVNYXAu
aXRlbSgyKQogCiBbb2JqZWN0IEhUTUxGb3JtRWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVu
Z3RoIGlzIDEyOAorUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTMwCiBQQVNTIHJlc3VsdEFy
cmF5WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMg
JzEnCkBAIC00MSw3ICs0MSw3IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1Mg
cmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2Vs
ZWN0JylbMl0KIAogW29iamVjdCBIVE1MU2VsZWN0RWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXku
bGVuZ3RoIGlzIDEzMworUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTM1CiBQQVNTIHJlc3Vs
dEFycmF5WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkg
aXMgJzEnCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3Qt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5k
aW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY5IEBACitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEKK1BBU1MgdGVzdFJl
Y3QudG9wIGlzIDQyCitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0
aCBpcyAzMDAKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDEwMAorUEFTUyB0ZXN0UmVjdC5ib3R0
b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0
IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorQ2xpZW50IGJvdW5kaW5nIHJlY3Qg
Zm9yICMyCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAxOTIKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4
CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMyMAorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTIw
CitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQK
K1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCitD
bGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzMKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDM2MgorUEFT
UyB0ZXN0UmVjdC5sZWZ0IGlzIDE4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFTUyB0
ZXN0UmVjdC5oZWlnaHQgaXMgMTAwCitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50
b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVm
dCArIHRlc3RSZWN0LndpZHRoCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzQKK1BBU1MgdGVz
dFJlY3QudG9wIGlzIDQ5MQorUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDM3CitQQVNTIHRlc3RSZWN0
LndpZHRoIGlzIDE0MgorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTQyCitQQVNTIHRlc3RSZWN0
LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3Qu
cmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCitDbGllbnQgYm91bmRpbmcg
cmVjdCBmb3IgIzUKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDY2MgorUEFTUyB0ZXN0UmVjdC5sZWZ0
IGlzIDgKK1BBU1MgdGVzdFJlY3Qud2lkdGggaXMgMzAwCitQQVNTIHRlc3RSZWN0LmhlaWdodCBp
cyAyMzQKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0LnRvcCArIHRlc3RSZWN0Lmhl
aWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lk
dGgKK0NsaWVudCBib3VuZGluZyByZWN0IGZvciAjNgorS25vd24gZmFpbHVyZS4gU2tpcHBpbmcu
CitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzcKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDEyMzAK
K1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDI5OQorUEFT
UyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTgwCitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVj
dC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3Qu
bGVmdCArIHRlc3RSZWN0LndpZHRoCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzgKK1BBU1Mg
dGVzdFJlY3QudG9wIGlzIDE0NjAKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RS
ZWN0LndpZHRoIGlzIDMwMAorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgNDYKK1BBU1MgdGVzdFJl
Y3QuYm90dG9tIGlzIHRlc3RSZWN0LnRvcCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVj
dC5yaWdodCBpcyB0ZXN0UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lkdGgKK0NsaWVudCBib3VuZGlu
ZyByZWN0IGZvciAjOQorUEFTUyB0ZXN0UmVjdC50b3AgaXMgMTU1OAorUEFTUyB0ZXN0UmVjdC5s
ZWZ0IGlzIDgKK1BBU1MgdGVzdFJlY3Qud2lkdGggaXMgMzAwCitQQVNTIHRlc3RSZWN0LmhlaWdo
dCBpcyAyMAorUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3Qu
aGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53
aWR0aAorQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxMAorUEFTUyB0ZXN0UmVjdC50b3AgaXMg
MTY1NAorUEFTUyB0ZXN0UmVjdC5sZWZ0IGlzIDEwCitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDE0
NworUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMjAKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRl
c3RSZWN0LnRvcCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0
UmVjdC5sZWZ0ICsgdGVzdFJlY3Qud2lkdGgKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE0MyBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2Jhc2UgeworICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2JvcmRlciB7CisgICAg
ICAgIGJvcmRlcjogMTBweCBzb2xpZCAjOTk5OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI21hcmdpbiB7CisgICAgICAgIG1hcmdp
bjogMTBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIH0KKworICAgICN0cmFuc2Zvcm0geworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWCg1MHB4KSByb3RhdGUoNDVkZWcpOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2NvbHVtbnMgeworICAgICAgICAtd2Vi
a2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAg
ICNpbmxpbmUgeworICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgfQorCisgICAgI3RhYmxl
IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAgIC50ZXN0Qm94IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgLnBhcmVudCB7CisgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICAuYmJveCB7CisgICAgICAgIHBvc2l0aW9u
OmFic29sdXRlOworICAgICAgICBvdXRsaW5lOiA1cHggc29saWQgcmdiYSgyNTUsIDAsIDAsIC43
NSk7CisgICAgfQorCisgICAgI2NvbnNvbGUgeworICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsK
KyAgICAgICAgbGVmdDogNTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0QXJlYSI+Cis8cD4xLiBCYXNlPC9wPiAgICAgICAgICA8
ZGl2IGlkPSJiYXNlIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Cis8cD4yLiBCb3JkZXI8L3A+ICAg
ICAgICA8ZGl2IGlkPSJib3JkZXIiIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjMuIE1hcmdp
bjwvcD4gICAgICAgIDxkaXYgaWQ9Im1hcmdpbiIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgorPHA+
NC4gVHJhbnNmb3JtPC9wPiAgICAgPGRpdiBpZD0idHJhbnNmb3JtIiBjbGFzcz0idGVzdEJveCI+
PC9kaXY+Cis8cD41LiBDb2x1bW48L3A+ICAgICAgICA8ZGl2IGlkPSJjb2x1bW5zIiBjbGFzcz0i
dGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2lj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48
L2Rpdj4KKzxwPjYuIEluIGEgY29sdW1uIDwvcD4gIDxkaXYgaWQ9ImNvbHVtbnMiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48c3Bh
biBpZD0iaW4tY29sdW1ucyIgY2xhc3M9InRlc3RCb3gga25vd25GYWlsdXJlIj5JbiBjb2x1bW5z
PC9zcGFuPiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRh
dGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxw
YSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4K
KzxwPjcuIElubGluZTwvcD4gICAgICAgIDxkaXYgY2xhc3M9InBhcmVudCI+PGRpdiBpZD0iaW5s
aW5lIiBjbGFzcz0idGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS48L2Rpdj48L2Rpdj4KKzxwPjguIFRhYmxlPC9wPiAgICAgICAgIDx0YWJsZSBp
ZD0idGFibGUiIGNsYXNzPSJ0ZXN0Qm94Ij48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJs
ZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3Rk
PjwvdHI+PC90YWJsZT4KKzxwPjkuIFRhYmxlIFJvdzwvcD4gICAgIDx0YWJsZSBpZD0idGFibGUi
Pjx0ciBjbGFzcz0idGVzdEJveCI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90
ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90
YWJsZT4KKzxwPjEwLiBUYWJsZSBDZWxsPC9wPiAgIDx0YWJsZSBpZD0idGFibGUiPjx0cj48dGQg
Y2xhc3M9InRlc3RCb3giPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0
cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KKzwv
ZGl2PgorCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciB0ZXN0
UmVjdDsKKyAgICBmdW5jdGlvbiB0ZXN0Q2xpZW50UmVjdCh0b1Rlc3QsIGV4cGVjdGVkUmVjdCkK
KyAgICB7CisgICAgICAgIHRlc3RSZWN0ID0gdG9UZXN0OworICAgICAgICBzaG91bGRCZSgidGVz
dFJlY3QudG9wIiwgU3RyaW5nKGV4cGVjdGVkUmVjdC50b3ApKTsKKyAgICAgICAgc2hvdWxkQmUo
InRlc3RSZWN0LmxlZnQiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0LmxlZnQpKTsKKyAgICAgICAgc2hv
dWxkQmUoInRlc3RSZWN0LndpZHRoIiwgU3RyaW5nKGV4cGVjdGVkUmVjdC53aWR0aCkpOworICAg
ICAgICBzaG91bGRCZSgidGVzdFJlY3QuaGVpZ2h0IiwgU3RyaW5nKGV4cGVjdGVkUmVjdC5oZWln
aHQpKTsKKyAgICAgICAgc2hvdWxkQmUoInRlc3RSZWN0LmJvdHRvbSIsICJ0ZXN0UmVjdC50b3Ag
KyB0ZXN0UmVjdC5oZWlnaHQiKTsKKyAgICAgICAgc2hvdWxkQmUoInRlc3RSZWN0LnJpZ2h0Iiwg
InRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aCIpOworCisgICAgfQorCisgICAgZnVuY3Rp
b24gYWRkQkJveE92ZXJDbGllbnRSZWN0KHJlY3QpCisgICAgeworICAgICAgICB2YXIgYmJveCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBiYm94LmNsYXNzTmFtZSA9
ICJiYm94IjsKKyAgICAgICAgdmFyIHN0eWxlID0gIiI7CisgICAgICAgIHN0eWxlICs9ICJsZWZ0
OiAiICAgKyByZWN0LmxlZnQgKyAicHg7IjsKKyAgICAgICAgc3R5bGUgKz0gInRvcDogIiAgICAr
IHJlY3QudG9wICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJ3aWR0aDogIiAgKyByZWN0Lndp
ZHRoICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJoZWlnaHQ6ICIgKyByZWN0LmhlaWdodCAr
ICJweDsiOworICAgICAgICBiYm94LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBzdHlsZSk7CisgICAg
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChiYm94KTsKKyAgICB9CisK
KyAgICB2YXIgZmFpbCA9IHVuZGVmaW5lZDsKKworICAgIHZhciBleHBlY3RlZFJlc3VsdHMgPSBb
CisgICAgICAgIHsgdG9wOiA0MiwgbGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiAxMDAgfSwK
KyAgICAgICAgeyB0b3A6IDE5MiwgbGVmdDogOCwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAxMjAgfSwK
KyAgICAgICAgeyB0b3A6IDM2MiwgbGVmdDogMTgsIHdpZHRoOiAzMDAsIGhlaWdodDogMTAwIH0s
CisgICAgICAgIHsgdG9wOiA0OTEsIGxlZnQ6IDM3LCB3aWR0aDogMTQyLCBoZWlnaHQ6IDE0MiB9
LAorICAgICAgICB7IHRvcDogNjYyLCBsZWZ0OiA4LCB3aWR0aDogMzAwLCBoZWlnaHQ6IDIzNCB9
LAorICAgICAgICB7IHRvcDogZmFpbCwgbGVmdDogZmFpbCwgd2lkdGg6IGZhaWwsIGhlaWdodDog
ZmFpbCB9LAorICAgICAgICB7IHRvcDogMTIzMCwgbGVmdDogOCwgd2lkdGg6IDI5OSwgaGVpZ2h0
OiAxODAgfSwKKyAgICAgICAgeyB0b3A6IDE0NjAsIGxlZnQ6IDgsIHdpZHRoOiAzMDAsIGhlaWdo
dDogNDYgfSwKKyAgICAgICAgeyB0b3A6IDE1NTgsIGxlZnQ6IDgsIHdpZHRoOiAzMDAsIGhlaWdo
dDogMjAgfSwKKyAgICAgICAgeyB0b3A6IDE2NTQsIGxlZnQ6IDEwLCB3aWR0aDogMTQ3LCBoZWln
aHQ6IDIwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gdGVzdChudW1iZXIsIGVsZW1lbnQpCisg
ICAgeworICAgICAgICBkZWJ1ZygiQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMiICsgbnVtYmVy
KTsKKworICAgICAgICBpZiAoZWxlbWVudC5jbGFzc05hbWUubWF0Y2goImtub3duRmFpbHVyZSIp
KSB7CisgICAgICAgICAgICBkZWJ1ZygiS25vd24gZmFpbHVyZS4gU2tpcHBpbmcuIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0g
ZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgYWRkQkJveE92ZXJDbGll
bnRSZWN0KGJvdW5kaW5nUmVjdCk7CisgICAgICAgIHRlc3RDbGllbnRSZWN0KGJvdW5kaW5nUmVj
dCwgZXhwZWN0ZWRSZXN1bHRzW251bWJlciAtIDFdKTsKKyAgICB9CisKKyAgICB2YXIgdGVzdHMg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Qm94Iik7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGVzdChpICsgMSwgdGVz
dHNbaV0pOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0QXJlYScpOworICAgICAg
ICBhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXJlYSk7CisgICAgfQorCisgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0Q2xpZW50UmVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldENsaWVudFJlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldENsaWVudFJlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzMyBAQAorQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjMQorUEFTUyB0
ZXN0UmVjdHMubGVuZ3RoIGlzIDEKK1BBU1MgdGVzdFJlY3RzWzBdIGlzIHRlc3RSZWN0cy5pdGVt
KDApCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICMyCitQQVNTIHRlc3RSZWN0cy5sZW5ndGgg
aXMgMQorUEFTUyB0ZXN0UmVjdHNbMF0gaXMgdGVzdFJlY3RzLml0ZW0oMCkKK0NsaWVudCBib3Vu
ZGluZyByZWN0cyBmb3IgIzMKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAxCitQQVNTIHRlc3RS
ZWN0c1swXSBpcyB0ZXN0UmVjdHMuaXRlbSgwKQorQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAj
NAorUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKK1BBU1MgdGVzdFJlY3RzWzBdIGlzIHRlc3RS
ZWN0cy5pdGVtKDApCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM1CitQQVNTIHRlc3RSZWN0
cy5sZW5ndGggaXMgMQorUEFTUyB0ZXN0UmVjdHNbMF0gaXMgdGVzdFJlY3RzLml0ZW0oMCkKK0Ns
aWVudCBib3VuZGluZyByZWN0cyBmb3IgIzYKK0tub3duIGZhaWx1cmUuIFNraXBwaW5nLgorQ2xp
ZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjNworUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEwCitQ
QVNTIHRlc3RSZWN0c1swXSBpcyB0ZXN0UmVjdHMuaXRlbSgwKQorQ2xpZW50IGJvdW5kaW5nIHJl
Y3RzIGZvciAjOAorUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKK1BBU1MgdGVzdFJlY3RzWzBd
IGlzIHRlc3RSZWN0cy5pdGVtKDApCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM5CitQQVNT
IHRlc3RSZWN0cy5sZW5ndGggaXMgMQorUEFTUyB0ZXN0UmVjdHNbMF0gaXMgdGVzdFJlY3RzLml0
ZW0oMCkKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzEwCitQQVNTIHRlc3RSZWN0cy5sZW5n
dGggaXMgMQorUEFTUyB0ZXN0UmVjdHNbMF0gaXMgdGVzdFJlY3RzLml0ZW0oMCkKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRDbGllbnRSZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2dldENsaWVudFJlY3RzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRDbGllbnRSZWN0cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE0NyBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2Jhc2UgeworICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2JvcmRlciB7CisgICAg
ICAgIGJvcmRlcjogMTBweCBzb2xpZCAjOTk5OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI21hcmdpbiB7CisgICAgICAgIG1hcmdp
bjogMTBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIH0KKworICAgICN0cmFuc2Zvcm0geworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWCg1MHB4KSByb3RhdGUoNDVkZWcpOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2NvbHVtbnMgeworICAgICAgICAtd2Vi
a2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAg
ICNpbmxpbmUgeworICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgfQorCisgICAgI3RhYmxl
IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAgIC50ZXN0Qm94IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgLnBhcmVudCB7CisgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICAuYmJveCB7CisgICAgICAgIHBvc2l0aW9u
OmFic29sdXRlOworICAgICAgICBvdXRsaW5lOiA1cHggc29saWQgcmdiYSgyNTUsIDAsIDAsIC43
NSk7CisgICAgfQorCisgICAgI2NvbnNvbGUgeworICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsK
KyAgICAgICAgbGVmdDogNTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0QXJlYSI+Cis8cD4xLiBCYXNlPC9wPiAgICAgICAgICA8
ZGl2IGlkPSJiYXNlIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Cis8cD4yLiBCb3JkZXI8L3A+ICAg
ICAgICA8ZGl2IGlkPSJib3JkZXIiIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjMuIE1hcmdp
bjwvcD4gICAgICAgIDxkaXYgaWQ9Im1hcmdpbiIgY2xhc3M9InRlc3RCb3giPjwvZGl2PgorPHA+
NC4gVHJhbnNmb3JtPC9wPiAgICAgPGRpdiBpZD0idHJhbnNmb3JtIiBjbGFzcz0idGVzdEJveCI+
PC9kaXY+Cis8cD41LiBDb2x1bW48L3A+ICAgICAgICA8ZGl2IGlkPSJjb2x1bW5zIiBjbGFzcz0i
dGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2lj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48
L2Rpdj4KKzxwPjYuIEluIGEgY29sdW1uPC9wPiAgIDxkaXYgaWQ9ImNvbHVtbnMiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48c3Bh
biBpZD0iaW4tY29sdW1ucyIgY2xhc3M9InRlc3RCb3gga25vd25GYWlsdXJlIj5JbiBjb2x1bW5z
PC9zcGFuPiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRh
dGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxw
YSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4K
KzxwPjcuIElubGluZTwvcD4gICAgICAgIDxkaXYgY2xhc3M9InBhcmVudCI+PGRpdiBpZD0iaW5s
aW5lIiBjbGFzcz0idGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVo
ZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBu
dWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBl
c3QgbGFib3J1bS48L2Rpdj48L2Rpdj4KKzxwPjguIFRhYmxlPC9wPiAgICAgICAgIDx0YWJsZSBp
ZD0idGFibGUiIGNsYXNzPSJ0ZXN0Qm94Ij48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJs
ZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3Rk
PjwvdHI+PC90YWJsZT4KKzxwPjkuIFRhYmxlIFJvdzwvcD4gICAgIDx0YWJsZSBpZD0idGFibGUi
Pjx0ciBjbGFzcz0idGVzdEJveCI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90
ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90
YWJsZT4KKzxwPjEwLiBUYWJsZSBDZWxsPC9wPiAgIDx0YWJsZSBpZD0idGFibGUiPjx0cj48dGQg
Y2xhc3M9InRlc3RCb3giPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0
cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KKzwv
ZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBs
b2cobXNnKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7CisgICAg
fQorCisgICAgCisgICAgdmFyIHRlc3RSZWN0czsKKyAgICBmdW5jdGlvbiB0ZXN0Q2xpZW50UmVj
dHMocmVjdHMsIGV4cGVjdGVkTnVtYmVyT2ZSZWN0cykKKyAgICB7CisgICAgICAgIHRlc3RSZWN0
cyA9IHJlY3RzOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3RzLmxlbmd0aCIsIFN0cmluZyhl
eHBlY3RlZE51bWJlck9mUmVjdHMpKTsKKyAgICAgICAgc2hvdWxkQmUoInRlc3RSZWN0c1swXSIs
ICJ0ZXN0UmVjdHMuaXRlbSgwKSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZEJCb3hPdmVy
Q2xpZW50UmVjdChyZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGJib3ggPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgYmJveC5jbGFzc05hbWUgPSAiYmJveCI7CisgICAg
ICAgIHZhciBzdHlsZSA9ICIiOworICAgICAgICBzdHlsZSArPSAibGVmdDogIiAgICsgcmVjdC5s
ZWZ0ICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJ0b3A6ICIgICAgKyByZWN0LnRvcCArICJw
eDsiOworICAgICAgICBzdHlsZSArPSAid2lkdGg6ICIgICsgcmVjdC53aWR0aCArICJweDsiOwor
ICAgICAgICBzdHlsZSArPSAiaGVpZ2h0OiAiICsgcmVjdC5oZWlnaHQgKyAicHg7IjsKKyAgICAg
ICAgYmJveC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAgICAgICBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYmJveCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YWRkQkJveE92ZXJDbGllbnRSZWN0cyhyZWN0cykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVjdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBhZGRCQm94T3ZlckNsaWVu
dFJlY3QocmVjdHNbaV0pOworICAgIH0KKworICAgIHZhciBleHBlY3RlZFJlc3VsdHMgPSBbCisg
ICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEs
CisgICAgICAgIDEsCisgICAgICAgIDEwLAorICAgICAgICAxLAorICAgICAgICAxLAorICAgICAg
ICAxCisgICAgXTsKKworICAgIGZ1bmN0aW9uIHRlc3QobnVtYmVyLCBlbGVtZW50KQorICAgIHsK
KyAgICAgICAgZGVidWcoIkNsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIyIgKyBudW1iZXIpOwor
CisgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTmFtZS5tYXRjaCgia25vd25GYWlsdXJlIikpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJLbm93biBmYWlsdXJlLiBTa2lwcGluZy4iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBib3VuZGluZ1JlY3RzID0gZWxl
bWVudC5nZXRDbGllbnRSZWN0cygpOworICAgICAgICBhZGRCQm94T3ZlckNsaWVudFJlY3RzKGJv
dW5kaW5nUmVjdHMpOworICAgICAgICB0ZXN0Q2xpZW50UmVjdHMoYm91bmRpbmdSZWN0cywgZXhw
ZWN0ZWRSZXN1bHRzW251bWJlciAtIDFdKTsKKyAgICB9CisKKyAgICB2YXIgdGVzdHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Qm94Iik7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGVzdChpICsgMSwgdGVzdHNbaV0p
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICB2YXIg
YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0QXJlYScpOworICAgICAgICBhcmVh
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXJlYSk7CisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA0MDc3MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw2ICszNjQsMTEgQEAgd2lu
ZG93LkNoYXJhY3RlckRhdGEucHJvdG90eXBlLnJlbW92ZUV2ZQogd2luZG93LkNoYXJhY3RlckRh
dGEucHJvdG90eXBlLnJlcGxhY2VDaGlsZCBbZnVuY3Rpb25dCiB3aW5kb3cuQ2hhcmFjdGVyRGF0
YS5wcm90b3R5cGUucmVwbGFjZURhdGEgW2Z1bmN0aW9uXQogd2luZG93LkNoYXJhY3RlckRhdGEu
cHJvdG90eXBlLnN1YnN0cmluZ0RhdGEgW2Z1bmN0aW9uXQord2luZG93LkNsaWVudFJlY3QgW29i
amVjdCBDbGllbnRSZWN0Q29uc3RydWN0b3JdCit3aW5kb3cuQ2xpZW50UmVjdC5wcm90b3R5cGUg
W29iamVjdCBDbGllbnRSZWN0UHJvdG90eXBlXQord2luZG93LkNsaWVudFJlY3RMaXN0IFtvYmpl
Y3QgQ2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5DbGllbnRSZWN0TGlzdC5wcm90
b3R5cGUgW29iamVjdCBDbGllbnRSZWN0TGlzdFByb3RvdHlwZV0KK3dpbmRvdy5DbGllbnRSZWN0
TGlzdC5wcm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCiB3aW5kb3cuQ2xpcGJvYXJkIFtvYmplY3Qg
Q2xpcGJvYXJkQ29uc3RydWN0b3JdCiB3aW5kb3cuQ2xpcGJvYXJkLnByb3RvdHlwZSBbb2JqZWN0
IENsaXBib2FyZFByb3RvdHlwZV0KIHdpbmRvdy5DbGlwYm9hcmQucHJvdG90eXBlLmNsZWFyRGF0
YSBbZnVuY3Rpb25dCkBAIC02MDgsNiArNjEzLDggQEAgd2luZG93LkVsZW1lbnQucHJvdG90eXBl
LmdldEF0dHJpYnV0ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5T
IFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlIFtm
dW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlTlMgW2Z1
bmN0aW9uXQord2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCBb
ZnVuY3Rpb25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpZW50UmVjdHMgW2Z1bmN0
aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1
bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtm
dW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5T
IFtmdW5jdGlvbl0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9kb21MaXN0
RW51bWVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwkocmV2aXNpb24gNDA3NzApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsNyArMTMwLDcgQEAgc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0iLCAibmFt
ZWRObwogLy8gSFRNTEZvcm1FbGVtZW50CiB2YXIgaHRtbEZvcm1FbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKIHJlc3VsdEFycmF5ID0gaXRlcmF0ZUxp
c3QoaHRtbEZvcm1FbGVtZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTI4
Iik7CitzaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzMCIpOwogc2hvdWxkQmUoInJl
c3VsdEFycmF5WzBdLmkiLCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIs
ICJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF0iKTsKIHNob3VsZEJl
KCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHNob3VsZEJl
KCJyZXN1bHRBcnJheVsyXS5pdGVtIiwgImRvY3VtZW4KIC8vIEhUTUxTZWxlY3RFbGVtZW50CiB2
YXIgaHRtbFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2Vs
ZWN0JylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxTZWxlY3RFbGVtZW50KTsK
LXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTMzIik7CitzaG91bGRCZSgicmVzdWx0
QXJyYXkubGVuZ3RoIiwgIjEzNSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAn
Iik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwg
IicxJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDc3MCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDggQEAgUEFTUyBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi50b1N0cmluZygpIAog
UEFTUyBDU1NWYXJpYWJsZXNSdWxlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ1NTVmFyaWFibGVz
UnVsZUNvbnN0cnVjdG9yXScKIFBBU1MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ29uc3RydWN0b3JdJwogUEFT
UyBDaGFyYWN0ZXJEYXRhLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2hhcmFjdGVyRGF0YUNvbnN0
cnVjdG9yXScKK1BBU1MgQ2xpZW50UmVjdC50b1N0cmluZygpIGlzICdbb2JqZWN0IENsaWVudFJl
Y3RDb25zdHJ1Y3Rvcl0nCitQQVNTIENsaWVudFJlY3RMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmpl
Y3QgQ2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0nCiBQQVNTIENsaXBib2FyZC50b1N0cmluZygp
IGlzICdbb2JqZWN0IENsaXBib2FyZENvbnN0cnVjdG9yXScKIFBBU1MgQ29tbWVudC50b1N0cmlu
ZygpIGlzICdbb2JqZWN0IENvbW1lbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIENvdW50ZXIudG9TdHJp
bmcoKSBpcyAnW29iamVjdCBDb3VudGVyQ29uc3RydWN0b3JdJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27535</attachid>
            <date>2009-02-10 13:00:21 -0800</date>
            <delta_ts>2009-02-10 14:45:09 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>62174</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDgyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDktMDItMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5NworICAgICAgICBQ
bGVhc2UgaW1wbGVtZW50IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQgZ2V0Q2xpZW50UmVjdHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzk2Njk+CisKKyAgICAgICAgQ3Vyc29yeSBpbXBs
ZW1lbnRhdGlvbiBvZiBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQKKyAgICAgICAg
RWxlbWVudC5nZXRDbGllbnRSZWN0cy4gQWRkcyBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgY2xh
c3NlcworICAgICAgICBDbGllbnRSZWN0IGFuZCBDbGllbnRSZWN0TGlzdC4KKworICAgICAgICBU
ZXN0czogZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldENsaWVudFJlY3RzLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2Vz
LmJrbDoKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpZW50UmVjdDo6Q2xpZW50UmVjdCk6CisgICAgICAgICogZG9tL0NsaWVudFJlY3Qu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJl
Y3Q6OnJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmJvdHRvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVu
dFJlY3Q6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3Q6OmhlaWdodCk6Cisg
ICAgICAgICogZG9tL0NsaWVudFJlY3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQ2xpZW50
UmVjdExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0OjpD
bGllbnRSZWN0TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0TGlzdDo6fkNsaWVu
dFJlY3RMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0OjpsZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdExpc3Q6Oml0ZW0pOgorICAgICAgICAqIGRvbS9D
bGllbnRSZWN0TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudFJlY3RMaXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9DbGllbnRSZWN0TGlzdC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldENs
aWVudFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50
UmVjdCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0
ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVRdWFkcyk6
CisKIDIwMDktMDItMTAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAg
IFNocmluayB0aGUgc2l6ZSBvZiBhbGwgcmVwbGFjZWQgZWxlbWVudHMgKGltYWdlcywgZm9ybSBj
b250cm9scywgcGx1Z2lucykgYnkgNCBieXRlcyBieSBwYWNraW5nIHRoZQpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNDA4MjgpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQ2Fu
dmFzUGF0dGVybiBcCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIFwKICAgICBDaGFyYWN0
ZXJEYXRhIFwKKyAgICBDbGllbnRSZWN0IFwKKyAgICBDbGllbnRSZWN0TGlzdCBcCiAgICAgQ2xp
cGJvYXJkIFwKICAgICBDb21tZW50IFwKICAgICBDb25zb2xlIFwKSW5kZXg6IFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gNDA4MjgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNiArMTAyLDggQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2RvbS9BdHRyLmlkbCBc
CiAJV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmlkbCBcCiAJV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5pZGwgXAorCVdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaWRsIFwKKwlXZWJDb3JlL2RvbS9D
bGllbnRSZWN0TGlzdC5pZGwgXAogCVdlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwgXAogCVdlYkNv
cmUvZG9tL0NvbW1lbnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBc
CkBAIC01NDcsNiArNTQ5LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20v
Q2xhc3NOYW1lcy5oIFwKIAlXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29y
ZS9kb20vQ2xhc3NOb2RlTGlzdC5oIFwKKwlXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcCBcCisJ
V2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oIFwKKwlXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5j
cHAgXAorCVdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmggXAogCVdlYkNvcmUvZG9tL0NsaXBi
b2FyZC5jcHAgXAogCVdlYkNvcmUvZG9tL0NsaXBib2FyZC5oIFwKIAlXZWJDb3JlL2RvbS9DbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQwODI4KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw4IEBAIElETF9CSU5ESU5H
UyArPSBcCiAgICAgY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBcCiAgICAgZG9tL0F0
dHIuaWRsIFwKICAgICBkb20vQ2hhcmFjdGVyRGF0YS5pZGwgXAorICAgIGRvbS9DbGllbnRSZWN0
LmlkbCBcCisgICAgZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAgICAgZG9tL0NsaXBib2FyZC5p
ZGwgXAogICAgIGRvbS9DREFUQVNlY3Rpb24uaWRsIFwKICAgICBkb20vQ29tbWVudC5pZGwgXApA
QCAtNTYzLDYgKzU2NSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNw
cCBcCiAgICAgZG9tL0NsYXNzTmFtZXMuY3BwIFwKICAgICBkb20vQ2xhc3NOb2RlTGlzdC5jcHAg
XAorICAgIGRvbS9DbGllbnRSZWN0LmNwcCBcCisgICAgZG9tL0NsaWVudFJlY3RMaXN0LmNwcCBc
CiAgICAgZG9tL0NsaXBib2FyZC5jcHAgXAogICAgIGRvbS9DbGlwYm9hcmRFdmVudC5jcHAgXAog
ICAgIGRvbS9Db21tZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gNDA4Mjgp
CisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDYg
KzIyOSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAg
ICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhbnZhc1BhdHRlcm4uY3BwCiAgICAgICAgIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFyYWN0ZXJEYXRhLmNwcAorICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2xpZW50UmVjdC5jcHAKKyAgICAgICAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0NsaWVudFJlY3RMaXN0LmNwcAogICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQ2xpcGJvYXJkLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ29tbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnNvbGUu
Y3BwCkBAIC0zOTIsNiArMzk0LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZp
bGVzIG5lZQogICAgICAgICBkb20vQ2hpbGROb2RlTGlzdC5jcHAKICAgICAgICAgZG9tL0NsYXNz
TmFtZXMuY3BwCiAgICAgICAgIGRvbS9DbGFzc05vZGVMaXN0LmNwcAorICAgICAgICBkb20vQ2xp
ZW50UmVjdC5jcHAKKyAgICAgICAgZG9tL0NsaWVudFJlY3RMaXN0LmNwcAogICAgICAgICBkb20v
Q2xpcGJvYXJkLmNwcAogICAgICAgICBkb20vQ2xpcGJvYXJkRXZlbnQuY3BwCiAgICAgICAgIGRv
bS9Db21tZW50LmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiA0MDgyOCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTYxNiw2ICs2MTYsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0K
IAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NsaWVudFJlY3QuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDbGllbnRSZWN0TGlzdC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NTU1ZhcmlhYmxl
c1J1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMTA2Niw2ICsxMTA3NCwzOCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
Q2xpZW50UmVjdC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlO
YW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRy
dWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDbGllbnRSZWN0LmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ2xpZW50
UmVjdExpc3QuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVl
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ2xpZW50UmVjdExpc3QuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDbGlw
Ym9hcmQuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0MDgyOCkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC00MTAxLDYgKzQxMDEsMTYgQEAKIAkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtV
UkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNET01XaW5kb3dTaGVsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVs
bC5jcHAgKi87IH07CiAJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1No
ZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JG
QjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDQzA2NTdEMEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAq
LzsgfTsKKwkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTc4MEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0LmggKi87IH07CisJCUJDQzA2NTdGMEYzQ0UxQjcwMENEMkQ4
NyAvKiBDbGllbnRSZWN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNDMDY1NzkwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaWRsICov
OyB9OworCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1N0EwRjND
RTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCAqLzsgfTsKKwkJQkNDMDY1ODEwRjND
RTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU3QjBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50
UmVjdExpc3QuaCAqLzsgfTsKKwkJQkNDMDY1ODIwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJl
Y3RMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDMDY1N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmlkbCAqLzsgfTsK
KwkJQkNDMDY1ODcwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4MzBGM0NFMkE3MDBD
RDJEODcgLyogSlNDbGllbnRSZWN0LmNwcCAqLzsgfTsKKwkJQkNDMDY1ODgwRjNDRTJBNzAwQ0Qy
RDg3IC8qIEpTQ2xpZW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNDMDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oICov
OyB9OworCQlCQ0MwNjU4OTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NTBG
M0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgKi87IH07CisJCUJDQzA2NThB
MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NjBGM0NFMkE3MDBDRDJEODcgLyog
SlNDbGllbnRSZWN0TGlzdC5oICovOyB9OwogCQlCQ0M0Mzg3ODBFODg2Q0M3MDA1MzNERDUgLyog
SlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1
dEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQ0M1NzMzNTBENjk1QkJFMDA2RUY1MTcgLyog
RE9NUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNDNTczMzMwRDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQuaCAq
LzsgfTsKIAkJQkNDNTczMzYwRDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzMzNDBE
Njk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSAqLzsgfTsKQEAgLTg4ODQsNiAr
ODg5NCwxNiBAQAogCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1VSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dT
aGVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRE9NV2luZG93U2hlbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpZW50UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDQzA2NTc4MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaWVudFJlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1NzkwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENsaWVudFJlY3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0MwNjU3QTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpZW50UmVjdExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MwNjU3QjBGM0NFMUI3MDBD
RDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2xpZW50UmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1
N0MwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDbGllbnRSZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDQzA2NTgzMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDbGllbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NsaWVudFJlY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMDY1ODUwRjNDRTJBNzAwQ0QyRDg3IC8qIEpT
Q2xpZW50UmVjdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDbGllbnRSZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQzA2
NTg2MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2xpZW50UmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNDNDM4NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVu
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M1
NzMzMzBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01Qcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQzU3MzM0MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUHJvZ3Jlc3NF
dmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMTg1LDYgKzEyMjA1LDEy
IEBACiAJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDQzA2NTgzMEYzQ0UyQTcwMENEMkQ4NyAv
KiBKU0NsaWVudFJlY3QuY3BwICovLAorCQkJCUJDQzA2NTg0MEYzQ0UyQTcwMENEMkQ4NyAvKiBK
U0NsaWVudFJlY3QuaCAqLywKKwkJCQlCQ0MwNjU4NTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGll
bnRSZWN0TGlzdC5jcHAgKi8sCisJCQkJQkNDMDY1ODYwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xp
ZW50UmVjdExpc3QuaCAqLywKKwkJCQk5MzA3MDVENzA5RTBDOUI3MDBCMTdGRTQgLyogSlNDb3Vu
dGVyLmNwcCAqLywKKwkJCQk5MzA3MDVEOTA5RTBDOUJGMDBCMTdGRTQgLyogSlNDb3VudGVyLmgg
Ki8sCiAJCQkJQkM0NkMxRjAwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTQ2hhcnNldFJ1bGUuY3Bw
ICovLAogCQkJCUJDNDZDMUYxMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0NoYXJzZXRSdWxlLmgg
Ki8sCiAJCQkJQkM0NkMxRjIwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmNw
cCAqLywKQEAgLTEyMjE1LDEzICsxMjI0MSwxMSBAQAogCQkJCUJDNjg2Qzc5MEUwQzMzMDEwMERF
OEEwOCAvKiBKU0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmggKi8sCiAJCQkJQkM2ODZDN0EwRTBD
MzMwMTAwREU4QTA4IC8qIEpTQ1NTVmFyaWFibGVzUnVsZS5jcHAgKi8sCiAJCQkJQkM2ODZDN0Iw
RTBDMzMwMTAwREU4QTA4IC8qIEpTQ1NTVmFyaWFibGVzUnVsZS5oICovLAotCQkJCTkzMDcwNUQ3
MDlFMEM5QjcwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwICovLAotCQkJCTkzMDcwNUQ5MDlFMEM5
QkYwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuaCAqLywKIAkJCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjRE
N0EgLyogSlNNZWRpYUxpc3QuY3BwICovLAogCQkJCUJDM0MzOUI1MEMwRDNEOEQwMDVGNEQ3QSAv
KiBKU01lZGlhTGlzdC5oICovLAotCQkJCUJDMzQ1MjU1MEQ3RTAyODUwMDE2NTc0QSAvKiBKU1JH
QkNvbG9yLmx1dC5oICovLAogCQkJCUJDRkUyRjBGMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3Qu
Y3BwICovLAogCQkJCUJDRkUyRjEwMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuaCAqLywKKwkJ
CQlCQzM0NTI1NTBEN0UwMjg1MDAxNjU3NEEgLyogSlNSR0JDb2xvci5sdXQuaCAqLywKIAkJCQlC
Q0UwMTM5ODBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlCQ0Uw
MTM5OTBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0LmggKi8sCiAJCQkJQTg0RUJEODIw
Q0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuY3BwICovLApAQCAtMTQ0ODYsNiAr
MTQ1MTAsMTIgQEAKIAkJCQlGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0EgLyogWE1MVG9rZW5pemVy
LmNwcCAqLywKIAkJCQlGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyogWE1MVG9rZW5pemVyLmgg
Ki8sCiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIu
Y3BwICovLAorCQkJCUJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAq
LywKKwkJCQlCQ0MwNjU3ODBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICovLAorCQkJ
CUJDQzA2NTc5MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKKwkJCQlCQ0Mw
NjU3QTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3BwICovLAorCQkJCUJDQzA2
NTdCMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oICovLAorCQkJCUJDQzA2NTdD
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5pZGwgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjcyMCw2ICsxNjc1MCwx
MCBAQAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk2REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVy
Qm94TW9kZWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQzA2NTdFMEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0MwNjU4MTBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQzA2NTg4
MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
QzA2NThBMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRTNBQzg0RTBGM0QwNkQxMDA2MzNGMDQgLyogV29ya2VyQ29udGV4dFByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRTNBQzg1MDBGM0QwNkY3MDA2MzNGMDQgLyogV29ya2VyT2Jq
ZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQwMEYxOUJGNiAv
KiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE2ODM4LDYgKzE2ODcyLDgg
QEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5D
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUJDQzA2NTdGMEYzQ0Ux
QjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQkNDMDY1
ODIwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xODcwMiw2ICsxODczOCwxMCBAQAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAw
NTZFNTgxIC8qIHZpc2libGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NkRCNDYw
RjNBODgyMjAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0MwNjU4NzBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGll
bnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzA2NTg5MEYzQ0UyQTcwMENEMkQ4NyAv
KiBKU0NsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4ODNERjI3MEYzRDA0
NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogV2ViQ29y
ZS9kb20vQ2xpZW50UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpZW50UmVj
dC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NsaWVu
dFJlY3Q6OkNsaWVudFJlY3QoKQoreworfQorCitDbGllbnRSZWN0OjpDbGllbnRSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgOiBtX3JlY3QocmVjdCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1lcmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0Ns
aWVudFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBDbGllbnRSZWN0X2gKKyNkZWZpbmUgQ2xp
ZW50UmVjdF9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIEludFJlY3Q7IAorCisgICAgY2xhc3MgQ2xpZW50UmVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENsaWVudFJlY3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENsaWVudFJlY3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGll
bnRSZWN0KTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBjcmVhdGUo
Y29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3QocmVj
dCkpOyB9CisKKyAgICAgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnkoKTsg
fQorICAgICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9
CisgICAgICAgIGZsb2F0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsg
fQorICAgICAgICBmbG9hdCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LngoKTsgfQorICAg
ICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAg
ICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpZW50UmVjdCgpOworICAgICAgICBDbGllbnRSZWN0KGNv
bnN0IEludFJlY3QmKTsKKworICAgICAgICBGbG9hdFJlY3QgbV9yZWN0OworICAgIH07IAorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDbGllbnRSZWN0X2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWVyZ2VpbmZvCgpJbmRleDogV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2RvbS9DbGllbnRSZWN0LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoK
KyAqLworCittb2R1bGUgdmlldyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBDbGllbnRSZWN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGZsb2F0IHRvcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHJpZ2h0Owor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgYm90dG9tOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZmxvYXQgbGVmdDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0
IHdpZHRoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgaGVpZ2h0OworICAgIH07
CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuaWRsCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptZXJnZWluZm8KCkluZGV4OiBXZWJDb3JlL2RvbS9DbGllbnRS
ZWN0TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDbGll
bnRSZWN0TGlzdDo6Q2xpZW50UmVjdExpc3QoKQoreworfQorCitDbGllbnRSZWN0TGlzdDo6Q2xp
ZW50UmVjdExpc3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQoreworICAgIG1fbGlz
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHF1YWRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9saXN0LmFwcGVuZChDbGll
bnRSZWN0OjpjcmVhdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSkpOworfQorCitD
bGllbnRSZWN0TGlzdDo6fkNsaWVudFJlY3RMaXN0KCkKK3sKK30KKwordW5zaWduZWQgQ2xpZW50
UmVjdExpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC5zaXplKCk7Cit9
CisKK0NsaWVudFJlY3QqIENsaWVudFJlY3RMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQorewor
ICAgIGlmIChpbmRleCA+PSBtX2xpc3Quc2l6ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlz
IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uCisgICAgICAgIC8vIGVjID0gSU5ERVhfU0laRV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBtX2xpc3RbaW5kZXhd
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1l
cmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
ZG9tL0NsaWVudFJlY3RMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
CisgKi8KKworI2lmbmRlZiBDbGllbnRSZWN0TGlzdF9oCisjZGVmaW5lIENsaWVudFJlY3RMaXN0
X2gKKworI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIENsaWVudFJlY3Q7CisKKyAgICBjbGFz
cyBDbGllbnRSZWN0TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPENsaWVudFJlY3RMaXN0PiB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3RMaXN0KTsgfQorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gY3JlYXRlKGNvbnN0IFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcykgeyByZXR1cm4gYWRvcHRSZWYobmV3IENsaWVudFJlY3RMaXN0KHF1YWRz
KSk7IH0KKyAgICAgICAgfkNsaWVudFJlY3RMaXN0KCk7CisKKyAgICAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CisgICAgICAgIENsaWVudFJlY3QqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpZW50UmVjdExpc3QoKTsKKyAgICAgICAgQ2xpZW50
UmVjdExpc3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsKKworICAgICAgICBWZWN0b3I8UmVm
UHRyPENsaWVudFJlY3Q+ID4gbV9saXN0OworICAgIH07IAorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBDbGllbnRSZWN0TGlzdF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptZXJnZWlu
Zm8KCkluZGV4OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9k
b20vQ2xpZW50UmVjdExpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KgorICovCisKK21vZHVsZSB2aWV3IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3IsCisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgXSBDbGllbnRSZWN0
TGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
KyAgICAgICAgQ2xpZW50UmVjdCBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICAgICAgLy8gRklYTUU6IEZpeCBsaXN0IGJlaGF2aW9yIHRvIGFsbG93IGN1c3RvbSBl
eGNlcHRpb25zIHRvIGJlIHRocm93bi4KKyAgICB9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBXZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1l
cmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0MDgyOCkKKysrIFdlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJD
U3RyaW5nLmgiCisjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgorI2luY2x1ZGUgIkNsaWVudFJlY3RM
aXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNs
dWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTQ0LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5o
IgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCkBAIC00
MTMsNiArNDE2LDQyIEBAIGludCBFbGVtZW50OjpzY3JvbGxIZWlnaHQoKQogICAgIHJldHVybiAw
OwogfQogCitQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0
cygpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CisKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxP
YmplY3QgPSB0aGlzLT5yZW5kZXJCb3hNb2RlbE9iamVjdCgpOworICAgIGlmICghcmVuZGVyQm94
TW9kZWxPYmplY3QpCisgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKCk7CisK
KyAgICAvLyBGSVhNRTogSGFuZGxlIFNWRyBlbGVtZW50cy4KKyAgICAvLyBGSVhNRTogSGFuZGxl
IHRhYmxlL2lubGluZS10YWJsZSB3aXRoIGEgY2FwdGlvbi4KKworICAgIFZlY3RvcjxGbG9hdFF1
YWQ+IHF1YWRzOworICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0ZVF1YWRzKHF1YWRz
KTsKKyAgICByZXR1cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0ZShxdWFkcyk7Cit9CisKK1Bhc3NS
ZWZQdHI8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QK
K3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmplY3QgPSB0aGlz
LT5yZW5kZXJCb3hNb2RlbE9iamVjdCgpOworICAgIGlmICghcmVuZGVyQm94TW9kZWxPYmplY3Qp
CisgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKworICAgIFZlY3RvcjxGbG9h
dFF1YWQ+IHF1YWRzOworICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0ZVF1YWRzKHF1
YWRzKTsKKworICAgIGlmIChxdWFkcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBDbGllbnRS
ZWN0OjpjcmVhdGUoKTsKKworICAgIEludFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uZW5jbG9zaW5n
Qm91bmRpbmdCb3goKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHF1YWRzLnNpemUoKTsg
KytpKQorICAgICAgICByZXN1bHQudW5pdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3go
KSk7CisKKyAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUp
CiB7CiAgICAgcmV0dXJuIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBl
LT5pc0hUTUxFbGVtZW50KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA0MDgyOCkKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBBdHRy
aWJ1dGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgRWxlbWVudFJhcmVEYXRh
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIENsaWVudFJlY3Q7CitjbGFzcyBDbGllbnRSZWN0TGlz
dDsKIAogY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoKQEAg
LTgyLDYgKzg0LDkgQEAgcHVibGljOgogICAgIGludCBzY3JvbGxXaWR0aCgpOwogICAgIGludCBz
Y3JvbGxIZWlnaHQoKTsKIAorICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVu
dFJlY3RzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSBjb25zdDsKKwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRp
b25Db2RlJik7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiA0MDgyOCkKKysrIFdlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwOSw4ICsxMDksOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzZWxlY3RvcnMpCiAgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKIAotICAgICAgICAvLyBFbGVtZW50VHJhdmVyc2FsIEFQSQogI2lmICFk
ZWZpbmVkKExBTkdVQUdFX0NPTSkKKyAgICAgICAgLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgZmlyc3RFbGVtZW50Q2hpbGQ7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHByZXZpb3VzRWxlbWVudFNpYmxpbmc7CkBAIC0x
MTgsNiArMTE4LDEyIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkKKyAgICAgICAgLy8gQ1NTT00gVmlldyBNb2R1bGUgQVBJCisg
ICAgICAgIENsaWVudFJlY3RMaXN0IGdldENsaWVudFJlY3RzKCk7CisgICAgICAgIENsaWVudFJl
Y3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisjZW5kaWYKKwogI2lmIGRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpCiAgICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAkocmV2aXNpb24gNDA4MjgpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBh
dHRyaWJ1dGUgTWltZVR5cGVDb25zdHJ1Y3RvciBNaW1lVHlwZTsKICAgICAgICAgYXR0cmlidXRl
IE1pbWVUeXBlQXJyYXlDb25zdHJ1Y3RvciBNaW1lVHlwZUFycmF5OwogCisgICAgICAgIGF0dHJp
YnV0ZSBDbGllbnRSZWN0Q29uc3RydWN0b3IgQ2xpZW50UmVjdDsKKyAgICAgICAgYXR0cmlidXRl
IENsaWVudFJlY3RMaXN0Q29uc3RydWN0b3IgQ2xpZW50UmVjdExpc3Q7CisKICNpZiBFTkFCTEVf
RE9NX1NUT1JBR0UKICAgICAgICAgYXR0cmlidXRlIFN0b3JhZ2VDb25zdHJ1Y3RvciBTdG9yYWdl
OwogICAgICAgICBhdHRyaWJ1dGUgU3RvcmFnZUV2ZW50Q29uc3RydWN0b3IgU3RvcmFnZUV2ZW50
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA0MDgyOCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
MCwxNCArNDIwLDYgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPAog
ICAgIGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIg
PSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdCh0eCAr
IGN1cnItPnhQb3MoKSwgdHkgKyBjdXJyLT55UG9zKCksIGN1cnItPndpZHRoKCksIGN1cnItPmhl
aWdodCgpKSk7CiAKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsg
Y3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPmlz
Qm94KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3goY3Vycik7
Ci0gICAgICAgICAgICBjdXJyLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCB0eCArIGJveC0+eCgpLCB0
eSArIGJveC0+eSgpLCBmYWxzZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY3Vyci0+
YWJzb2x1dGVSZWN0cyhyZWN0cywgdHgsIHR5LCBmYWxzZSk7Ci0gICAgfQotCiAgICAgaWYgKGNv
bnRpbnVhdGlvbigpICYmIHRvcExldmVsKSB7CiAgICAgICAgIGlmIChjb250aW51YXRpb24oKS0+
aXNCb3goKSkgewogICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChjb250
aW51YXRpb24oKSk7CkBAIC00NDcsMTEgKzQzOSw2IEBAIHZvaWQgUmVuZGVySW5saW5lOjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjwKICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQobG9jYWxSZWN0KSk7CiAgICAgfQogICAgIAotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBpZiAoIWN1cnItPmlzVGV4dCgpKQotICAgICAgICAgICAgY3Vyci0+YWJzb2x1dGVRdWFk
cyhxdWFkcywgZmFsc2UpOwotICAgIH0KLQogICAgIGlmIChjb250aW51YXRpb24oKSAmJiB0b3BM
ZXZlbCkKICAgICAgICAgY29udGludWF0aW9uKCktPmFic29sdXRlUXVhZHMocXVhZHMsIHRvcExl
dmVsKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwODI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDItMDggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0cyBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODk3CisgICAgICAgIFBsZWFzZSBpbXBsZW1lbnQgZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0IGFuZCBnZXRDbGllbnRSZWN0cworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzOTY2OT4K
KworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0Q2xpZW50UmVjdHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRDbGllbnRSZWN0cy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzOgorICAgICAgICAq
IGZhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6CisKIDIwMDktMDItMTAg
IEZlbmcgUWlhbiA8ZmVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVt
ZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
ZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDA4MjgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBB
U1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBuYW1lZE5vZGVNYXAuaXRlbSgyKQogCiBbb2JqZWN0
IEhUTUxGb3JtRWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDEyOAorUEFTUyBy
ZXN1bHRBcnJheS5sZW5ndGggaXMgMTMwCiBQQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCiBQ
QVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3NlbGVjdCcpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMgJzEnCkBAIC00MSw3ICs0MSw3
IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRl
bSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMl0KIAogW29iamVj
dCBIVE1MU2VsZWN0RWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDEzMworUEFT
UyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTM1CiBQQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAn
CiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ29wdGlvbicpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMgJzEnCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRCb3VuZGlu
Z0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxNyBAQAor
Q2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxCit0ZXN0UmVjdC50b3AgNDIKK3Rlc3RSZWN0Lmxl
ZnQgOAordGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMTAwCit0ZXN0UmVjdC5i
b3R0b20gMTQyCit0ZXN0UmVjdC5yaWdodCAzMDgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgNDIK
K1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFT
UyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTAwCitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVj
dC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3Qu
bGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBib3VuZGluZyByZWN0IGZvciAjMgordGVz
dFJlY3QudG9wIDE5MgordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAzMjAKK3Rlc3RS
ZWN0LmhlaWdodCAxMjAKK3Rlc3RSZWN0LmJvdHRvbSAzMTIKK3Rlc3RSZWN0LnJpZ2h0IDMyOAor
CitQQVNTIHRlc3RSZWN0LnRvcCBpcyAxOTIKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNT
IHRlc3RSZWN0LndpZHRoIGlzIDMyMAorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMTIwCitQQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjMwordGVzdFJlY3QudG9wIDM2MgordGVzdFJlY3QubGVmdCAx
OAordGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMTAwCit0ZXN0UmVjdC5ib3R0
b20gNDYyCit0ZXN0UmVjdC5yaWdodCAzMTgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgMzYyCitQ
QVNTIHRlc3RSZWN0LmxlZnQgaXMgMTgKK1BBU1MgdGVzdFJlY3Qud2lkdGggaXMgMzAwCitQQVNT
IHRlc3RSZWN0LmhlaWdodCBpcyAxMDAKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5s
ZWZ0ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM0Cit0ZXN0
UmVjdC50b3AgNDkxCit0ZXN0UmVjdC5sZWZ0IDM3Cit0ZXN0UmVjdC53aWR0aCAxNDIKK3Rlc3RS
ZWN0LmhlaWdodCAxNDIKK3Rlc3RSZWN0LmJvdHRvbSA2MzMKK3Rlc3RSZWN0LnJpZ2h0IDE3OQor
CitQQVNTIHRlc3RSZWN0LnRvcCBpcyA0OTEKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyAzNworUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAxNDIKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE0MgorUEFT
UyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNT
IHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGll
bnQgYm91bmRpbmcgcmVjdCBmb3IgIzUKK3Rlc3RSZWN0LnRvcCA2NjIKK3Rlc3RSZWN0LmxlZnQg
OAordGVzdFJlY3Qud2lkdGggMzAwCit0ZXN0UmVjdC5oZWlnaHQgMjM0Cit0ZXN0UmVjdC5ib3R0
b20gODk2Cit0ZXN0UmVjdC5yaWdodCAzMDgKKworUEFTUyB0ZXN0UmVjdC50b3AgaXMgNjYyCitQ
QVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKK1BBU1Mg
dGVzdFJlY3QuaGVpZ2h0IGlzIDIzNAorUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3Qu
dG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0Lmxl
ZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzYKK0tub3du
IGZhaWx1cmUuIFNraXBwaW5nLgorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzcKK3Rlc3RS
ZWN0LnRvcCAxMjMwCit0ZXN0UmVjdC5sZWZ0IDgKK3Rlc3RSZWN0LndpZHRoIDI5OQordGVzdFJl
Y3QuaGVpZ2h0IDE4MAordGVzdFJlY3QuYm90dG9tIDE0MTAKK3Rlc3RSZWN0LnJpZ2h0IDMwNwor
CitQQVNTIHRlc3RSZWN0LnRvcCBpcyAxMjMwCitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAyOTkKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE4MAorUEFT
UyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVzdFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNT
IHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RSZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGll
bnQgYm91bmRpbmcgcmVjdCBmb3IgIzgKK3Rlc3RSZWN0LnRvcCAxNDYwCit0ZXN0UmVjdC5sZWZ0
IDgKK3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDQ2Cit0ZXN0UmVjdC5ib3R0
b20gMTUwNgordGVzdFJlY3QucmlnaHQgMzA4CisKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDE0NjAK
K1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFT
UyB0ZXN0UmVjdC5oZWlnaHQgaXMgNDYKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5s
ZWZ0ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICM5Cit0ZXN0
UmVjdC50b3AgMTU1NgordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAzMDAKK3Rlc3RS
ZWN0LmhlaWdodCA2NAordGVzdFJlY3QuYm90dG9tIDE2MjAKK3Rlc3RSZWN0LnJpZ2h0IDMwOAor
CitQQVNTIHRlc3RSZWN0LnRvcCBpcyAxNTU2CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFT
UyB0ZXN0UmVjdC53aWR0aCBpcyAzMDAKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDY0CitQQVNT
IHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1Mg
dGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVu
dCBib3VuZGluZyByZWN0IGZvciAjMTAKK3Rlc3RSZWN0LnRvcCAxNjcyCit0ZXN0UmVjdC5sZWZ0
IDgKK3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDIwCit0ZXN0UmVjdC5ib3R0
b20gMTY5MgordGVzdFJlY3QucmlnaHQgMzA4CisKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDE2NzIK
K1BBU1MgdGVzdFJlY3QubGVmdCBpcyA4CitQQVNTIHRlc3RSZWN0LndpZHRoIGlzIDMwMAorUEFT
UyB0ZXN0UmVjdC5oZWlnaHQgaXMgMjAKK1BBU1MgdGVzdFJlY3QuYm90dG9tIGlzIHRlc3RSZWN0
LnRvcCArIHRlc3RSZWN0LmhlaWdodAorUEFTUyB0ZXN0UmVjdC5yaWdodCBpcyB0ZXN0UmVjdC5s
ZWZ0ICsgdGVzdFJlY3Qud2lkdGgKKworQ2xpZW50IGJvdW5kaW5nIHJlY3QgZm9yICMxMQordGVz
dFJlY3QudG9wIDE3NjgKK3Rlc3RSZWN0LmxlZnQgMTAKK3Rlc3RSZWN0LndpZHRoIDE0NwordGVz
dFJlY3QuaGVpZ2h0IDIwCit0ZXN0UmVjdC5ib3R0b20gMTc4OAordGVzdFJlY3QucmlnaHQgMTU3
CisKK1BBU1MgdGVzdFJlY3QudG9wIGlzIDE3NjgKK1BBU1MgdGVzdFJlY3QubGVmdCBpcyAxMAor
UEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAxNDcKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDIwCitQ
QVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BB
U1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0Ns
aWVudCBib3VuZGluZyByZWN0IGZvciAjMTIKK3Rlc3RSZWN0LnRvcCAxODYyCit0ZXN0UmVjdC5s
ZWZ0IDgKK3Rlc3RSZWN0LndpZHRoIDEwMAordGVzdFJlY3QuaGVpZ2h0IDEwMAordGVzdFJlY3Qu
Ym90dG9tIDE5NjIKK3Rlc3RSZWN0LnJpZ2h0IDEwOAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAx
ODYyCitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAxMDAK
K1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDEwMAorUEFTUyB0ZXN0UmVjdC5ib3R0b20gaXMgdGVz
dFJlY3QudG9wICsgdGVzdFJlY3QuaGVpZ2h0CitQQVNTIHRlc3RSZWN0LnJpZ2h0IGlzIHRlc3RS
ZWN0LmxlZnQgKyB0ZXN0UmVjdC53aWR0aAorCitDbGllbnQgYm91bmRpbmcgcmVjdCBmb3IgIzEz
Cit0ZXN0UmVjdC50b3AgMjA5OAordGVzdFJlY3QubGVmdCA4Cit0ZXN0UmVjdC53aWR0aCAxODAK
K3Rlc3RSZWN0LmhlaWdodCAxOAordGVzdFJlY3QuYm90dG9tIDIxMTYKK3Rlc3RSZWN0LnJpZ2h0
IDE4OAorCitQQVNTIHRlc3RSZWN0LnRvcCBpcyAyMDk4CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMg
OAorUEFTUyB0ZXN0UmVjdC53aWR0aCBpcyAxODAKK1BBU1MgdGVzdFJlY3QuaGVpZ2h0IGlzIDE4
CitQQVNTIHRlc3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQK
K1BBU1MgdGVzdFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisK
K0NsaWVudCBib3VuZGluZyByZWN0IGZvciAjMTQKK3Rlc3RSZWN0LnRvcCAyMTY2Cit0ZXN0UmVj
dC5sZWZ0IDgKK3Rlc3RSZWN0LndpZHRoIDMwMAordGVzdFJlY3QuaGVpZ2h0IDIzNgordGVzdFJl
Y3QuYm90dG9tIDI0MDIKK3Rlc3RSZWN0LnJpZ2h0IDMwOAorCitQQVNTIHRlc3RSZWN0LnRvcCBp
cyAyMTY2CitQQVNTIHRlc3RSZWN0LmxlZnQgaXMgOAorRkFJTCB0ZXN0UmVjdC53aWR0aCBzaG91
bGQgYmUgMjAwLiBXYXMgMzAwLgorUEFTUyB0ZXN0UmVjdC5oZWlnaHQgaXMgMjM2CitQQVNTIHRl
c3RSZWN0LmJvdHRvbSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVz
dFJlY3QucmlnaHQgaXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK0NsaWVudCBi
b3VuZGluZyByZWN0IGZvciAjMTUKK3Rlc3RSZWN0LnRvcCAwCit0ZXN0UmVjdC5sZWZ0IDAKK3Rl
c3RSZWN0LndpZHRoIDAKK3Rlc3RSZWN0LmhlaWdodCAwCit0ZXN0UmVjdC5ib3R0b20gMAordGVz
dFJlY3QucmlnaHQgMAorCitGQUlMIHRlc3RSZWN0LnRvcCBzaG91bGQgYmUgMjQ1Mi4gV2FzIDAu
CitGQUlMIHRlc3RSZWN0LmxlZnQgc2hvdWxkIGJlIDguIFdhcyAwLgorUEFTUyB0ZXN0UmVjdC53
aWR0aCBpcyAwCitQQVNTIHRlc3RSZWN0LmhlaWdodCBpcyAwCitQQVNTIHRlc3RSZWN0LmJvdHRv
bSBpcyB0ZXN0UmVjdC50b3AgKyB0ZXN0UmVjdC5oZWlnaHQKK1BBU1MgdGVzdFJlY3QucmlnaHQg
aXMgdGVzdFJlY3QubGVmdCArIHRlc3RSZWN0LndpZHRoCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE4MCBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2Jhc2UgeworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2JvcmRl
ciB7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCAjOTk5OworICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI21hcmdpbiB7CisgICAg
ICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgIH0KKworICAgICN0cmFuc2Zvcm0geworICAgICAgICAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlWCg1MHB4KSByb3RhdGUoNDVkZWcpOworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2NvbHVtbnMgeworICAg
ICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMzsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
IH0KKworICAgICNpbmxpbmUgeworICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgfQorCisg
ICAgI291dGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgIH0KKworICAgICNpbm5lciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB9CisKKyAgICB0YWJsZSB7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICB9CisKKyAgICBpbWcgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgfQorCisgICAgLnRlc3RCb3ggeworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAgICAjdGVzdEFyZWEgeworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgfQorCisgICAgLmJib3ggeworICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsK
KyAgICAgICAgb3V0bGluZTogNXB4IHNvbGlkIHJnYmEoMjU1LCAwLCAwLCAuNzUpOworICAgIH0K
KworICAgICNjb25zb2xlIHsKKyAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgICAgIGxl
ZnQ6IDUwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGRpdiBpZD0idGVzdEFyZWEiPgorCis8cD4xLiBCYXNlPC9wPiAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9ImJhc2UiIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjIuIEJvcmRlcjwvcD4gICAg
ICAgICAgICAgICAgPGRpdiBpZD0iYm9yZGVyIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Cis8cD4z
LiBNYXJnaW48L3A+ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1hcmdpbiIgY2xhc3M9InRlc3RC
b3giPjwvZGl2PgorPHA+NC4gVHJhbnNmb3JtPC9wPiAgICAgICAgICAgICA8ZGl2IGlkPSJ0cmFu
c2Zvcm0iIGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjUuIENvbHVtbjwvcD4gICAgICAgICAg
ICAgICAgPGRpdiBpZD0iY29sdW1ucyIgY2xhc3M9InRlc3RCb3giPkxvcmVtIGlwc3VtIGRvbG9y
IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0
ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5p
bSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJv
cmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGly
dXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVt
IGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0
IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1
bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9kaXY+Cis8cD42LiBJbiBhIGNvbHVtbjwv
cD4gICAgICAgICAgIDxkaXYgaWQ9ImNvbHVtbnMiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5p
bSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kg
dXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC48c3BhbiBpZD0iaW4tY29sdW1ucyIg
Y2xhc3M9InRlc3RCb3gga25vd25GYWlsdXJlIj5JbiBjb2x1bW5zPC9zcGFuPiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4KKzxwPjcuIElubGluZTwvcD4g
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5saW5lIiBjbGFzcz0idGVzdEJveCI+TG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48L2Rpdj4KKzxwPjguIFRhYmxl
PC9wPiAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0ZXN0Qm94Ij48dHI+PHRkPnRhYmxl
IGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+
PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PC90YWJsZT4KKzxwPjkuIFRhYmxlIHdpdGggQ2FwdGlv
bjwvcD4gICAgPHRhYmxlIGNsYXNzPSJ0ZXN0Qm94Ij48Y2FwdGlvbj5jYXB0aW9uPC9jYXB0aW9u
Pjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRyPjx0ZD50
YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+MTAuIFRh
YmxlIFJvdzwvcD4gICAgICAgICAgICA8dGFibGU+PHRyIGNsYXNzPSJ0ZXN0Qm94Ij48dGQ+dGFi
bGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90
ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+MTEuIFRhYmxlIENlbGw8L3A+
ICAgICAgICAgICA8dGFibGU+PHRyPjx0ZCBjbGFzcz0idGVzdEJveCI+dGFibGUgZGF0YTwvdGQ+
PHRkPnRhYmxlIGRhdGE8L3RkPjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUg
ZGF0YTwvdGQ+PC90cj48L3RhYmxlPgorPHA+MTIuIEJpZyBibG9jayBpbiBsaXR0bGU8L3A+ICA8
ZGl2IGlkPSJvdXRlciIgY2xhc3M9InRlc3RCb3giPjxkaXYgaWQ9ImlubmVyIj48L2Rpdj48L2Rp
dj4KKzxwPjEzLiBSZXBsYWNlZCBpbiBpbmxpbmU8L3A+ICAgPHNwYW4gY2xhc3M9InRlc3RCb3gi
PkxvcmVtPGltZz5pcHN1bTwvc3Bhbj4KKzxwPjE0LiBCbG9jayBpbiBpbmxpbmU8L3A+ICAgICAg
PHNwYW4gY2xhc3M9InRlc3RCb3giPkxvcmVtPGRpdiBpZD0iaW5uZXIiPjwvZGl2Pmlwc3VtPC9z
cGFuPgorPHA+MTUuIEZsb2F0IGluIGlubGluZTwvcD4gICAgICA8c3BhbiBjbGFzcz0idGVzdEJv
eCI+PGltZyBzdHlsZT0iZmxvYXQ6cmlnaHQiPjwvc3Bhbj4KKworPC9kaXY+CisKKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHRlc3RSZWN0OworICAgIGZ1bmN0
aW9uIHRlc3RDbGllbnRSZWN0KHRvVGVzdCwgZXhwZWN0ZWRSZWN0KQorICAgIHsKKyAgICAgICAg
dGVzdFJlY3QgPSB0b1Rlc3Q7CisgICAgICAgIAorICAgICAgICBkZWJ1ZygidGVzdFJlY3QudG9w
ICIgKyB0ZXN0UmVjdC50b3ApOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QubGVmdCAiICsgdGVz
dFJlY3QubGVmdCk7CisgICAgICAgIGRlYnVnKCJ0ZXN0UmVjdC53aWR0aCAiICsgdGVzdFJlY3Qu
d2lkdGgpOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QuaGVpZ2h0ICIgKyB0ZXN0UmVjdC5oZWln
aHQpOworICAgICAgICBkZWJ1ZygidGVzdFJlY3QuYm90dG9tICIgKyB0ZXN0UmVjdC5ib3R0b20p
OworICAgICAgICBkZWJ1ZygidGVzdFJlY3QucmlnaHQgIiArIHRlc3RSZWN0LnJpZ2h0KTsKKyAg
ICAgICAgZGVidWcoIiIpOworCisgICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVjdC50b3AiLCBTdHJp
bmcoZXhwZWN0ZWRSZWN0LnRvcCkpOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3QubGVmdCIs
IFN0cmluZyhleHBlY3RlZFJlY3QubGVmdCkpOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3Qu
d2lkdGgiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0LndpZHRoKSk7CisgICAgICAgIHNob3VsZEJlKCJ0
ZXN0UmVjdC5oZWlnaHQiLCBTdHJpbmcoZXhwZWN0ZWRSZWN0LmhlaWdodCkpOworICAgICAgICBz
aG91bGRCZSgidGVzdFJlY3QuYm90dG9tIiwgInRlc3RSZWN0LnRvcCArIHRlc3RSZWN0LmhlaWdo
dCIpOworICAgICAgICBzaG91bGRCZSgidGVzdFJlY3QucmlnaHQiLCAidGVzdFJlY3QubGVmdCAr
IHRlc3RSZWN0LndpZHRoIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBhZGRCQm94T3ZlckNsaWVudFJlY3QocmVjdCkKKyAgICB7CisgICAgICAgIHZhciBiYm94
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGJib3guY2xhc3NOYW1l
ID0gImJib3giOworICAgICAgICB2YXIgc3R5bGUgPSAiIjsKKyAgICAgICAgc3R5bGUgKz0gImxl
ZnQ6ICIgICArIHJlY3QubGVmdCArICJweDsiOworICAgICAgICBzdHlsZSArPSAidG9wOiAiICAg
ICsgcmVjdC50b3AgKyAicHg7IjsKKyAgICAgICAgc3R5bGUgKz0gIndpZHRoOiAiICArIChyZWN0
LnJpZ2h0IC0gcmVjdC5sZWZ0KSArICJweDsiOworICAgICAgICBzdHlsZSArPSAiaGVpZ2h0OiAi
ICsgKHJlY3QuYm90dG9tIC0gcmVjdC50b3ApICsgInB4OyI7CisgICAgICAgIGJib3guc2V0QXR0
cmlidXRlKCJzdHlsZSIsIHN0eWxlKTsKKyAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LmFwcGVuZENoaWxkKGJib3gpOworICAgIH0KKworICAgIHZhciBmYWlsID0gdW5kZWZpbmVkOwor
CisgICAgdmFyIGV4cGVjdGVkUmVzdWx0cyA9IFsKKyAgICAgICAgLyoxKi8gIHsgdG9wOiA0Miwg
bGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiAxMDAgfSwKKyAgICAgICAgLyoyKi8gIHsgdG9w
OiAxOTIsIGxlZnQ6IDgsIHdpZHRoOiAzMjAsIGhlaWdodDogMTIwIH0sCisgICAgICAgIC8qMyov
ICB7IHRvcDogMzYyLCBsZWZ0OiAxOCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiAxMDAgfSwKKyAgICAg
ICAgLyo0Ki8gIHsgdG9wOiA0OTEsIGxlZnQ6IDM3LCB3aWR0aDogMTQyLCBoZWlnaHQ6IDE0MiB9
LAorICAgICAgICAvKjUqLyAgeyB0b3A6IDY2MiwgbGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0
OiAyMzQgfSwKKyAgICAgICAgLyo2Ki8gIHsgdG9wOiBmYWlsLCBsZWZ0OiBmYWlsLCB3aWR0aDog
ZmFpbCwgaGVpZ2h0OiBmYWlsIH0sCisgICAgICAgIC8qNyovICB7IHRvcDogMTIzMCwgbGVmdDog
OCwgd2lkdGg6IDI5OSwgaGVpZ2h0OiAxODAgfSwKKyAgICAgICAgLyo4Ki8gIHsgdG9wOiAxNDYw
LCBsZWZ0OiA4LCB3aWR0aDogMzAwLCBoZWlnaHQ6IDQ2IH0sCisgICAgICAgIC8qOSovICB7IHRv
cDogMTU1NiwgbGVmdDogOCwgd2lkdGg6IDMwMCwgaGVpZ2h0OiA2NCB9LAorICAgICAgICAvKjEw
Ki8geyB0b3A6IDE2NzIsIGxlZnQ6IDgsIHdpZHRoOiAzMDAsIGhlaWdodDogMjAgfSwKKyAgICAg
ICAgLyoxMSovIHsgdG9wOiAxNzY4LCBsZWZ0OiAxMCwgd2lkdGg6IDE0NywgaGVpZ2h0OiAyMCB9
LAorICAgICAgICAvKjEyKi8geyB0b3A6IDE4NjIsIGxlZnQ6IDgsIHdpZHRoOiAxMDAsIGhlaWdo
dDogMTAwIH0sCisgICAgICAgIC8qMTMqLyB7IHRvcDogMjA5OCwgbGVmdDogOCwgd2lkdGg6IDE4
MCwgaGVpZ2h0OiAxOCB9LAorICAgICAgICAvKjE0Ki8geyB0b3A6IDIxNjYsIGxlZnQ6IDgsIHdp
ZHRoOiAyMDAsIGhlaWdodDogMjM2IH0sCisgICAgICAgIC8qMTUqLyB7IHRvcDogMjQ1MiwgbGVm
dDogOCwgd2lkdGg6IDAsIGhlaWdodDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIHRlc3Qo
bnVtYmVyLCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIkNsaWVudCBib3VuZGluZyBy
ZWN0IGZvciAjIiArIG51bWJlcik7CisKKyAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NOYW1lLm1h
dGNoKCJrbm93bkZhaWx1cmUiKSkgeworICAgICAgICAgICAgZGVidWcoIktub3duIGZhaWx1cmUu
IFNraXBwaW5nLiIpOworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IGVsZW1lbnQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGFkZEJCb3hPdmVyQ2xpZW50UmVjdChib3VuZGlu
Z1JlY3QpOworICAgICAgICB0ZXN0Q2xpZW50UmVjdChib3VuZGluZ1JlY3QsIGV4cGVjdGVkUmVz
dWx0c1tudW1iZXIgLSAxXSk7CisgICAgfQorCisgICAgdmFyIHRlc3RzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgidGVzdEJveCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRlc3QoaSArIDEsIHRlc3RzW2ldKTsKKworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgdmFyIGFyZWEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKKyAgICAgICAgYXJlYS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGFyZWEpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldENsaWVudFJl
Y3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRD
bGllbnRSZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRDbGllbnRSZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDkgQEAKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzEKK1BBU1MgdGVzdFJlY3RzLmxlbmd0
aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzIKK1BBU1MgdGVzdFJlY3RzLmxl
bmd0aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzMKK1BBU1MgdGVzdFJlY3Rz
Lmxlbmd0aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzQKK1BBU1MgdGVzdFJl
Y3RzLmxlbmd0aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzUKK1BBU1MgdGVz
dFJlY3RzLmxlbmd0aCBpcyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzYKK0tub3du
IGZhaWx1cmUuIFNraXBwaW5nLgorCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICM3CitQQVNT
IHRlc3RSZWN0cy5sZW5ndGggaXMgMTAKKworQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjOAor
UEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEKKworQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAj
OQorRkFJTCB0ZXN0UmVjdHMubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMS4KKworQ2xpZW50IGJv
dW5kaW5nIHJlY3RzIGZvciAjMTAKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBpcyAxCisKK0NsaWVu
dCBib3VuZGluZyByZWN0cyBmb3IgIzExCitQQVNTIHRlc3RSZWN0cy5sZW5ndGggaXMgMQorCitD
bGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICMxMgorUEFTUyB0ZXN0UmVjdHMubGVuZ3RoIGlzIDEK
KworQ2xpZW50IGJvdW5kaW5nIHJlY3RzIGZvciAjMTMKK1BBU1MgdGVzdFJlY3RzLmxlbmd0aCBp
cyAxCisKK0NsaWVudCBib3VuZGluZyByZWN0cyBmb3IgIzE0CitQQVNTIHRlc3RSZWN0cy5sZW5n
dGggaXMgMworCitDbGllbnQgYm91bmRpbmcgcmVjdHMgZm9yICMxNQorRkFJTCB0ZXN0UmVjdHMu
bGVuZ3RoIHNob3VsZCBiZSAxLiBXYXMgMC4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldENs
aWVudFJlY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0Q2xp
ZW50UmVjdHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldENs
aWVudFJlY3RzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY5IEBACis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKyAgICAjYmFzZSB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICB9CisKKyAgICAjYm9yZGVyIHsKKyAgICAgICAgYm9yZGVyOiAxMHB4IHNv
bGlkICM5OTk7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICB9CisKKyAgICAjbWFyZ2luIHsKKyAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI3RyYW5z
Zm9ybSB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwcHgpIHJvdGF0
ZSg0NWRlZyk7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICB9CisKKyAgICAjY29sdW1ucyB7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAz
OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgfQorCisgICAgI2lubGluZSB7CisgICAgICAg
IGRpc3BsYXk6IGlubGluZTsKKyAgICB9CisKKyAgICAjb3V0ZXIgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2lubmVyIHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKworICAg
IHRhYmxlIHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgIH0KKworICAgIGltZyB7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisKKyAgICAu
dGVzdEJveCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAg
ICN0ZXN0QXJlYSB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICB9CisKKyAgICAuYmJveCB7
CisgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgICAgICBvdXRsaW5lOiA1cHggc29saWQg
cmdiYSgyNTUsIDAsIDAsIC43NSk7CisgICAgfQorCisgICAgI2NvbnNvbGUgeworICAgICAgICBw
b3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogNTAwcHg7CisgICAgfQorPC9zdHlsZT4K
KworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0QXJlYSI+CisKKzxwPjEu
IEJhc2U8L3A+ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYmFzZSIgY2xhc3M9InRlc3RCb3gi
PjwvZGl2PgorPHA+Mi4gQm9yZGVyPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJib3JkZXIi
IGNsYXNzPSJ0ZXN0Qm94Ij48L2Rpdj4KKzxwPjMuIE1hcmdpbjwvcD4gICAgICAgICAgICAgICAg
PGRpdiBpZD0ibWFyZ2luIiBjbGFzcz0idGVzdEJveCI+PC9kaXY+Cis8cD40LiBUcmFuc2Zvcm08
L3A+ICAgICAgICAgICAgIDxkaXYgaWQ9InRyYW5zZm9ybSIgY2xhc3M9InRlc3RCb3giPjwvZGl2
PgorPHA+NS4gQ29sdW1uPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjb2x1bW5zIiBjbGFz
cz0idGVzdEJveCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBl
dCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0
cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNv
bW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBp
biB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJp
YXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3Vu
dCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1
bS48L2Rpdj4KKzxwPjYuIEluIGEgY29sdW1uPC9wPiAgICAgICAgICAgPGRpdiBpZD0iY29sdW1u
cyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs
aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUg
bWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29u
c2VxdWF0LjxzcGFuIGlkPSJpbi1jb2x1bW5zIiBjbGFzcz0idGVzdEJveCBrbm93bkZhaWx1cmUi
PkluIGNvbHVtbnM8L3NwYW4+IER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLjwvZGl2PgorPHA+Ny4gSW5saW5lPC9wPiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbmxp
bmUiIGNsYXNzPSJ0ZXN0Qm94Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQg
bGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBx
dWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAg
ZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhl
bmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51
bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lk
ZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVz
dCBsYWJvcnVtLjwvZGl2PgorPHA+OC4gVGFibGU8L3A+ICAgICAgICAgICAgICAgICA8dGFibGUg
Y2xhc3M9InRlc3RCb3giPjx0cj48dGQ+dGFibGUgZGF0YTwvdGQ+PHRkPnRhYmxlIGRhdGE8L3Rk
PjwvdHI+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48L3Rh
YmxlPgorPHA+OS4gVGFibGUgd2l0aCBDYXB0aW9uPC9wPiAgICA8dGFibGUgY2xhc3M9InRlc3RC
b3giPjxjYXB0aW9uPmNhcHRpb248L2NhcHRpb24+PHRyPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+
dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRh
PC90ZD48L3RyPjwvdGFibGU+Cis8cD4xMC4gVGFibGUgUm93PC9wPiAgICAgICAgICAgIDx0YWJs
ZT48dHIgY2xhc3M9InRlc3RCb3giPjx0ZD50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwv
dGQ+PC90cj48dHI+PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjwv
dGFibGU+Cis8cD4xMS4gVGFibGUgQ2VsbDwvcD4gICAgICAgICAgIDx0YWJsZT48dHI+PHRkIGNs
YXNzPSJ0ZXN0Qm94Ij50YWJsZSBkYXRhPC90ZD48dGQ+dGFibGUgZGF0YTwvdGQ+PC90cj48dHI+
PHRkPnRhYmxlIGRhdGE8L3RkPjx0ZD50YWJsZSBkYXRhPC90ZD48L3RyPjwvdGFibGU+Cis8cD4x
Mi4gQmlnIGJsb2NrIGluIGxpdHRsZTwvcD4gIDxkaXYgaWQ9Im91dGVyIiBjbGFzcz0idGVzdEJv
eCI+PGRpdiBpZD0iaW5uZXIiPjwvZGl2PjwvZGl2PgorPHA+MTMuIFJlcGxhY2VkIGluIGlubGlu
ZTwvcD4gICA8c3BhbiBjbGFzcz0idGVzdEJveCI+TG9yZW08aW1nPmlwc3VtPC9zcGFuPgorPHA+
MTQuIEJsb2NrIGluIGlubGluZTwvcD4gICAgICA8c3BhbiBjbGFzcz0idGVzdEJveCI+TG9yZW08
ZGl2IGlkPSJpbm5lciI+PC9kaXY+aXBzdW08L3NwYW4+Cis8cD4xNS4gRmxvYXQgaW4gaW5saW5l
PC9wPiAgICAgIDxzcGFuIGNsYXNzPSJ0ZXN0Qm94Ij48aW1nIHN0eWxlPSJmbG9hdDpyaWdodCI+
PC9zcGFuPgorCis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgdmFyIHRlc3RSZWN0czsKKyAgICBmdW5jdGlvbiB0ZXN0Q2xpZW50UmVjdHMocmVjdHMsIGV4
cGVjdGVkTnVtYmVyT2ZSZWN0cykKKyAgICB7CisgICAgICAgIHRlc3RSZWN0cyA9IHJlY3RzOwor
ICAgICAgICBzaG91bGRCZSgidGVzdFJlY3RzLmxlbmd0aCIsIFN0cmluZyhleHBlY3RlZE51bWJl
ck9mUmVjdHMpKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFk
ZEJCb3hPdmVyQ2xpZW50UmVjdChyZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGJib3ggPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgYmJveC5jbGFzc05hbWUgPSAiYmJv
eCI7CisgICAgICAgIHZhciBzdHlsZSA9ICIiOworICAgICAgICBzdHlsZSArPSAibGVmdDogIiAg
ICsgcmVjdC5sZWZ0ICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJ0b3A6ICIgICAgKyByZWN0
LnRvcCArICJweDsiOworICAgICAgICBzdHlsZSArPSAid2lkdGg6ICIgICsgKHJlY3QucmlnaHQg
LSByZWN0LmxlZnQpICsgInB4OyI7CisgICAgICAgIHN0eWxlICs9ICJoZWlnaHQ6ICIgKyAocmVj
dC5ib3R0b20gLSByZWN0LnRvcCkgKyAicHg7IjsKKyAgICAgICAgYmJveC5zZXRBdHRyaWJ1dGUo
InN0eWxlIiwgc3R5bGUpOworICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoYmJveCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkQkJveE92ZXJDbGllbnRSZWN0
cyhyZWN0cykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjdHMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBhZGRCQm94T3ZlckNsaWVudFJlY3QocmVjdHNbaV0pOworICAg
IH0KKworICAgIHZhciBleHBlY3RlZFJlc3VsdHMgPSBbCisgICAgICAgIDEsCisgICAgICAgIDEs
CisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAg
IDEwLAorICAgICAgICAxLAorICAgICAgICAyLAorICAgICAgICAxLAorICAgICAgICAxLAorICAg
ICAgICAxLAorICAgICAgICAxLAorICAgICAgICAzLAorICAgICAgICAxCisgICAgXTsKKworICAg
IGZ1bmN0aW9uIHRlc3QobnVtYmVyLCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIkNs
aWVudCBib3VuZGluZyByZWN0cyBmb3IgIyIgKyBudW1iZXIpOworCisgICAgICAgIGlmIChlbGVt
ZW50LmNsYXNzTmFtZS5tYXRjaCgia25vd25GYWlsdXJlIikpIHsKKyAgICAgICAgICAgIGRlYnVn
KCJLbm93biBmYWlsdXJlLiBTa2lwcGluZy4iKTsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBib3VuZGluZ1JlY3Rz
ID0gZWxlbWVudC5nZXRDbGllbnRSZWN0cygpOworICAgICAgICBhZGRCQm94T3ZlckNsaWVudFJl
Y3RzKGJvdW5kaW5nUmVjdHMpOworICAgICAgICB0ZXN0Q2xpZW50UmVjdHMoYm91bmRpbmdSZWN0
cywgZXhwZWN0ZWRSZXN1bHRzW251bWJlciAtIDFdKTsKKyAgICB9CisKKyAgICB2YXIgdGVzdHMg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Qm94Iik7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGVzdChpICsgMSwgdGVz
dHNbaV0pOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0QXJlYScpOworICAgICAg
ICBhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXJlYSk7CisgICAgfQorCisgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA0MDgyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw2ICszNjQsMTEg
QEAgd2luZG93LkNoYXJhY3RlckRhdGEucHJvdG90eXBlLnJlbW92ZUV2ZQogd2luZG93LkNoYXJh
Y3RlckRhdGEucHJvdG90eXBlLnJlcGxhY2VDaGlsZCBbZnVuY3Rpb25dCiB3aW5kb3cuQ2hhcmFj
dGVyRGF0YS5wcm90b3R5cGUucmVwbGFjZURhdGEgW2Z1bmN0aW9uXQogd2luZG93LkNoYXJhY3Rl
ckRhdGEucHJvdG90eXBlLnN1YnN0cmluZ0RhdGEgW2Z1bmN0aW9uXQord2luZG93LkNsaWVudFJl
Y3QgW29iamVjdCBDbGllbnRSZWN0Q29uc3RydWN0b3JdCit3aW5kb3cuQ2xpZW50UmVjdC5wcm90
b3R5cGUgW29iamVjdCBDbGllbnRSZWN0UHJvdG90eXBlXQord2luZG93LkNsaWVudFJlY3RMaXN0
IFtvYmplY3QgQ2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5DbGllbnRSZWN0TGlz
dC5wcm90b3R5cGUgW29iamVjdCBDbGllbnRSZWN0TGlzdFByb3RvdHlwZV0KK3dpbmRvdy5DbGll
bnRSZWN0TGlzdC5wcm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCiB3aW5kb3cuQ2xpcGJvYXJkIFtv
YmplY3QgQ2xpcGJvYXJkQ29uc3RydWN0b3JdCiB3aW5kb3cuQ2xpcGJvYXJkLnByb3RvdHlwZSBb
b2JqZWN0IENsaXBib2FyZFByb3RvdHlwZV0KIHdpbmRvdy5DbGlwYm9hcmQucHJvdG90eXBlLmNs
ZWFyRGF0YSBbZnVuY3Rpb25dCkBAIC02MDgsNiArNjEzLDggQEAgd2luZG93LkVsZW1lbnQucHJv
dG90eXBlLmdldEF0dHJpYnV0ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJp
YnV0ZU5TIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVO
b2RlIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2Rl
TlMgW2Z1bmN0aW9uXQord2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCBbZnVuY3Rpb25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpZW50UmVjdHMg
W2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdO
YW1lIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFn
TmFtZU5TIFtmdW5jdGlvbl0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9k
b21MaXN0RW51bWVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVzb3VyY2VzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwkocmV2aXNpb24gNDA4MjgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0i
LCAibmFtZWRObwogLy8gSFRNTEZvcm1FbGVtZW50CiB2YXIgaHRtbEZvcm1FbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKIHJlc3VsdEFycmF5ID0gaXRl
cmF0ZUxpc3QoaHRtbEZvcm1FbGVtZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgi
LCAiMTI4Iik7CitzaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzMCIpOwogc2hvdWxk
QmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0u
aXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF0iKTsKIHNo
b3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHNo
b3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwgImRvY3VtZW4KIC8vIEhUTUxTZWxlY3RFbGVt
ZW50CiB2YXIgaHRtbFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc2VsZWN0JylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxTZWxlY3RFbGVt
ZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTMzIik7CitzaG91bGRCZSgi
cmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzNSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmki
LCAiJzAnIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsx
XS5pIiwgIicxJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDgyOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDggQEAgUEFTUyBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi50b1N0cmlu
ZygpIAogUEFTUyBDU1NWYXJpYWJsZXNSdWxlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ1NTVmFy
aWFibGVzUnVsZUNvbnN0cnVjdG9yXScKIFBBU1MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ29uc3RydWN0b3Jd
JwogUEFTUyBDaGFyYWN0ZXJEYXRhLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ2hhcmFjdGVyRGF0
YUNvbnN0cnVjdG9yXScKK1BBU1MgQ2xpZW50UmVjdC50b1N0cmluZygpIGlzICdbb2JqZWN0IENs
aWVudFJlY3RDb25zdHJ1Y3Rvcl0nCitQQVNTIENsaWVudFJlY3RMaXN0LnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgQ2xpZW50UmVjdExpc3RDb25zdHJ1Y3Rvcl0nCiBQQVNTIENsaXBib2FyZC50b1N0
cmluZygpIGlzICdbb2JqZWN0IENsaXBib2FyZENvbnN0cnVjdG9yXScKIFBBU1MgQ29tbWVudC50
b1N0cmluZygpIGlzICdbb2JqZWN0IENvbW1lbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIENvdW50ZXIu
dG9TdHJpbmcoKSBpcyAnW29iamVjdCBDb3VudGVyQ29uc3RydWN0b3JdJwo=
</data>
<flag name="review"
          id="13332"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>28118</attachid>
            <date>2009-02-28 10:21:22 -0800</date>
            <delta_ts>2009-02-28 10:21:22 -0800</delta_ts>
            <desc>Example (testcase) showing failure in Webkit</desc>
            <filename>getBoundingClientRect.html</filename>
            <type>text/html</type>
            <size>892</size>
            <attacher name="Garrett Smith">xk1t</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KPGh0
bWwgbGFuZz0iZW4iPgo8aGVhZD4KPHRpdGxlPmdldEJvdW5kaW5nQ2xpZW50UmVjdDwvdGl0bGU+
CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkgeyAKICAgIG1hcmdpbjogMDsgCiAgICBoZWln
aHQ6IDEwMDFweDsKICAgIHdpZHRoOiAyMDAxcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0K
I3RhcmdldCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7bGVmdDogMXB4Owog
ICAgY29sb3I6ICNmZmY7Cn0KI20gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDJlbTsK
ICBsZWZ0OiAyZW07Cn0KPC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgdG4gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGFyZ2V0JyksCiAgICAgICAgbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdt
Jyk7CiAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwLCAxMDApOwogICAgc2V0VGltZW91dChmdW5jdGlv
bigpewogICAgICAgIHZhciByZWN0ID0gdG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAg
ICAgbS5maXJzdENoaWxkLmRhdGEgPSAidG9wOiAiICsgcmVjdC50b3AgKyAKICAgICAgICAiXG5s
ZWZ0OiAiICsgcmVjdC5sZWZ0OwogICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CiAgICB9LCAx
MDApOwp9Owo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0idGFyZ2V0Ij50PC9kaXY+
CjxwcmUgaWQ9J20nPi08L3ByZT4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>