<?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>20435</bug_id>
          
          <creation_ts>2008-08-18 15:40:27 -0700</creation_ts>
          <short_desc>Canvas missing exceptioncode for gradients</short_desc>
          <delta_ts>2008-10-12 17:35:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88766</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-18 15:40:27 -0700</bug_when>
    <thetext>Exceptions for wrong values (like NaN, infinity, negative radius) are missing for gradients in canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88767</commentid>
    <comment_count>1</comment_count>
      <attachid>22865</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-18 15:44:14 -0700</bug_when>
    <thetext>Created attachment 22865
Added ExceptionCode

Added the missing exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88798</commentid>
    <comment_count>2</comment_count>
      <attachid>22875</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-19 00:47:39 -0700</bug_when>
    <thetext>Created attachment 22875
Exceptions in Canvas

Added exceptions for addColorStop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88838</commentid>
    <comment_count>3</comment_count>
      <attachid>22879</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-19 12:25:54 -0700</bug_when>
    <thetext>Created attachment 22879
Exceptions in canvas

Added some more Exceptions to match and updated excisting ones to match the current specifications of Canvas.

I&apos;m not sure about CanvasGradient and FloatRect.
I added the Exceptions to the CanvasGradient.cpp-code. I think thats ok so, since Pattern makes the same.
I don&apos;t know if FloatRect::contains() is used by another function of webkit beside Canvas. But after the changes on the Spec, rect&apos;s can be negative. And contains() wasn&apos;t able to check negative rects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88842</commentid>
    <comment_count>4</comment_count>
      <attachid>22881</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-19 13:48:13 -0700</bug_when>
    <thetext>Created attachment 22881
Exceptions in canvas

Corrects some bugs in the patch above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88899</commentid>
    <comment_count>5</comment_count>
      <attachid>22888</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-19 23:46:34 -0700</bug_when>
    <thetext>Created attachment 22888
Exceptions in canvas

Added and corrected more exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88926</commentid>
    <comment_count>6</comment_count>
      <attachid>22897</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-20 12:33:18 -0700</bug_when>
    <thetext>Created attachment 22897
drawImage() update

Updated drawImage() to match the current specification. The thrown exceptions now match the specification as well as firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88931</commentid>
    <comment_count>7</comment_count>
      <attachid>22897</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-08-20 13:06:27 -0700</bug_when>
    <thetext>Comment on attachment 22897
drawImage() update

fixing draw image should go in a separate bug, however issues i spotted, that make me r- this in its current form:
You changed FloatRect::contains -- i&apos;m not entirely happy with this as FloatRect as the contains semantics would be subtly different from IntRect::contains.  A better approach would to normalise the rect before doing the contains check.

The code also now ends up checking for !srcRect.width(), etc multiple times throwing an exception in one case and silently returning in another.

Your testcase also isn&apos;t particularly great as you  don&apos;t actually test that you can specify a negative sized source rect (0-width/height for some of the components result in an exception), and you don&apos;t test the rendering behaviour of a negative source.  This last part is especially critical as you are adding new functionality, so ou need to confirm that the new functionality actually works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90016</commentid>
    <comment_count>8</comment_count>
      <attachid>23140</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-09-03 06:20:21 -0700</bug_when>
    <thetext>Created attachment 23140
Canvas gradients exceptions

Added the exception on gradients that are thrown by FireFox (some times with a wrong text/exception code), Opera and match the specifications to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90276</commentid>
    <comment_count>9</comment_count>
      <attachid>23140</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-05 09:57:33 -0700</bug_when>
    <thetext>Comment on attachment 23140
Canvas gradients exceptions

