<?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>5393</bug_id>
          
          <creation_ts>2005-10-15 22:40:06 -0700</creation_ts>
          <short_desc>Anchor links do not jump to ID attributes on table row elements</short_desc>
          <delta_ts>2006-03-19 23:21:08 -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>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andre-John Mas">andrejohn.mas</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>dan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22118</commentid>
    <comment_count>0</comment_count>
    <who name="Andre-John Mas">andrejohn.mas</who>
    <bug_when>2005-10-15 22:40:06 -0700</bug_when>
    <thetext>I have a page with an anchor named &quot;row-21-15&quot;. If I enter the following URL,
which includes GET style parameters, the page does not jump to the section on
the page where the named achor is defiend:

http://localhost:8080/webapp/daybody.jsp?y=2005&amp;M=10&amp;d=18&amp;ref=row-21-15#row-21-15

I tested this with webkit based browsers OmniWeb and Safari and both produce the
same incorrect results. On the other hand if I test it with Opera and Firefox,
both jump to the specifed anchor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22126</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Udey">dan</who>
    <bug_when>2005-10-16 01:09:28 -0700</bug_when>
    <thetext>Do you have a specific URL that is available to the public where one might witness this bug? I have tried 
to reproduce it by adding GET strings to other URLs with anchor tags, and have not been able to 
reproduce it as of yet. If it is not possible to produce a publicly-accessible URL, is it possible to provide 
the HTML of your JSP page on which this occurs.

URLs I have tested:
http://httpd.apache.org/docs/2.0/mod/core.html?test=foo#enablemmap
http://sites.darien.ca/temp/web/anchor-webkit-test.html?testing=foo#anchor
http://sites.darien.ca/temp/web/anchor-webkit-test.html?
y=2005&amp;M=10&amp;d=18&amp;ref=row-21-15#row-21-15

(In reply to comment #0)
&gt; I have a page with an anchor named &quot;row-21-15&quot;. If I enter the following URL,
&gt; which includes GET style parameters, the page does not jump to the section on
&gt; the page where the named achor is defiend:
&gt; 
&gt; http://localhost:8080/webapp/daybody.jsp?y=2005&amp;M=10&amp;d=18&amp;ref=row-21-15#row-21-15
&gt; 
&gt; I tested this with webkit based browsers OmniWeb and Safari and both produce the
&gt; same incorrect results. On the other hand if I test it with Opera and Firefox,
&gt; both jump to the specifed anchor.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22132</commentid>
    <comment_count>2</comment_count>
      <attachid>4370</attachid>
    <who name="Andre-John Mas">andrejohn.mas</who>
    <bug_when>2005-10-16 11:59:11 -0700</bug_when>
    <thetext>Created attachment 4370
Failed anchor jump case

This page does not jump to the anchor named &quot;row-21-15&quot; if I type in the
follong URL:

http://localhost/daybody3.html?param=1234&amp;param2=abcdef#row-21-15

it does work if I try it in Firefox. I just did a few changes to make sure that
it does validate properly with the markup validator, but that does not seem to
resolve the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22135</commentid>
    <comment_count>3</comment_count>
      <attachid>4372</attachid>
    <who name="Daniel Udey">dan</who>
    <bug_when>2005-10-16 14:49:49 -0700</bug_when>
    <thetext>Created attachment 4372
Test case for misbehaving id on table row

Attached is a test case for this bug. The bug actually has nothing to do with
GET parameters; rather, it has to do with how Webkit handles anchors on table
row elements. The problem is that when WebKit jumps to an ID on a table row
element, it mistakenly moves the viewport to the top of the parent element,
instead of the top of the table row.

In HTML, a named anchor link (such as #row-21-15) can refer to two
possibilities: it can either refer to a named anchor (&lt;a name=&quot;row-21-15&quot;&gt;) or
to an ID (e.g. &lt;h1 id=&quot;row-21-15&quot;&gt;). The problem arises because WebKit does not
properly handle named anchors when the target is an ID of a table row. In the
test case, the &lt;td id=&quot;row-21-15&quot;&gt; is the first applicable named anchor point,
so WebKit jumps to that, which takes it to the top of the parent element,
instead of jumping to the table row or the named anchor. This bug does not
occur if the ID is set on a &lt;td&gt;. Also, if the table row is a child of a
&lt;tfoot&gt; element, WebKit jumps to the &lt;tfoot&gt; element at the bottom of the
table.

A temporary workaround for web developers is to ensure that the ID of a table
row is not also the target of a named anchor link (for example, change &lt;a
name=&quot;row-21-15&quot;&gt; to &lt;a name=&quot;link-row-21-15&quot;&gt;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36506</commentid>
    <comment_count>4</comment_count>
      <attachid>7102</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-15 19:38:50 -0800</bug_when>
    <thetext>Created attachment 7102
Patch that gives tables rows and sections correct dimensions.

This patch gives table rows and sections correct dimensions.

This creates interesting issues that had to be solved, namely that cells are not in row coordinate space, but are instead in section coordinate space.  This meant that various functions that naively crawl up the render tree to adjust coordinate spaces have to be corrected to not incorrectly add in row offsets when dealing with cells.

Some other things to note are that RenderTableRows and RenderTableSections cannot be hit tested.  This matches other browsers.  We had this right before, since these objects had no dimensions before (RenderTableSection had a height but a zero width), but now we have to be explicit about excluding them since they have valid bounding boxes.

Finally, in order to continue to deal with the insanity of borderTopExtra and borderBottomExtra, I&apos;ve made whether or not to include borderTopExtra a required flag on absolutePosition.  This will force anyone who uses this function to think about what number it is they actually want.  This whole feature is insane and table cells should someday be reworked simply to have both outer and inner boxes instead of trying to do both using only one block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36523</commentid>
    <comment_count>5</comment_count>
      <attachid>7106</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-15 23:39:29 -0800</bug_when>
    <thetext>Created attachment 7106
Fix offsetHeight to include borderTop/BottomExtra.  Add temporary code to the render tree dumper to keep the results the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36531</commentid>
    <comment_count>6</comment_count>
      <attachid>7106</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-16 00:58:34 -0800</bug_when>
    <thetext>Comment on attachment 7106
Fix offsetHeight to include borderTop/BottomExtra.  Add temporary code to the render tree dumper to keep the results the same.

Talking with Hyatt and Maciej on IRC, the 3 of us agreed the new bool parameter to absolutePosition is too confusing. Hyatt&apos;s mulling over some alternate approaches to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36537</commentid>
    <comment_count>7</comment_count>
      <attachid>7110</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-16 02:02:52 -0800</bug_when>
    <thetext>Created attachment 7110
Rework things to make the internal absolutePosition recursion just always correct.   Add a new absolutePositionForContent method for the case where you want the inner box instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36555</commentid>
    <comment_count>8</comment_count>
      <attachid>7110</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-16 08:49:10 -0800</bug_when>
    <thetext>Comment on attachment 7110
Rework things to make the internal absolutePosition recursion just always correct.   Add a new absolutePositionForContent method for the case where you want the inner box instead.

That one place in RenderObject::absoluteBoundingBoxRect looks like it should call absolutePositionForContent instead of adding in borderTopExtra.

There&apos;s still an issue with having to know when to use absolutePositionForContent, but I think this is way easier to understand than the extra bool was.

Looks good to me, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36974</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-19 23:21:08 -0800</bug_when>
    <thetext>Fixed.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4370</attachid>
            <date>2005-10-16 11:59:11 -0700</date>
            <delta_ts>2005-10-16 11:59:11 -0700</delta_ts>
            <desc>Failed anchor jump case</desc>
            <filename>daybody3.html</filename>
            <type>text/html</type>
            <size>57685</size>
            <attacher name="Andre-John Mas">andrejohn.mas</attacher>
            
              <data encoding="base64">CjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25h
bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgo8aHRtbD4KCgoK
CgoKPGhlYWQ+Cjx0aXRsZT5EYXkgVmlldzwvdGl0bGU+CjwvaGVhZD4KCgo8Ym9keSBvbmxvYWQ9
IiIgc3R5bGU9Im1hcmdpbjogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyI+Cgo8IS0t
IEV4cGlyeTogU3VuLCAxNiBPY3QgMjAwNSAxNDo1MjozMSBFRFQgLS0+CgoJICAgCjx0YWJsZSBi
b3JkZXI9IjEiIGNsYXNzPSJjYWxib3JkZXIzIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIHdpZHRoPSIxMDAlIj4KIAogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGlt
ZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0wNi0wMCIgPgog
IAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lk
dGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxk
aXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJCgkgIDxhIG5hbWU9ImJyZWFrZmFz
dCI+PC9hPgoJIAoJIDxhIG5hbWU9InJvdy0wNi0wMCI+Jm5ic3A7PC9hPgogICAKCSAwNjowMCBB
TTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjA2OjAwPC9mb250PgogIAoJPC9kaXY+CiAg
PC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lk
dGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50
ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZh
bXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9NiZhbXA7bT0wJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9
ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29y
OiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9
IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz00XSAgWzQ6IHM9MCAvIG5z
PTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+Cgkg
ICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+
CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0
aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTA2LTE1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQw
IiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0
dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGln
bjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTA2LTE1Ij4mbmJzcDs8L2E+CiAgIAoJ
IDA2OjE1IEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MDY6MTU8L2ZvbnQ+CiAgCgk8
L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0
YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNv
cjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/
eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD02JmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNl
OyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHls
ZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwu
cG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz00XSAgWzQ6
IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3Rk
PjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+
CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5k
IHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTA2LTMwIiA+CiAgCiAgIDx0ZCBo
ZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRp
dGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0i
dGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTA2LTMwIj4mbmJzcDs8
L2E+CiAgIAoJIDA2OjMwIEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MDY6MzA8L2Zv
bnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgog
ICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5
bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNl
YXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD02JmFtcDttPTMwJyk7cmV0
dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAg
PGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2Vz
L2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBu
cz00XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAg
CiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAg
CgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1l
IGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTA2LTQ1IiA+CiAg
CiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0
aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRp
diBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTA2LTQ1
Ij4mbmJzcDs8L2E+CiAgIAoJIDA2OjQ1IEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+
MDY6NDU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNs
YXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xh
c3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0
cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD02JmFtcDtt
PTQ1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRp
b24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3Jl
ZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsy
OiBzPTAgLyBucz00XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAg
LyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAK
ICAKICAgPHRhYmxlIGJvcmRlcj0iMCIgIHdpZHRoPSIxMDAlIiAgY2VsbHNwYWNpbmc9IjAiPgog
ICAgIAoKICAgICAgICA8dHIgY2xhc3M9Im9kZFJvdyIgPiAgIAogICAgICAgIDx0ZCBhbGlnbj0i
Y2VudGVyIiB3aWR0aD0iMzAiPgogIAogICAgICAgJm5ic3A7CiAgICAgCiAgICAgICAgPC90ZD4K
ICAgICAgICA8dGQgd2lkdGg9IjE0MCI+CiAgICAgICAgICAgICAgICAgCiAgICAgICAgPGEgaHJl
Zj0iIiBjbGFzcz0ibGluay0iIG9uQ2xpY2s9ImphdmFzY3JpcHQ6ZWRpdFJlc2VydmF0aW9uKDIx
KTsgcmV0dXJuIGZhbHNlOyI+ICAgICAgICAgICAgCiAgICAgICAgICAgIDxiPk1hcyxBbmRyZS1K
b2huPC9iPjwvYT4KICAgICAgICAgICAgCiAgICAgCiAgICAgPC90ZD4KICAgICAKICAgICA8dGQg
d2lkdGg9IjIwIiB2YWxpZ249Im1pZGRsZSI+CiAgICAgPGltZyBzcmM9InRoZW1lcy9kaXNjcmVl
dC9pbWFnZXMvcGhvbmUucG5nIiBib3JkZXI9IjAiIHRpdGxlPSJwaG9uZSIgYWx0PSJwaG9uZSI+
CiAgICAgPC90ZD4KICAgICA8dGQgd2lkdGg9IjEwMCI+CiAgICAgJm5ic3A7PGEgY2xhc3M9Imxp
bmstIiBocmVmPSIiIG9uQ2xpY2s9ImVkaXRSZXNlcnZhdGlvbigyMSk7IHJldHVybiBmYWxzZTsi
PiA1MTQuNDk1MTk3NTwvYT4KICAgICA8L3RkPgogICAgIDx0ZCB3aWR0aD0iMjAwIj4KICAgICA8
aT4mbmJzcDs8L2k+CiAgICAgPC90ZD4KICAgICAgCiAgICAgICAgCiAgICAgICAgPHRkIHdpZHRo
PSIzNSIgbm93cmFwPjxhIGNsYXNzPSJsaW5rLSIgaHJlZj0iIiBvbkNsaWNrPSJqYXZhc2NyaXB0
OmVkaXRSZXNlcnZhdGlvbigyMSk7IHJldHVybiBmYWxzZTsiPjIgcHBsPC9hPjwvdGQ+CiAgICAg
ICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIyMCIgdmFsaWduPSJtaWRkbGUiPjxpbWcgc3Jj
PSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL25vc21va2luZy5wbmciIGFsdD0ibm8gc21va2luZyIg
d2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB0aXRsZT0ibm8gc21va2luZyIgLz48L3RkPgogICAgICAg
IDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwIiBub3dyYXA+CiAgICAgICAgICAgCiAgICAg
ICAgICAgPGRpdiBpZD0iZGl2LXNlbC0yMSIgY2xhc3M9ImFycml2ZWQtIj4KICAgICAgICAgICA8
c2VsZWN0IG9uQ2hhbmdlPSJqYXZhc2NyaXB0OmRvQWN0aW9uKCdhY3Rpb24tMjEnLCcyMScpO3Jl
dHVybiBmYWxzZTsiIGlkPSJhY3Rpb24tMjEiPgogICAgICAgICAgIDxvcHRpb24+PC9vcHRpb24+
ICAgICAgICAgICAKICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIiAgPkFycml2ZWQ8L29wdGlv
bj4KICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIiAgPlNlYXRlZDwvb3B0aW9uPgogICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9IjMiPkNhbmNlbGxlZDwvb3B0aW9uPgoJCSAgIDxvcHRpb24gdmFs
dWU9IjQiPk5vIFNob3c8L29wdGlvbj4KICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICA8
L2Rpdj4KICAgICAgICAgICAKICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgCiAg
CiAgICA8L3RhYmxlPgogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0
YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAg
PHRyIGlkPSJyb3ctMDctMDAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBj
bGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29u
KHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAK
CSAKCSA8YSBuYW1lPSJyb3ctMDctMDAiPiZuYnNwOzwvYT4KICAgCgkgMDc6MDAgQU08YnIvPgoJ
IDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4wNzowMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoK
IAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAl
Ij48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25D
bGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAm
YW1wO2Q9MTgmJmFtcDtIPTcmYW1wO209MCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0
byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRl
cjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3
IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NF0gIFs0OiBzPTAgLyBucz01XSAgWzY6
IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAg
PC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEt
LSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2Vs
bCAtLT4KICA8dHIgaWQ9InJvdy0wNy0xNSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWdu
PSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAt
LSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRl
ciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0wNy0xNSI+Jm5ic3A7PC9hPgogICAKCSAwNzoxNSBB
TTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjA3OjE1PC9mb250PgogIAoJPC9kaXY+CiAg
PC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lk
dGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50
ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZh
bXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9NyZhbXA7bT0xNScpO3JldHVybiBmYWxzZTsiIHRpdGxl
PSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNv
cjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0
PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NF0gIFs0OiBzPTAgLyBu
cz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJ
ICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3Ry
PgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZh
dGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0wNy0zMCIgPgogIAogICA8dGQgaGVpZ2h0PSI0
MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3Rh
dHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxp
Z246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0wNy0zMCI+Jm5ic3A7PC9hPgogICAK
CSAwNzozMCBBTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjA3OjMwPC9mb250PgogIAoJ
PC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8
dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJz
b3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNw
P3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9NyZhbXA7bT0zMCcpO3JldHVybiBmYWxz
ZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5
bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21s
LnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NF0gIFs0
OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90
ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3Rk
PgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFu
ZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0wNy00NSIgPgogIAogICA8dGQg
aGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0
aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9
InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0wNy00NSI+Jm5ic3A7
PC9hPgogICAKCSAwNzo0NSBBTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjA3OjQ1PC9m
b250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4K
ICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0
eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVz
ZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9NyZhbXA7bT00NScpO3Jl
dHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAg
IDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdl
cy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8g
bnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0g
IAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAg
IAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGlt
ZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0wOC0wMCIgPgog
IAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lk
dGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxk
aXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0wOC0w
MCI+Jm5ic3A7PC9hPgogICAKCSAwODowMCBBTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0Mi
PjA4OjAwPC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBj
bGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNs
YXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVz
dHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9OCZhbXA7
bT0wJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRp
b24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3Jl
ZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsy
OiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAg
LyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAK
ICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNs
dWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTA4
LTE1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3Jk
ZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVz
Ij4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0i
cm93LTA4LTE1Ij4mbmJzcDs8L2E+CiAgIAoJIDA4OjE1IEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0i
I0NDQ0NDQyI+MDg6MTU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWdu
PSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAg
ICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5k
b3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7
SD04JmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcg
cmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVt
ZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIg
Lz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0g
IFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAg
ICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUg
cm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBp
ZD0icm93LTA4LTMwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9
InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTog
bm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkg
PGEgbmFtZT0icm93LTA4LTMwIj4mbmJzcDs8L2E+CiAgIAoJIDA4OjMwIEFNPGJyLz4KCSA8Zm9u
dCBjb2xvcj0iI0NDQ0NDQyI+MDg6MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8
dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRy
PgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9
Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtk
PTE4JiZhbXA7SD04JmFtcDttPTMwJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNy
ZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIg
c3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJv
cmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0w
IC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3Rh
YmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1h
aW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0t
PgogIDx0ciBpZD0icm93LTA4LTQ1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRv
cCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJl
YXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4K
ICAgCgkgCgkgPGEgbmFtZT0icm93LTA4LTQ1Ij4mbmJzcDs8L2E+CiAgIAoJIDA4OjQ1IEFNPGJy
Lz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MDg6NDU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3Rk
PgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0i
MTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsi
IG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtN
PTEwJmFtcDtkPTE4JiZhbXA7SD04JmFtcDttPTQ1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNs
aWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBw
b2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFk
ZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVd
ICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAg
CiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAK
ICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9u
cyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTA5LTAwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2
YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6
IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjog
Y2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTA5LTAwIj4mbmJzcDs8L2E+CiAgIAoJIDA5
OjAwIEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MDk6MDA8L2ZvbnQ+CiAgCgk8L2Rp
dj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJs
ZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjog
cG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0y
MDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD05JmFtcDttPTAnKTtyZXR1cm4gZmFsc2U7IiB0
aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJj
dXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmci
IGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0w
IC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90
cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAg
PC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVz
ZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMDktMTUiID4KICAKICAgPHRkIGhlaWdo
dD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9
InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0
LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMDktMTUiPiZuYnNwOzwvYT4K
ICAgCgkgMDk6MTUgQU08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4wOToxNTwvZm9udD4K
ICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAog
ICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0i
Y3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNo
LmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTkmYW1wO209MTUnKTtyZXR1cm4g
ZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1n
IHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRk
X3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVd
ICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAg
IDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAg
PC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2Vs
bCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMDktMzAiID4KICAKICAg
PHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3
NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0
eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMDktMzAiPiZu
YnNwOzwvYT4KICAgCgkgMDk6MzAgQU08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4wOToz
MDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9
IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0i
IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9m
aWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTkmYW1wO209MzAn
KTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+
CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9p
bWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9
MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5z
PTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAog
ICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVz
IHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMDktNDUi
ID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0i
IHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgog
ICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ct
MDktNDUiPiZuYnNwOzwvYT4KICAgCgkgMDk6NDUgQU08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0ND
Q0NDIj4wOTo0NTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRv
cCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0
ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygn
Z3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTkm
YW1wO209NDUnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNl
cnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9k
aXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgog
ICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6
IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAK
ICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cu
IGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJy
b3ctMTAtMDAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGlt
ZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBp
c3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBu
YW1lPSJyb3ctMTAtMDAiPiZuYnNwOzwvYT4KICAgCgkgMTA6MDAgQU08YnIvPgoJIDxmb250IGNv
bG9yPSIjQ0NDQ0NDIj4xMDowMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2
YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAg
ICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3Bl
bldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgm
JmFtcDtIPTEwJmFtcDttPTAnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRl
IG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9
InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVy
PSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBu
cz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+
CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0
YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAg
PHRyIGlkPSJyb3ctMTAtMTUiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBj
bGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29u
KHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAK
CSAKCSA8YSBuYW1lPSJyb3ctMTAtMTUiPiZuYnNwOzwvYT4KICAgCgkgMTA6MTUgQU08YnIvPgoJ
IDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xMDoxNTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoK
IAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAl
Ij48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25D
bGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAm
YW1wO2Q9MTgmJmFtcDtIPTEwJmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNr
IHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2lu
dGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBO
ZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBb
Njogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAg
ICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8
IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBj
ZWxsIC0tPgogIDx0ciBpZD0icm93LTEwLTMwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxp
Z249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9r
IC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2Vu
dGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTEwLTMwIj4mbmJzcDs8L2E+CiAgIAoJIDEwOjMw
IEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTA6MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4K
ICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3
aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9p
bnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1
JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0xMCZhbXA7bT0zMCcpO3JldHVybiBmYWxzZTsiIHRp
dGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1
cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIg
YWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAg
LyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3Ry
PgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8
L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNl
cnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xMC00NSIgPgogIAogICA8dGQgaGVpZ2h0
PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0i
c3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQt
YWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xMC00NSI+Jm5ic3A7PC9hPgog
ICAKCSAxMDo0NSBBTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjEwOjQ1PC9mb250Pgog
IAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAg
ICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJj
dXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2gu
anNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTAmYW1wO209NDUnKTtyZXR1cm4g
ZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1n
IHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRk
X3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVd
ICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAg
IDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAg
PC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2Vs
bCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTEtMDAiID4KICAKICAg
PHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9zZWQiIHdp
ZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8
ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTEt
MDAiPiZuYnNwOzwvYT4KICAgCgkgMTE6MDAgQU08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0ND
Ij4xMTowMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIg
Y2xhc3M9InRpbWVib3JkZXItY2xvc2VkIj4KIAogICZuYnNwOyZuYnNwO0NMT1NFRAoKICA8L3Rk
PgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFu
ZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xMS0xNSIgPgogIAogICA8dGQg
aGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCIgd2lkdGg9
Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYg
c3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xMS0xNSI+
Jm5ic3A7PC9hPgogICAKCSAxMToxNSBBTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjEx
OjE1PC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFz
cz0idGltZWJvcmRlci1jbG9zZWQiPgogCiAgJm5ic3A7Jm5ic3A7Q0xPU0VECgogIDwvdGQ+Cgog
IDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJl
c2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTExLTMwIiA+CiAgCiAgIDx0ZCBoZWln
aHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIiB3aWR0aD0iNzUi
IHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHls
ZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTExLTMwIj4mbmJz
cDs8L2E+CiAgIAoJIDExOjMwIEFNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTE6MzA8
L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0
aW1lYm9yZGVyLWNsb3NlZCI+CiAKICAmbmJzcDsmbmJzcDtDTE9TRUQKCiAgPC90ZD4KCiAgPC90
cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2
YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTEtNDUiID4KICAKICAgPHRkIGhlaWdodD0i
NDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9zZWQiIHdpZHRoPSI3NSIgdGl0
bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0
ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTEtNDUiPiZuYnNwOzwv
YT4KICAgCgkgMTE6NDUgQU08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xMTo0NTwvZm9u
dD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVi
b3JkZXItY2xvc2VkIj4KIAogICZuYnNwOyZuYnNwO0NMT1NFRAoKICA8L3RkPgoKICA8L3RyPgog
CiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlv
bnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xMi0wMCIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIg
dmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVz
OiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246
IGNlbnRlciI+CiAgIAoJCgkgIDxhIG5hbWU9Imx1bmNoIj48L2E+CgkgCgkgPGEgbmFtZT0icm93
LTEyLTAwIj4mbmJzcDs8L2E+CiAgCgkgIG1pZGRheQogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAg
PHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0
cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNr
PSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7
ZD0xOCYmYW1wO0g9MTImYW1wO209MCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBj
cmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsi
IHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBi
b3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9
MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90
YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBt
YWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAt
LT4KICA8dHIgaWQ9InJvdy0xMi0xNSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0
b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSBy
ZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+
CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xMi0xNSI+Jm5ic3A7PC9hPgogICAKCSAxMjoxNSBQTTxi
ci8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjEyOjE1PC9mb250PgogIAoJPC9kaXY+CiAgPC90
ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9
IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7
IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7
TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTImYW1wO209MTUnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0i
Y2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6
IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0i
QWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9
NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAg
ICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4K
IAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRp
b25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTItMzAiID4KICAKICAgPHRkIGhlaWdodD0iNDAi
IHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1
czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWdu
OiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTItMzAiPiZuYnNwOzwvYT4KICAgCgkg
MTI6MzAgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xMjozMDwvZm9udD4KICAKCTwv
ZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRh
YmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29y
OiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95
PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTEyJmFtcDttPTMwJyk7cmV0dXJuIGZhbHNl
OyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHls
ZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwu
cG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6
IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3Rk
PjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+
CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5k
IHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTEyLTQ1IiA+CiAgCiAgIDx0ZCBo
ZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRp
dGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0i
dGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTEyLTQ1Ij4mbmJzcDs8
L2E+CiAgIAoJIDEyOjQ1IFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTI6NDU8L2Zv
bnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgog
ICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5
bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNl
YXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0xMiZhbXA7bT00NScpO3Jl
dHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAg
IDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdl
cy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8g
bnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0g
IAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAg
IAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGlt
ZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xMy0wMCIgPgog
IAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lk
dGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxk
aXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xMy0w
MCI+Jm5ic3A7PC9hPgogICAKCSAwMTowMCBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0Mi
PjEzOjAwPC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBj
bGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNs
YXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVz
dHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTMmYW1w
O209MCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0
aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2Ny
ZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBb
Mjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0w
IC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAg
CiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5j
bHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0x
My0xNSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9y
ZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3Vl
cyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9
InJvdy0xMy0xNSI+Jm5ic3A7PC9hPgogICAKCSAwMToxNSBQTTxici8+CgkgPGZvbnQgY29sb3I9
IiNDQ0NDQ0MiPjEzOjE1PC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGln
bj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAog
ICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2lu
ZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1w
O0g9MTMmYW1wO209MTUnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5l
dyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRo
ZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIw
IiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01
XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+Cgog
ICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJs
ZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRy
IGlkPSJyb3ctMTMtMzAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFz
cz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMp
OiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAK
CSA8YSBuYW1lPSJyb3ctMTMtMzAiPiZuYnNwOzwvYT4KICAgCgkgMDE6MzAgUE08YnIvPgoJIDxm
b250IGNvbG9yPSIjQ0NDQ0NDIj4xMzozMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAog
IDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48
dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGlj
az0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1w
O2Q9MTgmJmFtcDtIPTEzJmFtcDttPTMwJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRv
IGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVy
OyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXci
IGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjog
cz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8
L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0t
IG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxs
IC0tPgogIDx0ciBpZD0icm93LTEzLTQ1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249
InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0t
IHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVy
Ij4KICAgCgkgCgkgPGEgbmFtZT0icm93LTEzLTQ1Ij4mbmJzcDs8L2E+CiAgIAoJIDAxOjQ1IFBN
PGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTM6NDU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8
L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0
aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRl
cjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFt
cDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0xMyZhbXA7bT00NScpO3JldHVybiBmYWxzZTsiIHRpdGxl
PSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNv
cjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0
PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBu
cz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJ
ICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3Ry
PgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZh
dGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xNC0wMCIgPgogIAogICA8dGQgaGVpZ2h0PSI0
MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3Rh
dHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxp
Z246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xNC0wMCI+Jm5ic3A7PC9hPgogICAK
CSAwMjowMCBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE0OjAwPC9mb250PgogIAoJ
PC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8
dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJz
b3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNw
P3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTQmYW1wO209MCcpO3JldHVybiBmYWxz
ZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5
bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21s
LnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0
OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90
ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3Rk
PgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFu
ZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xNC0xNSIgPgogIAogICA8dGQg
aGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0
aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9
InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xNC0xNSI+Jm5ic3A7
PC9hPgogICAKCSAwMjoxNSBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE0OjE1PC9m
b250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4K
ICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0
eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVz
ZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTQmYW1wO209MTUnKTty
ZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAg
ICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFn
ZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAv
IG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVd
ICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAg
ICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRp
bWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTQtMzAiID4K
ICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdp
ZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8
ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTQt
MzAiPiZuYnNwOzwvYT4KICAgCgkgMDI6MzAgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0ND
Ij4xNDozMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIg
Y2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBj
bGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vl
c3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTE0JmFt
cDttPTMwJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2
YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlz
Y3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAg
IFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBz
PTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAg
ICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBp
bmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93
LTE0LTQ1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVi
b3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNz
dWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFt
ZT0icm93LTE0LTQ1Ij4mbmJzcDs8L2E+CiAgIAoJIDAyOjQ1IFBNPGJyLz4KCSA8Zm9udCBjb2xv
cj0iI0NDQ0NDQyI+MTQ6NDU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFs
aWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAg
CiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5X
aW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZh
bXA7SD0xNCZhbXA7bT00NScpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUg
bmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0i
dGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9
IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5z
PTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4K
CiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRh
YmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8
dHIgaWQ9InJvdy0xNS0wMCIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNs
YXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24o
cyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJ
IAoJIDxhIG5hbWU9InJvdy0xNS0wMCI+Jm5ic3A7PC9hPgogICAKCSAwMzowMCBQTTxici8+Cgkg
PGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE1OjAwPC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgog
CiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUi
Pjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNs
aWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZh
bXA7ZD0xOCYmYW1wO0g9MTUmYW1wO209MCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0
byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRl
cjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3
IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6
IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAg
PC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEt
LSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2Vs
bCAtLT4KICA8dHIgaWQ9InJvdy0xNS0xNSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWdu
PSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVz
OiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246
IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xNS0xNSI+Jm5ic3A7PC9hPgogICAKCSAw
MzoxNSBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE1OjE1PC9mb250PgogIAoJPC9k
aXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9z
ZWQiPgogCiAgJm5ic3A7Jm5ic3A7Q0xPU0VECgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1h
aW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0t
PgogIDx0ciBpZD0icm93LTE1LTMwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRv
cCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9r
IC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2Vu
dGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTE1LTMwIj4mbmJzcDs8L2E+CiAgIAoJIDAzOjMw
IFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTU6MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4K
ICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCI+
CiAKICAmbmJzcDsmbmJzcDtDTE9TRUQKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0
YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAg
PHRyIGlkPSJyb3ctMTUtNDUiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBj
bGFzcz0idGltZWJvcmRlci1jbG9zZWQiIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0g
cmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIi
PgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTUtNDUiPiZuYnNwOzwvYT4KICAgCgkgMDM6NDUgUE08
YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xNTo0NTwvZm9udD4KICAKCTwvZGl2PgogIDwv
dGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIj4KIAog
ICZuYnNwOyZuYnNwO0NMT1NFRAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxl
IHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIg
aWQ9InJvdy0xNi0wMCIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNz
PSJ0aW1lYm9yZGVyLWNsb3NlZCIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFz
b24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAg
IAoJIAoJIDxhIG5hbWU9InJvdy0xNi0wMCI+Jm5ic3A7PC9hPgogICAKCSAwNDowMCBQTTxici8+
CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE2OjAwPC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4K
CgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9zZWQiPgogCiAgJm5i
c3A7Jm5ic3A7Q0xPU0VECgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93
LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0i
cm93LTE2LTE1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRp
bWVib3JkZXItY2xvc2VkIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihz
KTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkg
CgkgPGEgbmFtZT0icm93LTE2LTE1Ij4mbmJzcDs8L2E+CiAgIAoJIDA0OjE1IFBNPGJyLz4KCSA8
Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTY6MTU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAK
ICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCI+CiAKICAmbmJzcDsm
bmJzcDtDTE9TRUQKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGlu
Y2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ct
MTYtMzAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJv
cmRlci1jbG9zZWQiIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBu
byBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8
YSBuYW1lPSJyb3ctMTYtMzAiPiZuYnNwOzwvYT4KICAgCgkgMDQ6MzAgUE08YnIvPgoJIDxmb250
IGNvbG9yPSIjQ0NDQ0NDIj4xNjozMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0
ZCB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIj4KIAogICZuYnNwOyZuYnNw
O0NMT1NFRAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVk
ZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xNi00
NSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVy
LWNsb3NlZCIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlz
c3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5h
bWU9InJvdy0xNi00NSI+Jm5ic3A7PC9hPgogICAKCSAwNDo0NSBQTTxici8+CgkgPGZvbnQgY29s
b3I9IiNDQ0NDQ0MiPjE2OjQ1PC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZh
bGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9zZWQiPgogCiAgJm5ic3A7Jm5ic3A7Q0xP
U0VECgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0
aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTE3LTAwIiA+
CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItY2xv
c2VkIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVz
Ij4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0i
cm93LTE3LTAwIj4mbmJzcDs8L2E+CiAgIAoJIDA1OjAwIFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0i
I0NDQ0NDQyI+MTc6MDA8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWdu
PSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCI+CiAKICAmbmJzcDsmbmJzcDtDTE9TRUQK
CiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUg
Y2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTctMTUiID4KICAK
ICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci1jbG9zZWQi
IHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgog
ICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ct
MTctMTUiPiZuYnNwOzwvYT4KICAgCgkgMDU6MTUgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0ND
Q0NDIj4xNzoxNTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRv
cCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIj4KIAogICZuYnNwOyZuYnNwO0NMT1NFRAoKICA8
L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxs
IGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xNy0zMCIgPgogIAogICA8
dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLWNsb3NlZCIgd2lk
dGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxk
aXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xNy0z
MCI+Jm5ic3A7PC9hPgogICAKCSAwNTozMCBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0Mi
PjE3OjMwPC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBj
bGFzcz0idGltZWJvcmRlci1jbG9zZWQiPgogCiAgJm5ic3A7Jm5ic3A7Q0xPU0VECgogIDwvdGQ+
CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5k
IHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTE3LTQ1IiA+CiAgCiAgIDx0ZCBo
ZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItY2xvc2VkIiB3aWR0aD0i
NzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBz
dHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTE3LTQ1Ij4m
bmJzcDs8L2E+CiAgIAoJIDA1OjQ1IFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTc6
NDU8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNz
PSJ0aW1lYm9yZGVyLWNsb3NlZCI+CiAKICAmbmJzcDsmbmJzcDtDTE9TRUQKCiAgPC90ZD4KCiAg
PC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVz
ZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTgtMDAiID4KICAKICAgPHRkIGhlaWdo
dD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9
InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0
LWFsaWduOiBjZW50ZXIiPgogICAKCQoJICA8YSBuYW1lPSJkaW5uZXIiPjwvYT4KCSAKCSA8YSBu
YW1lPSJyb3ctMTgtMDAiPiZuYnNwOzwvYT4KICAgCgkgMDY6MDAgUE08YnIvPgoJIDxmb250IGNv
bG9yPSIjQ0NDQ0NDIj4xODowMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2
YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAg
ICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3Bl
bldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgm
JmFtcDtIPTE4JmFtcDttPTAnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRl
IG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9
InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVy
PSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBu
cz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+
CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0
YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAg
PHRyIGlkPSJyb3ctMTgtMTUiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBj
bGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29u
KHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAK
CSAKCSA8YSBuYW1lPSJyb3ctMTgtMTUiPiZuYnNwOzwvYT4KICAgCgkgMDY6MTUgUE08YnIvPgoJ
IDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xODoxNTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoK
IAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAl
Ij48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25D
bGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAm
YW1wO2Q9MTgmJmFtcDtIPTE4JmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNr
IHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2lu
dGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBO
ZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBb
Njogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAg
ICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8
IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBj
ZWxsIC0tPgogIDx0ciBpZD0icm93LTE4LTMwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxp
Z249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9r
IC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2Vu
dGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTE4LTMwIj4mbmJzcDs8L2E+CiAgIAoJIDA2OjMw
IFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MTg6MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4K
ICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3
aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9p
bnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1
JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0xOCZhbXA7bT0zMCcpO3JldHVybiBmYWxzZTsiIHRp
dGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1
cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIg
YWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAg
LyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3Ry
PgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8
L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNl
cnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0xOC00NSIgPgogIAogICA8dGQgaGVpZ2h0
PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0i
c3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQt
YWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0xOC00NSI+Jm5ic3A7PC9hPgog
ICAKCSAwNjo0NSBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE4OjQ1PC9mb250Pgog
IAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAg
ICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJj
dXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2gu
anNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MTgmYW1wO209NDUnKTtyZXR1cm4g
ZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1n
IHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRk
X3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVd
ICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAg
IDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAg
PC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2Vs
bCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTktMDAiID4KICAKICAg
PHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3
NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0
eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMTktMDAiPiZu
YnNwOzwvYT4KICAgCgkgMDc6MDAgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4xOTow
MDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9
IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0i
IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9m
aWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTE5JmFtcDttPTAn
KTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+
CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9p
bWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9
MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5z
PTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAog
ICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVz
IHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMTktMTUi
ID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0i
IHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgog
ICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ct
MTktMTUiPiZuYnNwOzwvYT4KICAgCgkgMDc6MTUgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0ND
Q0NDIj4xOToxNTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRv
cCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0
ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygn
Z3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTE5
JmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVz
ZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMv
ZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4K
ICAgIFsyOiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4
OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAg
CiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93
LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0i
cm93LTE5LTMwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRp
bWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8g
aXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEg
bmFtZT0icm93LTE5LTMwIj4mbmJzcDs8L2E+CiAgIAoJIDA3OjMwIFBNPGJyLz4KCSA8Zm9udCBj
b2xvcj0iI0NDQ0NDQyI+MTk6MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQg
dmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgog
ICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9w
ZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4
JiZhbXA7SD0xOSZhbXA7bT0zMCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVh
dGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNy
Yz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3Jk
ZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NV0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAv
IG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJs
ZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWlu
IHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4K
ICA8dHIgaWQ9InJvdy0xOS00NSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3Ai
IGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFz
b24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAg
IAoJIAoJIDxhIG5hbWU9InJvdy0xOS00NSI+Jm5ic3A7PC9hPgogICAKCSAwNzo0NSBQTTxici8+
CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjE5OjQ1PC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4K
CgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEw
MCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBv
bkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0x
MCZhbXA7ZD0xOCYmYW1wO0g9MTkmYW1wO209NDUnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xp
Y2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBv
aW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRk
IE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0wIC8gbnM9NV0g
IFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAK
ICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAog
IDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25z
IGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMjAtMDAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZh
bGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czog
b2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBj
ZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMjAtMDAiPiZuYnNwOzwvYT4KICAgCgkgMDg6
MDAgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4yMDowMDwvZm9udD4KICAKCTwvZGl2
PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxl
IHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBw
b2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIw
MDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTIwJmFtcDttPTAnKTtyZXR1cm4gZmFsc2U7IiB0
aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJj
dXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmci
IGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTVdICBbNDogcz0w
IC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90
cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAg
PC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVz
ZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMjAtMTUiID4KICAKICAgPHRkIGhlaWdo
dD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9
InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0
LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMjAtMTUiPiZuYnNwOzwvYT4K
ICAgCgkgMDg6MTUgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4yMDoxNTwvZm9udD4K
ICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAog
ICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0i
Y3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNo
LmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTIwJmFtcDttPTE1Jyk7cmV0dXJu
IGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGlt
ZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2Fk
ZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz01
XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAg
ICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgog
IDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNl
bGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTIwLTMwIiA+CiAgCiAg
IDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0i
NzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBz
dHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTIwLTMwIj4m
bmJzcDs8L2E+CiAgIAoJIDA4OjMwIFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MjA6
MzA8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNz
PSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9
IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJv
ZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0yMCZhbXA7bT0z
MCcpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9u
Ij4KICAgIDxpbWcgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0
L2ltYWdlcy9hZGRfc21sLnBuZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjog
cz0wIC8gbnM9NF0gIFs0OiBzPTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8g
bnM9NV0gIAogICAgPC90ZD48L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAg
CiAgICAgIAoKICA8L3RkPgoKICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVk
ZXMgdGltZSBjZWxsIGFuZCByZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0yMC00
NSIgPgogIAogICA8dGQgaGVpZ2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVy
LSIgd2lkdGg9Ijc1IiB0aXRsZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+
CiAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJv
dy0yMC00NSI+Jm5ic3A7PC9hPgogICAKCSAwODo0NSBQTTxici8+CgkgPGZvbnQgY29sb3I9IiND
Q0NDQ0MiPjIwOjQ1PC9mb250PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0i
dG9wIiBjbGFzcz0iIj4KICAgCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAg
PHRkIGNsYXNzPSIiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93
KCdndWVzdHByb2ZpbGVzZWFyY2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9
MjAmYW1wO209NDUnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyBy
ZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1l
cy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAv
PgogICAgWzI6IHM9MCAvIG5zPTNdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAg
Wzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAg
ICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSBy
b3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlk
PSJyb3ctMjEtMDAiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0i
dGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBu
byBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8
YSBuYW1lPSJyb3ctMjEtMDAiPiZuYnNwOzwvYT4KICAgCgkgMDk6MDAgUE08YnIvPgoJIDxmb250
IGNvbG9yPSIjQ0NDQ0NDIj4yMTowMDwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0
ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+
CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0i
b3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9
MTgmJmFtcDtIPTIxJmFtcDttPTAnKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3Jl
YXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBz
cmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvYWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9y
ZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5zPTNdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAg
LyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAKICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFi
bGU+CgogICAgICAKICAgIAogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFp
biB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+
CiAgPHRyIGlkPSJyb3ctMjEtMTUiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9w
IiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVh
c29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgog
ICAKCSAKCSA8YSBuYW1lPSJyb3ctMjEtMTUiPiZuYnNwOzwvYT4KICAgCgkgMDk6MTUgUE08YnIv
PgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4yMToxNTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+
CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIx
MDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIg
b25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009
MTAmYW1wO2Q9MTgmJmFtcDtIPTIxJmFtcDttPTE1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNs
aWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBw
b2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFk
ZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz0zXSAgWzQ6IHM9MCAvIG5zPTVd
ICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAg
CiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgPHRhYmxlIGJvcmRlcj0iMCIgIHdpZHRo
PSIxMDAlIiAgY2VsbHNwYWNpbmc9IjAiPgogICAgIAoKICAgICAgICA8dHIgY2xhc3M9Im9kZFJv
dyIgPiAgIAogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMzAiPgogIAogICAgICAg
Jm5ic3A7CiAgICAgCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjE0MCI+CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgPGEgaHJlZj0iIiBjbGFzcz0ibGluay0iIG9uQ2xpY2s9Imph
dmFzY3JpcHQ6ZWRpdFJlc2VydmF0aW9uKDIzKTsgcmV0dXJuIGZhbHNlOyI+ICAgICAgICAgICAg
CiAgICAgICAgICAgIDxiPk1hcyxBbmRyZS1Kb2huPC9iPjwvYT4KICAgICAgICAgICAgCiAgICAg
CiAgICAgPC90ZD4KICAgICAKICAgICA8dGQgd2lkdGg9IjIwIiB2YWxpZ249Im1pZGRsZSI+CiAg
ICAgPGltZyBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMvcGhvbmUucG5nIiBib3JkZXI9IjAi
IHRpdGxlPSJwaG9uZSIgYWx0PSJwaG9uZSI+CiAgICAgPC90ZD4KICAgICA8dGQgd2lkdGg9IjEw
MCI+CiAgICAgJm5ic3A7PGEgY2xhc3M9ImxpbmstIiBocmVmPSIiIG9uQ2xpY2s9ImVkaXRSZXNl
cnZhdGlvbigyMyk7IHJldHVybiBmYWxzZTsiPiA1MTQuNDk1MTk3NTwvYT4KICAgICA8L3RkPgog
ICAgIDx0ZCB3aWR0aD0iMjAwIj4KICAgICA8aT4mbmJzcDs8L2k+CiAgICAgPC90ZD4KICAgICAg
CiAgICAgICAgCiAgICAgICAgPHRkIHdpZHRoPSIzNSIgbm93cmFwPjxhIGNsYXNzPSJsaW5rLSIg
aHJlZj0iIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmVkaXRSZXNlcnZhdGlvbigyMyk7IHJldHVybiBm
YWxzZTsiPjIgcHBsPC9hPjwvdGQ+CiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIy
MCIgdmFsaWduPSJtaWRkbGUiPjxpbWcgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL25vc21v
a2luZy5wbmciIGFsdD0ibm8gc21va2luZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB0aXRsZT0i
bm8gc21va2luZyIgLz48L3RkPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAw
IiBub3dyYXA+CiAgICAgICAgICAgCiAgICAgICAgICAgPGRpdiBpZD0iZGl2LXNlbC0yMyIgY2xh
c3M9ImFycml2ZWQtIj4KICAgICAgICAgICA8c2VsZWN0IG9uQ2hhbmdlPSJqYXZhc2NyaXB0OmRv
QWN0aW9uKCdhY3Rpb24tMjMnLCcyMycpO3JldHVybiBmYWxzZTsiIGlkPSJhY3Rpb24tMjMiPgog
ICAgICAgICAgIDxvcHRpb24+PC9vcHRpb24+ICAgICAgICAgICAKICAgICAgICAgICA8b3B0aW9u
IHZhbHVlPSIxIiAgPkFycml2ZWQ8L29wdGlvbj4KICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIy
IiAgPlNlYXRlZDwvb3B0aW9uPgogICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiPkNhbmNlbGxl
ZDwvb3B0aW9uPgoJCSAgIDxvcHRpb24gdmFsdWU9IjQiPk5vIFNob3c8L29wdGlvbj4KICAgICAg
ICAgICA8L3NlbGVjdD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAKICAgICAgICA8L3Rk
PgogICAgICAgIDwvdHI+CiAgICAgICAgCiAgCiAgICA8L3RhYmxlPgogIAogICAgICAKCiAgPC90
ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBh
bmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMjEtMzAiID4KICAKICAgPHRk
IGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRoPSI3NSIg
dGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2IHN0eWxl
PSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMjEtMzAiPiZuYnNw
OzwvYT4KICAgCgkgMDk6MzAgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4yMTozMDwv
Zm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+
CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBz
dHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxl
c2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTIxJmFtcDttPTMwJyk7
cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgog
ICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1h
Z2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAg
LyBucz0zXSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01
XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAg
PHRhYmxlIGJvcmRlcj0iMCIgIHdpZHRoPSIxMDAlIiAgY2VsbHNwYWNpbmc9IjAiPgogICAgIAoK
ICAgICAgICA8dHIgY2xhc3M9Im9kZFJvdyIgPiAgIAogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVy
IiB3aWR0aD0iMzAiPgogIAogICAgICAgJm5ic3A7CiAgICAgCiAgICAgICAgPC90ZD4KICAgICAg
ICA8dGQgd2lkdGg9IjE0MCI+CiAgICAgICAgICAgICAgICAgCiAgICAgICAgPGEgaHJlZj0iIiBj
bGFzcz0ibGluay0iIG9uQ2xpY2s9ImphdmFzY3JpcHQ6ZWRpdFJlc2VydmF0aW9uKDIyKTsgcmV0
dXJuIGZhbHNlOyI+ICAgICAgICAgICAgCiAgICAgICAgICAgIDxiPk1hcyxBbmRyZS1Kb2huPC9i
PjwvYT4KICAgICAgICAgICAgCiAgICAgCiAgICAgPC90ZD4KICAgICAKICAgICA8dGQgd2lkdGg9
IjIwIiB2YWxpZ249Im1pZGRsZSI+CiAgICAgPGltZyBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFn
ZXMvcGhvbmUucG5nIiBib3JkZXI9IjAiIHRpdGxlPSJwaG9uZSIgYWx0PSJwaG9uZSI+CiAgICAg
PC90ZD4KICAgICA8dGQgd2lkdGg9IjEwMCI+CiAgICAgJm5ic3A7PGEgY2xhc3M9ImxpbmstIiBo
cmVmPSIiIG9uQ2xpY2s9ImVkaXRSZXNlcnZhdGlvbigyMik7IHJldHVybiBmYWxzZTsiPiA1MTQu
NDk1MTk3NTwvYT4KICAgICA8L3RkPgogICAgIDx0ZCB3aWR0aD0iMjAwIj4KICAgICA8aT4mbmJz
cDs8L2k+CiAgICAgPC90ZD4KICAgICAgCiAgICAgICAgCiAgICAgICAgPHRkIHdpZHRoPSIzNSIg
bm93cmFwPjxhIGNsYXNzPSJsaW5rLSIgaHJlZj0iIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmVkaXRS
ZXNlcnZhdGlvbigyMik7IHJldHVybiBmYWxzZTsiPjIgcHBsPC9hPjwvdGQ+CiAgICAgICAgPHRk
IGFsaWduPSJjZW50ZXIiIHdpZHRoPSIyMCIgdmFsaWduPSJtaWRkbGUiPjxpbWcgc3JjPSJ0aGVt
ZXMvZGlzY3JlZXQvaW1hZ2VzL25vc21va2luZy5wbmciIGFsdD0ibm8gc21va2luZyIgd2lkdGg9
IjE2IiBoZWlnaHQ9IjE2IiB0aXRsZT0ibm8gc21va2luZyIgLz48L3RkPgogICAgICAgIDx0ZCBh
bGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwIiBub3dyYXA+CiAgICAgICAgICAgCiAgICAgICAgICAg
PGRpdiBpZD0iZGl2LXNlbC0yMiIgY2xhc3M9ImFycml2ZWQtIj4KICAgICAgICAgICA8c2VsZWN0
IG9uQ2hhbmdlPSJqYXZhc2NyaXB0OmRvQWN0aW9uKCdhY3Rpb24tMjInLCcyMicpO3JldHVybiBm
YWxzZTsiIGlkPSJhY3Rpb24tMjIiPgogICAgICAgICAgIDxvcHRpb24+PC9vcHRpb24+ICAgICAg
ICAgICAKICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIiAgPkFycml2ZWQ8L29wdGlvbj4KICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIiAgPlNlYXRlZDwvb3B0aW9uPgogICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IjMiPkNhbmNlbGxlZDwvb3B0aW9uPgoJCSAgIDxvcHRpb24gdmFsdWU9IjQi
Pk5vIFNob3c8L29wdGlvbj4KICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICA8L2Rpdj4K
ICAgICAgICAgICAKICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgCiAgCiAgICA8
L3RhYmxlPgogIAogICAgICAKCiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSBy
b3cuIGluY2x1ZGVzIHRpbWUgY2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlk
PSJyb3ctMjEtNDUiID4KICAKICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0i
dGltZWJvcmRlci0iIHdpZHRoPSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBu
byBpc3N1ZXMiPgogICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8
YSBuYW1lPSJyb3ctMjEtNDUiPiZuYnNwOzwvYT4KICAgCgkgMDk6NDUgUE08YnIvPgoJIDxmb250
IGNvbG9yPSIjQ0NDQ0NDIj4yMTo0NTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0
ZCB2YWxpZ249InRvcCIgY2xhc3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+
CiAgICAKICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0i
b3BlbldpbmRvdygnZ3Vlc3Rwcm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9
MTgmJmFtcDtIPTIxJmFtcDttPTQ1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNy
ZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIg
c3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJv
cmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz0zXSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0w
IC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3Rh
YmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAKICA8IS0tIG1h
aW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9ucyBjZWxsIC0t
PgogIDx0ciBpZD0icm93LTIyLTAwIiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2YWxpZ249InRv
cCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6IG9rIC0tIHJl
YXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4K
ICAgCgkgCgkgPGEgbmFtZT0icm93LTIyLTAwIj4mbmJzcDs8L2E+CiAgIAoJIDEwOjAwIFBNPGJy
Lz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MjI6MDA8L2ZvbnQ+CiAgCgk8L2Rpdj4KICA8L3Rk
PgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJsZSB3aWR0aD0i
MTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsi
IG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0yMDA1JmFtcDtN
PTEwJmFtcDtkPTE4JiZhbXA7SD0yMiZhbXA7bT0wJyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNs
aWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRpb24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBw
b2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3JlZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFk
ZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsyOiBzPTAgLyBucz0zXSAgWzQ6IHM9MCAvIG5zPTVd
ICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAgLyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAg
CiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAKICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+CiAK
ICA8IS0tIG1haW4gdGFibGUgcm93LiBpbmNsdWRlcyB0aW1lIGNlbGwgYW5kIHJlc2VydmF0aW9u
cyBjZWxsIC0tPgogIDx0ciBpZD0icm93LTIyLTE1IiA+CiAgCiAgIDx0ZCBoZWlnaHQ9IjQwIiB2
YWxpZ249InRvcCIgY2xhc3M9InRpbWVib3JkZXItIiB3aWR0aD0iNzUiIHRpdGxlPSJzdGF0dXM6
IG9rIC0tIHJlYXNvbihzKTogbm8gaXNzdWVzIj4KICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjog
Y2VudGVyIj4KICAgCgkgCgkgPGEgbmFtZT0icm93LTIyLTE1Ij4mbmJzcDs8L2E+CiAgIAoJIDEw
OjE1IFBNPGJyLz4KCSA8Zm9udCBjb2xvcj0iI0NDQ0NDQyI+MjI6MTU8L2ZvbnQ+CiAgCgk8L2Rp
dj4KICA8L3RkPgoKCiAKICA8dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSIiPgogICAKICAgIDx0YWJs
ZSB3aWR0aD0iMTAwJSI+PHRyPgogICAgCiAgICA8dGQgY2xhc3M9IiIgc3R5bGU9ImN1cnNvcjog
cG9pbnRlcjsiIG9uQ2xpY2s9Im9wZW5XaW5kb3coJ2d1ZXN0cHJvZmlsZXNlYXJjaC5qc3A/eT0y
MDA1JmFtcDtNPTEwJmFtcDtkPTE4JiZhbXA7SD0yMiZhbXA7bT0xNScpO3JldHVybiBmYWxzZTsi
IHRpdGxlPSJjbGljayB0byBjcmVhdGUgbmV3IHJlc2VydmF0aW9uIj4KICAgIDxpbWcgc3R5bGU9
ImN1cnNvcjogcG9pbnRlcjsiIHNyYz0idGhlbWVzL2Rpc2NyZWV0L2ltYWdlcy9hZGRfc21sLnBu
ZyIgYWx0PSJBZGQgTmV3IiBib3JkZXI9IjAiIC8+CiAgICBbMjogcz0wIC8gbnM9NF0gIFs0OiBz
PTAgLyBucz01XSAgWzY6IHM9MCAvIG5zPTVdICBbODogcz0wIC8gbnM9NV0gIAogICAgPC90ZD48
L3RyPgoJICAgIAogICAgPC90YWJsZT4KCiAgICAgIAogICAgCiAgCiAgICAgIAoKICA8L3RkPgoK
ICA8L3RyPgogCiAgPCEtLSBtYWluIHRhYmxlIHJvdy4gaW5jbHVkZXMgdGltZSBjZWxsIGFuZCBy
ZXNlcnZhdGlvbnMgY2VsbCAtLT4KICA8dHIgaWQ9InJvdy0yMi0zMCIgPgogIAogICA8dGQgaGVp
Z2h0PSI0MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJ0aW1lYm9yZGVyLSIgd2lkdGg9Ijc1IiB0aXRs
ZT0ic3RhdHVzOiBvayAtLSByZWFzb24ocyk6IG5vIGlzc3VlcyI+CiAgIDxkaXYgc3R5bGU9InRl
eHQtYWxpZ246IGNlbnRlciI+CiAgIAoJIAoJIDxhIG5hbWU9InJvdy0yMi0zMCI+Jm5ic3A7PC9h
PgogICAKCSAxMDozMCBQTTxici8+CgkgPGZvbnQgY29sb3I9IiNDQ0NDQ0MiPjIyOjMwPC9mb250
PgogIAoJPC9kaXY+CiAgPC90ZD4KCgogCiAgPHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iIj4KICAg
CiAgICA8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KICAgIAogICAgPHRkIGNsYXNzPSIiIHN0eWxl
PSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJvcGVuV2luZG93KCdndWVzdHByb2ZpbGVzZWFy
Y2guanNwP3k9MjAwNSZhbXA7TT0xMCZhbXA7ZD0xOCYmYW1wO0g9MjImYW1wO209MzAnKTtyZXR1
cm4gZmFsc2U7IiB0aXRsZT0iY2xpY2sgdG8gY3JlYXRlIG5ldyByZXNlcnZhdGlvbiI+CiAgICA8
aW1nIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBzcmM9InRoZW1lcy9kaXNjcmVldC9pbWFnZXMv
YWRkX3NtbC5wbmciIGFsdD0iQWRkIE5ldyIgYm9yZGVyPSIwIiAvPgogICAgWzI6IHM9MCAvIG5z
PTVdICBbNDogcz0wIC8gbnM9NV0gIFs2OiBzPTAgLyBucz01XSAgWzg6IHM9MCAvIG5zPTVdICAK
ICAgIDwvdGQ+PC90cj4KCSAgICAKICAgIDwvdGFibGU+CgogICAgICAKICAgIAogIAogICAgICAK
CiAgPC90ZD4KCiAgPC90cj4KIAogIDwhLS0gbWFpbiB0YWJsZSByb3cuIGluY2x1ZGVzIHRpbWUg
Y2VsbCBhbmQgcmVzZXJ2YXRpb25zIGNlbGwgLS0+CiAgPHRyIGlkPSJyb3ctMjItNDUiID4KICAK
ICAgPHRkIGhlaWdodD0iNDAiIHZhbGlnbj0idG9wIiBjbGFzcz0idGltZWJvcmRlci0iIHdpZHRo
PSI3NSIgdGl0bGU9InN0YXR1czogb2sgLS0gcmVhc29uKHMpOiBubyBpc3N1ZXMiPgogICA8ZGl2
IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgogICAKCSAKCSA8YSBuYW1lPSJyb3ctMjItNDUi
PiZuYnNwOzwvYT4KICAgCgkgMTA6NDUgUE08YnIvPgoJIDxmb250IGNvbG9yPSIjQ0NDQ0NDIj4y
Mjo0NTwvZm9udD4KICAKCTwvZGl2PgogIDwvdGQ+CgoKIAogIDx0ZCB2YWxpZ249InRvcCIgY2xh
c3M9IiI+CiAgIAogICAgPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiAgICAKICAgIDx0ZCBjbGFz
cz0iIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0ib3BlbldpbmRvdygnZ3Vlc3Rw
cm9maWxlc2VhcmNoLmpzcD95PTIwMDUmYW1wO009MTAmYW1wO2Q9MTgmJmFtcDtIPTIyJmFtcDtt
PTQ1Jyk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9ImNsaWNrIHRvIGNyZWF0ZSBuZXcgcmVzZXJ2YXRp
b24iPgogICAgPGltZyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgc3JjPSJ0aGVtZXMvZGlzY3Jl
ZXQvaW1hZ2VzL2FkZF9zbWwucG5nIiBhbHQ9IkFkZCBOZXciIGJvcmRlcj0iMCIgLz4KICAgIFsy
OiBzPTAgLyBucz01XSAgWzQ6IHM9MCAvIG5zPTVdICBbNjogcz0wIC8gbnM9NV0gIFs4OiBzPTAg
LyBucz01XSAgCiAgICA8L3RkPjwvdHI+CgkgICAgCiAgICA8L3RhYmxlPgoKICAgICAgCiAgICAK
ICAKICAgICAgCgogIDwvdGQ+CgogIDwvdHI+Cgo8L3RhYmxlPgoKCgoKPC9ib2R5Pgo8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4372</attachid>
            <date>2005-10-16 14:49:49 -0700</date>
            <delta_ts>2005-10-16 14:49:49 -0700</delta_ts>
            <desc>Test case for misbehaving id on table row</desc>
            <filename>table-anchor-testcase.html</filename>
            <type>text/html</type>
            <size>2486</size>
            <attacher name="Daniel Udey">dan</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPgoKPGhl
YWQ+Cjx0aXRsZT5UYWJsZS1Sb3cgQW5jaG9yIFRlc3QgQ2FzZTwvdGl0bGU+CjwvaGVhZD4KCjxi
b2R5PgoKPGEgaHJlZj0iI3Rlc3QtZmFpbCI+VGhpcyBsaW5rIHdpbGwgdGFrZSB5b3UgdG8gdGhl
IHRvcCBvZiB0aGUgdGFibGU8L2E+PGJyPgo8YSBocmVmPSIjdGVzdC1wYXNzIj5UaGlzIGxpbmsg
d2lsbCB0YWtlIHlvdSB0byB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIHRhYmxlPC9h
Pjxicj4KCgo8dGFibGU+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90
cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJv
dzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8
dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90
ZD48L3RyPgo8dHIgaWQ9ImZvbyI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwv
dHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5S
b3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4K
PHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwv
dGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+
PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48
L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+
Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+
Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8
L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPi0tLS0tLS0tLS0tLS08L3Rk
PjwvdHI+Cjx0ciBpZD0idGVzdC1mYWlsIj48dGQ+PGEgbmFtZT0idGVzdC1mYWlsIj5UaGlzIGFu
Y2hvciB3aWxsIG5vdCB3b3JrPC9hPjwvdGQ+PC90cj4KPHRyPjx0ZD4tLS0tLS0tLS0tLS0tPC90
ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48
dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD4tLS0tLS0tLS0t
LS0tPC90ZD48L3RyPgo8dHI+PHRkIGlkPSJ0ZXN0LXBhc3MiPjxhIG5hbWU9InRlc3QtcGFzcyI+
VGhpcyBhbmNob3Igd2lsbCB3b3JrPC9hPjwvdGQ+PC90cj4KPHRyPjx0ZD4tLS0tLS0tLS0tLS0t
PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0
cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3Rk
PjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0
ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90
cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJv
dzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8
dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90
ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48
dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwv
dHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5S
b3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4K
PHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwv
dGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+
PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+Um93PC90ZD48
L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+Cjx0cj48dGQ+
Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8L3RkPjwvdHI+
Cjx0cj48dGQ+Um93PC90ZD48L3RyPgo8dHI+PHRkPlJvdzwvdGQ+PC90cj4KPHRyPjx0ZD5Sb3c8
L3RkPjwvdHI+CjwvdGFibGU+Cgo8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7102</attachid>
            <date>2006-03-15 19:38:50 -0800</date>
            <delta_ts>2006-03-15 23:39:29 -0800</delta_ts>
            <desc>Patch that gives tables rows and sections correct dimensions.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>34108</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIGtodG1sL2h0bWwv
aHRtbF9pbWFnZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5LDcgQEAKICAg
ICBpZiAoIXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIGludCB4LCB5OwotICAgIHItPmFic29s
dXRlUG9zaXRpb24oeCwgeSk7CisgICAgci0+YWJzb2x1dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7
CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQAogICAgIGlmICghcikKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaW50IHgsIHk7Ci0gICAgci0+YWJzb2x1dGVQb3NpdGlvbih4
LCB5KTsKKyAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIGZhbHNlKTsKICAgICByZXR1cm4g
eTsKIH0KIApAQCAtNTczLDcgKzU3Myw3IEBACiBJbnRSZWN0IEhUTUxBcmVhRWxlbWVudEltcGw6
OmdldFJlY3QoUmVuZGVyT2JqZWN0KiBvYmopIGNvbnN0CiB7CiAgICAgaW50IGR4LCBkeTsKLSAg
ICBvYmotPmFic29sdXRlUG9zaXRpb24oZHgsIGR5KTsKKyAgICBvYmotPmFic29sdXRlUG9zaXRp
b24oZHgsIGR5LCBmYWxzZSk7CiAgICAgUGF0aCBwID0gZ2V0UmVnaW9uKGxhc3R3LGxhc3RoKTsK
ICAgICBwLnRyYW5zbGF0ZShkeCwgZHkpOwogICAgIHJldHVybiBwLmJvdW5kaW5nUmVjdCgpOwpJ
bmRleDoga2h0bWwvaHRtbC9odG1sX2lubGluZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyBraHRtbC9odG1s
L2h0bWxfaW5saW5laW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAKIAog
ICAgIFFWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHM7CiAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAg
ICByZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIHJlbmRlcmVyKCktPmFi
c29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgIHJlbmRlcmVyKCktPmFic29sdXRlUmVj
dHMocmVjdHMsIHgsIHkpOwogICAgIGZvciAoUVZhbHVlTGlzdDxJbnRSZWN0Pjo6Q29uc3RJdGVy
YXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgpOyArK2l0KQogICAgICAg
ICBpZiAoISgqaXQpLmlzRW1wdHkoKSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogICAgICAgICAgICAg
ICAgIGlmKHIgJiYgZSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBhYnN4LCBhYnN5OwotICAgICAgICAgICAgICAgICAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKGFi
c3gsIGFic3kpOworICAgICAgICAgICAgICAgICAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gs
IGFic3ksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgaW50IHgoZS0+Y2xpZW50WCgpIC0g
YWJzeCksIHkoZS0+Y2xpZW50WSgpIC0gYWJzeSk7CiAgICAgICAgICAgICAgICAgICAgIHVybCAr
PSBRU3RyaW5nKCI/JTEsJTIiKS5hcmcoIHggKS5hcmcoIHkgKTsKICAgICAgICAgICAgICAgICB9
CkluZGV4OiBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisr
KyBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA0Niw3ICsxMDQ2LDcgQEAKICAgICAgICAgICAgIHlQb3MgPSAwOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaW50IG9mZnNldFgsIG9mZnNldFk7Ci0gICAgICAgICAgICByZW5kZXJl
cigpLT5hYnNvbHV0ZVBvc2l0aW9uKG9mZnNldFgsb2Zmc2V0WSk7CisgICAgICAgICAgICByZW5k
ZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKG9mZnNldFgsIG9mZnNldFksIGZhbHNlKTsKICAgICAg
ICAgICAgIHhQb3MgPSBtZS0+Y2xpZW50WCgpIC0gb2Zmc2V0WDsKICAgICAgICAgICAgIHlQb3Mg
PSBtZS0+Y2xpZW50WSgpIC0gb2Zmc2V0WTsKICAgICAgICAgfQpJbmRleDogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQAogICAgICAgICBmb3Ig
KGludCByID0gblJvd3M7IHIgPCBudW1Sb3dzOyByKyspIHsKICAgICAgICAgICAgIGdyaWRbcl0u
cm93ID0gbmV3IFJvdyhuQ29scyk7CiAgICAgICAgICAgICBncmlkW3JdLnJvdy0+ZmlsbChlbXB0
eUNlbGxTdHJ1Y3QpOworICAgICAgICAgICAgZ3JpZFtyXS5yb3dSZW5kZXJlciA9IDA7CiAgICAg
ICAgICAgICBncmlkW3JdLmJhc2VMaW5lID0gMDsKICAgICAgICAgICAgIGdyaWRbcl0uaGVpZ2h0
ID0gTGVuZ3RoKCk7CiAgICAgICAgIH0KQEAgLTE1Myw3ICsxNTQsNyBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJUYWJsZUNl
bGwgKmNlbGwpCit2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJUYWJsZUNl
bGwgKmNlbGwsIFJlbmRlck9iamVjdCogcm93KQogewogICAgIGludCByU3BhbiA9IGNlbGwtPnJv
d1NwYW4oKTsKICAgICBpbnQgY1NwYW4gPSBjZWxsLT5jb2xTcGFuKCk7CkBAIC0xOTcsNiArMTk4
LDggQEAKICAgICBpZiAoIWVuc3VyZVJvd3MoY1JvdyArIHJTcGFuKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgZ3JpZFtjUm93XS5yb3dSZW5kZXJlciA9IHJvdzsKKwogICAgIGludCBjb2wgPSBj
Q29sOwogICAgIC8vIHRlbGwgdGhlIGNlbGwgd2hlcmUgaXQgaXMKICAgICBDZWxsU3RydWN0IGN1
cnJlbnRDZWxsOwpAQCAtMzYyLDYgKzM2NSw5IEBACiAgICAgaW50IGhzcGFjaW5nID0gdGFibGUo
KS0+aEJvcmRlclNwYWNpbmcoKTsKICAgICBpbnQgdnNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVy
U3BhY2luZygpOwogICAgIAorICAgIC8vIFNldCB0aGUgd2lkdGggb2Ygb3VyIHNlY3Rpb24gbm93
LiAgVGhlIHJvd3Mgd2lsbCBhbHNvIGJlIHRoaXMgd2lkdGguCisgICAgbV93aWR0aCA9IHRhYmxl
KCktPmNvbnRlbnRXaWR0aCgpOworICAgIAogICAgIGlmICh0b0FkZCAmJiB0b3RhbFJvd3MgJiYg
KHJvd1Bvc1t0b3RhbFJvd3NdIHx8ICFuZXh0U2libGluZygpKSkgewogCiAgICAgICAgIGludCB0
b3RhbEhlaWdodCA9IHJvd1Bvc1t0b3RhbFJvd3NdICsgdG9BZGQ7CkBAIC00MjksNiArNDM1LDE0
IEBACiAgICAgZm9yIChpbnQgciA9IDA7IHIgPCB0b3RhbFJvd3M7IHIrKykgewogICAgICAgICBS
b3cgKnJvdyA9IGdyaWRbcl0ucm93OwogICAgICAgICBpbnQgdG90YWxDb2xzID0gcm93LT5zaXpl
KCk7CisgICAgICAgIAorICAgICAgICAvLyBTZXQgdGhlIHJvdydzIHgveSBwb3NpdGlvbiBhbmQg
d2lkdGgvaGVpZ2h0LgorICAgICAgICBpZiAoZ3JpZFtyXS5yb3dSZW5kZXJlcikgeworICAgICAg
ICAgICAgZ3JpZFtyXS5yb3dSZW5kZXJlci0+c2V0UG9zKDAsIHJvd1Bvc1tyXSk7CisgICAgICAg
ICAgICBncmlkW3JdLnJvd1JlbmRlcmVyLT5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICAgICAgICAg
IGdyaWRbcl0ucm93UmVuZGVyZXItPnNldEhlaWdodChyb3dQb3NbcisxXSAtIHJvd1Bvc1tyXSAt
IHZzcGFjaW5nKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgbkVm
ZkNvbHM7IGMrKykgewogICAgICAgICAgICAgQ2VsbFN0cnVjdCBjdXJyZW50ID0gY2VsbEF0KHIs
IGMpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5jZWxsOwpA
QCAtNjU5LDEyICs2NzMsMTQgQEAKICAgICBncmlkUm93cyA9IDA7CiAKICAgICBmb3IgKFJlbmRl
ck9iamVjdCAqcm93ID0gZmlyc3RDaGlsZCgpOyByb3c7IHJvdyA9IHJvdy0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICBjUm93Kys7Ci0gICAgICAgIGNDb2wgPSAwOwotICAgICAgICBlbnN1cmVS
b3dzKGNSb3cgKyAxKTsKLSAgICAgICAgZm9yIChSZW5kZXJPYmplY3QgKmNlbGwgPSByb3ctPmZp
cnN0Q2hpbGQoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAg
ICBpZiAoY2VsbC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgICAgICBhZGRDZWxsKHN0YXRp
Y19jYXN0PFJlbmRlclRhYmxlQ2VsbCAqPihjZWxsKSk7CisgICAgICAgIGlmIChyb3ctPmlzVGFi
bGVSb3coKSkgeworICAgICAgICAgICAgY1JvdysrOworICAgICAgICAgICAgY0NvbCA9IDA7Cisg
ICAgICAgICAgICBlbnN1cmVSb3dzKGNSb3cgKyAxKTsKKyAgICAgICAgICAgIGZvciAoUmVuZGVy
T2JqZWN0ICpjZWxsID0gcm93LT5maXJzdENoaWxkKCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0
U2libGluZygpKQorICAgICAgICAgICAgICAgIGlmIChjZWxsLT5pc1RhYmxlQ2VsbCgpKQorICAg
ICAgICAgICAgICAgICAgICBhZGRDZWxsKHN0YXRpY19jYXN0PFJlbmRlclRhYmxlQ2VsbCAqPihj
ZWxsKSwgcm93KTsKKyAgICAgICAgfQogICAgIH0KICAgICBuZWVkQ2VsbFJlY2FsYyA9IGZhbHNl
OwogICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOwpAQCAtNjk4LDYgKzcxNCwyOCBAQAogICAgIHJl
dHVybiBSZW5kZXJDb250YWluZXI6OnJlbW92ZUNoaWxkTm9kZShjaGlsZCk7CiB9CiAKKy8vIEhp
dCBUZXN0aW5nCitib29sIFJlbmRlclRhYmxlU2VjdGlvbjo6bm9kZUF0UG9pbnQoTm9kZUluZm8m
IGluZm8sIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gYWN0aW9u
KQoreworICAgIC8vIFRhYmxlIHNlY3Rpb25zIGNhbm5vdCBldmVyIGJlIGhpdCB0ZXN0ZWQuICBF
ZmZlY3RpdmVseSB0aGV5IGRvIG5vdCBleGlzdC4KKyAgICAvLyBKdXN0IGZvcndhcmQgdG8gb3Vy
IGNoaWxkcmVuIGFsd2F5cy4KKyAgICB0eCArPSBtX3g7CisgICAgdHkgKz0gbV95OworCisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBz
a2lwIG92ZXIgaW5saW5lIGZsb3dzLCBzaW5jZSB0aGV5IGNhbiBzaG93IHVwIGluc2lkZSB0YWJs
ZSByb3dzCisgICAgICAgIC8vIGF0IHRoZSBtb21lbnQgKGEgZGVtb3RlZCBpbmxpbmUgPGZvcm0+
IGZvciBleGFtcGxlKS4gSWYgd2UgZXZlciBpbXBsZW1lbnQgYQorICAgICAgICAvLyB0YWJsZS1z
cGVjaWZpYyBoaXQtdGVzdCBtZXRob2QgKHdoaWNoIHdlIHNob3VsZCBkbyBmb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucyBhbnl3YXkpLAorICAgICAgICAvLyB0aGVuIHdlIGNhbiByZW1vdmUgdGhpcyBj
aGVjay4KKyAgICAgICAgaWYgKCFjaGlsZC0+bGF5ZXIoKSAmJiAhY2hpbGQtPmlzSW5saW5lRmxv
dygpICYmIGNoaWxkLT5ub2RlQXRQb2ludChpbmZvLCB4LCB5LCB0eCwgdHksIGFjdGlvbikpIHsK
KyAgICAgICAgICAgIHNldElubmVyTm9kZShpbmZvKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmbmRl
ZiBOREVCVUcKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpkdW1wKFFUZXh0U3RyZWFtICpzdHJl
YW0sIFFTdHJpbmcgaW5kKSBjb25zdAogewpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oCShyZXZpc2lvbiAxMzI4
NikKKysrIHJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1dpZHRoKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGNIZWlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY01pbk1heFdpZHRoKCk7Ci0gICAg
dmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQmeVBvcywgYm9vbCBm
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgYm9vbCBhYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywg
aW50JnlQb3MsIGJvb2wsIGJvb2wgZiA9IGZhbHNlKTsKICAgICAKICAgICBpbnQgZG9jSGVpZ2h0
KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKCkgY29uc3Q7CkluZGV4OiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDE1ICsxMjIsMTYgQEAKIHZvaWQgUmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCiB7CiAgICAg
ci5zZXRZKHIueSgpICsgX3RvcEV4dHJhKTsKKyAgICByLm1vdmUoLXBhcmVudCgpLT54UG9zKCks
IC1wYXJlbnQoKS0+eVBvcygpKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBz
cGFjZSwgc28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KICAgICBSZW5kZXJCbG9jazo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7CiB9CiAKLWJvb2wgUmVuZGVyVGFibGVDZWxs
OjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywgaW50ICZ5UG9zLCBib29sIGYpCitib29sIFJl
bmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCAmeVBvcywgYm9v
bCBpbmNsdWRlQm9yZGVyVG9wRXh0cmEsIGJvb2wgZikKIHsKLSAgICBib29sIHJldCA9IFJlbmRl
ckJsb2NrOjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGYpOwotICAgIGlmIChyZXQpCi0g
ICAgICB5UG9zICs9IF90b3BFeHRyYTsKLSAgICByZXR1cm4gcmV0OworICAgIGJvb2wgcmVzdWx0
ID0gUmVuZGVyQmxvY2s6OmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgaW5jbHVkZUJvcmRl
clRvcEV4dHJhLCBmKTsKKyAgICB4UG9zIC09IHBhcmVudCgpLT54UG9zKCk7IC8vIFJvd3MgYXJl
IGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0IGFkZCB0aGVpciBvZmZzZXQg
aW4uCisgICAgeVBvcyAtPSBwYXJlbnQoKS0+eVBvcygpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHNob3J0IFJlbmRlclRhYmxlQ2VsbDo6YmFzZWxpbmVQb3NpdGlvbihib29sKSBjb25zdApJ
bmRleDogcmVuZGVyaW5nL3JlbmRlcl9ib3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVu
ZGVyX2JveC5oCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfYm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICB2aXJ0dWFsIGludCBvdmVycmlkZUhl
aWdodCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlkZVNpemUoaW50IHMpIHsg
bV9vdmVycmlkZVNpemUgPSBzOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGFic29sdXRlUG9z
aXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQb3MsIGJvb2wgZiA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IGJvb2wgYWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCAmeVBvcywgYm9vbCBpbmNsdWRl
Qm9yZGVyRXh0cmEsIGJvb2wgZiA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Mo
IGludCB4UG9zLCBpbnQgeVBvcyApOwogCkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNwcAkocmV2aXNpb24gMTMy
ODcpCisrKyByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDcgKzE1NSw3IEBACiAgICAgLy8gRklYTUU6IENoaWxkIG9iamVjdCBjb3VsZCBvdmVycmlkZSB2
aXNpYmlsaXR5LgogICAgIGlmIChtX29iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpIHsKICAgICAgICAgbV9vYmplY3QtPmdldEFic29sdXRlUmVwYWludFJlY3RJbmNsdWRp
bmdGbG9hdHMobV9yZXBhaW50UmVjdCwgbV9mdWxsUmVwYWludFJlY3QpOwotICAgICAgICBtX29i
amVjdC0+YWJzb2x1dGVQb3NpdGlvbihtX3JlcGFpbnRYLCBtX3JlcGFpbnRZKTsKKyAgICAgICAg
bV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24obV9yZXBhaW50WCwgbV9yZXBhaW50WSwgZmFsc2Up
OwogICAgIH0KICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5jb21wdXRl
UmVwYWludFJlY3RzKCk7CkBAIC0xODQsNyArMTg0LDcgQEAKICAgICAvLyBGSVhNRTogQ2hpbGQg
b2JqZWN0IGNvdWxkIG92ZXJyaWRlIHZpc2liaWxpdHkuCiAgICAgaWYgKGNoZWNrRm9yUmVwYWlu
dCAmJiAobV9vYmplY3QtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAg
ICAgICBpbnQgeCwgeTsKLSAgICAgICAgbV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24oeCwgeSk7
CisgICAgICAgIG1fb2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIGZhbHNlKTsKICAgICAg
ICAgaWYgKHggPT0gbV9yZXBhaW50WCAmJiB5ID09IG1fcmVwYWludFkpCiAgICAgICAgICAgICBt
X29iamVjdC0+cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQobV9yZXBhaW50UmVjdCwgbV9mdWxs
UmVwYWludFJlY3QpOwogICAgICAgICBlbHNlIHsKQEAgLTIyNSw4ICsyMjUsMTIgQEAKICAgICAg
ICAgLy8gbmVhcmVzdCBlbmNsb3Npbmcgb2JqZWN0IHdpdGggYSBsYXllci4KICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjdXJyID0gbV9vYmplY3QtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAoY3Vy
ciAmJiAhY3Vyci0+bGF5ZXIoKSkgewotICAgICAgICAgICAgeCArPSBjdXJyLT54UG9zKCk7Ci0g
ICAgICAgICAgICB5ICs9IGN1cnItPnlQb3MoKTsKKyAgICAgICAgICAgIGlmICghY3Vyci0+aXNU
YWJsZVJvdygpKSB7CisgICAgICAgICAgICAgICAgLy8gUm93cyBhbmQgY2VsbHMgc2hhcmUgdGhl
IHNhbWUgY29vcmRpbmF0ZSBzcGFjZSAodGhhdCBvZiB0aGUgc2VjdGlvbikuCisgICAgICAgICAg
ICAgICAgLy8gT21pdCB0aGVtIHdoZW4gY29tcHV0aW5nIG91ciB4cG9zL3lwb3MuCisgICAgICAg
ICAgICAgICAgeCArPSBjdXJyLT54UG9zKCk7CisgICAgICAgICAgICAgICAgeSArPSBjdXJyLT55
UG9zKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7
CiAgICAgICAgIH0KICAgICAgICAgeSArPSBjdXJyLT5ib3JkZXJUb3BFeHRyYSgpOwpAQCAtNTA0
LDcgKzUwOCw3IEBACiAgICAgICAgIC8vIEFkZCBpbiB0aGUgb2Zmc2V0IG9mIHRoZSB2aWV3LiAg
V2UgY2FuIG9idGFpbiB0aGlzIGJ5IGNhbGxpbmcKICAgICAgICAgLy8gYWJzb2x1dGVQb3NpdGlv
bigpIG9uIHRoZSBSZW5kZXJDYW52YXMuCiAgICAgICAgIGludCB4T2ZmLCB5T2ZmOwotICAgICAg
ICBtX29iamVjdC0+YWJzb2x1dGVQb3NpdGlvbih4T2ZmLCB5T2ZmLCB0cnVlKTsKKyAgICAgICAg
bV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24oeE9mZiwgeU9mZiwgZmFsc2UsIHRydWUpOwogICAg
ICAgICB4ICs9IHhPZmY7CiAgICAgICAgIHkgKz0geU9mZjsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9y
ZW5kZXJfZnJhbWVzLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvcmVuZGVyX2Zy
YW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7Ci0gICAgYWJzb2x1dGVQb3Np
dGlvbih4LHkpOworICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgIHggKz0g
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKICAgICB5ICs9IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpOwogICAgIHdpZHRoID0gbV93aWR0aCAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJp
Z2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCk7CkluZGV4OiByZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKFFUZXh0U3RyZWFtICpzdHJlYW0sIFFTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwogI2VuZGlm
CiAKLSAgICB2b2lkIGFkZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxsKTsKKyAgICB2b2lkIGFk
ZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxsLCBSZW5kZXJPYmplY3QqIHJvdyk7CiAKICAgICB2
b2lkIHNldENlbGxXaWR0aHMoKTsKICAgICB2b2lkIGNhbGNSb3dIZWlnaHQoKTsKQEAgLTY5LDcg
KzY5LDggQEAKICAgICB9OwogICAgIHR5cGVkZWYgQXJyYXk8Q2VsbFN0cnVjdD4gUm93OwogICAg
IHN0cnVjdCBSb3dTdHJ1Y3QgewotICAgICAgICBSb3cgKnJvdzsKKyAgICAgICAgUm93KiByb3c7
CisgICAgICAgIFJlbmRlck9iamVjdCogcm93UmVuZGVyZXI7CiAgICAgICAgIGludCBiYXNlTGlu
ZTsKICAgICAgICAgTGVuZ3RoIGhlaWdodDsKICAgICB9OwpAQCAtOTcsNiArOTgsOCBAQAogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIGNo
aWxkKTsKIAorICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50
IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pOworCiAgICAg
Ly8gdGhpcyBnZXRzIGEgY2VsbCBncmlkIGRhdGEgc3RydWN0dXJlLiBjaGFuZ2luZyB0aGUgbnVt
YmVyIG9mCiAgICAgLy8gY29sdW1ucyBpcyBkb25lIGJ5IHRoZSB0YWJsZQogICAgIEFycmF5PFJv
d1N0cnVjdD4gZ3JpZDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAxMzI4NikK
KysrIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODcs
NyArNDg3LDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGludCBhYnN4LCBh
YnN5OwotICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5KTsKKyAg
ICAgICAgcmVuZGVyZXItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSk7CiAgICAg
ICAgIAogICAgICAgICBpbnQgdG9wID0gYWJzeSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
OwogICAgICAgICBpbnQgYm90dG9tID0gdG9wICsgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKTsK
QEAgLTUxMiw3ICs1MTIsNyBAQAogICAgIGlmICghZmlyc3RDaGlsZCgpICYmIChpc0lubGluZSgp
IHx8IGlzQW5vbnltb3VzQmxvY2soKSkpIHsKICAgICAgICAgUVZhbHVlTGlzdDxJbnRSZWN0PiBy
ZWN0czsKICAgICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAgYWJzb2x1dGVQb3NpdGlv
bih4LCB5KTsKKyAgICAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5LCB0cnVlKTsKICAgICAgICAg
YWJzb2x1dGVSZWN0cyhyZWN0cywgeCwgeSk7CiAgICAgICAgIHJldHVybiByZWN0czsKICAgICB9
CkBAIC01MjQsNyArNTI0LDcgQEAKICAgICBmb3IgKFJlbmRlck9iamVjdCAqY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0KCkgfHwgY2hpbGQtPmlzSW5saW5lKCkgfHwgY2hpbGQtPmlzQW5v
bnltb3VzQmxvY2soKSkgewogICAgICAgICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAg
ICAgIGNoaWxkLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgICAgICAgICAgY2hpbGQtPmFi
c29sdXRlUG9zaXRpb24oeCwgeSwgdHJ1ZSk7CiAgICAgICAgICAgICBjaGlsZC0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgeCwgeSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAko
cmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsOCBAQAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbihpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgYm9vbCwgYm9vbCwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CiAgICAgdmlydHVhbCBJbnRSZWN0IGdldEFic29sdXRlUmVwYWludFJlY3QoKTsK
LSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCB4
LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gYWN0aW9uKTsKKwogICAgIC8v
IEZJWE1FOiBXZSBjYW4ndCBzdXBwb3J0IHRoaW5ncyBsaWtlIG9wYWNpdHkgb24gdGFibGUgcm93
cyBiZWNhdXNlIHRoZXkgaGF2ZSBubyBkaW1lbnNpb25zLiAgVGhpcyBjYW4gYmUgcmVtb3ZlZCB3
aGVuCiAgICAgLy8gdGFibGUgcm93cyByZWFsbHkgd29yayByaWdodC4KICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNMYXllcigpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiByZW5kZXJpbmcvcmVu
ZGVyX2JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCShyZXZp
c2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfYm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQ2LDEyICs2NDYsMTIgQEAKICAgICAgICAgcmV0dXJuIGNiLT5jb250ZW50V2lkdGgoKTsK
IH0KIAotYm9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQ
b3MsIGJvb2wgZikKK2Jvb2wgUmVuZGVyQm94OjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywg
aW50ICZ5UG9zLCBib29sIGluY2x1ZGVCb3JkZXJUb3BFeHRyYSwgYm9vbCBmKQogewogICAgIGlm
IChzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgIGYgPSB0cnVl
OwogICAgIFJlbmRlck9iamVjdCAqbyA9IGNvbnRhaW5lcigpOwotICAgIGlmIChvICYmIG8tPmFi
c29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZikpIHsKKyAgICBpZiAobyAmJiBvLT5hYnNvbHV0
ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIHRydWUsIGYpKSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5w
b3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNSZWxQb3NpdGlvbmVkKCkgJiYg
by0+aXNJbmxpbmVGbG93KCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNs
b3NpbmcgcmVscG9zaXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQg
b2YgdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgIC8vIGJveCBmcm9tIHRoZSByZXN0IG9mIHRo
ZSBjb250ZW50LCBidXQgb25seSBpbiB0aGUgY2FzZXMgd2hlcmUgd2Uga25vdyB3ZSdyZSBwb3Np
dGlvbmVkCkBAIC02ODUsOCArNjg1LDEwIEBACiAgICAgICAgIGlmIChvLT5oYXNPdmVyZmxvd0Ns
aXAoKSkKICAgICAgICAgICAgIG8tPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KHhQb3Ms
IHlQb3MpOyAKICAgICAgICAgICAgIAotICAgICAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBs
YWNlZCgpKQotICAgICAgICAgICAgeFBvcyArPSBtX3gsIHlQb3MgKz0gbV95OworICAgICAgICBp
ZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAgICAgICAgICB4UG9zICs9IG1f
eDsKKyAgICAgICAgICAgIHlQb3MgKz0gbV95ICsgKGluY2x1ZGVCb3JkZXJUb3BFeHRyYSA/IGJv
cmRlclRvcEV4dHJhKCkgOiAwKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1JlbFBvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoeFBvcywgeVBvcyk7
CkBAIC0xNzU5LDcgKzE3NjEsNyBAQAogICAgIAogICAgIGludCBhYnN4LCBhYnN5OwogICAgIFJl
bmRlck9iamVjdCAqY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoY2IgJiYgY2IgIT0g
dGhpcyAmJiBjYi0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LGFic3kpKSB7CisgICAgaWYgKGNiICYm
IGNiICE9IHRoaXMgJiYgY2ItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSkpIHsK
ICAgICAgICAgX3ggKz0gYWJzeDsKICAgICAgICAgX3kgKz0gYWJzeTsKICAgICB9IApJbmRleDog
cmVuZGVyaW5nL3JlbmRlcl9ici5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9i
ci5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9ici5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIC8vIGFuIGFjY3VyYXRlIHBvc2l0aW9u
IGNhbiBiZSBkZXRlcm1pbmVkLgogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJzb2x1dGVQ
b3NpdGlvbihhYnN4LGFic3kpOworICAgIGFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1
ZSk7CiAKICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCiAgICAgICAgICpleHRyYVdpZHRo
VG9FbmRPZkxpbmUgPSBjb250YWluaW5nQmxvY2tXaWR0aCgpIC0geFBvcygpOwpJbmRleDogcmVu
ZGVyaW5nL3JlbmRlcl9mbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2Zs
b3cuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfZmxvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzNiwxNyArNjM2LDE3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpbnQgbXlSaWdodCA9IF94ICsgd2lkdGg7CiAgICAgICAgICAgICBpbnQgaWdub3Jl
OwotICAgICAgICAgICAgYWJzb2x1dGVQb3NpdGlvbihteVJpZ2h0LCBpZ25vcmUpOworICAgICAg
ICAgICAgYWJzb2x1dGVQb3NpdGlvbihteVJpZ2h0LCBpZ25vcmUsIHRydWUpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpbnQgY29udGFpbmVyUmlnaHQgPSBjb250YWluaW5nQmxvY2soKS0+
eFBvcygpICsgY29udGFpbmluZ0Jsb2NrV2lkdGgoKTsKLSAgICAgICAgICAgIGFic29sdXRlUG9z
aXRpb24oY29udGFpbmVyUmlnaHQsIGlnbm9yZSk7CisgICAgICAgICAgICBhYnNvbHV0ZVBvc2l0
aW9uKGNvbnRhaW5lclJpZ2h0LCBpZ25vcmUsIHRydWUpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gY29udGFpbmVyUmlnaHQgLSBteVJpZ2h0Owog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJzb2x1dGVQb3Np
dGlvbihhYnN4LCBhYnN5LCBmYWxzZSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5
LCB0cnVlKTsKICAgICBfeCArPSBhYnN4ICsgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKTsK
ICAgICBfeSArPSBhYnN5ICsgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCk7CiAKSW5kZXg6IHJl
bmRlcmluZy9yZW5kZXJfbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9s
aXN0LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICBpZiAobV9tYXJrZXIgJiYgbV9t
YXJrZXItPnBhcmVudCgpID09IHRoaXMgJiYgIW1fbWFya2VyLT5pc0luc2lkZSgpKSB7CiAgICAg
ICAgIEludFJlY3QgbWFya2VyUmVjdCA9IG1fbWFya2VyLT5nZXRSZWxhdGl2ZU1hcmtlclJlY3Qo
KTsKICAgICAgICAgaW50IHgsIHk7Ci0gICAgICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSk7Cisg
ICAgICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgICAgICBtYXJrZXJSZWN0
Lm1vdmUoeCwgeSk7CiAgICAgICAgIHJlc3VsdC51bml0ZShtYXJrZXJSZWN0KTsKICAgICB9Cklu
ZGV4OiByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9y
ZW5kZXJfb2JqZWN0LmgJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9vYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYyLDcgKzU2Miw3IEBACiAgICAgdmlydHVhbCBpbnQg
eVBvcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIGNhbGN1bGF0ZSBjbGllbnQgcG9z
aXRpb24gb2YgYm94Ci0gICAgdmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50ICYvKnhQ
b3MqLywgaW50ICYvKnlQb3MqLywgYm9vbCBmaXhlZCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgYWJzb2x1dGVQb3NpdGlvbihpbnQgJi8qeFBvcyovLCBpbnQgJi8qeVBvcyovLCBib29sIGlu
Y2x1ZGVCb3JkZXJFeHRyYSwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKIAogICAgIC8vIHdpZHRoIGFu
ZCBoZWlnaHQgYXJlIHdpdGhvdXQgbWFyZ2lucyBidXQgaW5jbHVkZSBwYWRkaW5ncyBhbmQgYm9y
ZGVycwogICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gMDsgfQpJbmRleDog
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDggQEAKIAogICAgIFJlbmRlclRh
YmxlQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlQ2VsbCo+KGNoaWxkKTsKIAot
ICAgIHNlY3Rpb24oKS0+YWRkQ2VsbChjZWxsKTsKLQorICAgIHNlY3Rpb24oKS0+YWRkQ2VsbChj
ZWxsLCB0aGlzKTsKKyAgICAKICAgICBSZW5kZXJDb250YWluZXI6OmFkZENoaWxkKGNlbGwsIGJl
Zm9yZUNoaWxkKTsKIAogICAgIGlmIChiZWZvcmVDaGlsZCB8fCBuZXh0U2libGluZygpKQpAQCAt
MTIyLDcgKzEyMiw4IEBACiBJbnRSZWN0IFJlbmRlclRhYmxlUm93OjpnZXRBYnNvbHV0ZVJlcGFp
bnRSZWN0KCkKIHsKICAgICAvLyBGb3Igbm93LCBqdXN0IHJlcGFpbnQgdGhlIHdob2xlIHRhYmxl
LgotICAgIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorICAgIC8vIEZJ
WE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLCBlLmcuLCBuZWVkIHRvIHJlcGFpbnQg
YWxsIHRoZSBjZWxscyB0aGF0IHdlCisgICAgLy8gbWlnaHQgaGF2ZSBwcm9wYWdhdGVkIGEgYmFj
a2dyb3VuZCBjb2xvciBpbnRvLgogICAgIFJlbmRlclRhYmxlKiBwYXJlbnRUYWJsZSA9IHRhYmxl
KCk7CiAgICAgaWYgKHBhcmVudFRhYmxlKQogICAgICAgICByZXR1cm4gcGFyZW50VGFibGUtPmdl
dEFic29sdXRlUmVwYWludFJlY3QoKTsKQEAgLTEzMCw0ICsxMzEsMjMgQEAKICAgICAgICAgcmV0
dXJuIEludFJlY3QoKTsKIH0KIAorLy8gSGl0IFRlc3RpbmcKK2Jvb2wgUmVuZGVyVGFibGVSb3c6
Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5
LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKK3sKKyAgICAvLyBUYWJsZSByb3dzIGNhbm5vdCBldmVy
IGJlIGhpdCB0ZXN0ZWQuICBFZmZlY3RpdmVseSB0aGV5IGRvIG5vdCBleGlzdC4KKyAgICAvLyBK
dXN0IGZvcndhcmQgdG8gb3VyIGNoaWxkcmVuIGFsd2F5cy4KKyAgICBmb3IgKFJlbmRlck9iamVj
dCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2li
bGluZygpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIHRvIHNraXAgb3ZlciBpbmxpbmUg
Zmxvd3MsIHNpbmNlIHRoZXkgY2FuIHNob3cgdXAgaW5zaWRlIHRhYmxlIHJvd3MKKyAgICAgICAg
Ly8gYXQgdGhlIG1vbWVudCAoYSBkZW1vdGVkIGlubGluZSA8Zm9ybT4gZm9yIGV4YW1wbGUpLiBJ
ZiB3ZSBldmVyIGltcGxlbWVudCBhCisgICAgICAgIC8vIHRhYmxlLXNwZWNpZmljIGhpdC10ZXN0
IG1ldGhvZCAod2hpY2ggd2Ugc2hvdWxkIGRvIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFueXdh
eSksCisgICAgICAgIC8vIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIGNoZWNrLgorICAgICAgICBp
ZiAoIWNoaWxkLT5sYXllcigpICYmICFjaGlsZC0+aXNJbmxpbmVGbG93KCkgJiYgY2hpbGQtPm5v
ZGVBdFBvaW50KGluZm8sIHgsIHksIHR4LCB0eSwgYWN0aW9uKSkgeworICAgICAgICAgICAgc2V0
SW5uZXJOb2RlKGluZm8pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQAogewogICAgIFFW
YWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHM7CiAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICBhYnNv
bHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgdHJ1ZSk7CiAg
ICAgYWJzb2x1dGVSZWN0cyhyZWN0cywgeCwgeSk7CiAgICAgcmV0dXJuIHJlY3RzOwogfQpAQCAt
MjQ5LDcgKzI0OSw3IEBACiAKICAgICBpbnQgYWJzeCwgYWJzeTsKICAgICBSZW5kZXJCbG9jayAq
Y2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBjYi0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBh
YnN5KTsKKyAgICBjYi0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5LCB0cnVlKTsKICAgICBp
ZiAoY2ItPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICBjYi0+bGF5ZXIoKS0+c3VidHJhY3RT
Y3JvbGxPZmZzZXQoYWJzeCwgYWJzeSk7CiAKQEAgLTM5OSw3ICszOTksNyBAQAogICAgICAgICAq
ZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gKGJveC0+cm9vdCgpLT53aWR0aCgpICsgYm94LT5yb290
KCktPnhQb3MoKSkgLSAobGVmdCArIDEpOwogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJz
b2x1dGVQb3NpdGlvbihhYnN4LGFic3kpOworICAgIGFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJz
eSwgdHJ1ZSk7CiAgICAgbGVmdCArPSBhYnN4OwogICAgIHRvcCArPSBhYnN5OwogCkBAIC00MTcs
NyArNDE3LDcgQEAKIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NPZkNoYXIoaW50IGNociwgaW50ICZ4
LCBpbnQgJnkpCiB7Ci0gICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7CisgICAgYWJz
b2x1dGVQb3NpdGlvbih4LCB5LCB0cnVlKTsKIAogICAgIGludCBwb3M7CiAgICAgaWYgKElubGlu
ZVRleHRCb3gqIHMgPSBmaW5kTmV4dElubGluZVRleHRCb3goY2hyLCBwb3MpKSB7CkBAIC0xMDUw
LDcgKzEwNTAsNyBAQAogICAgICAgICByZXR1cm4gcmVjdDsKIAogICAgIGludCBhYnN4LCBhYnN5
OwotICAgIGNiLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOworICAgIGNiLT5hYnNvbHV0
ZVBvc2l0aW9uKGFic3gsIGFic3ksIHRydWUpOwogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGNi
LT5sYXllcigpOwogICAgIGlmIChsYXllcikKICAgICAgICBsYXllci0+c3VidHJhY3RTY3JvbGxP
ZmZzZXQoYWJzeCwgYWJzeSk7IApJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkocmV2aXNpb24gMTMyODYp
CisrKyByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzUs
MTMgKzEyNzUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3R5
IC0geVBvcygpICsgY29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT55UG9zKCkpOwog
ICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KF90eCwgX3R5LCB3
aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChfdHgsIF90
eSwgd2lkdGgoKSwgaGVpZ2h0KCkgKyBib3JkZXJUb3BFeHRyYSgpICsgYm9yZGVyQm90dG9tRXh0
cmEoKSkpOwogfQogCiBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKQogewotICAgIGludCB4LCB5OwotICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSk7CisgICAg
aW50IHggPSAwLCB5ID0gMDsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHksIGZhbHNlKTsKICAg
ICBRVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzOwogICAgIGFic29sdXRlUmVjdHMocmVjdHMsIHgs
IHkpOwogCkBAIC0xODcyLDExICsxODcyLDExIEBACiAgICAgcmV0dXJuIGNhbnZhcygpLT52aWV3
UmVjdCgpOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6YWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQ
b3MsIGludCAmeVBvcywgYm9vbCBmKQorYm9vbCBSZW5kZXJPYmplY3Q6OmFic29sdXRlUG9zaXRp
b24oaW50ICZ4UG9zLCBpbnQgJnlQb3MsIGJvb2wsIGJvb2wgZikKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIG8gPSBwYXJlbnQoKTsKICAgICBpZiAobykgewotICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0
aW9uKHhQb3MsIHlQb3MsIGYpOworICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQ
b3MsIHRydWUsIGYpOwogICAgICAgICBpZiAoby0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAg
ICAgICBvLT5sYXllcigpLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4UG9zLCB5UG9zKTsgCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaW50IHgsIHk7Ci0gICAgICAgICAgICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHkp
OworICAgICAgICAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7CiAgICAgICAgICAg
ICByZWdpb24uYm91bmRzLnNldFgoeCArIHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0LnZhbHVlKCkp
OwogICAgICAgICAgICAgcmVnaW9uLmJvdW5kcy5zZXRZKHkgKyBzdHlsZVJlZ2lvbi5vZmZzZXQu
dG9wLnZhbHVlKCkpOwogICAgICAgICAgICAgCkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX2NhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuY3BwCShyZXZpc2lv
biAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDcgKzEzMCw3IEBACiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi1ib29s
IFJlbmRlckNhbnZhczo6YWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCAmeVBvcywgYm9v
bCBmKQorYm9vbCBSZW5kZXJDYW52YXM6OmFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQg
JnlQb3MsIGJvb2wsIGJvb2wgZikKIHsKICAgICBpZiAoIGYgJiYgbV92aWV3KSB7CiAgICAgICAg
IHhQb3MgPSBtX3ZpZXctPmNvbnRlbnRzWCgpOwpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9yZXBs
YWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5jcHAJKHJl
dmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgIFJvb3RJbmxpbmVCb3ggKnJvb3QgPSBib3gt
PnJvb3QoKTsKIAogICAgIGludCBhYnN4LCBhYnN5OwotICAgIGNvbnRhaW5pbmdCbG9jaygpLT5h
YnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOworICAgIGNvbnRhaW5pbmdCbG9jaygpLT5hYnNv
bHV0ZVBvc2l0aW9uKGFic3gsIGFic3ksIGZhbHNlKTsKIAogICAgIGludCB0b3AgPSBhYnN5ICsg
cm9vdC0+dG9wT3ZlcmZsb3coKTsKICAgICBpbnQgYm90dG9tID0gcm9vdC0+bmV4dFJvb3RCb3go
KSA/IGFic3kgKyByb290LT5uZXh0Um9vdEJveCgpLT50b3BPdmVyZmxvdygpIDogYWJzeSArIHJv
b3QtPmJvdHRvbU92ZXJmbG93KCk7CkBAIC0xODEsNyArMTgxLDcgQEAKICAgICBpbnQgc2VsZWN0
aW9uUmlnaHQgPSB4UG9zKCkgKyB3aWR0aCgpOwogICAgIAogICAgIGludCBhYnN4LCBhYnN5Owot
ICAgIGNiLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOworICAgIGNiLT5hYnNvbHV0ZVBv
c2l0aW9uKGFic3gsIGFic3ksIGZhbHNlKTsKICAgICBpZiAoY2ItPmhhc092ZXJmbG93Q2xpcCgp
KQogICAgICAgICBjYi0+bGF5ZXIoKS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoYWJzeCwgYWJzeSk7
CiAKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaW50IHgs
IHksIHdpZHRoLCBoZWlnaHQ7Ci0gICAgYWJzb2x1dGVQb3NpdGlvbih4LHkpOworICAgIGFic29s
dXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgIHggKz0gYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKTsKICAgICB5ICs9IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpOwogICAgIHdpZHRo
ID0gbV93aWR0aCAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgp
IC0gcGFkZGluZ1JpZ2h0KCk7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysg
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1NCw3ICsxNDU0
LDcgQEAKICAgICAgICAgcmV0dXJuIEdhcFJlY3RzKCk7CiAKICAgICBpbnQgdHgsIHR5OwotICAg
IGFic29sdXRlUG9zaXRpb24odHgsIHR5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uKHR4LCB0eSwg
dHJ1ZSk7CiAgICAgCiAgICAgaW50IGxhc3RUb3AgPSAtYm9yZGVyVG9wRXh0cmEoKTsKICAgICBp
bnQgbGFzdExlZnQgPSBsZWZ0U2VsZWN0aW9uT2Zmc2V0KHRoaXMsIGxhc3RUb3ApOwpAQCAtMjU4
Niw3ICsyNTg2LDcgQEAKICAgICAgICAgcmV0dXJuIFJlbmRlckZsb3c6OnBvc2l0aW9uRm9yQ29v
cmRpbmF0ZXMoX3gsIF95KTsgCiAKICAgICBpbnQgYWJzeCwgYWJzeTsKLSAgICBhYnNvbHV0ZVBv
c2l0aW9uKGFic3gsIGFic3kpOworICAgIGFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1
ZSk7CiAKICAgICBpbnQgdG9wID0gYWJzeSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpOwog
ICAgIGludCBib3R0b20gPSB0b3AgKyBjb250ZW50SGVpZ2h0KCk7CkBAIC0yNjM3LDEyICsyNjM3
LDEyIEBACiAgICAgZm9yIChSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gZmlyc3RDaGlsZCgpOyBy
ZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBp
ZiAocmVuZGVyZXItPmhlaWdodCgpID09IDAgfHwgcmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFIHx8IHJlbmRlcmVyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUG9zaXRpb24o
YWJzeCwgdG9wKTsKKyAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgdG9w
LCB0cnVlKTsKICAgICAgICAgUmVuZGVyT2JqZWN0ICpuZXh0ID0gcmVuZGVyZXItPm5leHRTaWJs
aW5nKCk7CiAgICAgICAgIHdoaWxlIChuZXh0ICYmIG5leHQtPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0U2libGluZygpOwogICAgICAgICBp
ZiAobmV4dCkgCi0gICAgICAgICAgICBuZXh0LT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGJvdHRv
bSk7CisgICAgICAgICAgICBuZXh0LT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGJvdHRvbSwgdHJ1
ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJvdHRvbSA9IHRvcCArIGNvbnRlbnRIZWln
aHQoKTsKICAgICAgICAgaWYgKF95ID49IHRvcCAmJiBfeSA8IGJvdHRvbSkgewpJbmRleDogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAKICAgICB2aXJ0dWFsIGludCB5UG9z
KCkgY29uc3QgeyByZXR1cm4gbV95ICsgX3RvcEV4dHJhOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYsIGJvb2wgZj1mYWxzZSk7Ci0gICAg
dmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3MsIGJvb2wg
ZiA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJzb2x1dGVQb3NpdGlvbihpbnQmIHhQb3Ms
IGludCYgeVBvcywgYm9vbCBpbmNsdWRlQm9yZGVyVG9wRXh0cmEsIGJvb2wgZiA9IGZhbHNlKTsK
IAogICAgIHZpcnR1YWwgc2hvcnQgYmFzZWxpbmVQb3NpdGlvbihib29sID0gZmFsc2UpIGNvbnN0
OwogCkluZGV4OiBkb20vZG9tMl9ldmVudHNpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vZG9t
Ml9ldmVudHNpbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyBkb20vZG9tMl9ldmVudHNpbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBACiAgICAgaWYgKCFpc1NpbXVs
YXRlZCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJnLT5yZW5kZXJlcigp
KSB7CiAgICAgICAgICAgICBpbnQgcngsIHJ5OwotICAgICAgICAgICAgaWYgKHItPmFic29sdXRl
UG9zaXRpb24ocngsIHJ5KSkgeworICAgICAgICAgICAgaWYgKHItPmFic29sdXRlUG9zaXRpb24o
cngsIHJ5LCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICBtX29mZnNldFggLT0gcng7CiAgICAg
ICAgICAgICAgICAgbV9vZmZzZXRZIC09IHJ5OwogICAgICAgICAgICAgfQpJbmRleDogZG9tL05v
ZGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vTm9kZUltcGwuY3BwCShyZXZpc2lvbiAxMzI4
NikKKysrIGRvbS9Ob2RlSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw4ICszMzksOCBA
QAogSW50UmVjdCBOb2RlSW1wbDo6Z2V0UmVjdCgpIGNvbnN0CiB7CiAgICAgaW50IF94LCBfeTsK
LSAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKF94LCBf
eSkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCBfeCwgX3ksIHJlbmRlcmVyKCktPndpZHRoKCks
IHJlbmRlcmVyKCktPmhlaWdodCgpICk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+YWJzb2x1dGVQb3NpdGlvbihfeCwgX3ksIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoIF94LCBfeSwgcmVuZGVyZXIoKS0+d2lkdGgoKSwgcmVuZGVyZXIoKS0+aGVpZ2h0KCkgKyBy
ZW5kZXJlcigpLT5ib3JkZXJUb3BFeHRyYSgpICsgcmVuZGVyZXIoKS0+Ym9yZGVyQm90dG9tRXh0
cmEoKSk7CiAKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQpJbmRleDogZG9tL0NvbnRhaW5lck5v
ZGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vQ29udGFpbmVyTm9kZUltcGwuY3BwCShyZXZp
c2lvbiAxMzI4NikKKysrIGRvbS9Db250YWluZXJOb2RlSW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyOSw3ICs2MjksNyBAQAogCiAgICAgeFBvcyA9IHlQb3MgPSAwOwogICAgIGlmICghby0+
aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgby0+YWJzb2x1dGVQb3Np
dGlvbiggeFBvcywgeVBvcyApOworICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQ
b3MsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC02NTMsMTQgKzY1
MywxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlz
UmVwbGFjZWQoKSkgewotICAgICAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbiggeFBvcywgeVBv
cyApOworICAgICAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zLCBmYWxzZSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwLT5l
bGVtZW50KCkgJiYgcC0+ZWxlbWVudCgpID09IHRoaXMgJiYgby0+aXNUZXh0KCkgJiYgIW8tPmlz
QlIoKSAmJiAhc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KG8pLT5maXJzdFRleHRCb3goKSkgewog
ICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcgLSBza2lwIHVucmVuZGVyZWQgd2hpdGVzcGFj
ZSB0aGF0IGlzIGEgY2hpbGQgb3IgbmV4dCBzaWJsaW5nIG9mIHRoZSBhbmNob3IKICAgICAgICAg
fSBlbHNlIGlmICgoby0+aXNUZXh0KCkgJiYgIW8tPmlzQlIoKSkgfHwgby0+aXNSZXBsYWNlZCgp
KSB7Ci0gICAgICAgICAgICBvLT5jb250YWluZXIoKS0+YWJzb2x1dGVQb3NpdGlvbiggeFBvcywg
eVBvcyApOworICAgICAgICAgICAgby0+Y29udGFpbmVyKCktPmFic29sdXRlUG9zaXRpb24oeFBv
cywgeVBvcywgZmFsc2UpOwogICAgICAgICAgICAgaWYgKG8tPmlzVGV4dCgpICYmIHN0YXRpY19j
YXN0PFJlbmRlclRleHQgKj4obyktPmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAg
eFBvcyArPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG8pLT5taW5YUG9zKCk7CiAgICAgICAg
ICAgICAgICAgeVBvcyArPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG8pLT5maXJzdFRleHRC
b3goKS0+cm9vdCgpLT50b3BPdmVyZmxvdygpOwpAQCAtNjkwLDkgKzY5MCw5IEBACiAgICAgeFBv
cyA9IHlQb3MgPSAwOwogICAgIGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkp
CiAgICAgewotICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0aW9uKCB4UG9zLCB5UG9zICk7CisgICAg
ICAgIG8tPmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZmFsc2UpOwogICAgICAgICB4UG9z
ICs9IG8tPndpZHRoKCk7Ci0gICAgICAgIHlQb3MgKz0gby0+aGVpZ2h0KCk7CisgICAgICAgIHlQ
b3MgKz0gby0+aGVpZ2h0KCkgKyBvLT5ib3JkZXJUb3BFeHRyYSgpICsgby0+Ym9yZGVyQm90dG9t
RXh0cmEoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIC8vIGZpbmQgdGhlIGxh
c3QgdGV4dC9pbWFnZSBjaGlsZCwgdG8gZ2V0IGEgcG9zaXRpb24KQEAgLTcxMCw4ICs3MTAsOCBA
QAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbyA9IHByZXY7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYoby0+aXNUZXh0KCkgfHwgby0+aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgICAgICBvLT5j
b250YWluZXIoKS0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zKTsKKyAgICAgICAgaWYgKG8t
PmlzVGV4dCgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgeworICAgICAgICAgICAgby0+Y29udGFpbmVy
KCktPmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZmFsc2UpOwogICAgICAgICAgICAgaWYg
KG8tPmlzVGV4dCgpKQogICAgICAgICAgICAgICAgIHhQb3MgKz0gc3RhdGljX2Nhc3Q8UmVuZGVy
VGV4dCAqPihvKS0+bWluWFBvcygpICsgby0+d2lkdGgoKTsKICAgICAgICAgICAgIGVsc2UKSW5k
ZXg6IGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyBlZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDcgQEAKICAgICAKICAgICBpZiAocm9v
dCkgewogICAgICAgICBpbnQgYWJzeCwgYWJzeTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5h
YnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOworICAgICAgICBjb250YWluaW5nQmxvY2stPmFi
c29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSk7CiAgICAgICAgIFJlbmRlck9iamVjdCAq
cmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4LCBhYnN4KS0+b2JqZWN0
KCk7CiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4LCBh
YnN5ICsgcm9vdC0+dG9wT3ZlcmZsb3coKSk7CiAgICAgfQpAQCAtNDg3LDcgKzQ4Nyw3IEBACiAg
ICAgCiAgICAgaWYgKHJvb3QpIHsKICAgICAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgICAgIGNv
bnRhaW5pbmdCbG9jay0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5KTsKKyAgICAgICAgY29u
dGFpbmluZ0Jsb2NrLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3ksIHRydWUpOwogICAgICAg
ICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gcm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZvclhQb3Mo
eCwgYWJzeCktPm9iamVjdCgpOwogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9y
Q29vcmRpbmF0ZXMoeCwgYWJzeSArIHJvb3QtPnRvcE92ZXJmbG93KCkpOwogICAgIH0gICAgCklu
ZGV4OiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGVkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1LDcgKzc1NSw3IEBA
CiAgICAgICAgICAgICBtX2NhcmV0UmVjdCA9IHBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmNhcmV0
UmVjdChwb3Mub2Zmc2V0KCksIG1fc2VsLmFmZmluaXR5KCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpbnQgeCwgeTsKLSAgICAgICAgICAgIHBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmFi
c29sdXRlUG9zaXRpb24oeCwgeSk7CisgICAgICAgICAgICBwb3Mubm9kZSgpLT5yZW5kZXJlcigp
LT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIHRydWUpOwogICAgICAgICAgICAgbV9jYXJldFBvc2l0
aW9uT25MYXlvdXQgPSBJbnRQb2ludCh4LCB5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3Miw3
ICs3NzIsNyBAQAogCiAgICAgaWYgKG1fc2VsLnN0YXJ0KCkubm9kZSgpICYmIG1fc2VsLnN0YXJ0
KCkubm9kZSgpLT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGludCB4LCB5OwotICAgICAgICBtX3Nl
bC5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAg
ICAgICAgbV9zZWwuc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmFic29sdXRlUG9zaXRpb24o
eCwgeSwgdHJ1ZSk7CiAgICAgICAgIGNhcmV0Lm1vdmUoSW50UG9pbnQoeCwgeSkgLSBtX2NhcmV0
UG9zaXRpb25PbkxheW91dCk7CiAgICAgfQogCkluZGV4OiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvTWFjRnJhbWUubW0JKHJldmlzaW9uIDEzMjg2KQor
KysgYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcwOCw3ICsxNzA4
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgLy8gV2ViS2l0IHdpbGwgZ2VuZXJhdGUgdGhlIGRl
ZmF1bHQsIHRoZSBlbGVtZW50IGRvZXNuJ3Qgb3ZlcnJpZGUuCiAgICAgICAgICAgICAgICAgICAg
IGlmIChfZHJhZ1NyY0lzREhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNY
LCBzcmNZOwotICAgICAgICAgICAgICAgICAgICAgICAgX2RyYWdTcmMtPnJlbmRlcmVyKCktPmFi
c29sdXRlUG9zaXRpb24oc3JjWCwgc3JjWSk7CisgICAgICAgICAgICAgICAgICAgICAgICBfZHJh
Z1NyYy0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbihzcmNYLCBzcmNZLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBfZHJhZ0NsaXBib2FyZC0+c2V0RHJhZ0ltYWdlRWxlbWVu
dChfZHJhZ1NyYy5nZXQoKSwgSW50UG9pbnQoX21vdXNlRG93blggLSBzcmNYLCBfbW91c2VEb3du
WSAtIHNyY1kpKTsKICAgICAgICAgICAgICAgICAgICAgfSAKIApAQCAtMjYzNCw3ICsyNjM0LDcg
QEAKICAgICAgICAgICAgIHdoaWxlIChjb250YWluaW5nQmxvY2stPnJlbmRlcmVyKCktPmlzSW5s
aW5lKCkpewogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGFpbmluZ0Js
b2NrLT5yZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKGNvbnRhaW5pbmdCbG9ja1gsIGNvbnRh
aW5pbmdCbG9ja1kpOworICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5yZW5kZXJlcigpLT5h
YnNvbHV0ZVBvc2l0aW9uKGNvbnRhaW5pbmdCbG9ja1gsIGNvbnRhaW5pbmdCbG9ja1ksIGZhbHNl
KTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIApAQCAtMjY1NCw3ICsyNjU0LDcgQEAKIAog
I2lmZGVmIFBPU0lUSU9OX0xJU1QKICAgICAgICAgICAgIGludCByeTsKLSAgICAgICAgICAgIHIt
PmFic29sdXRlUG9zaXRpb24ocngsIHJ5KTsKKyAgICAgICAgICAgIHItPmFic29sdXRlUG9zaXRp
b24ocngsIHJ5LCBmYWxzZSk7CiAgICAgICAgICAgICByeCAtPSBjb250YWluaW5nQmxvY2tYOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdGV4dCBpcyBpbmRl
bnRlZCBhdCBsZWFzdCBlbm91Z2ggdG8gYWxsb3cgZm9yIHRoZSBtYXJrZXJzLgpJbmRleDogYnJp
ZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9X
ZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDEzMjg2KQorKysgYnJpZGdlL21hYy9XZWJD
b3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTk5Miw3ICs5OTIsNyBAQAogICAg
IE5TVmlldyAqdmlldyA9IHdpZGdldCA/IHdpZGdldC0+Z2V0VmlldygpIDogbmlsOwogICAgIAog
ICAgIGludCBueCwgbnk7Ci0gICAgbm9kZS0+YWJzb2x1dGVQb3NpdGlvbihueCxueSk7CisgICAg
bm9kZS0+YWJzb2x1dGVQb3NpdGlvbihueCwgbnksIGZhbHNlKTsKICAgICBOU09iamVjdCAqY29w
aWVkTm9kZSA9IFtjb3BpZXIgbm9kZVdpdGhOYW1lOm5hbWUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOk5TTWFrZVBvaW50KG54LG55KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Q6TlNNYWtlUmVjdChub2RlLT54
UG9zKCksIG5vZGUtPnlQb3MoKSwgbm9kZS0+d2lkdGgoKSwgbm9kZS0+aGVpZ2h0KCkpCkBAIC0y
NDY2LDcgKzI0NjYsNyBAQAogICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cmVuZGVyZXIo
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpbnQgYWJzWCwgYWJzWTsKLSAgICAgICAg
bi0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbihhYnNYLCBhYnNZLCB0cnVlKTsKKyAgICAg
ICAgbi0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbihhYnNYLCBhYnNZLCBmYWxzZSwgdHJ1
ZSk7CiAgICAgICAgIEZyYW1lVmlldyAqdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyAqPih3
aWRnZXQpOwogICAgICAgICB3aWRnZXRQb2ludC5zZXRYKHdpZGdldFBvaW50LngoKSAtIGFic1gg
KyB2aWV3LT5jb250ZW50c1goKSk7CiAgICAgICAgIHdpZGdldFBvaW50LnNldFkod2lkZ2V0UG9p
bnQueSgpIC0gYWJzWSArIHZpZXctPmNvbnRlbnRzWSgpKTsKSW5kZXg6IGt3cS9LV1FBY2NPYmpl
Y3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga3dxL0tXUUFjY09iamVjdC5tbQkocmV2aXNpb24gMTMyODYp
CisrKyBrd3EvS1dRQWNjT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDcg
QEAKICAgICAgICAgICAgIG9iaiA9IG9iai0+ZWxlbWVudCgpLT5yZW5kZXJlcigpOwogICAgICAg
ICBRVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzOwogICAgICAgICBpbnQgeCA9IDAsIHkgPSAwOwot
ICAgICAgICBvYmotPmFic29sdXRlUG9zaXRpb24oeCwgeSk7CisgICAgICAgIG9iai0+YWJzb2x1
dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7CiAgICAgICAgIG9iai0+YWJzb2x1dGVSZWN0cyhyZWN0
cywgeCwgeSk7CiAgICAgICAgIGZvciAoUVZhbHVlTGlzdDxJbnRSZWN0Pjo6Q29uc3RJdGVyYXRv
ciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgpOyArK2l0KSB7CiAgICAgICAg
ICAgICBJbnRSZWN0IHIgPSAqaXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7106</attachid>
            <date>2006-03-15 23:39:29 -0800</date>
            <delta_ts>2006-03-16 02:02:52 -0800</delta_ts>
            <desc>Fix offsetHeight to include borderTop/BottomExtra.  Add temporary code to the render tree dumper to keep the results the same.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35802</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIGtodG1sL2h0bWwv
aHRtbF9pbWFnZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5LDcgQEAKICAg
ICBpZiAoIXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIGludCB4LCB5OwotICAgIHItPmFic29s
dXRlUG9zaXRpb24oeCwgeSk7CisgICAgci0+YWJzb2x1dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7
CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQAogICAgIGlmICghcikKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaW50IHgsIHk7Ci0gICAgci0+YWJzb2x1dGVQb3NpdGlvbih4
LCB5KTsKKyAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIGZhbHNlKTsKICAgICByZXR1cm4g
eTsKIH0KIApAQCAtNTczLDcgKzU3Myw3IEBACiBJbnRSZWN0IEhUTUxBcmVhRWxlbWVudEltcGw6
OmdldFJlY3QoUmVuZGVyT2JqZWN0KiBvYmopIGNvbnN0CiB7CiAgICAgaW50IGR4LCBkeTsKLSAg
ICBvYmotPmFic29sdXRlUG9zaXRpb24oZHgsIGR5KTsKKyAgICBvYmotPmFic29sdXRlUG9zaXRp
b24oZHgsIGR5LCBmYWxzZSk7CiAgICAgUGF0aCBwID0gZ2V0UmVnaW9uKGxhc3R3LGxhc3RoKTsK
ICAgICBwLnRyYW5zbGF0ZShkeCwgZHkpOwogICAgIHJldHVybiBwLmJvdW5kaW5nUmVjdCgpOwpJ
bmRleDoga2h0bWwvaHRtbC9odG1sX2lubGluZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyBraHRtbC9odG1s
L2h0bWxfaW5saW5laW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAKIAog
ICAgIFFWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHM7CiAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAg
ICByZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIHJlbmRlcmVyKCktPmFi
c29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgIHJlbmRlcmVyKCktPmFic29sdXRlUmVj
dHMocmVjdHMsIHgsIHkpOwogICAgIGZvciAoUVZhbHVlTGlzdDxJbnRSZWN0Pjo6Q29uc3RJdGVy
YXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgpOyArK2l0KQogICAgICAg
ICBpZiAoISgqaXQpLmlzRW1wdHkoKSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogICAgICAgICAgICAg
ICAgIGlmKHIgJiYgZSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBhYnN4LCBhYnN5OwotICAgICAgICAgICAgICAgICAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKGFi
c3gsIGFic3kpOworICAgICAgICAgICAgICAgICAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gs
IGFic3ksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgaW50IHgoZS0+Y2xpZW50WCgpIC0g
YWJzeCksIHkoZS0+Y2xpZW50WSgpIC0gYWJzeSk7CiAgICAgICAgICAgICAgICAgICAgIHVybCAr
PSBRU3RyaW5nKCI/JTEsJTIiKS5hcmcoIHggKS5hcmcoIHkgKTsKICAgICAgICAgICAgICAgICB9
CkluZGV4OiBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisr
KyBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA0Niw3ICsxMDQ2LDcgQEAKICAgICAgICAgICAgIHlQb3MgPSAwOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaW50IG9mZnNldFgsIG9mZnNldFk7Ci0gICAgICAgICAgICByZW5kZXJl
cigpLT5hYnNvbHV0ZVBvc2l0aW9uKG9mZnNldFgsb2Zmc2V0WSk7CisgICAgICAgICAgICByZW5k
ZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKG9mZnNldFgsIG9mZnNldFksIGZhbHNlKTsKICAgICAg
ICAgICAgIHhQb3MgPSBtZS0+Y2xpZW50WCgpIC0gb2Zmc2V0WDsKICAgICAgICAgICAgIHlQb3Mg
PSBtZS0+Y2xpZW50WSgpIC0gb2Zmc2V0WTsKICAgICAgICAgfQpJbmRleDogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQAogICAgICAgICBmb3Ig
KGludCByID0gblJvd3M7IHIgPCBudW1Sb3dzOyByKyspIHsKICAgICAgICAgICAgIGdyaWRbcl0u
cm93ID0gbmV3IFJvdyhuQ29scyk7CiAgICAgICAgICAgICBncmlkW3JdLnJvdy0+ZmlsbChlbXB0
eUNlbGxTdHJ1Y3QpOworICAgICAgICAgICAgZ3JpZFtyXS5yb3dSZW5kZXJlciA9IDA7CiAgICAg
ICAgICAgICBncmlkW3JdLmJhc2VMaW5lID0gMDsKICAgICAgICAgICAgIGdyaWRbcl0uaGVpZ2h0
ID0gTGVuZ3RoKCk7CiAgICAgICAgIH0KQEAgLTE1Myw3ICsxNTQsNyBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJUYWJsZUNl
bGwgKmNlbGwpCit2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJUYWJsZUNl
bGwgKmNlbGwsIFJlbmRlck9iamVjdCogcm93KQogewogICAgIGludCByU3BhbiA9IGNlbGwtPnJv
d1NwYW4oKTsKICAgICBpbnQgY1NwYW4gPSBjZWxsLT5jb2xTcGFuKCk7CkBAIC0xOTcsNiArMTk4
LDggQEAKICAgICBpZiAoIWVuc3VyZVJvd3MoY1JvdyArIHJTcGFuKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgZ3JpZFtjUm93XS5yb3dSZW5kZXJlciA9IHJvdzsKKwogICAgIGludCBjb2wgPSBj
Q29sOwogICAgIC8vIHRlbGwgdGhlIGNlbGwgd2hlcmUgaXQgaXMKICAgICBDZWxsU3RydWN0IGN1
cnJlbnRDZWxsOwpAQCAtMzYyLDYgKzM2NSw5IEBACiAgICAgaW50IGhzcGFjaW5nID0gdGFibGUo
KS0+aEJvcmRlclNwYWNpbmcoKTsKICAgICBpbnQgdnNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVy
U3BhY2luZygpOwogICAgIAorICAgIC8vIFNldCB0aGUgd2lkdGggb2Ygb3VyIHNlY3Rpb24gbm93
LiAgVGhlIHJvd3Mgd2lsbCBhbHNvIGJlIHRoaXMgd2lkdGguCisgICAgbV93aWR0aCA9IHRhYmxl
KCktPmNvbnRlbnRXaWR0aCgpOworICAgIAogICAgIGlmICh0b0FkZCAmJiB0b3RhbFJvd3MgJiYg
KHJvd1Bvc1t0b3RhbFJvd3NdIHx8ICFuZXh0U2libGluZygpKSkgewogCiAgICAgICAgIGludCB0
b3RhbEhlaWdodCA9IHJvd1Bvc1t0b3RhbFJvd3NdICsgdG9BZGQ7CkBAIC00MjksNiArNDM1LDE0
IEBACiAgICAgZm9yIChpbnQgciA9IDA7IHIgPCB0b3RhbFJvd3M7IHIrKykgewogICAgICAgICBS
b3cgKnJvdyA9IGdyaWRbcl0ucm93OwogICAgICAgICBpbnQgdG90YWxDb2xzID0gcm93LT5zaXpl
KCk7CisgICAgICAgIAorICAgICAgICAvLyBTZXQgdGhlIHJvdydzIHgveSBwb3NpdGlvbiBhbmQg
d2lkdGgvaGVpZ2h0LgorICAgICAgICBpZiAoZ3JpZFtyXS5yb3dSZW5kZXJlcikgeworICAgICAg
ICAgICAgZ3JpZFtyXS5yb3dSZW5kZXJlci0+c2V0UG9zKDAsIHJvd1Bvc1tyXSk7CisgICAgICAg
ICAgICBncmlkW3JdLnJvd1JlbmRlcmVyLT5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICAgICAgICAg
IGdyaWRbcl0ucm93UmVuZGVyZXItPnNldEhlaWdodChyb3dQb3NbcisxXSAtIHJvd1Bvc1tyXSAt
IHZzcGFjaW5nKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgbkVm
ZkNvbHM7IGMrKykgewogICAgICAgICAgICAgQ2VsbFN0cnVjdCBjdXJyZW50ID0gY2VsbEF0KHIs
IGMpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3VycmVudC5jZWxsOwpA
QCAtNjU5LDEyICs2NzMsMTQgQEAKICAgICBncmlkUm93cyA9IDA7CiAKICAgICBmb3IgKFJlbmRl
ck9iamVjdCAqcm93ID0gZmlyc3RDaGlsZCgpOyByb3c7IHJvdyA9IHJvdy0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICBjUm93Kys7Ci0gICAgICAgIGNDb2wgPSAwOwotICAgICAgICBlbnN1cmVS
b3dzKGNSb3cgKyAxKTsKLSAgICAgICAgZm9yIChSZW5kZXJPYmplY3QgKmNlbGwgPSByb3ctPmZp
cnN0Q2hpbGQoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAg
ICBpZiAoY2VsbC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgICAgICBhZGRDZWxsKHN0YXRp
Y19jYXN0PFJlbmRlclRhYmxlQ2VsbCAqPihjZWxsKSk7CisgICAgICAgIGlmIChyb3ctPmlzVGFi
bGVSb3coKSkgeworICAgICAgICAgICAgY1JvdysrOworICAgICAgICAgICAgY0NvbCA9IDA7Cisg
ICAgICAgICAgICBlbnN1cmVSb3dzKGNSb3cgKyAxKTsKKyAgICAgICAgICAgIGZvciAoUmVuZGVy
T2JqZWN0ICpjZWxsID0gcm93LT5maXJzdENoaWxkKCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0
U2libGluZygpKQorICAgICAgICAgICAgICAgIGlmIChjZWxsLT5pc1RhYmxlQ2VsbCgpKQorICAg
ICAgICAgICAgICAgICAgICBhZGRDZWxsKHN0YXRpY19jYXN0PFJlbmRlclRhYmxlQ2VsbCAqPihj
ZWxsKSwgcm93KTsKKyAgICAgICAgfQogICAgIH0KICAgICBuZWVkQ2VsbFJlY2FsYyA9IGZhbHNl
OwogICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOwpAQCAtNjk4LDYgKzcxNCwyOCBAQAogICAgIHJl
dHVybiBSZW5kZXJDb250YWluZXI6OnJlbW92ZUNoaWxkTm9kZShjaGlsZCk7CiB9CiAKKy8vIEhp
dCBUZXN0aW5nCitib29sIFJlbmRlclRhYmxlU2VjdGlvbjo6bm9kZUF0UG9pbnQoTm9kZUluZm8m
IGluZm8sIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gYWN0aW9u
KQoreworICAgIC8vIFRhYmxlIHNlY3Rpb25zIGNhbm5vdCBldmVyIGJlIGhpdCB0ZXN0ZWQuICBF
ZmZlY3RpdmVseSB0aGV5IGRvIG5vdCBleGlzdC4KKyAgICAvLyBKdXN0IGZvcndhcmQgdG8gb3Vy
IGNoaWxkcmVuIGFsd2F5cy4KKyAgICB0eCArPSBtX3g7CisgICAgdHkgKz0gbV95OworCisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBz
a2lwIG92ZXIgaW5saW5lIGZsb3dzLCBzaW5jZSB0aGV5IGNhbiBzaG93IHVwIGluc2lkZSB0YWJs
ZSByb3dzCisgICAgICAgIC8vIGF0IHRoZSBtb21lbnQgKGEgZGVtb3RlZCBpbmxpbmUgPGZvcm0+
IGZvciBleGFtcGxlKS4gSWYgd2UgZXZlciBpbXBsZW1lbnQgYQorICAgICAgICAvLyB0YWJsZS1z
cGVjaWZpYyBoaXQtdGVzdCBtZXRob2QgKHdoaWNoIHdlIHNob3VsZCBkbyBmb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucyBhbnl3YXkpLAorICAgICAgICAvLyB0aGVuIHdlIGNhbiByZW1vdmUgdGhpcyBj
aGVjay4KKyAgICAgICAgaWYgKCFjaGlsZC0+bGF5ZXIoKSAmJiAhY2hpbGQtPmlzSW5saW5lRmxv
dygpICYmIGNoaWxkLT5ub2RlQXRQb2ludChpbmZvLCB4LCB5LCB0eCwgdHksIGFjdGlvbikpIHsK
KyAgICAgICAgICAgIHNldElubmVyTm9kZShpbmZvKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmbmRl
ZiBOREVCVUcKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpkdW1wKFFUZXh0U3RyZWFtICpzdHJl
YW0sIFFTdHJpbmcgaW5kKSBjb25zdAogewpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oCShyZXZpc2lvbiAxMzI4
NikKKysrIHJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1dpZHRoKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGNIZWlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY01pbk1heFdpZHRoKCk7Ci0gICAg
dmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQmeVBvcywgYm9vbCBm
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgYm9vbCBhYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywg
aW50JnlQb3MsIGJvb2wsIGJvb2wgZiA9IGZhbHNlKTsKICAgICAKICAgICBpbnQgZG9jSGVpZ2h0
KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKCkgY29uc3Q7CkluZGV4OiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDE1ICsxMjIsMTYgQEAKIHZvaWQgUmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCiB7CiAgICAg
ci5zZXRZKHIueSgpICsgX3RvcEV4dHJhKTsKKyAgICByLm1vdmUoLXBhcmVudCgpLT54UG9zKCks
IC1wYXJlbnQoKS0+eVBvcygpKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBz
cGFjZSwgc28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KICAgICBSZW5kZXJCbG9jazo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7CiB9CiAKLWJvb2wgUmVuZGVyVGFibGVDZWxs
OjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywgaW50ICZ5UG9zLCBib29sIGYpCitib29sIFJl
bmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCAmeVBvcywgYm9v
bCBpbmNsdWRlQm9yZGVyVG9wRXh0cmEsIGJvb2wgZikKIHsKLSAgICBib29sIHJldCA9IFJlbmRl
ckJsb2NrOjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGYpOwotICAgIGlmIChyZXQpCi0g
ICAgICB5UG9zICs9IF90b3BFeHRyYTsKLSAgICByZXR1cm4gcmV0OworICAgIGJvb2wgcmVzdWx0
ID0gUmVuZGVyQmxvY2s6OmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgaW5jbHVkZUJvcmRl
clRvcEV4dHJhLCBmKTsKKyAgICB4UG9zIC09IHBhcmVudCgpLT54UG9zKCk7IC8vIFJvd3MgYXJl
IGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0IGFkZCB0aGVpciBvZmZzZXQg
aW4uCisgICAgeVBvcyAtPSBwYXJlbnQoKS0+eVBvcygpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHNob3J0IFJlbmRlclRhYmxlQ2VsbDo6YmFzZWxpbmVQb3NpdGlvbihib29sKSBjb25zdApJ
bmRleDogcmVuZGVyaW5nL3JlbmRlcl9ib3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVu
ZGVyX2JveC5oCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfYm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICB2aXJ0dWFsIGludCBvdmVycmlkZUhl
aWdodCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlkZVNpemUoaW50IHMpIHsg
bV9vdmVycmlkZVNpemUgPSBzOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGFic29sdXRlUG9z
aXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQb3MsIGJvb2wgZiA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IGJvb2wgYWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCAmeVBvcywgYm9vbCBpbmNsdWRl
Qm9yZGVyRXh0cmEsIGJvb2wgZiA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Mo
IGludCB4UG9zLCBpbnQgeVBvcyApOwogCkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNwcAkocmV2aXNpb24gMTMy
ODcpCisrKyByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDcgKzE1NSw3IEBACiAgICAgLy8gRklYTUU6IENoaWxkIG9iamVjdCBjb3VsZCBvdmVycmlkZSB2
aXNpYmlsaXR5LgogICAgIGlmIChtX29iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpIHsKICAgICAgICAgbV9vYmplY3QtPmdldEFic29sdXRlUmVwYWludFJlY3RJbmNsdWRp
bmdGbG9hdHMobV9yZXBhaW50UmVjdCwgbV9mdWxsUmVwYWludFJlY3QpOwotICAgICAgICBtX29i
amVjdC0+YWJzb2x1dGVQb3NpdGlvbihtX3JlcGFpbnRYLCBtX3JlcGFpbnRZKTsKKyAgICAgICAg
bV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24obV9yZXBhaW50WCwgbV9yZXBhaW50WSwgZmFsc2Up
OwogICAgIH0KICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5jb21wdXRl
UmVwYWludFJlY3RzKCk7CkBAIC0xODQsNyArMTg0LDcgQEAKICAgICAvLyBGSVhNRTogQ2hpbGQg
b2JqZWN0IGNvdWxkIG92ZXJyaWRlIHZpc2liaWxpdHkuCiAgICAgaWYgKGNoZWNrRm9yUmVwYWlu
dCAmJiAobV9vYmplY3QtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewogICAg
ICAgICBpbnQgeCwgeTsKLSAgICAgICAgbV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24oeCwgeSk7
CisgICAgICAgIG1fb2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIGZhbHNlKTsKICAgICAg
ICAgaWYgKHggPT0gbV9yZXBhaW50WCAmJiB5ID09IG1fcmVwYWludFkpCiAgICAgICAgICAgICBt
X29iamVjdC0+cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQobV9yZXBhaW50UmVjdCwgbV9mdWxs
UmVwYWludFJlY3QpOwogICAgICAgICBlbHNlIHsKQEAgLTIyNSw4ICsyMjUsMTIgQEAKICAgICAg
ICAgLy8gbmVhcmVzdCBlbmNsb3Npbmcgb2JqZWN0IHdpdGggYSBsYXllci4KICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjdXJyID0gbV9vYmplY3QtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAoY3Vy
ciAmJiAhY3Vyci0+bGF5ZXIoKSkgewotICAgICAgICAgICAgeCArPSBjdXJyLT54UG9zKCk7Ci0g
ICAgICAgICAgICB5ICs9IGN1cnItPnlQb3MoKTsKKyAgICAgICAgICAgIGlmICghY3Vyci0+aXNU
YWJsZVJvdygpKSB7CisgICAgICAgICAgICAgICAgLy8gUm93cyBhbmQgY2VsbHMgc2hhcmUgdGhl
IHNhbWUgY29vcmRpbmF0ZSBzcGFjZSAodGhhdCBvZiB0aGUgc2VjdGlvbikuCisgICAgICAgICAg
ICAgICAgLy8gT21pdCB0aGVtIHdoZW4gY29tcHV0aW5nIG91ciB4cG9zL3lwb3MuCisgICAgICAg
ICAgICAgICAgeCArPSBjdXJyLT54UG9zKCk7CisgICAgICAgICAgICAgICAgeSArPSBjdXJyLT55
UG9zKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7
CiAgICAgICAgIH0KICAgICAgICAgeSArPSBjdXJyLT5ib3JkZXJUb3BFeHRyYSgpOwpAQCAtNTA0
LDcgKzUwOCw3IEBACiAgICAgICAgIC8vIEFkZCBpbiB0aGUgb2Zmc2V0IG9mIHRoZSB2aWV3LiAg
V2UgY2FuIG9idGFpbiB0aGlzIGJ5IGNhbGxpbmcKICAgICAgICAgLy8gYWJzb2x1dGVQb3NpdGlv
bigpIG9uIHRoZSBSZW5kZXJDYW52YXMuCiAgICAgICAgIGludCB4T2ZmLCB5T2ZmOwotICAgICAg
ICBtX29iamVjdC0+YWJzb2x1dGVQb3NpdGlvbih4T2ZmLCB5T2ZmLCB0cnVlKTsKKyAgICAgICAg
bV9vYmplY3QtPmFic29sdXRlUG9zaXRpb24oeE9mZiwgeU9mZiwgZmFsc2UsIHRydWUpOwogICAg
ICAgICB4ICs9IHhPZmY7CiAgICAgICAgIHkgKz0geU9mZjsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9y
ZW5kZXJfZnJhbWVzLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvcmVuZGVyX2Zy
YW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7Ci0gICAgYWJzb2x1dGVQb3Np
dGlvbih4LHkpOworICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgIHggKz0g
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKICAgICB5ICs9IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpOwogICAgIHdpZHRoID0gbV93aWR0aCAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJp
Z2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCk7CkluZGV4OiByZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKFFUZXh0U3RyZWFtICpzdHJlYW0sIFFTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwogI2VuZGlm
CiAKLSAgICB2b2lkIGFkZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxsKTsKKyAgICB2b2lkIGFk
ZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxsLCBSZW5kZXJPYmplY3QqIHJvdyk7CiAKICAgICB2
b2lkIHNldENlbGxXaWR0aHMoKTsKICAgICB2b2lkIGNhbGNSb3dIZWlnaHQoKTsKQEAgLTY5LDcg
KzY5LDggQEAKICAgICB9OwogICAgIHR5cGVkZWYgQXJyYXk8Q2VsbFN0cnVjdD4gUm93OwogICAg
IHN0cnVjdCBSb3dTdHJ1Y3QgewotICAgICAgICBSb3cgKnJvdzsKKyAgICAgICAgUm93KiByb3c7
CisgICAgICAgIFJlbmRlck9iamVjdCogcm93UmVuZGVyZXI7CiAgICAgICAgIGludCBiYXNlTGlu
ZTsKICAgICAgICAgTGVuZ3RoIGhlaWdodDsKICAgICB9OwpAQCAtOTcsNiArOTgsOCBAQAogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIGNo
aWxkKTsKIAorICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50
IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pOworCiAgICAg
Ly8gdGhpcyBnZXRzIGEgY2VsbCBncmlkIGRhdGEgc3RydWN0dXJlLiBjaGFuZ2luZyB0aGUgbnVt
YmVyIG9mCiAgICAgLy8gY29sdW1ucyBpcyBkb25lIGJ5IHRoZSB0YWJsZQogICAgIEFycmF5PFJv
d1N0cnVjdD4gZ3JpZDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAxMzI4NikK
KysrIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODcs
NyArNDg3LDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGludCBhYnN4LCBh
YnN5OwotICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5KTsKKyAg
ICAgICAgcmVuZGVyZXItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSk7CiAgICAg
ICAgIAogICAgICAgICBpbnQgdG9wID0gYWJzeSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
OwogICAgICAgICBpbnQgYm90dG9tID0gdG9wICsgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKTsK
QEAgLTUxMiw3ICs1MTIsNyBAQAogICAgIGlmICghZmlyc3RDaGlsZCgpICYmIChpc0lubGluZSgp
IHx8IGlzQW5vbnltb3VzQmxvY2soKSkpIHsKICAgICAgICAgUVZhbHVlTGlzdDxJbnRSZWN0PiBy
ZWN0czsKICAgICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAgYWJzb2x1dGVQb3NpdGlv
bih4LCB5KTsKKyAgICAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5LCB0cnVlKTsKICAgICAgICAg
YWJzb2x1dGVSZWN0cyhyZWN0cywgeCwgeSk7CiAgICAgICAgIHJldHVybiByZWN0czsKICAgICB9
CkBAIC01MjQsNyArNTI0LDcgQEAKICAgICBmb3IgKFJlbmRlck9iamVjdCAqY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0KCkgfHwgY2hpbGQtPmlzSW5saW5lKCkgfHwgY2hpbGQtPmlzQW5v
bnltb3VzQmxvY2soKSkgewogICAgICAgICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAg
ICAgIGNoaWxkLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgICAgICAgICAgY2hpbGQtPmFi
c29sdXRlUG9zaXRpb24oeCwgeSwgdHJ1ZSk7CiAgICAgICAgICAgICBjaGlsZC0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgeCwgeSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAko
cmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsOCBAQAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbihpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgYm9vbCwgYm9vbCwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CiAgICAgdmlydHVhbCBJbnRSZWN0IGdldEFic29sdXRlUmVwYWludFJlY3QoKTsK
LSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCB4
LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gYWN0aW9uKTsKKwogICAgIC8v
IEZJWE1FOiBXZSBjYW4ndCBzdXBwb3J0IHRoaW5ncyBsaWtlIG9wYWNpdHkgb24gdGFibGUgcm93
cyBiZWNhdXNlIHRoZXkgaGF2ZSBubyBkaW1lbnNpb25zLiAgVGhpcyBjYW4gYmUgcmVtb3ZlZCB3
aGVuCiAgICAgLy8gdGFibGUgcm93cyByZWFsbHkgd29yayByaWdodC4KICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNMYXllcigpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiByZW5kZXJpbmcvcmVu
ZGVyX2JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCShyZXZp
c2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfYm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQ2LDEyICs2NDYsMTIgQEAKICAgICAgICAgcmV0dXJuIGNiLT5jb250ZW50V2lkdGgoKTsK
IH0KIAotYm9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQ
b3MsIGJvb2wgZikKK2Jvb2wgUmVuZGVyQm94OjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywg
aW50ICZ5UG9zLCBib29sIGluY2x1ZGVCb3JkZXJUb3BFeHRyYSwgYm9vbCBmKQogewogICAgIGlm
IChzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgIGYgPSB0cnVl
OwogICAgIFJlbmRlck9iamVjdCAqbyA9IGNvbnRhaW5lcigpOwotICAgIGlmIChvICYmIG8tPmFi
c29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZikpIHsKKyAgICBpZiAobyAmJiBvLT5hYnNvbHV0
ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIHRydWUsIGYpKSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5w
b3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNSZWxQb3NpdGlvbmVkKCkgJiYg
by0+aXNJbmxpbmVGbG93KCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNs
b3NpbmcgcmVscG9zaXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQg
b2YgdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgIC8vIGJveCBmcm9tIHRoZSByZXN0IG9mIHRo
ZSBjb250ZW50LCBidXQgb25seSBpbiB0aGUgY2FzZXMgd2hlcmUgd2Uga25vdyB3ZSdyZSBwb3Np
dGlvbmVkCkBAIC02ODUsOCArNjg1LDEwIEBACiAgICAgICAgIGlmIChvLT5oYXNPdmVyZmxvd0Ns
aXAoKSkKICAgICAgICAgICAgIG8tPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KHhQb3Ms
IHlQb3MpOyAKICAgICAgICAgICAgIAotICAgICAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBs
YWNlZCgpKQotICAgICAgICAgICAgeFBvcyArPSBtX3gsIHlQb3MgKz0gbV95OworICAgICAgICBp
ZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAgICAgICAgICB4UG9zICs9IG1f
eDsKKyAgICAgICAgICAgIHlQb3MgKz0gbV95ICsgKGluY2x1ZGVCb3JkZXJUb3BFeHRyYSA/IGJv
cmRlclRvcEV4dHJhKCkgOiAwKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1JlbFBvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoeFBvcywgeVBvcyk7
CkBAIC0xNzU5LDcgKzE3NjEsNyBAQAogICAgIAogICAgIGludCBhYnN4LCBhYnN5OwogICAgIFJl
bmRlck9iamVjdCAqY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoY2IgJiYgY2IgIT0g
dGhpcyAmJiBjYi0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LGFic3kpKSB7CisgICAgaWYgKGNiICYm
IGNiICE9IHRoaXMgJiYgY2ItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSkpIHsK
ICAgICAgICAgX3ggKz0gYWJzeDsKICAgICAgICAgX3kgKz0gYWJzeTsKICAgICB9IApJbmRleDog
cmVuZGVyaW5nL3JlbmRlcl9ici5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9i
ci5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9ici5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIC8vIGFuIGFjY3VyYXRlIHBvc2l0aW9u
IGNhbiBiZSBkZXRlcm1pbmVkLgogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJzb2x1dGVQ
b3NpdGlvbihhYnN4LGFic3kpOworICAgIGFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1
ZSk7CiAKICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCiAgICAgICAgICpleHRyYVdpZHRo
VG9FbmRPZkxpbmUgPSBjb250YWluaW5nQmxvY2tXaWR0aCgpIC0geFBvcygpOwpJbmRleDogcmVu
ZGVyaW5nL3JlbmRlcl9mbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2Zs
b3cuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9yZW5kZXJfZmxvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzNiwxNyArNjM2LDE3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpbnQgbXlSaWdodCA9IF94ICsgd2lkdGg7CiAgICAgICAgICAgICBpbnQgaWdub3Jl
OwotICAgICAgICAgICAgYWJzb2x1dGVQb3NpdGlvbihteVJpZ2h0LCBpZ25vcmUpOworICAgICAg
ICAgICAgYWJzb2x1dGVQb3NpdGlvbihteVJpZ2h0LCBpZ25vcmUsIHRydWUpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpbnQgY29udGFpbmVyUmlnaHQgPSBjb250YWluaW5nQmxvY2soKS0+
eFBvcygpICsgY29udGFpbmluZ0Jsb2NrV2lkdGgoKTsKLSAgICAgICAgICAgIGFic29sdXRlUG9z
aXRpb24oY29udGFpbmVyUmlnaHQsIGlnbm9yZSk7CisgICAgICAgICAgICBhYnNvbHV0ZVBvc2l0
aW9uKGNvbnRhaW5lclJpZ2h0LCBpZ25vcmUsIHRydWUpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gY29udGFpbmVyUmlnaHQgLSBteVJpZ2h0Owog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJzb2x1dGVQb3Np
dGlvbihhYnN4LCBhYnN5LCBmYWxzZSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5
LCB0cnVlKTsKICAgICBfeCArPSBhYnN4ICsgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKTsK
ICAgICBfeSArPSBhYnN5ICsgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCk7CiAKSW5kZXg6IHJl
bmRlcmluZy9yZW5kZXJfbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9s
aXN0LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICBpZiAobV9tYXJrZXIgJiYgbV9t
YXJrZXItPnBhcmVudCgpID09IHRoaXMgJiYgIW1fbWFya2VyLT5pc0luc2lkZSgpKSB7CiAgICAg
ICAgIEludFJlY3QgbWFya2VyUmVjdCA9IG1fbWFya2VyLT5nZXRSZWxhdGl2ZU1hcmtlclJlY3Qo
KTsKICAgICAgICAgaW50IHgsIHk7Ci0gICAgICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSk7Cisg
ICAgICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgICAgICBtYXJrZXJSZWN0
Lm1vdmUoeCwgeSk7CiAgICAgICAgIHJlc3VsdC51bml0ZShtYXJrZXJSZWN0KTsKICAgICB9Cklu
ZGV4OiByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9y
ZW5kZXJfb2JqZWN0LmgJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9vYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYyLDcgKzU2Miw3IEBACiAgICAgdmlydHVhbCBpbnQg
eVBvcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIGNhbGN1bGF0ZSBjbGllbnQgcG9z
aXRpb24gb2YgYm94Ci0gICAgdmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50ICYvKnhQ
b3MqLywgaW50ICYvKnlQb3MqLywgYm9vbCBmaXhlZCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgYWJzb2x1dGVQb3NpdGlvbihpbnQgJi8qeFBvcyovLCBpbnQgJi8qeVBvcyovLCBib29sIGlu
Y2x1ZGVCb3JkZXJFeHRyYSwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKIAogICAgIC8vIHdpZHRoIGFu
ZCBoZWlnaHQgYXJlIHdpdGhvdXQgbWFyZ2lucyBidXQgaW5jbHVkZSBwYWRkaW5ncyBhbmQgYm9y
ZGVycwogICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNTg0
LDcgKzU4NCw3IEBACiAgICAgLy8gSUUgZXh0ZW5zaW9ucy4gVXNlZCB0byBjYWxjdWxhdGUgb2Zm
c2V0V2lkdGgvSGVpZ2h0LiAgT3ZlcnJpZGRlbiBieSBpbmxpbmVzIChyZW5kZXJfZmxvdykgCiAg
ICAgLy8gdG8gcmV0dXJuIHRoZSByZW1haW5pbmcgd2lkdGggb24gYSBnaXZlbiBsaW5lIChhbmQg
dGhlIGhlaWdodCBvZiBhIHNpbmdsZSBsaW5lKS4gLWR3aAogICAgIHZpcnR1YWwgaW50IG9mZnNl
dFdpZHRoKCkgY29uc3QgeyByZXR1cm4gd2lkdGgoKTsgfQotICAgIHZpcnR1YWwgaW50IG9mZnNl
dEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgb2Zm
c2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0KCkgKyBib3JkZXJUb3BFeHRyYSgpICsg
Ym9yZGVyQm90dG9tRXh0cmEoKTsgfQogICAgIAogICAgIC8vIElFIGV4eHRlbnNpb25zLiAgQWxz
byBzdXBwb3J0ZWQgYnkgR2Vja28uICBXZSBvdmVycmlkZSBpbiByZW5kZXIgZmxvdyB0byBnZXQg
dGhlCiAgICAgLy8gbGVmdCBhbmQgdG9wIGNvcnJlY3QuIC1kd2gKSW5kZXg6IHJlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAkocmV2aXNpb24gMTMyODYpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBACiAKICAgICBSZW5kZXJUYWJsZUNlbGwqIGNl
bGwgPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihjaGlsZCk7CiAKLSAgICBzZWN0aW9u
KCktPmFkZENlbGwoY2VsbCk7Ci0KKyAgICBzZWN0aW9uKCktPmFkZENlbGwoY2VsbCwgdGhpcyk7
CisgICAgCiAgICAgUmVuZGVyQ29udGFpbmVyOjphZGRDaGlsZChjZWxsLCBiZWZvcmVDaGlsZCk7
CiAKICAgICBpZiAoYmVmb3JlQ2hpbGQgfHwgbmV4dFNpYmxpbmcoKSkKQEAgLTEyMiw3ICsxMjIs
OCBAQAogSW50UmVjdCBSZW5kZXJUYWJsZVJvdzo6Z2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpCiB7
CiAgICAgLy8gRm9yIG5vdywganVzdCByZXBhaW50IHRoZSB3aG9sZSB0YWJsZS4KLSAgICAvLyBG
SVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4KKyAgICAvLyBGSVhNRTogRmluZCBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwgbmVlZCB0byByZXBhaW50IGFsbCB0aGUgY2Vs
bHMgdGhhdCB3ZQorICAgIC8vIG1pZ2h0IGhhdmUgcHJvcGFnYXRlZCBhIGJhY2tncm91bmQgY29s
b3IgaW50by4KICAgICBSZW5kZXJUYWJsZSogcGFyZW50VGFibGUgPSB0YWJsZSgpOwogICAgIGlm
IChwYXJlbnRUYWJsZSkKICAgICAgICAgcmV0dXJuIHBhcmVudFRhYmxlLT5nZXRBYnNvbHV0ZVJl
cGFpbnRSZWN0KCk7CkBAIC0xMzAsNCArMTMxLDIzIEBACiAgICAgICAgIHJldHVybiBJbnRSZWN0
KCk7CiB9CiAKKy8vIEhpdCBUZXN0aW5nCitib29sIFJlbmRlclRhYmxlUm93Ojpub2RlQXRQb2lu
dChOb2RlSW5mbyYgaW5mbywgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFj
dGlvbiBhY3Rpb24pCit7CisgICAgLy8gVGFibGUgcm93cyBjYW5ub3QgZXZlciBiZSBoaXQgdGVz
dGVkLiAgRWZmZWN0aXZlbHkgdGhleSBkbyBub3QgZXhpc3QuCisgICAgLy8gSnVzdCBmb3J3YXJk
IHRvIG91ciBjaGlsZHJlbiBhbHdheXMuCisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewor
ICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBza2lwIG92ZXIgaW5saW5lIGZsb3dzLCBzaW5j
ZSB0aGV5IGNhbiBzaG93IHVwIGluc2lkZSB0YWJsZSByb3dzCisgICAgICAgIC8vIGF0IHRoZSBt
b21lbnQgKGEgZGVtb3RlZCBpbmxpbmUgPGZvcm0+IGZvciBleGFtcGxlKS4gSWYgd2UgZXZlciBp
bXBsZW1lbnQgYQorICAgICAgICAvLyB0YWJsZS1zcGVjaWZpYyBoaXQtdGVzdCBtZXRob2QgKHdo
aWNoIHdlIHNob3VsZCBkbyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBhbnl3YXkpLAorICAgICAg
ICAvLyB0aGVuIHdlIGNhbiByZW1vdmUgdGhpcyBjaGVjay4KKyAgICAgICAgaWYgKCFjaGlsZC0+
bGF5ZXIoKSAmJiAhY2hpbGQtPmlzSW5saW5lRmxvdygpICYmIGNoaWxkLT5ub2RlQXRQb2ludChp
bmZvLCB4LCB5LCB0eCwgdHksIGFjdGlvbikpIHsKKyAgICAgICAgICAgIHNldElubmVyTm9kZShp
bmZvKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAKIHsKICAgICBRVmFsdWVMaXN0PElu
dFJlY3Q+IHJlY3RzOwogICAgIGludCB4ID0gMCwgeSA9IDA7Ci0gICAgYWJzb2x1dGVQb3NpdGlv
bih4LCB5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHksIHRydWUpOwogICAgIGFic29sdXRl
UmVjdHMocmVjdHMsIHgsIHkpOwogICAgIHJldHVybiByZWN0czsKIH0KQEAgLTI0OSw3ICsyNDks
NyBAQAogCiAgICAgaW50IGFic3gsIGFic3k7CiAgICAgUmVuZGVyQmxvY2sgKmNiID0gY29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgY2ItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSk7CisgICAg
Y2ItPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSwgdHJ1ZSk7CiAgICAgaWYgKGNiLT5oYXNP
dmVyZmxvd0NsaXAoKSkKICAgICAgICAgY2ItPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0
KGFic3gsIGFic3kpOwogCkBAIC0zOTksNyArMzk5LDcgQEAKICAgICAgICAgKmV4dHJhV2lkdGhU
b0VuZE9mTGluZSA9IChib3gtPnJvb3QoKS0+d2lkdGgoKSArIGJveC0+cm9vdCgpLT54UG9zKCkp
IC0gKGxlZnQgKyAxKTsKIAogICAgIGludCBhYnN4LCBhYnN5OwotICAgIGFic29sdXRlUG9zaXRp
b24oYWJzeCxhYnN5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3ksIHRydWUpOwog
ICAgIGxlZnQgKz0gYWJzeDsKICAgICB0b3AgKz0gYWJzeTsKIApAQCAtNDE3LDcgKzQxNyw3IEBA
CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zT2ZDaGFyKGludCBjaHIsIGludCAmeCwgaW50ICZ5KQog
ewotICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOworICAgIGFic29sdXRlUG9zaXRp
b24oeCwgeSwgdHJ1ZSk7CiAKICAgICBpbnQgcG9zOwogICAgIGlmIChJbmxpbmVUZXh0Qm94KiBz
ID0gZmluZE5leHRJbmxpbmVUZXh0Qm94KGNociwgcG9zKSkgewpAQCAtMTA1MCw3ICsxMDUwLDcg
QEAKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAKICAgICBpbnQgYWJzeCwgYWJzeTsKLSAgICBjYi0+
YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5KTsKKyAgICBjYi0+YWJzb2x1dGVQb3NpdGlvbihh
YnN4LCBhYnN5LCB0cnVlKTsKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBjYi0+bGF5ZXIoKTsK
ICAgICBpZiAobGF5ZXIpCiAgICAgICAgbGF5ZXItPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KGFic3gs
IGFic3kpOyAKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVy
aW5nL3JlbmRlcl9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc1LDEzICsxMjc1LDEz
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90eSAtIHlQb3MoKSAr
IGNvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+eVBvcygpKTsKICAgICB9CiAgICAg
ZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChfdHgsIF90eSwgd2lkdGgoKSwgaGVp
Z2h0KCkpKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QoX3R4LCBfdHksIHdpZHRoKCks
IGhlaWdodCgpICsgYm9yZGVyVG9wRXh0cmEoKSArIGJvcmRlckJvdHRvbUV4dHJhKCkpKTsKIH0K
IAogSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkKIHsKLSAg
ICBpbnQgeCwgeTsKLSAgICBhYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIGludCB4ID0gMCwg
eSA9IDA7CisgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5LCBmYWxzZSk7CiAgICAgUVZhbHVlTGlz
dDxJbnRSZWN0PiByZWN0czsKICAgICBhYnNvbHV0ZVJlY3RzKHJlY3RzLCB4LCB5KTsKIApAQCAt
MTg3MiwxMSArMTg3MiwxMSBAQAogICAgIHJldHVybiBjYW52YXMoKS0+dmlld1JlY3QoKTsKIH0K
IAotYm9vbCBSZW5kZXJPYmplY3Q6OmFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQ
b3MsIGJvb2wgZikKK2Jvb2wgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBv
cywgaW50ICZ5UG9zLCBib29sLCBib29sIGYpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcGFy
ZW50KCk7CiAgICAgaWYgKG8pIHsKLSAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5
UG9zLCBmKTsKKyAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zLCB0cnVlLCBm
KTsKICAgICAgICAgaWYgKG8tPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICAgICAgby0+bGF5
ZXIoKS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeFBvcywgeVBvcyk7IAogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI0NDgsNyArMjQ0OCw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGludCB4LCB5OwotICAgICAgICAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAgICAgICAg
ICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSwgZmFsc2UpOwogICAgICAgICAgICAgcmVnaW9uLmJv
dW5kcy5zZXRYKHggKyBzdHlsZVJlZ2lvbi5vZmZzZXQubGVmdC52YWx1ZSgpKTsKICAgICAgICAg
ICAgIHJlZ2lvbi5ib3VuZHMuc2V0WSh5ICsgc3R5bGVSZWdpb24ub2Zmc2V0LnRvcC52YWx1ZSgp
KTsKICAgICAgICAgICAgIApJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmNwcAkocmV2aXNpb24gMTMyODYpCisr
KyByZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsx
MzAsNyBAQAogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotYm9vbCBSZW5kZXJDYW52
YXM6OmFic29sdXRlUG9zaXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQb3MsIGJvb2wgZikKK2Jvb2wg
UmVuZGVyQ2FudmFzOjphYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywgaW50ICZ5UG9zLCBib29s
LCBib29sIGYpCiB7CiAgICAgaWYgKCBmICYmIG1fdmlldykgewogICAgICAgICB4UG9zID0gbV92
aWV3LT5jb250ZW50c1goKTsKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuY3BwCShyZXZpc2lvbiAxMzI4
NikKKysrIHJlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNyArMTQxLDcgQEAKICAgICBSb290SW5saW5lQm94ICpyb290ID0gYm94LT5yb290KCk7CiAK
ICAgICBpbnQgYWJzeCwgYWJzeTsKLSAgICBjb250YWluaW5nQmxvY2soKS0+YWJzb2x1dGVQb3Np
dGlvbihhYnN4LCBhYnN5KTsKKyAgICBjb250YWluaW5nQmxvY2soKS0+YWJzb2x1dGVQb3NpdGlv
bihhYnN4LCBhYnN5LCBmYWxzZSk7CiAKICAgICBpbnQgdG9wID0gYWJzeSArIHJvb3QtPnRvcE92
ZXJmbG93KCk7CiAgICAgaW50IGJvdHRvbSA9IHJvb3QtPm5leHRSb290Qm94KCkgPyBhYnN5ICsg
cm9vdC0+bmV4dFJvb3RCb3goKS0+dG9wT3ZlcmZsb3coKSA6IGFic3kgKyByb290LT5ib3R0b21P
dmVyZmxvdygpOwpAQCAtMTgxLDcgKzE4MSw3IEBACiAgICAgaW50IHNlbGVjdGlvblJpZ2h0ID0g
eFBvcygpICsgd2lkdGgoKTsKICAgICAKICAgICBpbnQgYWJzeCwgYWJzeTsKLSAgICBjYi0+YWJz
b2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5KTsKKyAgICBjYi0+YWJzb2x1dGVQb3NpdGlvbihhYnN4
LCBhYnN5LCBmYWxzZSk7CiAgICAgaWYgKGNiLT5oYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAg
Y2ItPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KGFic3gsIGFic3kpOwogCkBAIC00MzQs
NyArNDM0LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGludCB4LCB5LCB3aWR0aCwg
aGVpZ2h0OwotICAgIGFic29sdXRlUG9zaXRpb24oeCx5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9u
KHgsIHksIGZhbHNlKTsKICAgICB4ICs9IGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7CiAg
ICAgeSArPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsKICAgICB3aWR0aCA9IG1fd2lkdGgg
LSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdS
aWdodCgpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsNyArMTQ1NCw3IEBACiAgICAg
ICAgIHJldHVybiBHYXBSZWN0cygpOwogCiAgICAgaW50IHR4LCB0eTsKLSAgICBhYnNvbHV0ZVBv
c2l0aW9uKHR4LCB0eSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbih0eCwgdHksIHRydWUpOwogICAg
IAogICAgIGludCBsYXN0VG9wID0gLWJvcmRlclRvcEV4dHJhKCk7CiAgICAgaW50IGxhc3RMZWZ0
ID0gbGVmdFNlbGVjdGlvbk9mZnNldCh0aGlzLCBsYXN0VG9wKTsKQEAgLTI1ODYsNyArMjU4Niw3
IEBACiAgICAgICAgIHJldHVybiBSZW5kZXJGbG93Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzKF94
LCBfeSk7IAogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJzb2x1dGVQb3NpdGlvbihhYnN4
LCBhYnN5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3ksIHRydWUpOwogCiAgICAg
aW50IHRvcCA9IGFic3kgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsKICAgICBpbnQgYm90
dG9tID0gdG9wICsgY29udGVudEhlaWdodCgpOwpAQCAtMjYzNywxMiArMjYzNywxMiBAQAogICAg
IGZvciAoUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGZpcnN0Q2hpbGQoKTsgcmVuZGVyZXI7IHJl
bmRlcmVyID0gcmVuZGVyZXItPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVy
LT5oZWlnaHQoKSA9PSAwIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSB8fCByZW5kZXJlci0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIHRvcCk7
CisgICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIHRvcCwgdHJ1ZSk7CiAg
ICAgICAgIFJlbmRlck9iamVjdCAqbmV4dCA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpOwogICAg
ICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgaWYgKG5leHQpIAot
ICAgICAgICAgICAgbmV4dC0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBib3R0b20pOworICAgICAg
ICAgICAgbmV4dC0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBib3R0b20sIHRydWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBib3R0b20gPSB0b3AgKyBjb250ZW50SGVpZ2h0KCk7CiAgICAg
ICAgIGlmIChfeSA+PSB0b3AgJiYgX3kgPCBib3R0b20pIHsKSW5kZXg6IHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJ
KHJldmlzaW9uIDEzMjg2KQorKysgcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAgICAgdmlydHVhbCBpbnQgeVBvcygpIGNvbnN0IHsg
cmV0dXJuIG1feSArIF90b3BFeHRyYTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVBYnNv
bHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGY9ZmFsc2UpOwotICAgIHZpcnR1YWwgYm9v
bCBhYnNvbHV0ZVBvc2l0aW9uKGludCYgeFBvcywgaW50JiB5UG9zLCBib29sIGYgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBib29sIGFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3Ms
IGJvb2wgaW5jbHVkZUJvcmRlclRvcEV4dHJhLCBib29sIGYgPSBmYWxzZSk7CiAKICAgICB2aXJ0
dWFsIHNob3J0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCA9IGZhbHNlKSBjb25zdDsKIApJbmRleDog
ZG9tL2RvbTJfZXZlbnRzaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL2RvbTJfZXZlbnRzaW1w
bC5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysgZG9tL2RvbTJfZXZlbnRzaW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQAogICAgIGlmICghaXNTaW11bGF0ZWQoKSkgewog
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByID0gdGFyZy0+cmVuZGVyZXIoKSkgewogICAgICAg
ICAgICAgaW50IHJ4LCByeTsKLSAgICAgICAgICAgIGlmIChyLT5hYnNvbHV0ZVBvc2l0aW9uKHJ4
LCByeSkpIHsKKyAgICAgICAgICAgIGlmIChyLT5hYnNvbHV0ZVBvc2l0aW9uKHJ4LCByeSwgZmFs
c2UpKSB7CiAgICAgICAgICAgICAgICAgbV9vZmZzZXRYIC09IHJ4OwogICAgICAgICAgICAgICAg
IG1fb2Zmc2V0WSAtPSByeTsKICAgICAgICAgICAgIH0KSW5kZXg6IGRvbS9Ob2RlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gZG9tL05vZGVJbXBsLmNwcAkocmV2aXNpb24gMTMyODYpCisrKyBkb20v
Tm9kZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksOCArMzM5LDggQEAKIEludFJlY3Qg
Tm9kZUltcGw6OmdldFJlY3QoKSBjb25zdAogewogICAgIGludCBfeCwgX3k7Ci0gICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbihfeCwgX3kpKQotICAgICAg
ICByZXR1cm4gSW50UmVjdCggX3gsIF95LCByZW5kZXJlcigpLT53aWR0aCgpLCByZW5kZXJlcigp
LT5oZWlnaHQoKSApOworICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmFic29sdXRl
UG9zaXRpb24oX3gsIF95LCBmYWxzZSkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCBfeCwgX3ks
IHJlbmRlcmVyKCktPndpZHRoKCksIHJlbmRlcmVyKCktPmhlaWdodCgpICsgcmVuZGVyZXIoKS0+
Ym9yZGVyVG9wRXh0cmEoKSArIHJlbmRlcmVyKCktPmJvcmRlckJvdHRvbUV4dHJhKCkpOwogCiAg
ICAgcmV0dXJuIEludFJlY3QoKTsKIH0KSW5kZXg6IGRvbS9Db250YWluZXJOb2RlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gZG9tL0NvbnRhaW5lck5vZGVJbXBsLmNwcAkocmV2aXNpb24gMTMyODYp
CisrKyBkb20vQ29udGFpbmVyTm9kZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjksNyAr
NjI5LDcgQEAKIAogICAgIHhQb3MgPSB5UG9zID0gMDsKICAgICBpZiAoIW8tPmlzSW5saW5lKCkg
fHwgby0+aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIG8tPmFic29sdXRlUG9zaXRpb24oIHhQb3Ms
IHlQb3MgKTsKKyAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zLCBmYWxzZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNjUzLDE0ICs2NTMsMTQgQEAKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkp
IHsKLSAgICAgICAgICAgIG8tPmFic29sdXRlUG9zaXRpb24oIHhQb3MsIHlQb3MgKTsKKyAgICAg
ICAgICAgIG8tPmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZmFsc2UpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocC0+ZWxlbWVudCgpICYm
IHAtPmVsZW1lbnQoKSA9PSB0aGlzICYmIG8tPmlzVGV4dCgpICYmICFvLT5pc0JSKCkgJiYgIXN0
YXRpY19jYXN0PFJlbmRlclRleHQqPihvKS0+Zmlyc3RUZXh0Qm94KCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBkbyBub3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRlc3BhY2UgdGhhdCBpcyBh
IGNoaWxkIG9yIG5leHQgc2libGluZyBvZiB0aGUgYW5jaG9yCiAgICAgICAgIH0gZWxzZSBpZiAo
KG8tPmlzVGV4dCgpICYmICFvLT5pc0JSKCkpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAg
ICAgICAgby0+Y29udGFpbmVyKCktPmFic29sdXRlUG9zaXRpb24oIHhQb3MsIHlQb3MgKTsKKyAg
ICAgICAgICAgIG8tPmNvbnRhaW5lcigpLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGZh
bHNlKTsKICAgICAgICAgICAgIGlmIChvLT5pc1RleHQoKSAmJiBzdGF0aWNfY2FzdDxSZW5kZXJU
ZXh0ICo+KG8pLT5maXJzdFRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIHhQb3MgKz0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihvKS0+bWluWFBvcygpOwogICAgICAgICAgICAgICAgIHlQ
b3MgKz0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihvKS0+Zmlyc3RUZXh0Qm94KCktPnJvb3Qo
KS0+dG9wT3ZlcmZsb3coKTsKQEAgLTY5MCw5ICs2OTAsOSBAQAogICAgIHhQb3MgPSB5UG9zID0g
MDsKICAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNlZCgpKQogICAgIHsKLSAg
ICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbiggeFBvcywgeVBvcyApOworICAgICAgICBvLT5hYnNv
bHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGZhbHNlKTsKICAgICAgICAgeFBvcyArPSBvLT53aWR0
aCgpOwotICAgICAgICB5UG9zICs9IG8tPmhlaWdodCgpOworICAgICAgICB5UG9zICs9IG8tPmhl
aWdodCgpICsgby0+Ym9yZGVyVG9wRXh0cmEoKSArIG8tPmJvcmRlckJvdHRvbUV4dHJhKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAvLyBmaW5kIHRoZSBsYXN0IHRleHQvaW1h
Z2UgY2hpbGQsIHRvIGdldCBhIHBvc2l0aW9uCkBAIC03MTAsOCArNzEwLDggQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG8gPSBwcmV2OwogICAgICAgICB9Ci0gICAgICAgIGlmKG8tPmlz
VGV4dCgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgby0+Y29udGFpbmVyKCkt
PmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgIGlmIChvLT5pc1RleHQoKSB8
fCBvLT5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgICAgIG8tPmNvbnRhaW5lcigpLT5hYnNvbHV0
ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChvLT5pc1RleHQo
KSkKICAgICAgICAgICAgICAgICB4UG9zICs9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4obykt
Pm1pblhQb3MoKSArIG8tPndpZHRoKCk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBlZGl0aW5n
L3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGVkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAJKHJldmlzaW9uIDEzMjg2KQorKysgZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI0LDcgKzQyNCw3IEBACiAgICAgCiAgICAgaWYgKHJvb3QpIHsKICAgICAg
ICAgaW50IGFic3gsIGFic3k7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+YWJzb2x1dGVQb3Np
dGlvbihhYnN4LCBhYnN5KTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hYnNvbHV0ZVBvc2l0
aW9uKGFic3gsIGFic3ksIHRydWUpOwogICAgICAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0g
cm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZvclhQb3MoeCwgYWJzeCktPm9iamVjdCgpOwogICAgICAg
ICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoeCwgYWJzeSArIHJvb3Qt
PnRvcE92ZXJmbG93KCkpOwogICAgIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQAogICAgIAogICAgIGlm
IChyb290KSB7CiAgICAgICAgIGludCBhYnN4LCBhYnN5OwotICAgICAgICBjb250YWluaW5nQmxv
Y2stPmFic29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9j
ay0+YWJzb2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5LCB0cnVlKTsKICAgICAgICAgUmVuZGVyT2Jq
ZWN0ICpyZW5kZXJlciA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9zKHgsIGFic3gpLT5v
YmplY3QoKTsKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wb3NpdGlvbkZvckNvb3JkaW5hdGVz
KHgsIGFic3kgKyByb290LT50b3BPdmVyZmxvdygpKTsKICAgICB9ICAgIApJbmRleDogZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBlZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMzI4NikKKysrIGVkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1NSw3ICs3NTUsNyBAQAogICAgICAgICAg
ICAgbV9jYXJldFJlY3QgPSBwb3Mubm9kZSgpLT5yZW5kZXJlcigpLT5jYXJldFJlY3QocG9zLm9m
ZnNldCgpLCBtX3NlbC5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaW50
IHgsIHk7Ci0gICAgICAgICAgICBwb3Mubm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0
aW9uKHgsIHkpOworICAgICAgICAgICAgcG9zLm5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQ
b3NpdGlvbih4LCB5LCB0cnVlKTsKICAgICAgICAgICAgIG1fY2FyZXRQb3NpdGlvbk9uTGF5b3V0
ID0gSW50UG9pbnQoeCwgeSk7CiAgICAgICAgIH0KICAgICB9CkBAIC03NzIsNyArNzcyLDcgQEAK
IAogICAgIGlmIChtX3NlbC5zdGFydCgpLm5vZGUoKSAmJiBtX3NlbC5zdGFydCgpLm5vZGUoKS0+
cmVuZGVyZXIoKSkgewogICAgICAgICBpbnQgeCwgeTsKLSAgICAgICAgbV9zZWwuc3RhcnQoKS5u
b2RlKCktPnJlbmRlcmVyKCktPmFic29sdXRlUG9zaXRpb24oeCwgeSk7CisgICAgICAgIG1fc2Vs
LnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHksIHRydWUp
OwogICAgICAgICBjYXJldC5tb3ZlKEludFBvaW50KHgsIHkpIC0gbV9jYXJldFBvc2l0aW9uT25M
YXlvdXQpOwogICAgIH0KIApJbmRleDogYnJpZGdlL21hYy9NYWNGcmFtZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCShyZXZpc2lvbiAxMzI4NikKKysrIGJyaWRnZS9t
YWMvTWFjRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MDgsNyArMTcwOCw3IEBACiAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlYktpdCB3aWxsIGdlbmVyYXRlIHRoZSBkZWZhdWx0LCB0aGUg
ZWxlbWVudCBkb2Vzbid0IG92ZXJyaWRlLgogICAgICAgICAgICAgICAgICAgICBpZiAoX2RyYWdT
cmNJc0RIVE1MKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjWCwgc3JjWTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIF9kcmFnU3JjLT5yZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0
aW9uKHNyY1gsIHNyY1kpOworICAgICAgICAgICAgICAgICAgICAgICAgX2RyYWdTcmMtPnJlbmRl
cmVyKCktPmFic29sdXRlUG9zaXRpb24oc3JjWCwgc3JjWSwgZmFsc2UpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgX2RyYWdDbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1lbnQoX2RyYWdTcmMu
Z2V0KCksIEludFBvaW50KF9tb3VzZURvd25YIC0gc3JjWCwgX21vdXNlRG93blkgLSBzcmNZKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0gCiAKQEAgLTI2MzQsNyArMjYzNCw3IEBACiAgICAgICAg
ICAgICB3aGlsZSAoY29udGFpbmluZ0Jsb2NrLT5yZW5kZXJlcigpLT5pc0lubGluZSgpKXsKICAg
ICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPnBhcmVudE5v
ZGUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+cmVuZGVy
ZXIoKS0+YWJzb2x1dGVQb3NpdGlvbihjb250YWluaW5nQmxvY2tYLCBjb250YWluaW5nQmxvY2tZ
KTsKKyAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3Np
dGlvbihjb250YWluaW5nQmxvY2tYLCBjb250YWluaW5nQmxvY2tZLCBmYWxzZSk7CiAgICAgICAg
IH0KICNlbmRpZgogICAgICAgICAKQEAgLTI2NTQsNyArMjY1NCw3IEBACiAKICNpZmRlZiBQT1NJ
VElPTl9MSVNUCiAgICAgICAgICAgICBpbnQgcnk7Ci0gICAgICAgICAgICByLT5hYnNvbHV0ZVBv
c2l0aW9uKHJ4LCByeSk7CisgICAgICAgICAgICByLT5hYnNvbHV0ZVBvc2l0aW9uKHJ4LCByeSwg
ZmFsc2UpOwogICAgICAgICAgICAgcnggLT0gY29udGFpbmluZ0Jsb2NrWDsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHRleHQgaXMgaW5kZW50ZWQgYXQgbGVh
c3QgZW5vdWdoIHRvIGFsbG93IGZvciB0aGUgbWFya2Vycy4KSW5kZXg6IGJyaWRnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLm1tCShyZXZpc2lvbiAxMzI4NikKKysrIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OTIsNyArOTkyLDcgQEAKICAgICBOU1ZpZXcgKnZp
ZXcgPSB3aWRnZXQgPyB3aWRnZXQtPmdldFZpZXcoKSA6IG5pbDsKICAgICAKICAgICBpbnQgbngs
IG55OwotICAgIG5vZGUtPmFic29sdXRlUG9zaXRpb24obngsbnkpOworICAgIG5vZGUtPmFic29s
dXRlUG9zaXRpb24obngsIG55LCBmYWxzZSk7CiAgICAgTlNPYmplY3QgKmNvcGllZE5vZGUgPSBb
Y29waWVyIG5vZGVXaXRoTmFtZTpuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwb3NpdGlvbjpOU01ha2VQb2ludChueCxueSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWN0Ok5TTWFrZVJlY3Qobm9kZS0+eFBvcygpLCBub2Rl
LT55UG9zKCksIG5vZGUtPndpZHRoKCksIG5vZGUtPmhlaWdodCgpKQpAQCAtMjQ2Niw3ICsyNDY2
LDcgQEAKICAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaW50IGFic1gsIGFic1k7Ci0gICAgICAgIG4tPnJlbmRlcmVy
KCktPmFic29sdXRlUG9zaXRpb24oYWJzWCwgYWJzWSwgdHJ1ZSk7CisgICAgICAgIG4tPnJlbmRl
cmVyKCktPmFic29sdXRlUG9zaXRpb24oYWJzWCwgYWJzWSwgZmFsc2UsIHRydWUpOwogICAgICAg
ICBGcmFtZVZpZXcgKnZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcgKj4od2lkZ2V0KTsKICAg
ICAgICAgd2lkZ2V0UG9pbnQuc2V0WCh3aWRnZXRQb2ludC54KCkgLSBhYnNYICsgdmlldy0+Y29u
dGVudHNYKCkpOwogICAgICAgICB3aWRnZXRQb2ludC5zZXRZKHdpZGdldFBvaW50LnkoKSAtIGFi
c1kgKyB2aWV3LT5jb250ZW50c1koKSk7CkluZGV4OiBrd3EvS1dRQWNjT2JqZWN0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGt3cS9LV1FBY2NPYmplY3QubW0JKHJldmlzaW9uIDEzMjg2KQorKysga3dxL0tX
UUFjY09iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBACiAgICAgICAg
ICAgICBvYmogPSBvYmotPmVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgUVZhbHVlTGlz
dDxJbnRSZWN0PiByZWN0czsKICAgICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAgb2Jq
LT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgICAgICBvYmotPmFic29sdXRlUG9zaXRpb24o
eCwgeSwgZmFsc2UpOwogICAgICAgICBvYmotPmFic29sdXRlUmVjdHMocmVjdHMsIHgsIHkpOwog
ICAgICAgICBmb3IgKFFWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0
cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgSW50UmVj
dCByID0gKml0OwpJbmRleDoga3dxL0tXUVJlbmRlclRyZWVEZWJ1Zy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3dxL0tXUVJlbmRlclRyZWVEZWJ1Zy5jcHAJKHJldmlzaW9uIDEzMjg2KQorKysga3dxL0tX
UVJlbmRlclRyZWVEZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMiArMTM0LDE5IEBA
CiAgICAgCiAgICAgLy8gRklYTUU6IFdpbGwgcmVtb3ZlIHRoaXMgPGJyPiBjb2RlIG9uY2UgYWxs
IGxheW91dCB0ZXN0cyBwYXNzLiAgVW50aWwgdGhlbiwgd2UgY2FuJ3QgcmVhbGx5IGNoYW5nZQog
ICAgIC8vIGFsbCB0aGUgcmVzdWx0cyBlYXNpbHkuCisgICAgLy8gRklYTUU6IFdpbGwgYWxzbyBy
ZW1vdmUgdGhlIHRhYmxlIHJvdyBhbmQgc2VjdGlvbiBoYWNrcyBvbmNlIGFsbCBsYXlvdXQgdGVz
dHMgcGFzcy4KICAgICBib29sIHVzZVBvc2l0aW9ucyA9IHRydWU7CisgICAgYm9vbCB1c2VXaWR0
aCA9IHRydWU7CisgICAgYm9vbCB1c2VIZWlnaHQgPSB0cnVlOwogICAgIGlmIChvLmlzQlIoKSkg
ewogICAgICAgICBjb25zdCBSZW5kZXJCUiogYnIgPSBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJC
Uio+KCZvKTsKICAgICAgICAgdXNlUG9zaXRpb25zID0gKGJyLT5maXJzdFRleHRCb3goKSAmJiBi
ci0+Zmlyc3RUZXh0Qm94KCktPmlzVGV4dCgpKTsKLSAgICB9Ci0gICAgSW50UmVjdCByKHVzZVBv
c2l0aW9ucyA/IG8ueFBvcygpIDogMCwgdXNlUG9zaXRpb25zID8gby55UG9zKCkgOiAwLCBvLndp
ZHRoKCksIG8uaGVpZ2h0KCkpOworICAgIH0gZWxzZSBpZiAoby5pc1RhYmxlUm93KCkpCisgICAg
ICAgIHVzZVBvc2l0aW9ucyA9IHVzZVdpZHRoID0gdXNlSGVpZ2h0ID0gZmFsc2U7CisgICAgZWxz
ZSBpZiAoby5pc1RhYmxlU2VjdGlvbigpKQorICAgICAgICB1c2VXaWR0aCA9IGZhbHNlOworCisg
ICAgSW50UmVjdCByKHVzZVBvc2l0aW9ucyA/IG8ueFBvcygpIDogMCwgdXNlUG9zaXRpb25zID8g
by55UG9zKCkgOiAwLCB1c2VXaWR0aCA/IG8ud2lkdGgoKSA6IDAsIHVzZUhlaWdodCA/IG8uaGVp
Z2h0KCkgOiAwKTsKICAgICB0cyA8PCAiICIgPDwgcjsKICAgICAKICAgICBpZiAoIW8uaXNUZXh0
KCkpIHsK
</data>
<flag name="review"
          id="1858"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7110</attachid>
            <date>2006-03-16 02:02:52 -0800</date>
            <delta_ts>2006-03-16 08:49:10 -0800</delta_ts>
            <desc>Rework things to make the internal absolutePosition recursion just always correct.   Add a new absolutePositionForContent method for the case where you want the inner box instead.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27034</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvSFRNTElucHV0RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtodG1sL2h0bWwvSFRNTElucHV0RWxlbWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzMyNykKKysr
IGtodG1sL2h0bWwvSFRNTElucHV0RWxlbWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQ2LDcgKzEwNDYsNyBAQAogICAgICAgICAgICAgeVBvcyA9IDA7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0WCwgb2Zmc2V0WTsKLSAgICAgICAgICAgIHJlbmRlcmVy
KCktPmFic29sdXRlUG9zaXRpb24ob2Zmc2V0WCxvZmZzZXRZKTsKKyAgICAgICAgICAgIHJlbmRl
cmVyKCktPmFic29sdXRlUG9zaXRpb24ob2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgICAgICAgICB4
UG9zID0gbWUtPmNsaWVudFgoKSAtIG9mZnNldFg7CiAgICAgICAgICAgICB5UG9zID0gbWUtPmNs
aWVudFkoKSAtIG9mZnNldFk7CiAgICAgICAgIH0KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCShyZXZpc2lvbiAxMzMyNykKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDcgQEAKICAgICAgICAgZm9yIChpbnQgciA9
IG5Sb3dzOyByIDwgbnVtUm93czsgcisrKSB7CiAgICAgICAgICAgICBncmlkW3JdLnJvdyA9IG5l
dyBSb3cobkNvbHMpOwogICAgICAgICAgICAgZ3JpZFtyXS5yb3ctPmZpbGwoZW1wdHlDZWxsU3Ry
dWN0KTsKKyAgICAgICAgICAgIGdyaWRbcl0ucm93UmVuZGVyZXIgPSAwOwogICAgICAgICAgICAg
Z3JpZFtyXS5iYXNlTGluZSA9IDA7CiAgICAgICAgICAgICBncmlkW3JdLmhlaWdodCA9IExlbmd0
aCgpOwogICAgICAgICB9CkBAIC0xNTMsNyArMTU0LDcgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxs
KQordm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENlbGwoUmVuZGVyVGFibGVDZWxsICpjZWxs
LCBSZW5kZXJPYmplY3QqIHJvdykKIHsKICAgICBpbnQgclNwYW4gPSBjZWxsLT5yb3dTcGFuKCk7
CiAgICAgaW50IGNTcGFuID0gY2VsbC0+Y29sU3BhbigpOwpAQCAtMTk3LDYgKzE5OCw4IEBACiAg
ICAgaWYgKCFlbnN1cmVSb3dzKGNSb3cgKyByU3BhbikpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGdyaWRbY1Jvd10ucm93UmVuZGVyZXIgPSByb3c7CisKICAgICBpbnQgY29sID0gY0NvbDsKICAg
ICAvLyB0ZWxsIHRoZSBjZWxsIHdoZXJlIGl0IGlzCiAgICAgQ2VsbFN0cnVjdCBjdXJyZW50Q2Vs
bDsKQEAgLTM2Miw2ICszNjUsOSBAQAogICAgIGludCBoc3BhY2luZyA9IHRhYmxlKCktPmhCb3Jk
ZXJTcGFjaW5nKCk7CiAgICAgaW50IHZzcGFjaW5nID0gdGFibGUoKS0+dkJvcmRlclNwYWNpbmco
KTsKICAgICAKKyAgICAvLyBTZXQgdGhlIHdpZHRoIG9mIG91ciBzZWN0aW9uIG5vdy4gIFRoZSBy
b3dzIHdpbGwgYWxzbyBiZSB0aGlzIHdpZHRoLgorICAgIG1fd2lkdGggPSB0YWJsZSgpLT5jb250
ZW50V2lkdGgoKTsKKyAgICAKICAgICBpZiAodG9BZGQgJiYgdG90YWxSb3dzICYmIChyb3dQb3Nb
dG90YWxSb3dzXSB8fCAhbmV4dFNpYmxpbmcoKSkpIHsKIAogICAgICAgICBpbnQgdG90YWxIZWln
aHQgPSByb3dQb3NbdG90YWxSb3dzXSArIHRvQWRkOwpAQCAtNDI5LDYgKzQzNSwxNCBAQAogICAg
IGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgUm93ICpyb3cg
PSBncmlkW3JdLnJvdzsKICAgICAgICAgaW50IHRvdGFsQ29scyA9IHJvdy0+c2l6ZSgpOworICAg
ICAgICAKKyAgICAgICAgLy8gU2V0IHRoZSByb3cncyB4L3kgcG9zaXRpb24gYW5kIHdpZHRoL2hl
aWdodC4KKyAgICAgICAgaWYgKGdyaWRbcl0ucm93UmVuZGVyZXIpIHsKKyAgICAgICAgICAgIGdy
aWRbcl0ucm93UmVuZGVyZXItPnNldFBvcygwLCByb3dQb3Nbcl0pOworICAgICAgICAgICAgZ3Jp
ZFtyXS5yb3dSZW5kZXJlci0+c2V0V2lkdGgobV93aWR0aCk7CisgICAgICAgICAgICBncmlkW3Jd
LnJvd1JlbmRlcmVyLT5zZXRIZWlnaHQocm93UG9zW3IrMV0gLSByb3dQb3Nbcl0gLSB2c3BhY2lu
Zyk7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IG5FZmZDb2xzOyBj
KyspIHsKICAgICAgICAgICAgIENlbGxTdHJ1Y3QgY3VycmVudCA9IGNlbGxBdChyLCBjKTsKICAg
ICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IGN1cnJlbnQuY2VsbDsKQEAgLTY1OSwx
MiArNjczLDE0IEBACiAgICAgZ3JpZFJvd3MgPSAwOwogCiAgICAgZm9yIChSZW5kZXJPYmplY3Qg
KnJvdyA9IGZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgY1JvdysrOwotICAgICAgICBjQ29sID0gMDsKLSAgICAgICAgZW5zdXJlUm93cyhjUm93
ICsgMSk7Ci0gICAgICAgIGZvciAoUmVuZGVyT2JqZWN0ICpjZWxsID0gcm93LT5maXJzdENoaWxk
KCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgaWYgKGNl
bGwtPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAgICAgICAgYWRkQ2VsbChzdGF0aWNfY2FzdDxS
ZW5kZXJUYWJsZUNlbGwgKj4oY2VsbCkpOworICAgICAgICBpZiAocm93LT5pc1RhYmxlUm93KCkp
IHsKKyAgICAgICAgICAgIGNSb3crKzsKKyAgICAgICAgICAgIGNDb2wgPSAwOworICAgICAgICAg
ICAgZW5zdXJlUm93cyhjUm93ICsgMSk7CisgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCAq
Y2VsbCA9IHJvdy0+Zmlyc3RDaGlsZCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgICAgICAgICBpZiAoY2VsbC0+aXNUYWJsZUNlbGwoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYWRkQ2VsbChzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwgKj4oY2VsbCksIHJv
dyk7CisgICAgICAgIH0KICAgICB9CiAgICAgbmVlZENlbGxSZWNhbGMgPSBmYWxzZTsKICAgICBz
ZXROZWVkc0xheW91dCh0cnVlKTsKQEAgLTY5OCw2ICs3MTQsMjggQEAKICAgICByZXR1cm4gUmVu
ZGVyQ29udGFpbmVyOjpyZW1vdmVDaGlsZE5vZGUoY2hpbGQpOwogfQogCisvLyBIaXQgVGVzdGlu
ZworYm9vbCBSZW5kZXJUYWJsZVNlY3Rpb246Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBp
bnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKK3sKKyAg
ICAvLyBUYWJsZSBzZWN0aW9ucyBjYW5ub3QgZXZlciBiZSBoaXQgdGVzdGVkLiAgRWZmZWN0aXZl
bHkgdGhleSBkbyBub3QgZXhpc3QuCisgICAgLy8gSnVzdCBmb3J3YXJkIHRvIG91ciBjaGlsZHJl
biBhbHdheXMuCisgICAgdHggKz0gbV94OworICAgIHR5ICs9IG1feTsKKworICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIGhhdmUgdG8gc2tpcCBvdmVy
IGlubGluZSBmbG93cywgc2luY2UgdGhleSBjYW4gc2hvdyB1cCBpbnNpZGUgdGFibGUgcm93cwor
ICAgICAgICAvLyBhdCB0aGUgbW9tZW50IChhIGRlbW90ZWQgaW5saW5lIDxmb3JtPiBmb3IgZXhh
bXBsZSkuIElmIHdlIGV2ZXIgaW1wbGVtZW50IGEKKyAgICAgICAgLy8gdGFibGUtc3BlY2lmaWMg
aGl0LXRlc3QgbWV0aG9kICh3aGljaCB3ZSBzaG91bGQgZG8gZm9yIHBlcmZvcm1hbmNlIHJlYXNv
bnMgYW55d2F5KSwKKyAgICAgICAgLy8gdGhlbiB3ZSBjYW4gcmVtb3ZlIHRoaXMgY2hlY2suCisg
ICAgICAgIGlmICghY2hpbGQtPmxheWVyKCkgJiYgIWNoaWxkLT5pc0lubGluZUZsb3coKSAmJiBj
aGlsZC0+bm9kZUF0UG9pbnQoaW5mbywgeCwgeSwgdHgsIHR5LCBhY3Rpb24pKSB7CisgICAgICAg
ICAgICBzZXRJbm5lck5vZGUoaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZm5kZWYgTkRFQlVH
CiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6ZHVtcChRVGV4dFN0cmVhbSAqc3RyZWFtLCBRU3Ry
aW5nIGluZCkgY29uc3QKIHsKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuaAkocmV2aXNpb24gMTMzMjcpCisrKyBy
ZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
CiAgICAgdmlydHVhbCB2b2lkIGNhbGNXaWR0aCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjSGVp
Z2h0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGNNaW5NYXhXaWR0aCgpOwotICAgIHZpcnR1YWwg
Ym9vbCBhYnNvbHV0ZVBvc2l0aW9uKGludCAmeFBvcywgaW50JnlQb3MsIGJvb2wgZiA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJzb2x1dGVQb3NpdGlvbihpbnQgJnhQb3MsIGludCYgeVBv
cywgYm9vbCBmID0gZmFsc2UpOwogICAgIAogICAgIGludCBkb2NIZWlnaHQoKSBjb25zdDsKICAg
ICBpbnQgZG9jV2lkdGgoKSBjb25zdDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lv
biAxMzMyNykKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjIsMTUgKzEyMiwxNiBAQAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVBYnNv
bHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZikKIHsKICAgICByLnNldFkoci55KCkg
KyBfdG9wRXh0cmEpOworICAgIHIubW92ZSgtcGFyZW50KCktPnhQb3MoKSwgLXBhcmVudCgpLT55
UG9zKCkpOyAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlLCBzbyBkb24n
dCBhZGQgdGhlaXIgb2Zmc2V0IGluLgogICAgIFJlbmRlckJsb2NrOjpjb21wdXRlQWJzb2x1dGVS
ZXBhaW50UmVjdChyLCBmKTsKIH0KIAogYm9vbCBSZW5kZXJUYWJsZUNlbGw6OmFic29sdXRlUG9z
aXRpb24oaW50ICZ4UG9zLCBpbnQgJnlQb3MsIGJvb2wgZikKIHsKLSAgICBib29sIHJldCA9IFJl
bmRlckJsb2NrOjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGYpOwotICAgIGlmIChyZXQp
Ci0gICAgICB5UG9zICs9IF90b3BFeHRyYTsKLSAgICByZXR1cm4gcmV0OworICAgIGJvb2wgcmVz
dWx0ID0gUmVuZGVyQmxvY2s6OmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywgZik7CisgICAg
eFBvcyAtPSBwYXJlbnQoKS0+eFBvcygpOyAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBjb29yZGlu
YXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zmc2V0IGluLgorICAgIHlQb3MgLT0gcGFy
ZW50KCktPnlQb3MoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzaG9ydCBSZW5kZXJUYWJs
ZUNlbGw6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCkgY29uc3QKSW5kZXg6IHJlbmRlcmluZy9yZW5k
ZXJfbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCShy
ZXZpc2lvbiAxMzMyNykKKysrIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAvLyBGSVhNRTogQ2hpbGQgb2JqZWN0IGNvdWxk
IG92ZXJyaWRlIHZpc2liaWxpdHkuCiAgICAgaWYgKG1fb2JqZWN0LT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgPT0gVklTSUJMRSkgewogICAgICAgICBtX29iamVjdC0+Z2V0QWJzb2x1dGVSZXBhaW50
UmVjdEluY2x1ZGluZ0Zsb2F0cyhtX3JlcGFpbnRSZWN0LCBtX2Z1bGxSZXBhaW50UmVjdCk7Ci0g
ICAgICAgIG1fb2JqZWN0LT5hYnNvbHV0ZVBvc2l0aW9uKG1fcmVwYWludFgsIG1fcmVwYWludFkp
OworICAgICAgICBtX29iamVjdC0+YWJzb2x1dGVQb3NpdGlvbihtX3JlcGFpbnRYLCBtX3JlcGFp
bnRZLCBmYWxzZSk7CiAgICAgfQogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hp
bGQtPmNvbXB1dGVSZXBhaW50UmVjdHMoKTsKQEAgLTIyOCw4ICsyMjgsMTIgQEAKICAgICAgICAg
Ly8gbmVhcmVzdCBlbmNsb3Npbmcgb2JqZWN0IHdpdGggYSBsYXllci4KICAgICAgICAgUmVuZGVy
T2JqZWN0KiBjdXJyID0gbV9vYmplY3QtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAoY3VyciAm
JiAhY3Vyci0+bGF5ZXIoKSkgewotICAgICAgICAgICAgeCArPSBjdXJyLT54UG9zKCk7Ci0gICAg
ICAgICAgICB5ICs9IGN1cnItPnlQb3MoKTsKKyAgICAgICAgICAgIGlmICghY3Vyci0+aXNUYWJs
ZVJvdygpKSB7CisgICAgICAgICAgICAgICAgLy8gUm93cyBhbmQgY2VsbHMgc2hhcmUgdGhlIHNh
bWUgY29vcmRpbmF0ZSBzcGFjZSAodGhhdCBvZiB0aGUgc2VjdGlvbikuCisgICAgICAgICAgICAg
ICAgLy8gT21pdCB0aGVtIHdoZW4gY29tcHV0aW5nIG91ciB4cG9zL3lwb3MuCisgICAgICAgICAg
ICAgICAgeCArPSBjdXJyLT54UG9zKCk7CisgICAgICAgICAgICAgICAgeSArPSBjdXJyLT55UG9z
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CiAg
ICAgICAgIH0KICAgICAgICAgeSArPSBjdXJyLT5ib3JkZXJUb3BFeHRyYSgpOwpJbmRleDogcmVu
ZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJf
ZnJhbWVzLmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7Ci0gICAgYWJzb2x1dGVQb3NpdGlvbih4
LHkpOworICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSk7CiAgICAgeCArPSBib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpOwogICAgIHkgKz0gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCk7CiAg
ICAgd2lkdGggPSBtX3dpZHRoIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSAtIHBhZGRp
bmdMZWZ0KCkgLSBwYWRkaW5nUmlnaHQoKTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJl
dmlzaW9uIDEzMzI3KQorKysgcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUVRleHRTdHJl
YW0gKnN0cmVhbSwgUVN0cmluZyBpbmQgPSAiIikgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQg
YWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwgKmNlbGwpOworICAgIHZvaWQgYWRkQ2VsbChSZW5kZXJU
YWJsZUNlbGwgKmNlbGwsIFJlbmRlck9iamVjdCogcm93KTsKIAogICAgIHZvaWQgc2V0Q2VsbFdp
ZHRocygpOwogICAgIHZvaWQgY2FsY1Jvd0hlaWdodCgpOwpAQCAtNjksNyArNjksOCBAQAogICAg
IH07CiAgICAgdHlwZWRlZiBBcnJheTxDZWxsU3RydWN0PiBSb3c7CiAgICAgc3RydWN0IFJvd1N0
cnVjdCB7Ci0gICAgICAgIFJvdyAqcm93OworICAgICAgICBSb3cqIHJvdzsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiByb3dSZW5kZXJlcjsKICAgICAgICAgaW50IGJhc2VMaW5lOwogICAgICAgICBM
ZW5ndGggaGVpZ2h0OwogICAgIH07CkBAIC05Nyw2ICs5OCw4IEBACiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogcmVtb3ZlQ2hpbGROb2RlKFJlbmRlck9iamVjdCogY2hpbGQpOwogCisgICAg
dmlydHVhbCBib29sIG5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBpbnQgeCwgaW50IHksIGlu
dCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGFjdGlvbik7CisKICAgICAvLyB0aGlzIGdldHMg
YSBjZWxsIGdyaWQgZGF0YSBzdHJ1Y3R1cmUuIGNoYW5naW5nIHRoZSBudW1iZXIgb2YKICAgICAv
LyBjb2x1bW5zIGlzIGRvbmUgYnkgdGhlIHRhYmxlCiAgICAgQXJyYXk8Um93U3RydWN0PiBncmlk
OwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVu
ZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDEzMzI3KQorKysgcmVuZGVyaW5n
L1JlbmRlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3ICs0ODcsNyBAQAog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgICAg
IHJlbmRlcmVyLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOworICAgICAgICByZW5kZXJl
ci0+YWJzb2x1dGVQb3NpdGlvbkZvckNvbnRlbnQoYWJzeCwgYWJzeSk7CiAgICAgICAgIAogICAg
ICAgICBpbnQgdG9wID0gYWJzeSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpOwogICAgICAg
ICBpbnQgYm90dG9tID0gdG9wICsgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKTsKQEAgLTUxMiw3
ICs1MTIsNyBAQAogICAgIGlmICghZmlyc3RDaGlsZCgpICYmIChpc0lubGluZSgpIHx8IGlzQW5v
bnltb3VzQmxvY2soKSkpIHsKICAgICAgICAgUVZhbHVlTGlzdDxJbnRSZWN0PiByZWN0czsKICAg
ICAgICAgaW50IHggPSAwLCB5ID0gMDsKLSAgICAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5KTsK
KyAgICAgICAgYWJzb2x1dGVQb3NpdGlvbkZvckNvbnRlbnQoeCwgeSk7CiAgICAgICAgIGFic29s
dXRlUmVjdHMocmVjdHMsIHgsIHkpOwogICAgICAgICByZXR1cm4gcmVjdHM7CiAgICAgfQpAQCAt
NTI0LDcgKzUyNCw3IEBACiAgICAgZm9yIChSZW5kZXJPYmplY3QgKmNoaWxkID0gZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPmlzVGV4dCgpIHx8IGNoaWxkLT5pc0lubGluZSgpIHx8IGNoaWxkLT5pc0Fub255bW91
c0Jsb2NrKCkpIHsKICAgICAgICAgICAgIGludCB4ID0gMCwgeSA9IDA7Ci0gICAgICAgICAgICBj
aGlsZC0+YWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAgICAgICAgICAgIGNoaWxkLT5hYnNvbHV0
ZVBvc2l0aW9uRm9yQ29udGVudCh4LCB5KTsKICAgICAgICAgICAgIGNoaWxkLT5hYnNvbHV0ZVJl
Y3RzKHJlY3RzLCB4LCB5KTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IHJlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCShy
ZXZpc2lvbiAxMzMyNykKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw3ICs0NSw4IEBACiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uKGludCwgaW50
LCBpbnQsIGludCwgaW50LCBib29sLCBib29sLCBpbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKICAgICB2aXJ0dWFsIEludFJlY3QgZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOwot
ICAgIAorICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IHgs
IGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pOworCiAgICAgLy8g
RklYTUU6IFdlIGNhbid0IHN1cHBvcnQgdGhpbmdzIGxpa2Ugb3BhY2l0eSBvbiB0YWJsZSByb3dz
IGJlY2F1c2UgdGhleSBoYXZlIG5vIGRpbWVuc2lvbnMuICBUaGlzIGNhbiBiZSByZW1vdmVkIHdo
ZW4KICAgICAvLyB0YWJsZSByb3dzIHJlYWxseSB3b3JrIHJpZ2h0LgogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0xheWVyKCkgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IHJlbmRlcmluZy9yZW5k
ZXJfYm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX2JveC5jcHAJKHJldmlz
aW9uIDEzMzI3KQorKysgcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NTIsNiArNjUyLDcgQEAKICAgICAgICAgZiA9IHRydWU7CiAgICAgUmVuZGVyT2JqZWN0ICpv
ID0gY29udGFpbmVyKCk7CiAgICAgaWYgKG8gJiYgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5
UG9zLCBmKSkgeworICAgICAgICB5UG9zICs9IG8tPmJvcmRlclRvcEV4dHJhKCk7CiAgICAgICAg
IGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNSZWxQ
b3NpdGlvbmVkKCkgJiYgby0+aXNJbmxpbmVGbG93KCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4g
d2UgaGF2ZSBhbiBlbmNsb3NpbmcgcmVscG9zaXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRk
IGluIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgIC8vIGJveCBmcm9t
IHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBidXQgb25seSBpbiB0aGUgY2FzZXMgd2hlcmUgd2Ug
a25vdyB3ZSdyZSBwb3NpdGlvbmVkCkBAIC02ODUsOCArNjg2LDEwIEBACiAgICAgICAgIGlmIChv
LT5oYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgICAgIG8tPmxheWVyKCktPnN1YnRyYWN0U2Ny
b2xsT2Zmc2V0KHhQb3MsIHlQb3MpOyAKICAgICAgICAgICAgIAotICAgICAgICBpZiAoIWlzSW5s
aW5lKCkgfHwgaXNSZXBsYWNlZCgpKQotICAgICAgICAgICAgeFBvcyArPSBtX3gsIHlQb3MgKz0g
bV95OworICAgICAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAgICAg
ICAgICB4UG9zICs9IG1feDsKKyAgICAgICAgICAgIHlQb3MgKz0gbV95OworICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgcmVsYXRpdmVQb3Np
dGlvbk9mZnNldCh4UG9zLCB5UG9zKTsKQEAgLTE3NTksNyArMTc2Miw3IEBACiAgICAgCiAgICAg
aW50IGFic3gsIGFic3k7CiAgICAgUmVuZGVyT2JqZWN0ICpjYiA9IGNvbnRhaW5pbmdCbG9jaygp
OwotICAgIGlmIChjYiAmJiBjYiAhPSB0aGlzICYmIGNiLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gs
YWJzeSkpIHsKKyAgICBpZiAoY2IgJiYgY2IgIT0gdGhpcyAmJiBjYi0+YWJzb2x1dGVQb3NpdGlv
bihhYnN4LCBhYnN5KSkgewogICAgICAgICBfeCArPSBhYnN4OwogICAgICAgICBfeSArPSBhYnN5
OwogICAgIH0gCkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX2JyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBy
ZW5kZXJpbmcvcmVuZGVyX2JyLmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvcmVu
ZGVyX2JyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBACiAgICAgLy8gYW4g
YWNjdXJhdGUgcG9zaXRpb24gY2FuIGJlIGRldGVybWluZWQuCiAKICAgICBpbnQgYWJzeCwgYWJz
eTsKLSAgICBhYnNvbHV0ZVBvc2l0aW9uKGFic3gsYWJzeSk7CisgICAgYWJzb2x1dGVQb3NpdGlv
bihhYnN4LCBhYnN5KTsKIAotICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKKyAgICBpZiAo
ZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQogICAgICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGgoKSAtIHhQb3MoKTsKICAKICAgICAvLyBGSVhNRTogYW4gb2xk
ZXIgdmVyc2lvbiBvZiB0aGlzIGNvZGUgd2Fzbid0IHNldHRpbmcgd2lkdGggYXQKSW5kZXg6IHJl
bmRlcmluZy9yZW5kZXJfZmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9m
bG93LmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvcmVuZGVyX2Zsb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzYsMTcgKzYzNiwxNyBAQAogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaW50IG15UmlnaHQgPSBfeCArIHdpZHRoOwogICAgICAgICAgICAgaW50IGlnbm9y
ZTsKLSAgICAgICAgICAgIGFic29sdXRlUG9zaXRpb24obXlSaWdodCwgaWdub3JlKTsKKyAgICAg
ICAgICAgIGFic29sdXRlUG9zaXRpb25Gb3JDb250ZW50KG15UmlnaHQsIGlnbm9yZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGludCBjb250YWluZXJSaWdodCA9IGNvbnRhaW5pbmdCbG9j
aygpLT54UG9zKCkgKyBjb250YWluaW5nQmxvY2tXaWR0aCgpOwotICAgICAgICAgICAgYWJzb2x1
dGVQb3NpdGlvbihjb250YWluZXJSaWdodCwgaWdub3JlKTsKKyAgICAgICAgICAgIGFic29sdXRl
UG9zaXRpb25Gb3JDb250ZW50KGNvbnRhaW5lclJpZ2h0LCBpZ25vcmUpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gY29udGFpbmVyUmlnaHQgLSBt
eVJpZ2h0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgYWJz
b2x1dGVQb3NpdGlvbihhYnN4LCBhYnN5LCBmYWxzZSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbkZv
ckNvbnRlbnQoYWJzeCwgYWJzeSk7CiAgICAgX3ggKz0gYWJzeCArIHBhZGRpbmdMZWZ0KCkgKyBi
b3JkZXJMZWZ0KCk7CiAgICAgX3kgKz0gYWJzeSArIHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgp
OwogCkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRl
cmluZy9yZW5kZXJfb2JqZWN0LmgJKHJldmlzaW9uIDEzMzI3KQorKysgcmVuZGVyaW5nL3JlbmRl
cl9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYzLDYgKzU2MywxNCBAQAogCiAgICAgLy8g
Y2FsY3VsYXRlIGNsaWVudCBwb3NpdGlvbiBvZiBib3gKICAgICB2aXJ0dWFsIGJvb2wgYWJzb2x1
dGVQb3NpdGlvbihpbnQgJi8qeFBvcyovLCBpbnQgJi8qeVBvcyovLCBib29sIGZpeGVkID0gZmFs
c2UpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZWFsIHdpdGggdGhl
IGV4dHJhIHRvcCBzcGFjZSB0aGF0IGNhbiBvY2N1ciBpbiB0YWJsZSBjZWxscyAoY2FsbGVkIGJv
cmRlclRvcEV4dHJhKS4KKyAgICAvLyBUaGUgY2hpbGRyZW4gb2YgdGhlIGNlbGwgZG8gbm90IGZh
Y3RvciB0aGlzIHNwYWNlIGluLCBzbyB3ZSBoYXZlIHRvIGFkZCBpdCBpbi4gIEFueSBjb2RlIHRo
YXQgd2FudHMgdG8KKyAgICAvLyBhY2N1cmF0ZWx5IGRlYWwgd2l0aCB0aGUgY29udGVudHMgb2Yg
YSBjZWxsIG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGluc3RhZCBvZiBhYnNvbHV0ZVBvc2l0aW9u
LgorICAgIHZvaWQgYWJzb2x1dGVQb3NpdGlvbkZvckNvbnRlbnQoaW50JiB4UG9zLCBpbnQmIHlQ
b3MsIGJvb2wgZml4ZWQgPSBmYWxzZSkgeworICAgICAgICBhYnNvbHV0ZVBvc2l0aW9uKHhQb3Ms
IHlQb3MsIGZpeGVkKTsKKyAgICAgICAgeVBvcyArPSBib3JkZXJUb3BFeHRyYSgpOworICAgIH0K
IAogICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHdpdGhvdXQgbWFyZ2lucyBidXQgaW5jbHVk
ZSBwYWRkaW5ncyBhbmQgYm9yZGVycwogICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQpAQCAtNTg0LDcgKzU5Miw3IEBACiAgICAgLy8gSUUgZXh0ZW5zaW9ucy4gVXNl
ZCB0byBjYWxjdWxhdGUgb2Zmc2V0V2lkdGgvSGVpZ2h0LiAgT3ZlcnJpZGRlbiBieSBpbmxpbmVz
IChyZW5kZXJfZmxvdykgCiAgICAgLy8gdG8gcmV0dXJuIHRoZSByZW1haW5pbmcgd2lkdGggb24g
YSBnaXZlbiBsaW5lIChhbmQgdGhlIGhlaWdodCBvZiBhIHNpbmdsZSBsaW5lKS4gLWR3aAogICAg
IHZpcnR1YWwgaW50IG9mZnNldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gd2lkdGgoKTsgfQotICAg
IHZpcnR1YWwgaW50IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGhlaWdodCgpOyB9Cisg
ICAgdmlydHVhbCBpbnQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0KCkgKyBi
b3JkZXJUb3BFeHRyYSgpICsgYm9yZGVyQm90dG9tRXh0cmEoKTsgfQogICAgIAogICAgIC8vIElF
IGV4eHRlbnNpb25zLiAgQWxzbyBzdXBwb3J0ZWQgYnkgR2Vja28uICBXZSBvdmVycmlkZSBpbiBy
ZW5kZXIgZmxvdyB0byBnZXQgdGhlCiAgICAgLy8gbGVmdCBhbmQgdG9wIGNvcnJlY3QuIC1kd2gK
SW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBACiAKICAgICBS
ZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihjaGls
ZCk7CiAKLSAgICBzZWN0aW9uKCktPmFkZENlbGwoY2VsbCk7Ci0KKyAgICBzZWN0aW9uKCktPmFk
ZENlbGwoY2VsbCwgdGhpcyk7CisgICAgCiAgICAgUmVuZGVyQ29udGFpbmVyOjphZGRDaGlsZChj
ZWxsLCBiZWZvcmVDaGlsZCk7CiAKICAgICBpZiAoYmVmb3JlQ2hpbGQgfHwgbmV4dFNpYmxpbmco
KSkKQEAgLTEyMiw3ICsxMjIsOCBAQAogSW50UmVjdCBSZW5kZXJUYWJsZVJvdzo6Z2V0QWJzb2x1
dGVSZXBhaW50UmVjdCgpCiB7CiAgICAgLy8gRm9yIG5vdywganVzdCByZXBhaW50IHRoZSB3aG9s
ZSB0YWJsZS4KLSAgICAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4KKyAg
ICAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcywgZS5nLiwgbmVlZCB0byBy
ZXBhaW50IGFsbCB0aGUgY2VsbHMgdGhhdCB3ZQorICAgIC8vIG1pZ2h0IGhhdmUgcHJvcGFnYXRl
ZCBhIGJhY2tncm91bmQgY29sb3IgaW50by4KICAgICBSZW5kZXJUYWJsZSogcGFyZW50VGFibGUg
PSB0YWJsZSgpOwogICAgIGlmIChwYXJlbnRUYWJsZSkKICAgICAgICAgcmV0dXJuIHBhcmVudFRh
YmxlLT5nZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7CkBAIC0xMzAsNCArMTMxLDIzIEBACiAgICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKKy8vIEhpdCBUZXN0aW5nCitib29sIFJlbmRlclRh
YmxlUm93Ojpub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IHgsIGludCB5LCBpbnQgdHgs
IGludCB0eSwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCit7CisgICAgLy8gVGFibGUgcm93cyBjYW5u
b3QgZXZlciBiZSBoaXQgdGVzdGVkLiAgRWZmZWN0aXZlbHkgdGhleSBkbyBub3QgZXhpc3QuCisg
ICAgLy8gSnVzdCBmb3J3YXJkIHRvIG91ciBjaGlsZHJlbiBhbHdheXMuCisgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBza2lwIG92ZXIg
aW5saW5lIGZsb3dzLCBzaW5jZSB0aGV5IGNhbiBzaG93IHVwIGluc2lkZSB0YWJsZSByb3dzCisg
ICAgICAgIC8vIGF0IHRoZSBtb21lbnQgKGEgZGVtb3RlZCBpbmxpbmUgPGZvcm0+IGZvciBleGFt
cGxlKS4gSWYgd2UgZXZlciBpbXBsZW1lbnQgYQorICAgICAgICAvLyB0YWJsZS1zcGVjaWZpYyBo
aXQtdGVzdCBtZXRob2QgKHdoaWNoIHdlIHNob3VsZCBkbyBmb3IgcGVyZm9ybWFuY2UgcmVhc29u
cyBhbnl3YXkpLAorICAgICAgICAvLyB0aGVuIHdlIGNhbiByZW1vdmUgdGhpcyBjaGVjay4KKyAg
ICAgICAgaWYgKCFjaGlsZC0+bGF5ZXIoKSAmJiAhY2hpbGQtPmlzSW5saW5lRmxvdygpICYmIGNo
aWxkLT5ub2RlQXRQb2ludChpbmZvLCB4LCB5LCB0eCwgdHksIGFjdGlvbikpIHsKKyAgICAgICAg
ICAgIHNldElubmVyTm9kZShpbmZvKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDEzMzI3KQorKysgcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAKIHsK
ICAgICBRVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzOwogICAgIGludCB4ID0gMCwgeSA9IDA7Ci0g
ICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAgICBhYnNvbHV0ZVBvc2l0aW9uRm9yQ29udGVu
dCh4LCB5KTsKICAgICBhYnNvbHV0ZVJlY3RzKHJlY3RzLCB4LCB5KTsKICAgICByZXR1cm4gcmVj
dHM7CiB9CkBAIC0yNDksNyArMjQ5LDcgQEAKIAogICAgIGludCBhYnN4LCBhYnN5OwogICAgIFJl
bmRlckJsb2NrICpjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgIGNiLT5hYnNvbHV0ZVBvc2l0
aW9uKGFic3gsIGFic3kpOworICAgIGNiLT5hYnNvbHV0ZVBvc2l0aW9uRm9yQ29udGVudChhYnN4
LCBhYnN5KTsKICAgICBpZiAoY2ItPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICBjYi0+bGF5
ZXIoKS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoYWJzeCwgYWJzeSk7CiAKQEAgLTM5OSw3ICszOTks
NyBAQAogICAgICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gKGJveC0+cm9vdCgpLT53aWR0
aCgpICsgYm94LT5yb290KCktPnhQb3MoKSkgLSAobGVmdCArIDEpOwogCiAgICAgaW50IGFic3gs
IGFic3k7Ci0gICAgYWJzb2x1dGVQb3NpdGlvbihhYnN4LGFic3kpOworICAgIGFic29sdXRlUG9z
aXRpb25Gb3JDb250ZW50KGFic3gsIGFic3kpOwogICAgIGxlZnQgKz0gYWJzeDsKICAgICB0b3Ag
Kz0gYWJzeTsKIApAQCAtNDE3LDcgKzQxNyw3IEBACiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zT2ZD
aGFyKGludCBjaHIsIGludCAmeCwgaW50ICZ5KQogewotICAgIGFic29sdXRlUG9zaXRpb24oeCwg
eSwgZmFsc2UpOworICAgIGFic29sdXRlUG9zaXRpb25Gb3JDb250ZW50KHgsIHkpOwogCiAgICAg
aW50IHBvczsKICAgICBpZiAoSW5saW5lVGV4dEJveCogcyA9IGZpbmROZXh0SW5saW5lVGV4dEJv
eChjaHIsIHBvcykpIHsKQEAgLTEwNDgsNyArMTA0OCw3IEBACiAgICAgICAgIHJldHVybiByZWN0
OwogCiAgICAgaW50IGFic3gsIGFic3k7Ci0gICAgY2ItPmFic29sdXRlUG9zaXRpb24oYWJzeCwg
YWJzeSk7CisgICAgY2ItPmFic29sdXRlUG9zaXRpb25Gb3JDb250ZW50KGFic3gsIGFic3kpOwog
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IGNiLT5sYXllcigpOwogICAgIGlmIChsYXllcikKICAg
ICAgICBsYXllci0+c3VidHJhY3RTY3JvbGxPZmZzZXQoYWJzeCwgYWJzeSk7IApJbmRleDogcmVu
ZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJf
b2JqZWN0LmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzUsMTIgKzEyNzUsMTIgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX3R5IC0geVBvcygpICsgY29udGludWF0aW9uKCktPmNv
bnRhaW5pbmdCbG9jaygpLT55UG9zKCkpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJlY3Rz
LmFwcGVuZChJbnRSZWN0KF90eCwgX3R5LCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICBy
ZWN0cy5hcHBlbmQoSW50UmVjdChfdHgsIF90eSwgd2lkdGgoKSwgaGVpZ2h0KCkgKyBib3JkZXJU
b3BFeHRyYSgpICsgYm9yZGVyQm90dG9tRXh0cmEoKSkpOwogfQogCiBJbnRSZWN0IFJlbmRlck9i
amVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKQogewotICAgIGludCB4LCB5OworICAgIGlu
dCB4ID0gMCwgeSA9IDA7CiAgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKICAgICBRVmFsdWVM
aXN0PEludFJlY3Q+IHJlY3RzOwogICAgIGFic29sdXRlUmVjdHMocmVjdHMsIHgsIHkpOwpAQCAt
MTg3Nyw2ICsxODc3LDcgQEAKICAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKICAgICBp
ZiAobykgewogICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGYpOworICAg
ICAgICB5UG9zICs9IG8tPmJvcmRlclRvcEV4dHJhKCk7CiAgICAgICAgIGlmIChvLT5oYXNPdmVy
Zmxvd0NsaXAoKSkKICAgICAgICAgICAgIG8tPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0
KHhQb3MsIHlQb3MpOyAKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiByZW5kZXJpbmcvcmVu
ZGVyX3JlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2Vk
LmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBpbnQgeCwgeSwgd2lkdGgsIGhlaWdodDsKLSAgICBhYnNvbHV0ZVBvc2l0aW9uKHgseSk7
CisgICAgYWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKICAgICB4ICs9IGJvcmRlckxlZnQoKSArIHBh
ZGRpbmdMZWZ0KCk7CiAgICAgeSArPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsKICAgICB3
aWR0aCA9IG1fd2lkdGggLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xl
ZnQoKSAtIHBhZGRpbmdSaWdodCgpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAxMzMyNykK
KysrIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsNyAr
MTQ1NCw3IEBACiAgICAgICAgIHJldHVybiBHYXBSZWN0cygpOwogCiAgICAgaW50IHR4LCB0eTsK
LSAgICBhYnNvbHV0ZVBvc2l0aW9uKHR4LCB0eSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbkZvckNv
bnRlbnQodHgsIHR5KTsKICAgICAKICAgICBpbnQgbGFzdFRvcCA9IC1ib3JkZXJUb3BFeHRyYSgp
OwogICAgIGludCBsYXN0TGVmdCA9IGxlZnRTZWxlY3Rpb25PZmZzZXQodGhpcywgbGFzdFRvcCk7
CkBAIC0yNTg2LDcgKzI1ODYsNyBAQAogICAgICAgICByZXR1cm4gUmVuZGVyRmxvdzo6cG9zaXRp
b25Gb3JDb29yZGluYXRlcyhfeCwgX3kpOyAKIAogICAgIGludCBhYnN4LCBhYnN5OwotICAgIGFi
c29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSk7CisgICAgYWJzb2x1dGVQb3NpdGlvbkZvckNvbnRl
bnQoYWJzeCwgYWJzeSk7CiAKICAgICBpbnQgdG9wID0gYWJzeSArIGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpOwogICAgIGludCBib3R0b20gPSB0b3AgKyBjb250ZW50SGVpZ2h0KCk7CkBAIC0y
NjM3LDEyICsyNjM3LDEyIEBACiAgICAgZm9yIChSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gZmly
c3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmcoKSkg
ewogICAgICAgICBpZiAocmVuZGVyZXItPmhlaWdodCgpID09IDAgfHwgcmVuZGVyZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHJlbmRlcmVyLT5pc0Zsb2F0aW5nT3JQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmVuZGVyZXItPmFic29s
dXRlUG9zaXRpb24oYWJzeCwgdG9wKTsKKyAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUG9zaXRp
b25Gb3JDb250ZW50KGFic3gsIHRvcCk7CiAgICAgICAgIFJlbmRlck9iamVjdCAqbmV4dCA9IHJl
bmRlcmVyLT5uZXh0U2libGluZygpOwogICAgICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zs
b2F0aW5nT3JQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dFNpYmxp
bmcoKTsKICAgICAgICAgaWYgKG5leHQpIAotICAgICAgICAgICAgbmV4dC0+YWJzb2x1dGVQb3Np
dGlvbihhYnN4LCBib3R0b20pOworICAgICAgICAgICAgbmV4dC0+YWJzb2x1dGVQb3NpdGlvbkZv
ckNvbnRlbnQoYWJzeCwgYm90dG9tKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYm90dG9t
ID0gdG9wICsgY29udGVudEhlaWdodCgpOwogICAgICAgICBpZiAoX3kgPj0gdG9wICYmIF95IDwg
Ym90dG9tKSB7CkluZGV4OiBkb20vTm9kZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Ob2Rl
SW1wbC5jcHAJKHJldmlzaW9uIDEzMzI3KQorKysgZG9tL05vZGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQwLDcgKzM0MCw3IEBACiB7CiAgICAgaW50IF94LCBfeTsKICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5hYnNvbHV0ZVBvc2l0aW9uKF94LCBfeSkpCi0gICAgICAg
IHJldHVybiBJbnRSZWN0KCBfeCwgX3ksIHJlbmRlcmVyKCktPndpZHRoKCksIHJlbmRlcmVyKCkt
PmhlaWdodCgpICk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KCBfeCwgX3ksIHJlbmRlcmVyKCkt
PndpZHRoKCksIHJlbmRlcmVyKCktPmhlaWdodCgpICsgcmVuZGVyZXIoKS0+Ym9yZGVyVG9wRXh0
cmEoKSArIHJlbmRlcmVyKCktPmJvcmRlckJvdHRvbUV4dHJhKCkpOwogCiAgICAgcmV0dXJuIElu
dFJlY3QoKTsKIH0KSW5kZXg6IGRvbS9Db250YWluZXJOb2RlSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gZG9tL0NvbnRhaW5lck5vZGVJbXBsLmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyBkb20vQ29u
dGFpbmVyTm9kZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjksNyArNjI5LDcgQEAKIAog
ICAgIHhQb3MgPSB5UG9zID0gMDsKICAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBs
YWNlZCgpKSB7Ci0gICAgICAgIG8tPmFic29sdXRlUG9zaXRpb24oIHhQb3MsIHlQb3MgKTsKKyAg
ICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC02NTMsMTQgKzY1MywxNCBAQAogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgby0+
YWJzb2x1dGVQb3NpdGlvbiggeFBvcywgeVBvcyApOworICAgICAgICAgICAgby0+YWJzb2x1dGVQ
b3NpdGlvbih4UG9zLCB5UG9zKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHAtPmVsZW1lbnQoKSAmJiBwLT5lbGVtZW50KCkgPT0gdGhpcyAmJiBv
LT5pc1RleHQoKSAmJiAhby0+aXNCUigpICYmICFzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4obykt
PmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZyAtIHNraXAg
dW5yZW5kZXJlZCB3aGl0ZXNwYWNlIHRoYXQgaXMgYSBjaGlsZCBvciBuZXh0IHNpYmxpbmcgb2Yg
dGhlIGFuY2hvcgogICAgICAgICB9IGVsc2UgaWYgKChvLT5pc1RleHQoKSAmJiAhby0+aXNCUigp
KSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIG8tPmNvbnRhaW5lcigpLT5hYnNv
bHV0ZVBvc2l0aW9uKCB4UG9zLCB5UG9zICk7CisgICAgICAgICAgICBvLT5jb250YWluZXIoKS0+
YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zKTsKICAgICAgICAgICAgIGlmIChvLT5pc1RleHQo
KSAmJiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG8pLT5maXJzdFRleHRCb3goKSkgewogICAg
ICAgICAgICAgICAgIHhQb3MgKz0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihvKS0+bWluWFBv
cygpOwogICAgICAgICAgICAgICAgIHlQb3MgKz0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihv
KS0+Zmlyc3RUZXh0Qm94KCktPnJvb3QoKS0+dG9wT3ZlcmZsb3coKTsKQEAgLTY5MCw5ICs2OTAs
OSBAQAogICAgIHhQb3MgPSB5UG9zID0gMDsKICAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+
aXNSZXBsYWNlZCgpKQogICAgIHsKLSAgICAgICAgby0+YWJzb2x1dGVQb3NpdGlvbiggeFBvcywg
eVBvcyApOworICAgICAgICBvLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MpOwogICAgICAg
ICB4UG9zICs9IG8tPndpZHRoKCk7Ci0gICAgICAgIHlQb3MgKz0gby0+aGVpZ2h0KCk7CisgICAg
ICAgIHlQb3MgKz0gby0+aGVpZ2h0KCkgKyBvLT5ib3JkZXJUb3BFeHRyYSgpICsgby0+Ym9yZGVy
Qm90dG9tRXh0cmEoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIC8vIGZpbmQg
dGhlIGxhc3QgdGV4dC9pbWFnZSBjaGlsZCwgdG8gZ2V0IGEgcG9zaXRpb24KQEAgLTcxMCw3ICs3
MTAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbyA9IHByZXY7CiAgICAgICAgIH0K
LSAgICAgICAgaWYoby0+aXNUZXh0KCkgfHwgby0+aXNSZXBsYWNlZCgpKSB7CisgICAgICAgIGlm
IChvLT5pc1RleHQoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIG8tPmNvbnRh
aW5lcigpLT5hYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MpOwogICAgICAgICAgICAgaWYgKG8t
PmlzVGV4dCgpKQogICAgICAgICAgICAgICAgIHhQb3MgKz0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4
dCAqPihvKS0+bWluWFBvcygpICsgby0+d2lkdGgoKTsKSW5kZXg6IGVkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNp
b24gMTMzMjcpCisrKyBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MjQsNyArNDI0LDcgQEAKICAgICAKICAgICBpZiAocm9vdCkgewogICAgICAgICBpbnQgYWJz
eCwgYWJzeTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gs
IGFic3kpOworICAgICAgICBjb250YWluaW5nQmxvY2stPmFic29sdXRlUG9zaXRpb25Gb3JDb250
ZW50KGFic3gsIGFic3kpOwogICAgICAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gcm9vdC0+
Y2xvc2VzdExlYWZDaGlsZEZvclhQb3MoeCwgYWJzeCktPm9iamVjdCgpOwogICAgICAgICByZXR1
cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoeCwgYWJzeSArIHJvb3QtPnRvcE92
ZXJmbG93KCkpOwogICAgIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQAogICAgIAogICAgIGlmIChyb290
KSB7CiAgICAgICAgIGludCBhYnN4LCBhYnN5OwotICAgICAgICBjb250YWluaW5nQmxvY2stPmFi
c29sdXRlUG9zaXRpb24oYWJzeCwgYWJzeSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+YWJz
b2x1dGVQb3NpdGlvbkZvckNvbnRlbnQoYWJzeCwgYWJzeSk7CiAgICAgICAgIFJlbmRlck9iamVj
dCAqcmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yWFBvcyh4LCBhYnN4KS0+b2Jq
ZWN0KCk7CiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4
LCBhYnN5ICsgcm9vdC0+dG9wT3ZlcmZsb3coKSk7CiAgICAgfSAgICAKSW5kZXg6IGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTMzMjcpCisrKyBlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTUsNyArNzU1LDcgQEAKICAgICAgICAgICAg
IG1fY2FyZXRSZWN0ID0gcG9zLm5vZGUoKS0+cmVuZGVyZXIoKS0+Y2FyZXRSZWN0KHBvcy5vZmZz
ZXQoKSwgbV9zZWwuYWZmaW5pdHkoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGludCB4
LCB5OwotICAgICAgICAgICAgcG9zLm5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlv
bih4LCB5KTsKKyAgICAgICAgICAgIHBvcy5ub2RlKCktPnJlbmRlcmVyKCktPmFic29sdXRlUG9z
aXRpb25Gb3JDb250ZW50KHgsIHkpOwogICAgICAgICAgICAgbV9jYXJldFBvc2l0aW9uT25MYXlv
dXQgPSBJbnRQb2ludCh4LCB5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3Miw3ICs3NzIsNyBA
QAogCiAgICAgaWYgKG1fc2VsLnN0YXJ0KCkubm9kZSgpICYmIG1fc2VsLnN0YXJ0KCkubm9kZSgp
LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGludCB4LCB5OwotICAgICAgICBtX3NlbC5zdGFydCgp
Lm5vZGUoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAgICAgICAgbV9z
ZWwuc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmFic29sdXRlUG9zaXRpb25Gb3JDb250ZW50
KHgsIHkpOwogICAgICAgICBjYXJldC5tb3ZlKEludFBvaW50KHgsIHkpIC0gbV9jYXJldFBvc2l0
aW9uT25MYXlvdXQpOwogICAgIH0KIApJbmRleDogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJl
dmlzaW9uIDEzMzI3KQorKysgYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTk5MCw3ICs5OTAsNyBAQAogICAgIE5TVmlldyAqdmlldyA9IHdpZGdldCA/
IHdpZGdldC0+Z2V0VmlldygpIDogbmlsOwogICAgIAogICAgIGludCBueCwgbnk7Ci0gICAgbm9k
ZS0+YWJzb2x1dGVQb3NpdGlvbihueCxueSk7CisgICAgbm9kZS0+YWJzb2x1dGVQb3NpdGlvbihu
eCwgbnkpOwogICAgIE5TT2JqZWN0ICpjb3BpZWROb2RlID0gW2NvcGllciBub2RlV2l0aE5hbWU6
bmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246TlNN
YWtlUG9pbnQobngsbnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjdDpOU01ha2VSZWN0KG5vZGUtPnhQb3MoKSwgbm9kZS0+eVBvcygpLCBub2RlLT53aWR0
aCgpLCBub2RlLT5oZWlnaHQoKSkKSW5kZXg6IGt3cS9LV1FSZW5kZXJUcmVlRGVidWcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGt3cS9LV1FSZW5kZXJUcmVlRGVidWcuY3BwCShyZXZpc2lvbiAxMzMyNykK
KysrIGt3cS9LV1FSZW5kZXJUcmVlRGVidWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIg
KzEzNCwxOSBAQAogICAgIAogICAgIC8vIEZJWE1FOiBXaWxsIHJlbW92ZSB0aGlzIDxicj4gY29k
ZSBvbmNlIGFsbCBsYXlvdXQgdGVzdHMgcGFzcy4gIFVudGlsIHRoZW4sIHdlIGNhbid0IHJlYWxs
eSBjaGFuZ2UKICAgICAvLyBhbGwgdGhlIHJlc3VsdHMgZWFzaWx5LgorICAgIC8vIEZJWE1FOiBX
aWxsIGFsc28gcmVtb3ZlIHRoZSB0YWJsZSByb3cgYW5kIHNlY3Rpb24gaGFja3Mgb25jZSBhbGwg
bGF5b3V0IHRlc3RzIHBhc3MuCiAgICAgYm9vbCB1c2VQb3NpdGlvbnMgPSB0cnVlOworICAgIGJv
b2wgdXNlV2lkdGggPSB0cnVlOworICAgIGJvb2wgdXNlSGVpZ2h0ID0gdHJ1ZTsKICAgICBpZiAo
by5pc0JSKCkpIHsKICAgICAgICAgY29uc3QgUmVuZGVyQlIqIGJyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgUmVuZGVyQlIqPigmbyk7CiAgICAgICAgIHVzZVBvc2l0aW9ucyA9IChici0+Zmlyc3RUZXh0
Qm94KCkgJiYgYnItPmZpcnN0VGV4dEJveCgpLT5pc1RleHQoKSk7Ci0gICAgfQotICAgIEludFJl
Y3Qgcih1c2VQb3NpdGlvbnMgPyBvLnhQb3MoKSA6IDAsIHVzZVBvc2l0aW9ucyA/IG8ueVBvcygp
IDogMCwgby53aWR0aCgpLCBvLmhlaWdodCgpKTsKKyAgICB9IGVsc2UgaWYgKG8uaXNUYWJsZVJv
dygpKQorICAgICAgICB1c2VQb3NpdGlvbnMgPSB1c2VXaWR0aCA9IHVzZUhlaWdodCA9IGZhbHNl
OworICAgIGVsc2UgaWYgKG8uaXNUYWJsZVNlY3Rpb24oKSkKKyAgICAgICAgdXNlV2lkdGggPSBm
YWxzZTsKKworICAgIEludFJlY3Qgcih1c2VQb3NpdGlvbnMgPyBvLnhQb3MoKSA6IDAsIHVzZVBv
c2l0aW9ucyA/IG8ueVBvcygpIDogMCwgdXNlV2lkdGggPyBvLndpZHRoKCkgOiAwLCB1c2VIZWln
aHQgPyBvLmhlaWdodCgpIDogMCk7CiAgICAgdHMgPDwgIiAiIDw8IHI7CiAgICAgCiAgICAgaWYg
KCFvLmlzVGV4dCgpKSB7Cg==
</data>
<flag name="review"
          id="1861"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>