+    if (!isfinite(value) || value &lt; 0. || value &gt; 1.) {
Please use 0 and 1.0f here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90290</commentid>
    <comment_count>10</comment_count>
      <attachid>23197</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-09-05 12:18:06 -0700</bug_when>
    <thetext>Created attachment 23197
Canvas Gradients exception

see comment above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90955</commentid>
    <comment_count>11</comment_count>
      <attachid>23197</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-12 12:13:42 -0700</bug_when>
    <thetext>Comment on attachment 23197
Canvas Gradients exception

This looks fine, but it *really* should use the new js test system.  see LayoutTests/fast/js for examples.

Then things like:

+        try{
+            var gradient = ctx.createLinearGradient(0, 0, 100, -Infinity);
+            print(&quot;FAIL&quot;);
+        } catch (e) {
+            print(&quot;PASS: a -Infinity value for y1, got exception as expected&quot;);
+        }

turn into:
shouldThrow(&quot;ctx.createLinearGradient(0, 0, 100, -Infinity)&quot;)

You could even re-write this as a loop if you really wanted to, which built up different arg arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91031</commentid>
    <comment_count>12</comment_count>
      <attachid>23390</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-09-13 03:48:39 -0700</bug_when>
    <thetext>Created attachment 23390
Canvas Gradients exception

rewrote testcases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91249</commentid>
    <comment_count>13</comment_count>
      <attachid>23390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 15:12:14 -0700</bug_when>
    <thetext>Comment on attachment 23390
Canvas Gradients exception

This looks fine.  It would be best if you could add a couple positive tests as well (to make sure that your exceptions aren&apos;t thrown too often, or that future added code doesn&apos;t make the exceptions thrown too often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95110</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-12 17:12:21 -0700</bug_when>
    <thetext>I decided not to wait for the positive tests. I&apos;ll land this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95117</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-12 17:35:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/37538</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22865</attachid>
            <date>2008-08-18 15:44:14 -0700</date>
            <delta_ts>2008-08-19 00:47:39 -0700</delta_ts>
            <desc>Added ExceptionCode</desc>
            <filename>CanvasGradientExceptions.patch</filename>
            <type>text/plain</type>
            <size>4334</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMDgtMTggIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBF
eGNlcHRpb25Db2RlIHRvIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cy4KKworICAgICAgICBD
YW52YXMgbWlzc2luZyBleGNlcHRpb25jb2RlIGZvciBncmFkaWVudHMKKyAgICAgICAgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzNSkKKworICAgICAgICAqIGh0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlTGluZWFyR3JhZGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudCk6Cisg
ICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1s
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisKIDIwMDgtMDgtMTUgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBI
eWF0dApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJl
dmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDksMTMgKzExMDksMjkgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldENvbXBvcwogICAgIHNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlv
bihvcGVyYXRpb24pOwogfQogCi1QYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwg
ZmxvYXQgeDEsIGZsb2F0IHkxKQorUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zp
bml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8fCAhaXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5
MSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCiAgICAgcmV0dXJuIENhbnZhc0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4
MCwgeTApLCBGbG9hdFBvaW50KHgxLCB5MSkpOwogfQogCi1QYXNzUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0
IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpCitQ
YXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0
ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBm
bG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICghaXNmaW5p
dGUoeDApIHx8ICFpc2Zpbml0ZSh5MCkgfHwgIWlzZmluaXRlKHIwKSB8fCAKKyAgICAgICAgIWlz
ZmluaXRlKHgxKSB8fCAhaXNmaW5pdGUoeTEpIHx8ICFpc2Zpbml0ZShyMSkpIHsKKyAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
aWYgKHIwIDwgMCB8fCByMSA8IDApIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJuIENhbnZhc0dyYWRpZW50OjpjcmVh
dGUoRmxvYXRQb2ludCh4MCwgeTApLCByMCwgRmxvYXRQb2ludCh4MSwgeTEpLCByMSk7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDM1
ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQsOCArMTY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIFBh
c3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBm
bG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCBy
MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7CisgICAgICAgIFBhc3NSZWZQdHI8Q2Fu
dmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxv
YXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFBhc3NSZWZQdHI8
Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwg
ZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNvZGUmIGVj
KTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJ
bWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1M
Q2FudmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmlkbAkocmV2aXNpb24gMzU4MjUpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsMTAgQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgZ2xvYmFsQWxwaGE7CiAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBnbG9iYWxDb21wb3NpdGVP
cGVyYXRpb247CiAKLSAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQo
aW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEpOwotICAg
ICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChpbiBmbG9hdCB4MCwgaW4g
ZmxvYXQgeTAsIGluIGZsb2F0IHIwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEsIGluIGZsb2F0
IHIxKTsKKyAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoaW4gZmxv
YXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJh
ZGlhbEdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBmbG9hdCB5MCwgaW4gZmxvYXQgcjAsIGluIGZs
b2F0IHgxLCBpbiBmbG9hdCB5MSwgaW4gZmxvYXQgcjEpCisgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGxpbmVXaWR0aDsKICAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGxpbmVDYXA7
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22875</attachid>
            <date>2008-08-19 00:47:39 -0700</date>
            <delta_ts>2008-08-19 12:25:54 -0700</delta_ts>
            <desc>Exceptions in Canvas</desc>
            <filename>CanvasGradientExceptions2.patch</filename>
            <type>text/plain</type>
            <size>6616</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDgtMDgtMTkgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBF
eGNlcHRpb25Db2RlIHRvIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cy4KKworICAgICAgICBD
YW52YXMgbWlzc2luZyBleGNlcHRpb25jb2RlIGZvciBncmFkaWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDM1CisKKyAgICAgICAgKiBodG1s
L0NhbnZhc0dyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50Ojph
ZGRDb2xvclN0b3ApOgorICAgICAgICAqIGh0bWwvQ2FudmFzR3JhZGllbnQuaDoKKyAgICAgICAg
KiBodG1sL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAqIGh0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsOgorCiAyMDA4LTA4LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52
YXNHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50
LmNwcAkocmV2aXNpb24gMzU4MjUpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMjMgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIENhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0
b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29sb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghaXNmaW5pdGUodmFsdWUpIHx8IHZhbHVlIDwgMC4gfHwgdmFsdWUgPiAxLikg
eworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9ncmFkaWVudC5hZGRDb2xvclN0b3AodmFsdWUsIGNvbG9yKTsKK30KKwogQ2FudmFz
R3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9h
dFBvaW50JiBwMSkKICAgICA6IG1fZ3JhZGllbnQocDAsIHAxKQogewpJbmRleDogV2ViQ29yZS9o
dG1sL0NhbnZhc0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc0dy
YWRpZW50LmgJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgU3RyaW5nOwogCisgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKwog
ICAgIGNsYXNzIENhbnZhc0dyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzR3JhZGll
bnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKQpA
QCAtNDgsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBH
cmFkaWVudCYgZ3JhZGllbnQoKSB7IHJldHVybiBtX2dyYWRpZW50OyB9CiAKLSAgICAgICAgdm9p
ZCBhZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29sb3IpIHsgbV9ncmFk
aWVudC5hZGRDb2xvclN0b3AodmFsdWUsIGNvbG9yKTsgfQorICAgICAgICB2b2lkIGFkZENvbG9y
U3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
ICAgIHZvaWQgZ2V0Q29sb3IoZmxvYXQgdmFsdWUsIGZsb2F0KiByLCBmbG9hdCogZywgZmxvYXQq
IGIsIGZsb2F0KiBhKSBjb25zdCB7IG1fZ3JhZGllbnQuZ2V0Q29sb3IodmFsdWUsIHIsIGcsIGIs
IGEpOyB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmlkbAkocmV2aXNpb24gMzU4MjUpCisr
KyBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgSW1wbGVtZW50YXRpb25VVUlEPWEyOTQy
YWU2LTI3MzEtNDI4Ni05OGNjLTlkNWU3OWUyMGRlMQogICAgIF0gQ2FudmFzR3JhZGllbnQgewog
Ci0gICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9mZnNldCwgaW4gRE9NU3RyaW5n
IGNvbG9yKTsKKyAgICAgICAgdm9pZCBhZGRDb2xvclN0b3AoaW4gZmxvYXQgb2Zmc2V0LCBpbiBE
T01TdHJpbmcgY29sb3IpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAko
cmV2aXNpb24gMzU4MjUpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwOSwxMyArMTEwOSwyOSBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0Q29tcG9zCiAgICAgc2V0R2xvYmFsQ29tcG9zaXRlT3BlcmF0
aW9uKG9wZXJhdGlvbik7CiB9CiAKLVBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkw
LCBmbG9hdCB4MSwgZmxvYXQgeTEpCitQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5
MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIWlz
ZmluaXRlKHgwKSB8fCAhaXNmaW5pdGUoeTApIHx8ICFpc2Zpbml0ZSh4MSkgfHwgIWlzZmluaXRl
KHkxKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKICAgICByZXR1cm4gQ2FudmFzR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50
KHgwLCB5MCksIEZsb2F0UG9pbnQoeDEsIHkxKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2FudmFzR3Jh
ZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQoZmxv
YXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSkK
K1Bhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3Jl
YXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEs
IGZsb2F0IHkxLCBmbG9hdCByMSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zp
bml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8fCAhaXNmaW5pdGUocjApIHx8IAorICAgICAgICAh
aXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5MSkgfHwgIWlzZmluaXRlKHIxKSkgeworICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBpZiAocjAgPCAwIHx8IHIxIDwgMCkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gQ2FudmFzR3JhZGllbnQ6OmNy
ZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIHIwLCBGbG9hdFBvaW50KHgxLCB5MSksIHIxKTsKIH0K
IApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24g
MzU4MjUpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2NCw4ICsxNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAg
UGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAs
IGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwotICAgICAgICBQYXNzUmVmUHRyPENhbnZh
c0dyYWRpZW50PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0
IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKKyAgICAgICAgUGFzc1JlZlB0cjxD
YW52YXNHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBm
bG9hdCB4MSwgZmxvYXQgeTEsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkw
LCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwogICAgICAgICBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IGNyZWF0ZVBhdHRlcm4oSFRN
TEltYWdlRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhU
TUxDYW52YXNFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0NiwxMCBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBnbG9iYWxBbHBoYTsKICAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbjsKIAotICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVu
dChpbiBmbG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSk7Ci0g
ICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGluIGZsb2F0IHgwLCBp
biBmbG9hdCB5MCwgaW4gZmxvYXQgcjAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSwgaW4gZmxv
YXQgcjEpOworICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVudChpbiBm
bG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSkKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRl
UmFkaWFsR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCByMCwgaW4g
ZmxvYXQgeDEsIGluIGZsb2F0IHkxLCBpbiBmbG9hdCByMSkKKyAgICAgICAgICAgIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgbGluZVdpZHRoOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbGluZUNh
cDsKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22879</attachid>
            <date>2008-08-19 12:25:54 -0700</date>
            <delta_ts>2008-08-19 13:48:13 -0700</delta_ts>
            <desc>Exceptions in canvas</desc>
            <filename>Canvas-Exceptions.patch</filename>
            <type>text/plain</type>
            <size>9364</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDgtMDgtMTkgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBF
eGNlcHRpb25Db2RlIHRvIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cy4gVXBkYXRlZCBleGNp
c3Rpbmcgb25lcworICAgICAgICB0byBtYXRjaCBjdXJyZW50IHNwZWNpZmljYXRpb24uCisKKyAg
ICAgICAgQ2FudmFzIG1pc3NpbmcgZXhjZXB0aW9uY29kZSBmb3IgZ3JhZGllbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzNQorCisgICAgICAg
ICogaHRtbC9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFk
aWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50Lmg6Cisg
ICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKiBo
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAwOC0wOC0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYuCkluZGV4OiBXZWJDb3JlL2h0
bWwvQ2FudmFzR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDIzIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBDYW52YXNHcmFkaWVudDo6YWRk
Q29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8IDAuIHx8IHZhbHVl
ID4gMS4pIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7Cit9CisK
IENhbnZhc0dyYWRpZW50OjpDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29u
c3QgRmxvYXRQb2ludCYgcDEpCiAgICAgOiBtX2dyYWRpZW50KHAwLCBwMSkKIHsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9D
YW52YXNHcmFkaWVudC5oCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKICAgICBjbGFzcyBDYW52YXNHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZh
c0dyYWRpZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXNHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50
JiBwMSkKQEAgLTQ4LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAg
ICAgICAgR3JhZGllbnQmIGdyYWRpZW50KCkgeyByZXR1cm4gbV9ncmFkaWVudDsgfQogCi0gICAg
ICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yKSB7
IG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7IH0KKyAgICAgICAgdm9pZCBh
ZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgICAgICB2b2lkIGdldENvbG9yKGZsb2F0IHZhbHVlLCBmbG9hdCogciwgZmxvYXQqIGcs
IGZsb2F0KiBiLCBmbG9hdCogYSkgY29uc3QgeyBtX2dyYWRpZW50LmdldENvbG9yKHZhbHVlLCBy
LCBnLCBiLCBhKTsgfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9uIDM1
ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJ
RD1hMjk0MmFlNi0yNzMxLTQyODYtOThjYy05ZDVlNzllMjBkZTEKICAgICBdIENhbnZhc0dyYWRp
ZW50IHsKIAotICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChpbiBmbG9hdCBvZmZzZXQsIGluIERP
TVN0cmluZyBjb2xvcik7CisgICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9mZnNl
dCwgaW4gRE9NU3RyaW5nIGNvbG9yKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBmbG9hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRMaW5lV2lkdGgoZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKCEod2lkdGggPiAw
KSkKKyAgICBpZiAoISh3aWR0aCA+IDApIHx8ICFpc2Zpbml0ZSh3aWR0aCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBzdGF0ZSgpLm1fbGluZVdpZHRoID0gd2lkdGg7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBmbG9hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1pdGVyTGltCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQogewotICAgIGlmICghKGxpbWl0ID4g
MCkpCisgICAgaWYgKCEobGltaXQgPiAwKSB8fCAhaXNmaW5pdGUobGltaXQpKQogICAgICAgICBy
ZXR1cm47CiAgICAgc3RhdGUoKS5tX21pdGVyTGltaXQgPSBsaW1pdDsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtOTkyLDkgKzk5MiwxMyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAKICAgICBlYyA9IDA7CiAKKyAgICBp
ZiAoIWltYWdlLT5jb21wbGV0ZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZShpbWFnZSkpOwotICAgIGlmICghKGltYWdlUmVjdC5j
b250YWlucyhzcmNSZWN0KSAmJiBzcmNSZWN0LndpZHRoKCkgPj0gMCAmJiBzcmNSZWN0LmhlaWdo
dCgpID49IDAgCi0gICAgICAgICAgICAmJiBkc3RSZWN0LndpZHRoKCkgPj0gMCAmJiBkc3RSZWN0
LmhlaWdodCgpID49IDApKSB7CisgICAgaWYgKHNyY1JlY3Qud2lkdGgoKSA9PSAwIHx8IHNyY1Jl
Y3QuaGVpZ2h0KCkgPT0gMCB8fCAhaW1hZ2VSZWN0LmNvbnRhaW5zKHNyY1JlY3QpKSB7CiAgICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDQx
LDggKzEwNDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAg
ICAgZWMgPSAwOwogCiAgICAgRmxvYXRSZWN0IHNyY0NhbnZhc1JlY3QgPSBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBjYW52YXMtPnNpemUoKSk7Ci0gICAgaWYgKCEoc3JjQ2FudmFzUmVjdC5jb250
YWlucyhzcmNSZWN0KSAmJiBzcmNSZWN0LndpZHRoKCkgPj0gMCAmJiBzcmNSZWN0LmhlaWdodCgp
ID49IDAgCi0gICAgICAgICAgICAmJiBkc3RSZWN0LndpZHRoKCkgPj0gMCAmJiBkc3RSZWN0Lmhl
aWdodCgpID49IDApKSB7CisgICAgaWYgKHNyY1JlY3Qud2lkdGgoKSA9PSAwIHx8IHNyY1JlY3Qu
aGVpZ2h0KCkgPT0gMCB8fCAhc3JjQ2FudmFzUmVjdC5jb250YWlucyhzcmNSZWN0KSkgewogICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEw
OSwxMyArMTExMiwyOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Q29tcG9z
CiAgICAgc2V0R2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiB9CiAKLVBhc3NS
ZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlTGlu
ZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpCitQYXNz
UmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxp
bmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIWlzZmluaXRlKHgwKSB8fCAhaXNmaW5pdGUoeTAp
IHx8ICFpc2Zpbml0ZSh4MSkgfHwgIWlzZmluaXRlKHkxKSkgeworICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gQ2Fu
dmFzR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIEZsb2F0UG9pbnQoeDEsIHkx
KSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwg
ZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSkKK1Bhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAs
IGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8
fCAhaXNmaW5pdGUocjApIHx8IAorICAgICAgICAhaXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5
MSkgfHwgIWlzZmluaXRlKHIxKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAocjAgPCAwIHx8IHIxIDwgMCkgewor
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
ICAgICByZXR1cm4gQ2FudmFzR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIHIw
LCBGbG9hdFBvaW50KHgxLCB5MSksIHIxKTsKIH0KIApAQCAtMTEyOCw3ICsxMTQ3LDcgQEAgUGFz
c1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBDYW52YXNSZW5kZXJpbgogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIWltYWdlLT5jb21wbGV0ZSgpKSB7CisgICAgaWYgKCFp
bWFnZS0+Y29tcGxldGUoKSB8fCBpbWFnZS0+d2lkdGgoKSA9PSAwIHx8IGltYWdlLT5oZWlnaHQo
KSA9PSAwKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJ
KHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsOCArMTY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVhckdyYWRpZW50
KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKLSAgICAgICAgUGFzc1Jl
ZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0
IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7CisgICAgICAgIFBh
c3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBm
bG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAg
IFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgw
LCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBjcmVhdGVQ
YXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gY3JlYXRl
UGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbAkocmV2aXNpb24gMzU4MjUpCisrKyBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsMTAg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgZ2xvYmFsQWxwaGE7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBnbG9i
YWxDb21wb3NpdGVPcGVyYXRpb247CiAKLSAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGlu
ZWFyR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCB4MSwgaW4gZmxv
YXQgeTEpOwotICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChpbiBm
bG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHIwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQg
eTEsIGluIGZsb2F0IHIxKTsKKyAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3Jh
ZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEp
CisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIENhbnZhc0dyYWRp
ZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBmbG9hdCB5MCwgaW4gZmxv
YXQgcjAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSwgaW4gZmxvYXQgcjEpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGxpbmVX
aWR0aDsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIGxpbmVDYXA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3Bw
CShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsMTAgQEAgYm9vbCBGbG9hdFJlY3Q6Omlu
dGVyc2VjdHMoY29uc3QgRmxvYXRSZQogCiBib29sIEZsb2F0UmVjdDo6Y29udGFpbnMoY29uc3Qg
RmxvYXRSZWN0JiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4geCgpIDw9IG90aGVyLngoKSAm
JiByaWdodCgpID49IG90aGVyLnJpZ2h0KCkKLSAgICAgICAgJiYgeSgpIDw9IG90aGVyLnkoKSAm
JiBib3R0b20oKSA+PSBvdGhlci5ib3R0b20oKTsKKyAgICByZXR1cm4gbWluKHgoKSwgeCgpICsg
d2lkdGgoKSkgPD0gbWluKG90aGVyLngoKSwgb3RoZXIueCgpICsgb3RoZXIud2lkdGgoKSkKKyAg
ICAgICAgJiYgbWluKHkoKSwgeSgpICsgaGVpZ2h0KCkpIDw9IG1pbihvdGhlci55KCksIG90aGVy
LnkoKSArIG90aGVyLmhlaWdodCgpKQorICAgICAgICAmJiBtYXgoeCgpLCB4KCkgKyB3aWR0aCgp
KSA+PSBtYXgob3RoZXIueCgpLCBvdGhlci54KCkgKyBvdGhlci53aWR0aCgpKQorICAgICAgICAm
JiBtYXgoeSgpLCB5KCkgKyBoZWlnaHQoKSkgPj0gbWF4KG90aGVyLnkoKSwgb3RoZXIueSgpICsg
b3RoZXIuaGVpZ2h0KCkpOwogfQogCiB2b2lkIEZsb2F0UmVjdDo6aW50ZXJzZWN0KGNvbnN0IEZs
b2F0UmVjdCYgb3RoZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22881</attachid>
            <date>2008-08-19 13:48:13 -0700</date>
            <delta_ts>2008-08-19 23:46:34 -0700</delta_ts>
            <desc>Exceptions in canvas</desc>
            <filename>Canvas-Exceptions.patch</filename>
            <type>text/plain</type>
            <size>10525</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDgtMDgtMTkgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBF
eGNlcHRpb25Db2RlIHRvIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cy4gVXBkYXRlZCBleGNp
c3Rpbmcgb25lcworICAgICAgICB0byBtYXRjaCBjdXJyZW50IHNwZWNpZmljYXRpb24uCisKKyAg
ICAgICAgQ2FudmFzIG1pc3NpbmcgZXhjZXB0aW9uY29kZSBmb3IgZ3JhZGllbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzNQorCisgICAgICAg
ICogaHRtbC9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFk
aWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50Lmg6Cisg
ICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKiBo
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAwOC0wOC0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYuCkluZGV4OiBXZWJDb3JlL2h0
bWwvQ2FudmFzR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDIzIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBDYW52YXNHcmFkaWVudDo6YWRk
Q29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8IDAuIHx8IHZhbHVl
ID4gMS4pIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7Cit9CisK
IENhbnZhc0dyYWRpZW50OjpDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29u
c3QgRmxvYXRQb2ludCYgcDEpCiAgICAgOiBtX2dyYWRpZW50KHAwLCBwMSkKIHsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9D
YW52YXNHcmFkaWVudC5oCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKICAgICBjbGFzcyBDYW52YXNHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZh
c0dyYWRpZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXNHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50
JiBwMSkKQEAgLTQ4LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAg
ICAgICAgR3JhZGllbnQmIGdyYWRpZW50KCkgeyByZXR1cm4gbV9ncmFkaWVudDsgfQogCi0gICAg
ICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yKSB7
IG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7IH0KKyAgICAgICAgdm9pZCBh
ZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgICAgICB2b2lkIGdldENvbG9yKGZsb2F0IHZhbHVlLCBmbG9hdCogciwgZmxvYXQqIGcs
IGZsb2F0KiBiLCBmbG9hdCogYSkgY29uc3QgeyBtX2dyYWRpZW50LmdldENvbG9yKHZhbHVlLCBy
LCBnLCBiLCBhKTsgfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9uIDM1
ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJ
RD1hMjk0MmFlNi0yNzMxLTQyODYtOThjYy05ZDVlNzllMjBkZTEKICAgICBdIENhbnZhc0dyYWRp
ZW50IHsKIAotICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChpbiBmbG9hdCBvZmZzZXQsIGluIERP
TVN0cmluZyBjb2xvcik7CisgICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9mZnNl
dCwgaW4gRE9NU3RyaW5nIGNvbG9yKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBmbG9hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRMaW5lV2lkdGgoZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKCEod2lkdGggPiAw
KSkKKyAgICBpZiAoISh3aWR0aCA+IDApIHx8ICFpc2Zpbml0ZSh3aWR0aCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBzdGF0ZSgpLm1fbGluZVdpZHRoID0gd2lkdGg7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBmbG9hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1pdGVyTGltCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQogewotICAgIGlmICghKGxpbWl0ID4g
MCkpCisgICAgaWYgKCEobGltaXQgPiAwKSB8fCAhaXNmaW5pdGUobGltaXQpKQogICAgICAgICBy
ZXR1cm47CiAgICAgc3RhdGUoKS5tX21pdGVyTGltaXQgPSBsaW1pdDsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtMzI5LDYgKzMyOSw4IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZShmbG8KICAgICBHcmFwaGljc0NvbnRleHQqIGMg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOworICAgIGlm
ICghaXNmaW5pdGUoc3gpIHx8ICFpc2Zpbml0ZShzeSkpCisgICAgICAgIHJldHVybjsKICAgICBj
LT5zY2FsZShGbG9hdFNpemUoc3gsIHN5KSk7CiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybS5zY2Fs
ZShzeCwgc3kpOwogICAgIG1fcGF0aC50cmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGUo
MS4wL3N4LCAxLjAvc3kpKTsKQEAgLTMzOSw2ICszNDEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6cm90YXRlKGZsCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWlzZmluaXRl
KGFuZ2xlSW5SYWRpYW5zKSkKKyAgICAgICAgcmV0dXJuOwogICAgIGMtPnJvdGF0ZShhbmdsZUlu
UmFkaWFucyk7CiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybS5yb3RhdGUoYW5nbGVJblJhZGlhbnMg
LyBwaURvdWJsZSAqIDE4MC4wKTsKICAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5zZm9y
bSgpLnJvdGF0ZSgtYW5nbGVJblJhZGlhbnMgLyBwaURvdWJsZSAqIDE4MC4wKSk7CkBAIC0zNDks
NiArMzUzLDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0ZQogICAg
IEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFpc2Zpbml0ZSh0eCkgfHwgIWlzZmluaXRlKHR5KSkKKyAg
ICAgICAgcmV0dXJuOwogICAgIGMtPnRyYW5zbGF0ZSh0eCwgdHkpOwogICAgIHN0YXRlKCkubV90
cmFuc2Zvcm0udHJhbnNsYXRlKHR4LCB0eSk7CiAgICAgbV9wYXRoLnRyYW5zZm9ybShBZmZpbmVU
cmFuc2Zvcm0oKS50cmFuc2xhdGUoLXR4LCAtdHkpKTsKQEAgLTk5Miw5ICs5OTgsMTMgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogCiAgICAgZWMgPSAwOwogCisg
ICAgaWYgKCFpbWFnZS0+Y29tcGxldGUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoaW1hZ2UpKTsKLSAgICBpZiAoIShpbWFnZVJl
Y3QuY29udGFpbnMoc3JjUmVjdCkgJiYgc3JjUmVjdC53aWR0aCgpID49IDAgJiYgc3JjUmVjdC5o
ZWlnaHQoKSA+PSAwIAotICAgICAgICAgICAgJiYgZHN0UmVjdC53aWR0aCgpID49IDAgJiYgZHN0
UmVjdC5oZWlnaHQoKSA+PSAwKSkgeworICAgIGlmIChzcmNSZWN0LndpZHRoKCkgPT0gMCB8fCBz
cmNSZWN0LmhlaWdodCgpID09IDAgfHwgIWltYWdlUmVjdC5jb250YWlucyhzcmNSZWN0KSkgewog
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTA0MSw4ICsxMDUxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZQogICAgIGVjID0gMDsKIAogICAgIEZsb2F0UmVjdCBzcmNDYW52YXNSZWN0ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgY2FudmFzLT5zaXplKCkpOwotICAgIGlmICghKHNyY0NhbnZhc1JlY3Qu
Y29udGFpbnMoc3JjUmVjdCkgJiYgc3JjUmVjdC53aWR0aCgpID49IDAgJiYgc3JjUmVjdC5oZWln
aHQoKSA+PSAwIAotICAgICAgICAgICAgJiYgZHN0UmVjdC53aWR0aCgpID49IDAgJiYgZHN0UmVj
dC5oZWlnaHQoKSA+PSAwKSkgeworICAgIGlmIChzcmNSZWN0LndpZHRoKCkgPT0gMCB8fCBzcmNS
ZWN0LmhlaWdodCgpID09IDAgfHwgIXNyY0NhbnZhc1JlY3QuY29udGFpbnMoc3JjUmVjdCkpIHsK
ICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTExMDksMTMgKzExMTgsMjkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldENv
bXBvcwogICAgIHNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogfQogCi1Q
YXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0
ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKQor
UGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVh
dGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmluaXRl
KHkwKSB8fCAhaXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5MSkpIHsKKyAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJu
IENhbnZhc0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50KHgx
LCB5MSkpOwogfQogCi1QYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQg
cjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpCitQYXNzUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0
IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zpbml0ZSh5
MCkgfHwgIWlzZmluaXRlKHIwKSB8fCAKKyAgICAgICAgIWlzZmluaXRlKHgxKSB8fCAhaXNmaW5p
dGUoeTEpIHx8ICFpc2Zpbml0ZShyMSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHIwIDwgMCB8fCByMSA8IDAp
IHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCiAgICAgcmV0dXJuIENhbnZhc0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwgeTAp
LCByMCwgRmxvYXRQb2ludCh4MSwgeTEpLCByMSk7CiB9CiAKQEAgLTExNTEsNiArMTE3NiwxMiBA
QCBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluCiAgICAgQ2FudmFzUGF0
dGVybjo6cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVwZWF0WCwgcmVwZWF0
WSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWNhbnZh
cy0+d2lkdGgoKSB8fCAhY2FudmFzLT5oZWlnaHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gQ2FudmFz
UGF0dGVybjo6Y3JlYXRlKGNhbnZhcy0+YnVmZmVyKCktPmltYWdlKCksIHJlcGVhdFgsIHJlcGVh
dFksIGNhbnZhcy0+b3JpZ2luQ2xlYW4oKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsOCArMTY0LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+
IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0
IHkxKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlUmFkaWFsR3Jh
ZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCByMSk7CisgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVh
ckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRp
b25Db2RlJiBlYyk7CisgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZVJh
ZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9h
dCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAgUGFzc1JlZlB0cjxD
YW52YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFBhc3NSZWZQdHI8
Q2FudmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IFN0
cmluZyYgcmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgCkluZGV4OiBX
ZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkocmV2aXNpb24gMzU4MjUp
CisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOCArNDYsMTAgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUg
ZmxvYXQgZ2xvYmFsQWxwaGE7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb247CiAKLSAgICAgICAgQ2Fu
dmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkw
LCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEpOwotICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVh
dGVSYWRpYWxHcmFkaWVudChpbiBmbG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHIwLCBp
biBmbG9hdCB4MSwgaW4gZmxvYXQgeTEsIGluIGZsb2F0IHIxKTsKKyAgICAgICAgQ2FudmFzR3Jh
ZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBm
bG9hdCB4MSwgaW4gZmxvYXQgeTEpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGluIGZsb2F0IHgw
LCBpbiBmbG9hdCB5MCwgaW4gZmxvYXQgcjAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSwgaW4g
ZmxvYXQgcjEpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAg
YXR0cmlidXRlIGZsb2F0IGxpbmVXaWR0aDsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGxpbmVDYXA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFJlY3QuY3BwCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsMTAg
QEAgYm9vbCBGbG9hdFJlY3Q6OmludGVyc2VjdHMoY29uc3QgRmxvYXRSZQogCiBib29sIEZsb2F0
UmVjdDo6Y29udGFpbnMoY29uc3QgRmxvYXRSZWN0JiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1
cm4geCgpIDw9IG90aGVyLngoKSAmJiByaWdodCgpID49IG90aGVyLnJpZ2h0KCkKLSAgICAgICAg
JiYgeSgpIDw9IG90aGVyLnkoKSAmJiBib3R0b20oKSA+PSBvdGhlci5ib3R0b20oKTsKKyAgICBy
ZXR1cm4gbWluKHgoKSwgeCgpICsgd2lkdGgoKSkgPD0gbWluKG90aGVyLngoKSwgb3RoZXIueCgp
ICsgb3RoZXIud2lkdGgoKSkKKyAgICAgICAgJiYgbWluKHkoKSwgeSgpICsgaGVpZ2h0KCkpIDw9
IG1pbihvdGhlci55KCksIG90aGVyLnkoKSArIG90aGVyLmhlaWdodCgpKQorICAgICAgICAmJiBt
YXgoeCgpLCB4KCkgKyB3aWR0aCgpKSA+PSBtYXgob3RoZXIueCgpLCBvdGhlci54KCkgKyBvdGhl
ci53aWR0aCgpKQorICAgICAgICAmJiBtYXgoeSgpLCB5KCkgKyBoZWlnaHQoKSkgPj0gbWF4KG90
aGVyLnkoKSwgb3RoZXIueSgpICsgb3RoZXIuaGVpZ2h0KCkpOwogfQogCiB2b2lkIEZsb2F0UmVj
dDo6aW50ZXJzZWN0KGNvbnN0IEZsb2F0UmVjdCYgb3RoZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22888</attachid>
            <date>2008-08-19 23:46:34 -0700</date>
            <delta_ts>2008-08-20 12:33:18 -0700</delta_ts>
            <desc>Exceptions in canvas</desc>
            <filename>Canvas-Exceptions.patch</filename>
            <type>text/plain</type>
            <size>12898</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDgtMDgtMTkgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBF
eGNlcHRpb25Db2RlIHRvIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cy4gVXBkYXRlZCBleGNp
c3Rpbmcgb25lcworICAgICAgICB0byBtYXRjaCBjdXJyZW50IHNwZWNpZmljYXRpb24uCisKKyAg
ICAgICAgQ2FudmFzIG1pc3NpbmcgZXhjZXB0aW9uY29kZSBmb3IgZ3JhZGllbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzNQorCisgICAgICAg
ICogaHRtbC9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFk
aWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50Lmg6Cisg
ICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKiBo
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAwOC0wOC0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYuCkluZGV4OiBXZWJDb3JlL2h0
bWwvQ2FudmFzR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDMwIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lk
IENhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Y29sb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaXNmaW5pdGUodmFsdWUpIHx8
IHZhbHVlIDwgMC4gfHwgdmFsdWUgPiAxLikgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZh
dWx0IGlzIHRyYW5zcGFyYW50IGJsYWNrCisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
cmdiYSwgY29sb3IpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7Cit9
CisKIENhbnZhc0dyYWRpZW50OjpDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwg
Y29uc3QgRmxvYXRQb2ludCYgcDEpCiAgICAgOiBtX2dyYWRpZW50KHAwLCBwMSkKIHsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9DYW52YXNHcmFkaWVudC5oCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvaHRtbC9DYW52
YXNHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKICAgICBjbGFzcyBDYW52YXNHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPENh
bnZhc0dyYWRpZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBv
aW50JiBwMSkKQEAgLTQ4LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAK
ICAgICAgICAgR3JhZGllbnQmIGdyYWRpZW50KCkgeyByZXR1cm4gbV9ncmFkaWVudDsgfQogCi0g
ICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9y
KSB7IG1fZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7IH0KKyAgICAgICAgdm9p
ZCBhZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgICAgICB2b2lkIGdldENvbG9yKGZsb2F0IHZhbHVlLCBmbG9hdCogciwgZmxvYXQq
IGcsIGZsb2F0KiBiLCBmbG9hdCogYSkgY29uc3QgeyBtX2dyYWRpZW50LmdldENvbG9yKHZhbHVl
LCByLCBnLCBiLCBhKTsgfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9u
IDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEltcGxlbWVudGF0aW9u
VVVJRD1hMjk0MmFlNi0yNzMxLTQyODYtOThjYy05ZDVlNzllMjBkZTEKICAgICBdIENhbnZhc0dy
YWRpZW50IHsKIAotICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChpbiBmbG9hdCBvZmZzZXQsIGlu
IERPTVN0cmluZyBjb2xvcik7CisgICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9m
ZnNldCwgaW4gRE9NU3RyaW5nIGNvbG9yKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOwogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBmbG9hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRMaW5lV2lkdGgoZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKCEod2lkdGgg
PiAwKSkKKyAgICBpZiAoISh3aWR0aCA+IDApIHx8ICFpc2Zpbml0ZSh3aWR0aCkpCiAgICAgICAg
IHJldHVybjsKICAgICBzdGF0ZSgpLm1fbGluZVdpZHRoID0gd2lkdGg7CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBmbG9hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1pdGVyTGltCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQogewotICAgIGlmICghKGxpbWl0
ID4gMCkpCisgICAgaWYgKCEobGltaXQgPiAwKSB8fCAhaXNmaW5pdGUobGltaXQpKQogICAgICAg
ICByZXR1cm47CiAgICAgc3RhdGUoKS5tX21pdGVyTGltaXQgPSBsaW1pdDsKICAgICBHcmFwaGlj
c0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtMzI5LDYgKzMyOSw4IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZShmbG8KICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOworICAg
IGlmICghaXNmaW5pdGUoc3gpIHx8ICFpc2Zpbml0ZShzeSkpCisgICAgICAgIHJldHVybjsKICAg
ICBjLT5zY2FsZShGbG9hdFNpemUoc3gsIHN5KSk7CiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybS5z
Y2FsZShzeCwgc3kpOwogICAgIG1fcGF0aC50cmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtKCkuc2Nh
bGUoMS4wL3N4LCAxLjAvc3kpKTsKQEAgLTMzOSw2ICszNDEsOCBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cm90YXRlKGZsCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2lu
Z0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWlzZmlu
aXRlKGFuZ2xlSW5SYWRpYW5zKSkKKyAgICAgICAgcmV0dXJuOwogICAgIGMtPnJvdGF0ZShhbmds
ZUluUmFkaWFucyk7CiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybS5yb3RhdGUoYW5nbGVJblJhZGlh
bnMgLyBwaURvdWJsZSAqIDE4MC4wKTsKICAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5z
Zm9ybSgpLnJvdGF0ZSgtYW5nbGVJblJhZGlhbnMgLyBwaURvdWJsZSAqIDE4MC4wKSk7CkBAIC0z
NDksNiArMzUzLDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0ZQog
ICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQog
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFpc2Zpbml0ZSh0eCkgfHwgIWlzZmluaXRlKHR5KSkK
KyAgICAgICAgcmV0dXJuOwogICAgIGMtPnRyYW5zbGF0ZSh0eCwgdHkpOwogICAgIHN0YXRlKCku
bV90cmFuc2Zvcm0udHJhbnNsYXRlKHR4LCB0eSk7CiAgICAgbV9wYXRoLnRyYW5zZm9ybShBZmZp
bmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXR4LCAtdHkpKTsKQEAgLTk5Miw5ICs5OTgsMTMgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogCiAgICAgZWMgPSAwOwog
CisgICAgaWYgKCFpbWFnZS0+Y29tcGxldGUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRmxvYXRSZWN0IGltYWdlUmVj
dCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoaW1hZ2UpKTsKLSAgICBpZiAoIShpbWFn
ZVJlY3QuY29udGFpbnMoc3JjUmVjdCkgJiYgc3JjUmVjdC53aWR0aCgpID49IDAgJiYgc3JjUmVj
dC5oZWlnaHQoKSA+PSAwIAotICAgICAgICAgICAgJiYgZHN0UmVjdC53aWR0aCgpID49IDAgJiYg
ZHN0UmVjdC5oZWlnaHQoKSA+PSAwKSkgeworICAgIGlmIChzcmNSZWN0LndpZHRoKCkgPT0gMCB8
fCBzcmNSZWN0LmhlaWdodCgpID09IDAgfHwgIWltYWdlUmVjdC5jb250YWlucyhzcmNSZWN0KSkg
ewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTA0MSw4ICsxMDUxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZQogICAgIGVjID0gMDsKIAogICAgIEZsb2F0UmVjdCBzcmNDYW52YXNSZWN0ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY2FudmFzLT5zaXplKCkpOwotICAgIGlmICghKHNyY0NhbnZhc1Jl
Y3QuY29udGFpbnMoc3JjUmVjdCkgJiYgc3JjUmVjdC53aWR0aCgpID49IDAgJiYgc3JjUmVjdC5o
ZWlnaHQoKSA+PSAwIAotICAgICAgICAgICAgJiYgZHN0UmVjdC53aWR0aCgpID49IDAgJiYgZHN0
UmVjdC5oZWlnaHQoKSA+PSAwKSkgeworICAgIGlmIChzcmNSZWN0LndpZHRoKCkgPT0gMCB8fCBz
cmNSZWN0LmhlaWdodCgpID09IDAgfHwgIXNyY0NhbnZhc1JlY3QuY29udGFpbnMoc3JjUmVjdCkp
IHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTExMDksMTMgKzExMTgsMjkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dENvbXBvcwogICAgIHNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogfQog
Ci1QYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNy
ZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkx
KQorUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5
MSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmlu
aXRlKHkwKSB8fCAhaXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5MSkpIHsKKyAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0
dXJuIENhbnZhc0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50
KHgxLCB5MSkpOwogfQogCi1QYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxv
YXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpCitQYXNzUmVmUHRyPENhbnZhc0dy
YWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZs
b2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zpbml0
ZSh5MCkgfHwgIWlzZmluaXRlKHIwKSB8fCAKKyAgICAgICAgIWlzZmluaXRlKHgxKSB8fCAhaXNm
aW5pdGUoeTEpIHx8ICFpc2Zpbml0ZShyMSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHIwIDwgMCB8fCByMSA8
IDApIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgcmV0dXJuIENhbnZhc0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwg
eTApLCByMCwgRmxvYXRQb2ludCh4MSwgeTEpLCByMSk7CiB9CiAKQEAgLTExNTEsNiArMTE3Niwx
MiBAQCBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluCiAgICAgQ2FudmFz
UGF0dGVybjo6cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVwZWF0WCwgcmVw
ZWF0WSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWNh
bnZhcy0+d2lkdGgoKSB8fCAhY2FudmFzLT5oZWlnaHQoKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gQ2Fu
dmFzUGF0dGVybjo6Y3JlYXRlKGNhbnZhcy0+YnVmZmVyKCktPmltYWdlKCksIHJlcGVhdFgsIHJl
cGVhdFksIGNhbnZhcy0+b3JpZ2luQ2xlYW4oKSk7CiB9CiAKQEAgLTEyMjcsOCArMTI1OCwxNiBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUVtcHR5CiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNyZWF0ZUltYWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0CitQYXNzUmVmUHRyPElt
YWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJbWFnZURhdGEoZmxvYXQg
c3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKKyAgICBpZiAoIWlzZmlu
aXRlKHN3KSB8fCAhaXNmaW5pdGUoc2gpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoc3cgPT0gMCB8fCBzaCA9PSAw
KSB7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KICAgICBGbG9hdFNpemUgdW5zY2FsZWRTaXplKHN3LCBzaCk7CiAgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gbV9jYW52YXMtPmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsK
ICAgICBpZiAoc2NhbGVkU2l6ZS53aWR0aCgpIDwgMSkKQEAgLTEyNDUsNyArMTI4NCwxNCBAQCBQ
YXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisgICAgaWYgKCFpc2Zp
bml0ZShzeCkgfHwgIWlzZmluaXRlKHN5KSB8fCAhaXNmaW5pdGUoc3cpIHx8ICFpc2Zpbml0ZShz
aCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIGlmIChzdyA9PSAwIHx8IHNoID09IDApIHsKKyAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIEZsb2F0UmVjdCB1bnNj
YWxlZFJlY3Qoc3gsIHN5LCBzdywgc2gpOwogICAgIEludFJlY3Qgc2NhbGVkUmVjdCA9IG1fY2Fu
dmFzLT5jb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2NhbGVkUmVjdCk7CiAgICAgaWYgKHNjYWxl
ZFJlY3Qud2lkdGgoKSA8IDEpCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDEyICsxNjQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnN0IFN0
cmluZyYpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVh
ckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKLSAgICAg
ICAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQg
eDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7Cisg
ICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZs
b2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRpb25Db2RlJiBlYyk7
CisgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZVJhZGlhbEdyYWRpZW50
KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQg
cjEsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJu
PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRp
b25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVy
bj4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRp
dGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgCi0gICAgICAgIFBhc3NSZWZQdHI8
SW1hZ2VEYXRhPiBjcmVhdGVJbWFnZURhdGEoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgY29u
c3Q7CisgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVJbWFnZURhdGEoZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgICAgICBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQg
c3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHV0SW1h
Z2VEYXRhKEltYWdlRGF0YSosIGZsb2F0IGR4LCBmbG9hdCBkeSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEqLCBmbG9hdCBkeCwgZmxvYXQgZHks
IGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0
eUhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9odG1sL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDEwIEBA
IG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGdsb2JhbEFscGhhOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0aW9uOwogCi0gICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVh
ckdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBmbG9hdCB5MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0
IHkxKTsKLSAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoaW4gZmxv
YXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCByMCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkx
LCBpbiBmbG9hdCByMSk7CisgICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRp
ZW50KGluIGZsb2F0IHgwLCBpbiBmbG9hdCB5MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxKQor
ICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBDYW52YXNHcmFkaWVu
dCBjcmVhdGVSYWRpYWxHcmFkaWVudChpbiBmbG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0
IHIwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEsIGluIGZsb2F0IHIxKQorICAgICAgICAgICAg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBsaW5lV2lk
dGg7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBsaW5lQ2FwOwpAQCAtMTAyLDcgKzEwNCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7CiAgICAgICAgIAogICAgICAgICAvLyBw
aXhlbCBtYW5pcHVsYXRpb24KLSAgICAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShpbiBm
bG9hdCBzdywgaW4gZmxvYXQgc2gpOworICAgICAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRh
KGluIGZsb2F0IHN3LCBpbiBmbG9hdCBzaCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKGluIGZsb2F0IHN4LCBpbiBmbG9h
dCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdl
RGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0
eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlI
ZWlnaHRdICovKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAJ
KHJldmlzaW9uIDM1ODI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSwxMCBAQCBib29sIEZsb2F0UmVjdDo6aW50
ZXJzZWN0cyhjb25zdCBGbG9hdFJlCiAKIGJvb2wgRmxvYXRSZWN0Ojpjb250YWlucyhjb25zdCBG
bG9hdFJlY3QmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiB4KCkgPD0gb3RoZXIueCgpICYm
IHJpZ2h0KCkgPj0gb3RoZXIucmlnaHQoKQotICAgICAgICAmJiB5KCkgPD0gb3RoZXIueSgpICYm
IGJvdHRvbSgpID49IG90aGVyLmJvdHRvbSgpOworICAgIHJldHVybiBtaW4oeCgpLCB4KCkgKyB3
aWR0aCgpKSA8PSBtaW4ob3RoZXIueCgpLCBvdGhlci54KCkgKyBvdGhlci53aWR0aCgpKQorICAg
ICAgICAmJiBtaW4oeSgpLCB5KCkgKyBoZWlnaHQoKSkgPD0gbWluKG90aGVyLnkoKSwgb3RoZXIu
eSgpICsgb3RoZXIuaGVpZ2h0KCkpCisgICAgICAgICYmIG1heCh4KCksIHgoKSArIHdpZHRoKCkp
ID49IG1heChvdGhlci54KCksIG90aGVyLngoKSArIG90aGVyLndpZHRoKCkpCisgICAgICAgICYm
IG1heCh5KCksIHkoKSArIGhlaWdodCgpKSA+PSBtYXgob3RoZXIueSgpLCBvdGhlci55KCkgKyBv
dGhlci5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgRmxvYXRSZWN0OjppbnRlcnNlY3QoY29uc3QgRmxv
YXRSZWN0JiBvdGhlcikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22897</attachid>
            <date>2008-08-20 12:33:18 -0700</date>
            <delta_ts>2008-09-03 06:20:21 -0700</delta_ts>
            <desc>drawImage() update</desc>
            <filename>Canvas-drawImage.patch</filename>
            <type>text/plain</type>
            <size>4860</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTg1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDgtMjAgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IGRyYXdJbWFnZSgpIGluIENhbnZhcyB0byB0aGUgYWN0dWFsIFNwZWNpZmljYXRpb24KKyAgICAg
ICAgb2YgQ2FudmFzLgorCisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdFJlY3Q6OmNvbnRhaW5zKToKKwogMjAwOC0wOC0yMCAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkcyBhIHBvc2l0b24gYm94
IHRvIHRoZSBJbnNwZWN0b3IncyBNZXRyaWNzIHNpZGViYXIKSW5kZXg6IFdlYkNvcmUvaHRtbC9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAzNTgyNSkKKysrIFdlYkNvcmUv
aHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTMs
MTMgKzk5MywxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAg
ICAgZWMgPSAwOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIHNpemUoaW1hZ2UpKTsKLSAgICBpZiAoIShpbWFnZVJlY3QuY29udGFpbnMoc3JjUmVj
dCkgJiYgc3JjUmVjdC53aWR0aCgpID49IDAgJiYgc3JjUmVjdC5oZWlnaHQoKSA+PSAwIAotICAg
ICAgICAgICAgJiYgZHN0UmVjdC53aWR0aCgpID49IDAgJiYgZHN0UmVjdC5oZWlnaHQoKSA+PSAw
KSkgeworICAgIGlmICghaW1hZ2VSZWN0LmNvbnRhaW5zKHNyY1JlY3QpIHx8IHNyY1JlY3Qud2lk
dGgoKSA9PSAwIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMCkgewogICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHNyY1JlY3QuaXNF
bXB0eSgpIHx8IGRzdFJlY3QuaXNFbXB0eSgpKQorICAgIGlmICghc3JjUmVjdC53aWR0aCgpIHx8
ICFzcmNSZWN0LmhlaWdodCgpIHx8ICFkc3RSZWN0LndpZHRoKCkgfHwgIWRzdFJlY3QuaGVpZ2h0
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdD
b250ZXh0KCk7CkBAIC0xMDQxLDEzICsxMDQwLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3SW1hZ2UKICAgICBlYyA9IDA7CiAKICAgICBGbG9hdFJlY3Qgc3JjQ2FudmFz
UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNhbnZhcy0+c2l6ZSgpKTsKLSAgICBpZiAo
IShzcmNDYW52YXNSZWN0LmNvbnRhaW5zKHNyY1JlY3QpICYmIHNyY1JlY3Qud2lkdGgoKSA+PSAw
ICYmIHNyY1JlY3QuaGVpZ2h0KCkgPj0gMCAKLSAgICAgICAgICAgICYmIGRzdFJlY3Qud2lkdGgo
KSA+PSAwICYmIGRzdFJlY3QuaGVpZ2h0KCkgPj0gMCkpIHsKKyAgICBpZiAoIXNyY0NhbnZhc1Jl
Y3QuY29udGFpbnMoc3JjUmVjdCkgfHwgc3JjUmVjdC53aWR0aCgpID09IDAgfHwgc3JjUmVjdC5o
ZWlnaHQoKSA9PSAwKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoc3JjUmVjdC5pc0VtcHR5KCkgfHwgZHN0UmVjdC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFzcmNSZWN0LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVpZ2h0KCkgfHwg
IWRzdFJlY3Qud2lkdGgoKSB8fCAhZHN0UmVjdC5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAJKHJldmlzaW9uIDM1ODI1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw4ICs1NSw4IEBAIGJvb2wgRmxvYXRSZWN0OjppbnRlcnNlY3RzKGNvbnN0IEZsb2F0UmUKIAog
Ym9vbCBGbG9hdFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UmVjdCYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHgoKSA8PSBvdGhlci54KCkgJiYgcmlnaHQoKSA+PSBvdGhlci5yaWdodCgp
Ci0gICAgICAgICYmIHkoKSA8PSBvdGhlci55KCkgJiYgYm90dG9tKCkgPj0gb3RoZXIuYm90dG9t
KCk7CisgICAgcmV0dXJuIG1pbih4KCksIHJpZ2h0KCkpIDw9IG1pbihvdGhlci54KCksIG90aGVy
LnJpZ2h0KCkpICYmIG1heCh4KCksIHJpZ2h0KCkpID49IG1heChvdGhlci54KCksIG90aGVyLnJp
Z2h0KCkpCisgICAgICAgICYmIG1pbih5KCksIGJvdHRvbSgpKSA8PSBtaW4ob3RoZXIueSgpLCBv
dGhlci5ib3R0b20oKSkgJiYgbWF4KHkoKSwgYm90dG9tKCkpID49IG1heChvdGhlci55KCksIG90
aGVyLmJvdHRvbSgpKTsKIH0KIAogdm9pZCBGbG9hdFJlY3Q6OmludGVyc2VjdChjb25zdCBGbG9h
dFJlY3QmIG90aGVyKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzU4NTkpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAwOC0wOC0yMCAgRGly
ayBTY2h1bHplICA8dmJzODVAZ214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVkaXRlZCBUZXN0Y2FzZSBmb3IgZHJhd0ltYWdlLiBOZWdhdGl2
ZSByZWN0cyBhcmUgYWxsb3dlZCBub3cuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9kcmF3SW1h
Z2Utd2l0aC1pbnZhbGlkLWFyZ3MuaHRtbDoKKwogMjAwOC0wOC0xOSAgY2hyaXMgZmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2RyYXdJbWFnZS13aXRoLWludmFsaWQtYXJn
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZHJh
d0ltYWdlLXdpdGgtaW52YWxpZC1hcmdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzU4MjUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9kcmF3SW1hZ2Utd2l0aC1pbnZhbGlkLWFyZ3MtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNiBAQCBQQVNTOiBpbWFnZSBhcmd1
bWVudCBwbHVzIDQgbnVtYmVycwogUEFTUzogaW1hZ2UgYXJndW1lbnQgcGx1cyA4IG51bWJlcnMK
IFBBU1M6IGltYWdlIGFyZ3VtZW50IHBsdXMgemVybyBzaXplCiBQQVNTOiBpbWFnZSBhcmd1bWVu
dCBwbHVzIDggbnVtYmVycywgemVybyBzaXplCi1QQVNTOiBpbWFnZSBhcmd1bWVudCBwbHVzIDgg
bnVtYmVycywgbmVnYXRpdmUgc2l6ZSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAogUEFTUzog
bnVsbCBpbWFnZSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAogUEFTUzogbnVsbCBpbWFnZSwg
Z290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAogUEFTUzogbnVsbCBpbWFnZSwgZ290IGV4Y2VwdGlv
biBhcyBleHBlY3RlZApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZHJhd0ltYWdlLXdp
dGgtaW52YWxpZC1hcmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvZHJhd0ltYWdlLXdpdGgtaW52YWxpZC1hcmdzLmh0bWwJKHJldmlzaW9uIDM1ODI1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZHJhd0ltYWdlLXdpdGgtaW52YWxpZC1hcmdzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSw2IEBACiAgICAgICAgICAgICBwcmludCgiRkFJ
TCIpOwogICAgICAgICB9CiAgICAgICAgIHRyeXsKLSAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uo
bXlJbWFnZSwgMCwgMCwgMjAsIDIwLCAwLCAwLCAtMSwgMCk7Ci0gICAgICAgICAgICBwcmludCgi
RkFJTCIpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBwcmludCgiUEFTUzog
aW1hZ2UgYXJndW1lbnQgcGx1cyA4IG51bWJlcnMsIG5lZ2F0aXZlIHNpemUsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQiKTsKLSAgICAgICAgfQotICAgICAgICB0cnl7CiAgICAgICAgICAgICBj
dHguZHJhd0ltYWdlKG51bGwpOwogICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKICAgICAgICAg
fSBjYXRjaCAoZSkgewoK
</data>
<flag name="review"
          id="10183"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23140</attachid>
            <date>2008-09-03 06:20:21 -0700</date>
            <delta_ts>2008-09-05 12:18:06 -0700</delta_ts>
            <desc>Canvas gradients exceptions</desc>
            <filename>Canvas-Gradients-exception.patch</filename>
            <type>text/plain</type>
            <size>21850</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjA1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMDMgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBl
eGNlcHRpb24gY29kZXMgdG8gY2FudmFzIGdyYWRpZW50cyB0byBtYXRjaCBjdXJyZW50CisgICAg
ICAgIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgQ2FudmFzIG1pc3NpbmcgZXhjZXB0aW9uY29k
ZSBmb3IgZ3JhZGllbnRzCisgICAgICAgIFtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MzVdCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2dyYWRpZW50LWFk
ZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9j
YW52YXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5odG1sCisKKyAgICAg
ICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBo
dG1sL0NhbnZhc0dyYWRpZW50Lmg6CisgICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5pZGw6
CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlh
bEdyYWRpZW50KToKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgor
ICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAwOC0wOC0y
OCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFjaWVqLgpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuY3BwCShyZXZpc2lvbiAzNjA1
NCkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbnZhc0dy
YWRpZW50LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgog
CkBAIC00MSw0ICs0NCwyMCBAQCBDYW52YXNHcmFkaWVudDo6Q2FudmFzR3JhZGllbnQoY29uc3Qg
RmxvCiB7CiB9CiAKK3ZvaWQgQ2FudmFzR3JhZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBjb2xvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFp
c2Zpbml0ZSh2YWx1ZSkgfHwgdmFsdWUgPCAwLiB8fCB2YWx1ZSA+IDEuKSB7CisgICAgICAgIGVj
ID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSR0JBMzIg
cmdiYSA9IDA7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh2YWx1ZSwgY29sb3IpOworfQorCiB9IC8vbmFtZXNw
YWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaAkocmV2aXNpb24gMzYwNTQpCisrKyBXZWJDb3Jl
L2h0bWwvQ2FudmFzR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHJpbmc7CiAKKyAgICB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOworCiAgICAgY2xhc3MgQ2FudmFzR3JhZGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxDYW52YXNHcmFkaWVudD4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBwMCwgY29u
c3QgRmxvYXRQb2ludCYgcDEpCkBAIC00OCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIEdyYWRpZW50KiBncmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhZGllbnQuZ2V0KCk7IH0KIAotICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBjb2xvcikgeyBtX2dyYWRpZW50LT5hZGRDb2xvclN0b3AodmFsdWUs
IGNvbG9yKTsgfQorICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBjb2xvciwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgZ2V0Q29sb3Io
ZmxvYXQgdmFsdWUsIGZsb2F0KiByLCBmbG9hdCogZywgZmxvYXQqIGIsIGZsb2F0KiBhKSBjb25z
dCB7IG1fZ3JhZGllbnQtPmdldENvbG9yKHZhbHVlLCByLCBnLCBiLCBhKTsgfQogCkluZGV4OiBX
ZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9DYW52YXNHcmFkaWVudC5pZGwJKHJldmlzaW9uIDM2MDU0KQorKysgV2ViQ29yZS9odG1sL0Nh
bnZhc0dyYWRpZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJRD1hMjk0MmFlNi0yNzMxLTQyODYtOThj
Yy05ZDVlNzllMjBkZTEKICAgICBdIENhbnZhc0dyYWRpZW50IHsKIAotICAgICAgICB2b2lkIGFk
ZENvbG9yU3RvcChpbiBmbG9hdCBvZmZzZXQsIGluIERPTVN0cmluZyBjb2xvcik7CisgICAgICAg
IHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9mZnNldCwgaW4gRE9NU3RyaW5nIGNvbG9yKQor
ICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgfTsKIApJbmRleDogV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDM2MDU0KQor
KysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk5OCwxMyArOTk4LDIzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRDb21wb3MKICAgICBzZXRHbG9iYWxDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIH0K
IAotUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5
MSkKK1Bhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQg
eTEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zp
bml0ZSh5MCkgfHwgIWlzZmluaXRlKHgxKSB8fCAhaXNmaW5pdGUoeTEpKSB7CisgICAgICAgIGVj
ID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJl
dHVybiBDYW52YXNHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoeDAsIHkwKSwgRmxvYXRQb2lu
dCh4MSwgeTEpKTsKIH0KIAotUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZs
b2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKQorUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudChm
bG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIx
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIWlzZmluaXRlKHgwKSB8fCAhaXNmaW5p
dGUoeTApIHx8ICFpc2Zpbml0ZShyMCkgfHwgCisgICAgICAgICFpc2Zpbml0ZSh4MSkgfHwgIWlz
ZmluaXRlKHkxKSB8fCAhaXNmaW5pdGUocjEpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gQ2FudmFzR3JhZGll
bnQ6OmNyZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIHIwLCBGbG9hdFBvaW50KHgxLCB5MSksIHIx
KTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2
aXNpb24gMzYwNTQpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NCw4ICsxNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29uc3QgU3RyaW5nJik7CiAKLSAg
ICAgICAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxv
YXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwotICAgICAgICBQYXNzUmVmUHRy
PENhbnZhc0dyYWRpZW50PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAs
IGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0
IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0
IHkwLCBmbG9hdCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IGNyZWF0ZVBhdHRlcm4oSFRN
TEltYWdlRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhU
TUxDYW52YXNFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsCShyZXZpc2lvbiAzNjA1NCkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0NiwxMCBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBnbG9iYWxBbHBoYTsKICAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbjsKIAotICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVu
dChpbiBmbG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSk7Ci0g
ICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGluIGZsb2F0IHgwLCBp
biBmbG9hdCB5MCwgaW4gZmxvYXQgcjAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSwgaW4gZmxv
YXQgcjEpOworICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVudChpbiBm
bG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHgxLCBpbiBmbG9hdCB5MSkKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgQ2FudmFzR3JhZGllbnQgY3JlYXRl
UmFkaWFsR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCByMCwgaW4g
ZmxvYXQgeDEsIGluIGZsb2F0IHkxLCBpbiBmbG9hdCByMSkKKyAgICAgICAgICAgIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgbGluZVdpZHRoOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbGluZUNh
cDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MDU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMDktMDMgIERpcmsgU2NodWx6ZSAg
PHZiczg1QGdteC5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBuZXcgdGVzdHMgdG8gY2hlY2sgYmVoYXZpb3Igb2YgY2FudmFzIGdyYWRp
ZW50cyAgdG8gaW5maW5pdGUgdmFsdWVzLgorCisgICAgICAgICogZmFzdC9jYW52YXMvZ3JhZGll
bnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQt
Y29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvbGluZWFyR3JhZGllbnQt
aW5maW5pdGUtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZh
bHVlcy5odG1sOiBBZGRlZC4KKwogMjAwOC0wOS0wMiAgUm9iZXJ0IEJsYXV0ICA8d2Via2l0QGJs
YXV0LmJpej4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29s
b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dy
YWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9w
LXdpdGgtaW52YWxpZC1jb2xvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorVGhpcyB0ZXN0IGNoZWNrcyBiZWhhdmlvciBvZiBpbnZhbGlkIGNvbG9ycyB0byBDYW52
YXM6OmRyYXdJbWFnZS4KKworUEFTUzogYW4gZW1wdHkgYXJndW1lbnQgaW4gJycsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IHRvb2sgJyNjYycgYXMgYXJndW1lbnQgZm9yIGNvbG9y
LCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiB0b29rICdyZ2IoMjU3LCAwKScgYXMg
YXJndW1lbnQgZm9yIGNvbG9yLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitUZXN0IGNvbXBs
ZXRlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9w
LXdpdGgtaW52YWxpZC1jb2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3Rv
cC13aXRoLWludmFsaWQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAor
PGJvZHkgb25sb2FkPSJkcmF3KCk7Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3MgYmVoYXZpb3Igb2Yg
aW52YWxpZCBjb2xvcnMgdG8gZ3JhZGllbnQuYWRkQ29sb3JTdG9wPC9wPgorPHAgaWQ9InJlc3Vs
dCI+PC9wPgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PC9j
YW52YXM+Cis8c2NyaXB0PgorCisgICAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IGxpbmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQobGluZSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZHJhdygpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nh
bnZhcycpLmdldENvbnRleHQoJzJkJyk7CisgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVh
dGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxNTAsIDApOworCisgICAgICAgIC8vIGRyYXcgZ3JhZGll
bnQKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICIi
KTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgIHByaW50KCJQQVNTOiBhbiBlbXB0eSBhcmd1bWVudCBpbiAnJywgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAg
IGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAiI2NjIik7CisgICAgICAgICAgICBwcmludCgiRkFJ
TCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogdG9v
ayAnI2NjJyBhcyBhcmd1bWVudCBmb3IgY29sb3IsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQi
KTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICBncmFkaWVudC5hZGRDb2xv
clN0b3AoMCwgInJnYigyNTcsIDApIik7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogdG9vayAncmdiKDI1
NywgMCknIGFzIGFyZ3VtZW50IGZvciBjb2xvciwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIp
OworICAgICAgICB9CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAnZ3JlZW4nOworICAgICAgICBj
dHguZmlsbFJlY3QoMCwwLDE1MCwxNTApOworCisgICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRl
LiIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRl
LXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIGJlaGF2aW9yIG9mIGluZmlu
aXRlIHZhbHVlcyB0byBjcmVhdGVMaW5lYXJHcmFkaWVudAorCitQQVNTOiBhIE5hTiB2YWx1ZSBm
b3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUg
Zm9yIHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1
ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgTmFOIHZhbHVlIGZv
ciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBm
b3IgeDEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVl
IGZvciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9y
IHkwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZv
ciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUg
Zm9yIHkwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3Ig
eDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9y
IHgwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBm
b3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1Rlc3QgY29tcGxldGUuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJHcmFkaWVudC1p
bmZpbml0ZS12YWx1ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDk4IEBACis8Ym9keSBvbmxvYWQ9ImRyYXcoKTsiPgorPHA+VGhpcyB0ZXN0IGNoZWNr
cyBiZWhhdmlvciBvZiBpbmZpbml0ZSB2YWx1ZXMgdG8gY3JlYXRlTGluZWFyR3JhZGllbnQ8L3A+
Cis8cCBpZD0icmVzdWx0Ij48L3A+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxNTAiIGhl
aWdodD0iMTUwIj48L2NhbnZhcz4KKzxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBwcmludChtZXNz
YWdlKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBl
bmRDaGlsZChsaW5lKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3KCkgeworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworICAgICAgICAvLyBkcmF3
IGdyYWRpZW50CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5j
cmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIE5hTik7CisgICAgICAgICAgICBwcmludCgi
RkFJTCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzog
YSBOYU4gdmFsdWUgZm9yIHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAg
IH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxp
bmVhckdyYWRpZW50KDAsIDAsIDEwMCwgSW5maW5pdHkpOworICAgICAgICAgICAgcHJpbnQoIkZB
SUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEg
SW5maW5pdHkgdmFsdWUgZm9yIHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0
ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEwMCwgLUluZmluaXR5KTsKKyAgICAgICAgICAgIHByaW50
KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNT
OiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsK
KyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHgu
Y3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgTmFOLCAxMDApOworICAgICAgICAgICAgcHJpbnQo
IkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6
IGEgTmFOIHZhbHVlIGZvciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAg
ICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVM
aW5lYXJHcmFkaWVudCgwLCAwLCBJbmZpbml0eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJG
QUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBh
IEluZmluaXR5IHZhbHVlIGZvciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAg
ICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVh
dGVMaW5lYXJHcmFkaWVudCgwLCAwLCAtSW5maW5pdHksIDEwMCk7CisgICAgICAgICAgICBwcmlu
dCgiRkFJTCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFT
UzogYSAtSW5maW5pdHkgdmFsdWUgZm9yIHgxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7
CisgICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4
LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIE5hTiwgMTAwLCAxMDApOworICAgICAgICAgICAgcHJp
bnQoIkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBB
U1M6IGEgTmFOIHZhbHVlIGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAg
ICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVh
dGVMaW5lYXJHcmFkaWVudCgwLCBJbmZpbml0eSwgMTAwLCAxMDApOworICAgICAgICAgICAgcHJp
bnQoIkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBB
U1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHkwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7
CisgICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4
LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIC1JbmZpbml0eSwgMTAwLCAxMDApOworICAgICAgICAg
ICAgcHJpbnQoIkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJp
bnQoIlBBU1M6IGEgLUluZmluaXR5IHZhbHVlIGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBl
Y3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVu
dCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudChOYU4sIDAsIDEwMCwgMTAwKTsKKyAgICAgICAg
ICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHBy
aW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQi
KTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBj
dHguY3JlYXRlTGluZWFyR3JhZGllbnQoSW5maW5pdHksIDAsIDEwMCwgMTAwKTsKKyAgICAgICAg
ICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHBy
aW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB4MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBl
Y3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVu
dCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgtSW5maW5pdHksIDAsIDEwMCwgMTAwKTsKKyAg
ICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24g
YXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRl
LiIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRl
LXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxIEBACitUaGlzIHRlc3QgY2hlY2tzIGJlaGF2aW9yIG9mIGluZmlu
aXRlIHZhbHVlcyB0byBjcmVhdFJhZGlhbEdyYWRpZW50CisKK1BBU1M6IGEgTmFOIHZhbHVlIGZv
ciByMSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBm
b3IgcjEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVl
IGZvciByMSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9y
IHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZv
ciB5MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUg
Zm9yIHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3Ig
eDEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9y
IHgxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBm
b3IgeDEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgTmFOIHZhbHVlIGZvciBy
MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBmb3Ig
cjAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVlIGZv
ciByMCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9yIHkw
LCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB5
MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUgZm9y
IHkwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDAs
IGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHgw
LCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3Ig
eDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQKK1Rlc3QgY29tcGxldGUuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yYWRpYWxHcmFkaWVudC1pbmZp
bml0ZS12YWx1ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzOSBAQAorPGJvZHkgb25sb2FkPSJkcmF3KCk7Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3Mg
YmVoYXZpb3Igb2YgaW5maW5pdGUgdmFsdWVzIHRvIGNyZWF0UmFkaWFsR3JhZGllbnQ8L3A+Cis8
cCBpZD0icmVzdWx0Ij48L3A+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxNTAiIGhlaWdo
dD0iMTUwIj48L2NhbnZhcz4KKzxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRD
aGlsZChsaW5lKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3KCkgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworICAgICAgICAvLyB0ZXN0IHIx
CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRp
YWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIDAsIE5hTik7CisgICAgICAgICAgICBwcmludCgiRkFJ
TCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogYSBO
YU4gdmFsdWUgZm9yIHIxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0K
KyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlh
bEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgMCwgSW5maW5pdHkpOworICAgICAgICAgICAgcHJpbnQo
IkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6
IGEgSW5maW5pdHkgdmFsdWUgZm9yIHIxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7Cisg
ICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNy
ZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgMCwgLUluZmluaXR5KTsKKyAgICAgICAg
ICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHBy
aW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgcjEsIGdvdCBleGNlcHRpb24gYXMgZXhw
ZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHkxCisgICAgICAgIHRyeXsKKyAg
ICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAx
MDAsIDAsIE5hTiwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeTEs
IGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7Cisg
ICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwg
MTAwLCAwLCBJbmZpbml0eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZh
bHVlIGZvciB5MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAg
ICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFk
aWVudCgwLCAwLCAxMDAsIDAsIC1JbmZpbml0eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJG
QUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBh
IC1JbmZpbml0eSB2YWx1ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAg
ICAgICAgfQorICAgICAgICAvLyB0ZXN0IHgxCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZh
ciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIE5hTiwgMCwg
MTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDEsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2
YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCBJbmZpbml0
eSwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB4MSwg
Z290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAg
ICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAx
MDAsIC1JbmZpbml0eSwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2
YWx1ZSBmb3IgeDEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAg
ICAgICAvLyB0ZXN0IHIwCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9
IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCBOYU4sIDAsIDAsIDEwMCk7CisgICAgICAg
ICAgICBwcmludCgiRkFJTCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBw
cmludCgiUEFTUzogYSBOYU4gdmFsdWUgZm9yIHIwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVk
Iik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0g
Y3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIEluZmluaXR5LCAwLCAwLCAxMDApOworICAg
ICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgcHJpbnQoIlBBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHIwLCBnb3QgZXhjZXB0aW9uIGFz
IGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdy
YWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIC1JbmZpbml0eSwgMCwgMCwg
MTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgcjAsIGdvdCBl
eGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHkwCisg
ICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxH
cmFkaWVudCgwLCBOYU4sIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlM
Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5h
TiB2YWx1ZSBmb3IgeTAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQor
ICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFs
R3JhZGllbnQoMCwgSW5maW5pdHksIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50
KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNT
OiBhIEluZmluaXR5IHZhbHVlIGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOwor
ICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5j
cmVhdGVSYWRpYWxHcmFkaWVudCgwLCAtSW5maW5pdHksIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAg
ICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeTAsIGdvdCBleGNlcHRpb24gYXMg
ZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHgwCisgICAgICAgIHRyeXsK
KyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChOYU4s
IDAsIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3Ig
eDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7
CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoSW5m
aW5pdHksIDAsIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7Cisg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5
IHZhbHVlIGZvciB4MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9Cisg
ICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxH
cmFkaWVudCgtSW5maW5pdHksIDAsIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50
KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNT
OiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsK
KyAgICAgICAgfQorCisgICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRlLiIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorCg==
</data>
<flag name="review"
          id="10299"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23197</attachid>
            <date>2008-09-05 12:18:06 -0700</date>
            <delta_ts>2008-09-13 03:48:39 -0700</delta_ts>
            <desc>Canvas Gradients exception</desc>
            <filename>Canvas-Gradients-exception.patch</filename>
            <type>text/plain</type>
            <size>21835</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjExMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMDUgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBl
eGNlcHRpb24gY29kZXMgdG8gY2FudmFzIGdyYWRpZW50cyB0byBtYXRjaCBjdXJyZW50CisgICAg
ICAgIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgQ2FudmFzIG1pc3NpbmcgZXhjZXB0aW9uY29k
ZSBmb3IgZ3JhZGllbnRzCisgICAgICAgIFtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MzVdCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2dyYWRpZW50LWFk
ZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9j
YW52YXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5odG1sCisKKyAgICAg
ICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBo
dG1sL0NhbnZhc0dyYWRpZW50Lmg6CisgICAgICAgICogaHRtbC9DYW52YXNHcmFkaWVudC5pZGw6
CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlh
bEdyYWRpZW50KToKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgor
ICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAwOC0wOS0w
NSAgRGlyayBTY2h1bHplICA8dmJzODVAZ214LmRlPgogCiAgICAgICAgIEd0ayBidWlsZCBmaXgK
SW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmNwcAkocmV2aXNpb24gMzYxMTIpCisrKyBXZWJDb3Jl
L2h0bWwvQ2FudmFzR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKIApAQCAtNDEsNCArNDQs
MjAgQEAgQ2FudmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsbwogewogfQogCit2
b2lkIENhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgY29sb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaXNmaW5pdGUodmFsdWUp
IHx8IHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEuMGYpIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJHQkEzMiByZ2JhID0gMDsKKyAg
ICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpIHsKKyAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHZhbHVlLCBjb2xvcik7Cit9CisKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdl
YkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9D
YW52YXNHcmFkaWVudC5oCShyZXZpc2lvbiAzNjExMikKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNH
cmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKICAgICBjbGFzcyBDYW52YXNHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZh
c0dyYWRpZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXNHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50
JiBwMSkKQEAgLTQ4LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAg
ICAgICAgR3JhZGllbnQqIGdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudC5nZXQo
KTsgfQogCi0gICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJp
bmcmIGNvbG9yKSB7IG1fZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh2YWx1ZSwgY29sb3IpOyB9Cisg
ICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9y
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCBnZXRDb2xvcihmbG9hdCB2YWx1ZSwg
ZmxvYXQqIHIsIGZsb2F0KiBnLCBmbG9hdCogYiwgZmxvYXQqIGEpIGNvbnN0IHsgbV9ncmFkaWVu
dC0+Z2V0Q29sb3IodmFsdWUsIHIsIGcsIGIsIGEpOyB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9D
YW52YXNHcmFkaWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRp
ZW50LmlkbAkocmV2aXNpb24gMzYxMTIpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgSW1wbGVtZW50YXRpb25VVUlEPWEyOTQyYWU2LTI3MzEtNDI4Ni05OGNjLTlkNWU3OWUyMGRl
MQogICAgIF0gQ2FudmFzR3JhZGllbnQgewogCi0gICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGlu
IGZsb2F0IG9mZnNldCwgaW4gRE9NU3RyaW5nIGNvbG9yKTsKKyAgICAgICAgdm9pZCBhZGRDb2xv
clN0b3AoaW4gZmxvYXQgb2Zmc2V0LCBpbiBET01TdHJpbmcgY29sb3IpCisgICAgICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzYxMTIpCisrKyBXZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDEz
ICs5OTcsMjMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldENvbXBvcwogICAg
IHNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogfQogCi1QYXNzUmVmUHRy
PENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdy
YWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKQorUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJH
cmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8fCAh
aXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5MSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJuIENhbnZhc0dy
YWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50KHgxLCB5MSkpOwog
fQogCi1QYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpCitQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9h
dCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zpbml0ZSh5MCkgfHwgIWlz
ZmluaXRlKHIwKSB8fCAKKyAgICAgICAgIWlzZmluaXRlKHgxKSB8fCAhaXNmaW5pdGUoeTEpIHx8
ICFpc2Zpbml0ZShyMSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQogICAgIHJldHVybiBDYW52YXNHcmFkaWVudDo6Y3JlYXRlKEZs
b2F0UG9pbnQoeDAsIHkwKSwgcjAsIEZsb2F0UG9pbnQoeDEsIHkxKSwgcjEpOwogfQogCkluZGV4
OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAzNjExMikK
KysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY2LDggKzE2Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICBQYXNzUmVm
UHRyPENhbnZhc0dyYWRpZW50PiBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQg
eTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGll
bnQ+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOworICAgICAgICBQYXNzUmVmUHRyPENhbnZhc0dy
YWRpZW50PiBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgx
LCBmbG9hdCB5MSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBQYXNzUmVmUHRyPENhbnZhc0dy
YWRpZW50PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIw
LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAg
IFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50
KiwgY29uc3QgU3RyaW5nJiByZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAg
ICBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IGNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
ICAgIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJl
dmlzaW9uIDM2MTEyKQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDEwIEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgYXR0cmlidXRlIGZsb2F0IGdsb2JhbEFscGhhOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uOwog
Ci0gICAgICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGluIGZsb2F0IHgw
LCBpbiBmbG9hdCB5MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxKTsKLSAgICAgICAgQ2FudmFz
R3JhZGllbnQgY3JlYXRlUmFkaWFsR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBp
biBmbG9hdCByMCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxLCBpbiBmbG9hdCByMSk7CisgICAg
ICAgIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBm
bG9hdCB5MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxKQorICAgICAgICAgICAgcmFpc2VzIChE
T01FeGNlcHRpb24pOworICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVu
dChpbiBmbG9hdCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHIwLCBpbiBmbG9hdCB4MSwgaW4g
ZmxvYXQgeTEsIGluIGZsb2F0IHIxKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBsaW5lV2lkdGg7CiAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBsaW5lQ2FwOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMzYxMTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAwOC0wOS0wNSAgRGlyayBTY2h1bHplICA8dmJzODVAZ214LmRl
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IG5ldyB0ZXN0cyB0byBjaGVjayBiZWhhdmlvciBvZiBjYW52YXMgZ3JhZGllbnRzICB0byBpbmZp
bml0ZSB2YWx1ZXMuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9ncmFkaWVudC1hZGRDb2xvclN0
b3Atd2l0aC1pbnZhbGlkLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1jb2xvci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9saW5lYXJHcmFk
aWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMv
cmFkaWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvcmFkaWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWw6IEFk
ZGVkLgorCiAyMDA4LTA5LTA0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3ItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9y
U3RvcC13aXRoLWludmFsaWQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1j
b2xvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0
IGNoZWNrcyBiZWhhdmlvciBvZiBpbnZhbGlkIGNvbG9ycyB0byBDYW52YXM6OmRyYXdJbWFnZS4K
KworUEFTUzogYW4gZW1wdHkgYXJndW1lbnQgaW4gJycsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0
ZWQKK1BBU1M6IHRvb2sgJyNjYycgYXMgYXJndW1lbnQgZm9yIGNvbG9yLCBnb3QgZXhjZXB0aW9u
IGFzIGV4cGVjdGVkCitQQVNTOiB0b29rICdyZ2IoMjU3LCAwKScgYXMgYXJndW1lbnQgZm9yIGNv
bG9yLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkCitUZXN0IGNvbXBsZXRlLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1j
b2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50
LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQt
Y29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGJvZHkgb25sb2FkPSJk
cmF3KCk7Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3MgYmVoYXZpb3Igb2YgaW52YWxpZCBjb2xvcnMg
dG8gZ3JhZGllbnQuYWRkQ29sb3JTdG9wPC9wPgorPHAgaWQ9InJlc3VsdCI+PC9wPgorPGNhbnZh
cyBpZD0iY2FudmFzIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PC9jYW52YXM+Cis8c2NyaXB0
PgorCisgICAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBsaW5l
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGxpbmUuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQobGluZSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZHJhdygpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpLmdldENvbnRl
eHQoJzJkJyk7CisgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCAwLCAxNTAsIDApOworCisgICAgICAgIC8vIGRyYXcgZ3JhZGllbnQKKyAgICAgICAgdHJ5
eworICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICIiKTsKKyAgICAgICAgICAg
IHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50
KCJQQVNTOiBhbiBlbXB0eSBhcmd1bWVudCBpbiAnJywgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3Rl
ZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIGdyYWRpZW50LmFkZENv
bG9yU3RvcCgwLCAiI2NjIik7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogdG9vayAnI2NjJyBhcyBhcmd1
bWVudCBmb3IgY29sb3IsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQor
ICAgICAgICB0cnl7CisgICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgInJnYigy
NTcsIDApIik7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogdG9vayAncmdiKDI1NywgMCknIGFzIGFyZ3Vt
ZW50IGZvciBjb2xvciwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9Cisg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAnZ3JlZW4nOworICAgICAgICBjdHguZmlsbFJlY3QoMCww
LDE1MCwxNTApOworCisgICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRlLiIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJH
cmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJHcmFk
aWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIGJlaGF2aW9yIG9mIGluZmluaXRlIHZhbHVlcyB0byBj
cmVhdGVMaW5lYXJHcmFkaWVudAorCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeTEsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHkxLCBnb3QgZXhj
ZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeTEsIGdvdCBl
eGNlcHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgTmFOIHZhbHVlIGZvciB4MSwgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBmb3IgeDEsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVlIGZvciB4MSwgZ290IGV4
Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9yIHkwLCBnb3QgZXhjZXB0
aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB5MCwgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUgZm9yIHkwLCBnb3QgZXhj
ZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHgwLCBnb3QgZXhjZXB0
aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDAsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1Rlc3QgY29tcGxldGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2xpbmVhckdyYWRp
ZW50LWluZmluaXRlLXZhbHVlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACis8
Ym9keSBvbmxvYWQ9ImRyYXcoKTsiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyBiZWhhdmlvciBvZiBp
bmZpbml0ZSB2YWx1ZXMgdG8gY3JlYXRlTGluZWFyR3JhZGllbnQ8L3A+Cis8cCBpZD0icmVzdWx0
Ij48L3A+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIj48L2Nh
bnZhcz4KKzxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
bGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChsaW5lKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Fu
dmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworICAgICAgICAvLyBkcmF3IGdyYWRpZW50CisgICAg
ICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFk
aWVudCgwLCAwLCAxMDAsIE5hTik7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogYSBOYU4gdmFsdWUgZm9y
IHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5
eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAs
IDAsIDEwMCwgSW5maW5pdHkpOworICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgSW5maW5pdHkgdmFsdWUg
Zm9yIHkxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAg
dHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50
KDAsIDAsIDEwMCwgLUluZmluaXR5KTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2
YWx1ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAg
ICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3Jh
ZGllbnQoMCwgMCwgTmFOLCAxMDApOworICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgTmFOIHZhbHVlIGZv
ciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRy
eXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgw
LCAwLCBJbmZpbml0eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVl
IGZvciB4MSwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAg
IHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCAwLCAtSW5maW5pdHksIDEwMCk7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogYSAtSW5maW5pdHkg
dmFsdWUgZm9yIHgxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAg
ICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdy
YWRpZW50KDAsIE5hTiwgMTAwLCAxMDApOworICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgTmFOIHZhbHVl
IGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAg
IHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCBJbmZpbml0eSwgMTAwLCAxMDApOworICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgSW5maW5pdHkg
dmFsdWUgZm9yIHkwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAg
ICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdy
YWRpZW50KDAsIC1JbmZpbml0eSwgMTAwLCAxMDApOworICAgICAgICAgICAgcHJpbnQoIkZBSUwi
KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgLUlu
ZmluaXR5IHZhbHVlIGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAg
ICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVM
aW5lYXJHcmFkaWVudChOYU4sIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlM
Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5h
TiB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQor
ICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFy
R3JhZGllbnQoSW5maW5pdHksIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlM
Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIElu
ZmluaXR5IHZhbHVlIGZvciB4MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAg
ICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVM
aW5lYXJHcmFkaWVudCgtSW5maW5pdHksIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50
KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNT
OiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsK
KyAgICAgICAgfQorCisgICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRlLiIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yYWRpYWxH
cmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yYWRpYWxHcmFk
aWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACitUaGlzIHRlc3QgY2hlY2tzIGJlaGF2aW9yIG9mIGluZmluaXRlIHZhbHVlcyB0byBj
cmVhdFJhZGlhbEdyYWRpZW50CisKK1BBU1M6IGEgTmFOIHZhbHVlIGZvciByMSwgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBmb3IgcjEsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVlIGZvciByMSwgZ290IGV4
Y2VwdGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9yIHkxLCBnb3QgZXhjZXB0
aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB5MSwgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUgZm9yIHkxLCBnb3QgZXhj
ZXB0aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDEsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHgxLCBnb3QgZXhjZXB0
aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDEsIGdvdCBleGNl
cHRpb24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgTmFOIHZhbHVlIGZvciByMCwgZ290IGV4Y2VwdGlv
biBhcyBleHBlY3RlZAorUEFTUzogYSBJbmZpbml0eSB2YWx1ZSBmb3IgcjAsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQKK1BBU1M6IGEgLUluZmluaXR5IHZhbHVlIGZvciByMCwgZ290IGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZAorUEFTUzogYSBOYU4gdmFsdWUgZm9yIHkwLCBnb3QgZXhjZXB0aW9u
IGFzIGV4cGVjdGVkCitQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB5MCwgZ290IGV4Y2VwdGlv
biBhcyBleHBlY3RlZAorUEFTUzogYSAtSW5maW5pdHkgdmFsdWUgZm9yIHkwLCBnb3QgZXhjZXB0
aW9uIGFzIGV4cGVjdGVkCitQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24g
YXMgZXhwZWN0ZWQKK1BBU1M6IGEgSW5maW5pdHkgdmFsdWUgZm9yIHgwLCBnb3QgZXhjZXB0aW9u
IGFzIGV4cGVjdGVkCitQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQKK1Rlc3QgY29tcGxldGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50
LWluZmluaXRlLXZhbHVlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOSBAQAorPGJv
ZHkgb25sb2FkPSJkcmF3KCk7Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3MgYmVoYXZpb3Igb2YgaW5m
aW5pdGUgdmFsdWVzIHRvIGNyZWF0UmFkaWFsR3JhZGllbnQ8L3A+Cis8cCBpZD0icmVzdWx0Ij48
L3A+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIj48L2NhbnZh
cz4KKzxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbGlu
ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChsaW5lKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBkcmF3KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFz
JykuZ2V0Q29udGV4dCgnMmQnKTsKKworICAgICAgICAvLyB0ZXN0IHIxCisgICAgICAgIHRyeXsK
KyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAw
LCAxMDAsIDAsIDAsIE5hTik7CisgICAgICAgICAgICBwcmludCgiRkFJTCIpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogYSBOYU4gdmFsdWUgZm9yIHIx
LCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5ewor
ICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAs
IDEwMCwgMCwgMCwgSW5maW5pdHkpOworICAgICAgICAgICAgcHJpbnQoIkZBSUwiKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGEgSW5maW5pdHkgdmFs
dWUgZm9yIHIxLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAg
ICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRp
ZW50KDAsIDAsIDEwMCwgMCwgMCwgLUluZmluaXR5KTsKKyAgICAgICAgICAgIHByaW50KCJGQUlM
Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1J
bmZpbml0eSB2YWx1ZSBmb3IgcjEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyB0ZXN0IHkxCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBn
cmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIE5hTiwgMTAw
KTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24g
YXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIg
Z3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAwLCBJbmZpbml0
eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB5MSwgZ290
IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAg
ICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAs
IDAsIC1JbmZpbml0eSwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1
ZSBmb3IgeTEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAg
ICAvLyB0ZXN0IHgxCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0
eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIE5hTiwgMCwgMTAwKTsKKyAgICAgICAg
ICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHBy
aW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDEsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQi
KTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBj
dHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCBJbmZpbml0eSwgMCwgMTAwKTsKKyAg
ICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB4MSwgZ290IGV4Y2VwdGlvbiBh
cyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBn
cmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIC1JbmZpbml0eSwg
MCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgeDEsIGdv
dCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHIw
CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRp
YWxHcmFkaWVudCgwLCAwLCBOYU4sIDAsIDAsIDEwMCk7CisgICAgICAgICAgICBwcmludCgiRkFJ
TCIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBwcmludCgiUEFTUzogYSBO
YU4gdmFsdWUgZm9yIHIwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0K
KyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlh
bEdyYWRpZW50KDAsIDAsIEluZmluaXR5LCAwLCAwLCAxMDApOworICAgICAgICAgICAgcHJpbnQo
IkZBSUwiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcHJpbnQoIlBBU1M6
IGEgSW5maW5pdHkgdmFsdWUgZm9yIHIwLCBnb3QgZXhjZXB0aW9uIGFzIGV4cGVjdGVkIik7Cisg
ICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNy
ZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIC1JbmZpbml0eSwgMCwgMCwgMTAwKTsKKyAgICAgICAg
ICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHBy
aW50KCJQQVNTOiBhIC1JbmZpbml0eSB2YWx1ZSBmb3IgcjAsIGdvdCBleGNlcHRpb24gYXMgZXhw
ZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHkwCisgICAgICAgIHRyeXsKKyAg
ICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCBOYU4s
IDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeTAs
IGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7Cisg
ICAgICAgICAgICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgSW5m
aW5pdHksIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZh
bHVlIGZvciB5MCwgZ290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAg
ICAgIHRyeXsKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFk
aWVudCgwLCAtSW5maW5pdHksIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJG
QUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBh
IC1JbmZpbml0eSB2YWx1ZSBmb3IgeTAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAg
ICAgICAgfQorICAgICAgICAvLyB0ZXN0IHgwCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHZh
ciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChOYU4sIDAsIDEwMCwgMCwgMCwg
MTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIE5hTiB2YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRp
b24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisgICAgICAgICAgICB2
YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoSW5maW5pdHksIDAsIDEwMCwg
MCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIEluZmluaXR5IHZhbHVlIGZvciB4MCwg
Z290IGV4Y2VwdGlvbiBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAg
ICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgtSW5maW5p
dHksIDAsIDEwMCwgMCwgMCwgMTAwKTsKKyAgICAgICAgICAgIHByaW50KCJGQUlMIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHByaW50KCJQQVNTOiBhIC1JbmZpbml0eSB2
YWx1ZSBmb3IgeDAsIGdvdCBleGNlcHRpb24gYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHByaW50KCJUZXN0IGNvbXBsZXRlLiIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgorCg==
</data>
<flag name="review"
          id="10323"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23390</attachid>
            <date>2008-09-13 03:48:39 -0700</date>
            <delta_ts>2008-09-15 15:12:14 -0700</delta_ts>
            <desc>Canvas Gradients exception</desc>
            <filename>Canvas-Gradients-exception.patch</filename>
            <type>text/plain</type>
            <size>21024</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDktMTMgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBl
eGNlcHRpb24gY29kZXMgdG8gY2FudmFzIGdyYWRpZW50cyB0byBtYXRjaCBjdXJyZW50CisgICAg
ICAgIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2dyYWRpZW50
LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9jYW52YXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5odG1sCisKKyAg
ICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c0dyYWRpZW50OjphZGRDb2xvclN0b3ApOgorICAgICAgICAqIGh0bWwvQ2FudmFzR3JhZGllbnQu
aDoKKyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQpOgorICAgICAg
ICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgorCiAyMDA4LTA5LTEyICBTdGV2ZSBGYWxrZW5idXJn
ICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IE1hYyBidWlsZC4KSW5kZXg6IFdl
YkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0NhbnZhc0dyYWRpZW50LmNwcAkocmV2aXNpb24gMzYzNDkpCisrKyBXZWJDb3JlL2h0bWwvQ2Fu
dmFzR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKIApAQCAtNDEsNCArNDQsMjAgQEAgQ2Fu
dmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsbwogewogfQogCit2b2lkIENhbnZh
c0dyYWRpZW50OjphZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29sb3Is
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaXNmaW5pdGUodmFsdWUpIHx8IHZhbHVl
IDwgMCB8fCB2YWx1ZSA+IDEuMGYpIHsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJHQkEzMiByZ2JhID0gMDsKKyAgICBpZiAoIUNT
U1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHZhbHVlLCBjb2xvcik7Cit9CisKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRt
bC9DYW52YXNHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFk
aWVudC5oCShyZXZpc2lvbiAzNjM0OSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKICAg
ICBjbGFzcyBDYW52YXNHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc0dyYWRpZW50
PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVu
dD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSkKQEAg
LTQ4LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgR3Jh
ZGllbnQqIGdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudC5nZXQoKTsgfQogCi0g
ICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9y
KSB7IG1fZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh2YWx1ZSwgY29sb3IpOyB9CisgICAgICAgIHZv
aWQgYWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgdm9pZCBnZXRDb2xvcihmbG9hdCB2YWx1ZSwgZmxvYXQqIHIs
IGZsb2F0KiBnLCBmbG9hdCogYiwgZmxvYXQqIGEpIGNvbnN0IHsgbV9ncmFkaWVudC0+Z2V0Q29s
b3IodmFsdWUsIHIsIGcsIGIsIGEpOyB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNHcmFk
aWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmlkbAko
cmV2aXNpb24gMzYzNDkpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgSW1wbGVt
ZW50YXRpb25VVUlEPWEyOTQyYWU2LTI3MzEtNDI4Ni05OGNjLTlkNWU3OWUyMGRlMQogICAgIF0g
Q2FudmFzR3JhZGllbnQgewogCi0gICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGluIGZsb2F0IG9m
ZnNldCwgaW4gRE9NU3RyaW5nIGNvbG9yKTsKKyAgICAgICAgdm9pZCBhZGRDb2xvclN0b3AoaW4g
ZmxvYXQgb2Zmc2V0LCBpbiBET01TdHJpbmcgY29sb3IpCisgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzYzNDkpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDEzICs5OTcsMjMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldENvbXBvcwogICAgIHNldEdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogfQogCi1QYXNzUmVmUHRyPENhbnZhc0dy
YWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KGZs
b2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKQorUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudChm
bG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8fCAhaXNmaW5pdGUo
eDEpIHx8ICFpc2Zpbml0ZSh5MSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJuIENhbnZhc0dyYWRpZW50Ojpj
cmVhdGUoRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50KHgxLCB5MSkpOwogfQogCi1QYXNz
UmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJh
ZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9h
dCB5MSwgZmxvYXQgcjEpCitQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxv
YXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zpbml0ZSh5MCkgfHwgIWlzZmluaXRlKHIw
KSB8fCAKKyAgICAgICAgIWlzZmluaXRlKHgxKSB8fCAhaXNmaW5pdGUoeTEpIHx8ICFpc2Zpbml0
ZShyMSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogICAgIHJldHVybiBDYW52YXNHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQo
eDAsIHkwKSwgcjAsIEZsb2F0UG9pbnQoeDEsIHkxKSwgcjEpOwogfQogCkluZGV4OiBXZWJDb3Jl
L2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAzNjM0OSkKKysrIFdlYkNv
cmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDggKzE2Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldENvbXBv
c2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICBQYXNzUmVmUHRyPENhbnZh
c0dyYWRpZW50PiBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0
IHgxLCBmbG9hdCB5MSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0
ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBm
bG9hdCB5MSwgZmxvYXQgcjEpOworICAgICAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBj
cmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5
MSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBj
cmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4
MSwgZmxvYXQgeTEsIGZsb2F0IHIxLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFBhc3NSZWZQ
dHI8Q2FudmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiByZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICBQYXNzUmVm
UHRyPENhbnZhc1BhdHRlcm4+IGNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQqLCBjb25z
dCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIApJbmRl
eDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDM2
MzQ5KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDggKzQ2LDEwIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmli
dXRlIGZsb2F0IGdsb2JhbEFscGhhOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uOwogCi0gICAgICAg
IENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBmbG9h
dCB5MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxKTsKLSAgICAgICAgQ2FudmFzR3JhZGllbnQg
Y3JlYXRlUmFkaWFsR3JhZGllbnQoaW4gZmxvYXQgeDAsIGluIGZsb2F0IHkwLCBpbiBmbG9hdCBy
MCwgaW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxLCBpbiBmbG9hdCByMSk7CisgICAgICAgIENhbnZh
c0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGluIGZsb2F0IHgwLCBpbiBmbG9hdCB5MCwg
aW4gZmxvYXQgeDEsIGluIGZsb2F0IHkxKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChpbiBmbG9h
dCB4MCwgaW4gZmxvYXQgeTAsIGluIGZsb2F0IHIwLCBpbiBmbG9hdCB4MSwgaW4gZmxvYXQgeTEs
IGluIGZsb2F0IHIxKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAg
ICAgIGF0dHJpYnV0ZSBmbG9hdCBsaW5lV2lkdGg7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBsaW5lQ2FwOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MzYzNjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAwOC0wOS0xMyAgRGlyayBTY2h1bHplICA8dmJzODVAZ214LmRlPgorCisgICAg
ICAgIEFkZGVkIG5ldyB0ZXN0cyB0byBjaGVjayBiZWhhdmlvciBvZiBjYW52YXMgZ3JhZGllbnRz
ICB0byBpbmZpbml0ZSB2YWx1ZXMKKyAgICAgICAgb3IgaW52YWxpZCBjb2xvcnMuCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy9ncmFkaWVudC1hZGRDb2xvclN0b3Atd2l0aC1pbnZhbGlkLWNvbG9y
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvZ3JhZGllbnQtYWRk
Q29sb3JTdG9wLXdpdGgtaW52YWxpZC1jb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvcmFkaWFsR3JhZGllbnQtaW5maW5p
dGUtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvcmFk
aWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3Jlc291cmNlcy9ncmFkaWVudC1hZGRDb2xvclN0b3Atd2l0aC1pbnZhbGlkLWNvbG9y
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9yZXNvdXJjZXMvbGluZWFyR3JhZGll
bnQtaW5maW5pdGUtdmFsdWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9yZXNv
dXJjZXMvcmFkaWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmpzOiBBZGRlZC4KKwogMjAwOC0w
OS0xMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50
LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWlu
dmFsaWQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1jb2xvci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCBjaGVja3MgaW52
YWxpZCBjb2xvcnMgb24gZ3JhZGllaW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgJycpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgZ3JhZGllbnQuYWRkQ29sb3JT
dG9wKDAsICcjY2MnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNl
cHRpb24gMTIuCitQQVNTIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAncmdiKDI1NywgMCknKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNT
IGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAncmdiKDI1NywgMCwgNSwgMCknKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2dyYWRpZW50LWFkZENvbG9yU3RvcC13aXRoLWludmFsaWQtY29sb3IuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9ncmFkaWVudC1hZGRDb2xvclN0
b3Atd2l0aC1pbnZhbGlkLWNvbG9yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9ncmFkaWVudC1hZGRDb2xvclN0b3Atd2l0aC1pbnZhbGlkLWNvbG9yLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjE1MCIgaGVpZ2h0PSIxNTAiPjwvY2FudmFzPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFkaWVudC1hZGRDb2xvclN0b3Atd2l0aC1pbnZhbGlk
LWNvbG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvbGluZWFyR3JhZGllbnQtaW5m
aW5pdGUtdmFsdWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKK1RoaXMgdGVzdCBjaGVja3MgY3JlYXRlTGluZWFy
R3JhZGllbnQgd2l0aCBpbmZpbml0ZSB2YWx1ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEwMCwgTmFOKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQ
QVNTIGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIEluZmluaXR5KSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNT
IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIC1JbmZpbml0eSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBj
dHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgTmFOLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0
ZUxpbmVhckdyYWRpZW50KDAsIDAsIEluZmluaXR5LCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZUxp
bmVhckdyYWRpZW50KDAsIDAsIC1JbmZpbml0eSwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVMaW5l
YXJHcmFkaWVudCgwLCBOYU4sIDEwMCwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9T
VVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVMaW5lYXJHcmFk
aWVudCgwLCBJbmZpbml0eSwgMTAwLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NV
UFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZUxpbmVhckdyYWRp
ZW50KDAsIC1JbmZpbml0eSwgMTAwLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NV
UFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZUxpbmVhckdyYWRp
ZW50KE5hTiwgMCwgMTAwLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KElu
ZmluaXR5LCAwLCAxMDAsIDEwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVE
X0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoLUlu
ZmluaXR5LCAwLCAxMDAsIDEwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVE
X0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9saW5lYXJHcmFk
aWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9saW5lYXJHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2xpbmVhckdyYWRpZW50LWluZmluaXRlLXZhbHVl
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIj48L2Nh
bnZhcz4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFs
dWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmFkaWFsR3JhZGllbnQtaW5maW5p
dGUtdmFsdWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdCBjaGVja3MgY3JlYXRlUmFkaWFsR3Jh
ZGllbnQgd2l0aCBpbmZpbml0ZSB2YWx1ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgMCwgTmFOKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDku
CitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIDAsIEluZmluaXR5
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9u
IDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIDAsIC1JbmZp
bml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA5LgorUEFTUyBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAwLCBOYU4s
IDEwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA5LgorUEFTUyBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAwLCBJbmZp
bml0eSwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00g
RXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAs
IC1JbmZpbml0eSwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJS
OiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAx
MDAsIE5hTiwgMCwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJS
OiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAx
MDAsIEluZmluaXR5LCAwLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAs
IDAsIDEwMCwgLUluZmluaXR5LCAwLCAxMDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NV
UFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmNyZWF0ZVJhZGlhbEdyYWRp
ZW50KDAsIDAsIE5hTiwgMCwgMCwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQ
T1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVu
dCgwLCAwLCBJbmZpbml0eSwgMCwgMCwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9T
VVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVSYWRpYWxHcmFk
aWVudCgwLCAwLCAtSW5maW5pdHksIDAsIDAsIDEwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
T1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBjdHguY3JlYXRlUmFkaWFs
R3JhZGllbnQoMCwgTmFOLCAxMDAsIDAsIDAsIDEwMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
T1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBjdHguY3JlYXRlUmFkaWFs
R3JhZGllbnQoMCwgSW5maW5pdHksIDEwMCwgMCwgMCwgMTAwKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5jcmVhdGVS
YWRpYWxHcmFkaWVudCgwLCAtSW5maW5pdHksIDEwMCwgMCwgMCwgMTAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5j
cmVhdGVSYWRpYWxHcmFkaWVudChOYU4sIDAsIDEwMCwgMCwgMCwgMTAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5j
cmVhdGVSYWRpYWxHcmFkaWVudChJbmZpbml0eSwgMCwgMTAwLCAwLCAwLCAxMDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1Mg
Y3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KC1JbmZpbml0eSwgMCwgMTAwLCAwLCAwLCAxMDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmFkaWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmFkaWFsR3JhZGllbnQt
aW5maW5pdGUtdmFsdWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9yYWRpYWxHcmFkaWVudC1pbmZpbml0ZS12YWx1ZXMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PC9jYW52YXM+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JhZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvZ3Jh
ZGllbnQtYWRkQ29sb3JTdG9wLXdpdGgtaW52YWxpZC1jb2xvci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvZ3JhZGllbnQtYWRkQ29sb3JTdG9wLXdp
dGgtaW52YWxpZC1jb2xvci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3Jlc291cmNlcy9ncmFkaWVudC1hZGRDb2xvclN0b3Atd2l0aC1pbnZhbGlkLWNvbG9yLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3Qg
Y2hlY2tzIGludmFsaWQgY29sb3JzIG9uIGdyYWRpZWludHMnCispOworCit2YXIgY3R4ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7Cit2YXIgZ3Jh
ZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMTUwLCAwKTsKKworc2hvdWxk
VGhyb3coImdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAnJykiLCAiJ0Vycm9yOiBTWU5UQVhfRVJS
OiBET00gRXhjZXB0aW9uIDEyJyIpOworc2hvdWxkVGhyb3coImdyYWRpZW50LmFkZENvbG9yU3Rv
cCgwLCAnI2NjJykiLCAiJ0Vycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyJyIpOwor
c2hvdWxkVGhyb3coImdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAncmdiKDI1NywgMCknKSIsICIn
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTInIik7CitzaG91bGRUaHJvdygiZ3Jh
ZGllbnQuYWRkQ29sb3JTdG9wKDAsICdyZ2IoMjU3LCAwLCA1LCAwKScpIiwgIidFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzb3VyY2VzL2xpbmVh
ckdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9yZXNvdXJjZXMvbGluZWFyR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzb3VyY2VzL2xpbmVhckdy
YWRpZW50LWluZmluaXRlLXZhbHVlcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAor
ZGVzY3JpcHRpb24oCisnVGhpcyB0ZXN0IGNoZWNrcyBjcmVhdGVMaW5lYXJHcmFkaWVudCB3aXRo
IGluZmluaXRlIHZhbHVlcycKKyk7CisKK3ZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVM
aW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIE5hTikiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VS
UjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVMaW5lYXJHcmFk
aWVudCgwLCAwLCAxMDAsIEluZmluaXR5KSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50
KDAsIDAsIDEwMCwgLUluZmluaXR5KSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00g
RXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAs
IDAsIE5hTiwgMTAwKSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9u
IDknIik7CitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIEluZmlu
aXR5LCAxMDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSci
KTsKK3Nob3VsZFRocm93KCJjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgLUluZmluaXR5
LCAxMDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsK
K3Nob3VsZFRocm93KCJjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgTmFOLCAxMDAsIDEwMCki
LCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxk
VGhyb3coImN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCBJbmZpbml0eSwgMTAwLCAxMDApIiwg
IidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRo
cm93KCJjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgLUluZmluaXR5LCAxMDAsIDEwMCkiLCAi
J0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhy
b3coImN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudChOYU4sIDAsIDEwMCwgMTAwKSIsICInRXJyb3I6
IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4
LmNyZWF0ZUxpbmVhckdyYWRpZW50KEluZmluaXR5LCAwLCAxMDAsIDEwMCkiLCAiJ0Vycm9yOiBO
T1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3coImN0eC5j
cmVhdGVMaW5lYXJHcmFkaWVudCgtSW5maW5pdHksIDAsIDEwMCwgMTAwKSIsICInRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzb3VyY2VzL3Jh
ZGlhbEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9yZXNvdXJjZXMvcmFkaWFsR3JhZGllbnQtaW5maW5pdGUtdmFsdWVzLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcmVzb3VyY2VzL3JhZGlh
bEdyYWRpZW50LWluZmluaXRlLXZhbHVlcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBA
QAorZGVzY3JpcHRpb24oCisnVGhpcyB0ZXN0IGNoZWNrcyBjcmVhdGVSYWRpYWxHcmFkaWVudCB3
aXRoIGluZmluaXRlIHZhbHVlcycKKyk7CisKK3ZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworc2hvdWxkVGhyb3coImN0eC5jcmVh
dGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIDAsIE5hTikiLCAiJ0Vycm9yOiBOT1RfU1VQ
UE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVS
YWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDAsIDAsIEluZmluaXR5KSIsICInRXJyb3I6IE5PVF9T
VVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4LmNyZWF0
ZVJhZGlhbEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgMCwgLUluZmluaXR5KSIsICInRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4LmNy
ZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgTmFOLCAxMDApIiwgIidFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRocm93KCJjdHguY3Jl
YXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAwLCBJbmZpbml0eSwgMTAwKSIsICInRXJyb3I6
IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4
LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIDEwMCwgMCwgLUluZmluaXR5LCAxMDApIiwgIidF
cnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRocm93
KCJjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCBOYU4sIDAsIDEwMCkiLCAiJ0Vy
cm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3co
ImN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIEluZmluaXR5LCAwLCAxMDApIiwg
IidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRo
cm93KCJjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAtSW5maW5pdHksIDAsIDEw
MCkiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hv
dWxkVGhyb3coImN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCBOYU4sIDAsIDAsIDEwMCki
LCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxk
VGhyb3coImN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCBJbmZpbml0eSwgMCwgMCwgMTAw
KSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7CitzaG91
bGRUaHJvdygiY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIDAsIC1JbmZpbml0eSwgMCwgMCwg
MTAwKSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7Citz
aG91bGRUaHJvdygiY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIE5hTiwgMTAwLCAwLCAwLCAx
MDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3No
b3VsZFRocm93KCJjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgSW5maW5pdHksIDEwMCwgMCwg
MCwgMTAwKSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7
CitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KDAsIC1JbmZpbml0eSwgMTAw
LCAwLCAwLCAxMDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24g
OSciKTsKK3Nob3VsZFRocm93KCJjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoTmFOLCAwLCAxMDAs
IDAsIDAsIDEwMCkiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5
JyIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChJbmZpbml0eSwgMCwg
MTAwLCAwLCAwLCAxMDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRp
b24gOSciKTsKK3Nob3VsZFRocm93KCJjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoLUluZmluaXR5
LCAwLCAxMDAsIDAsIDAsIDEwMCkiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4
Y2VwdGlvbiA5JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="10434"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>