<?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>72459</bug_id>
          
          <creation_ts>2011-11-15 21:14:51 -0800</creation_ts>
          <short_desc>Fix flaky SVG fonts tests</short_desc>
          <delta_ts>2011-12-04 20:30:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>62974</blocked>
    
    <blocked>66908</blocked>
    
    <blocked>71765</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503571</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-15 21:14:51 -0800</bug_when>
    <thetext>There are numerous flaky tests, for example:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=svg%2Fcustom%2Fsvg-fonts-fallback.xhtml%2Csvg%2Fcustom%2Fsvg-fonts-segmented.xhtml%2Csvg%2Ftext%2Ftext-overflow-ellipsis-svgfont.html&amp;showExpectations=true

This entry is the master bug for fixing these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504683</commentid>
    <comment_count>1</comment_count>
      <attachid>115548</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-17 02:42:28 -0800</bug_when>
    <thetext>Created attachment 115548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504684</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-17 02:46:14 -0800</bug_when>
    <thetext>At first, I used event dispatching to notify whether the font are loaded. However, when I ran NRWT, I noticed this approach didn&apos;t work. If fonts are preliminary loaded and cached, WebKit immediately creates internal SimpleFontData objects before the document object is ready to dispatch events. In this case, there is no opportunity to dispatch font loaded events because at the time of the document is ready to dispatch events, font object are already created with cached data.

In this patch, I added Internals::isCustomFontLoaded(document, family). This returns true when the font object that corresponds with the given family name is already loaded. Each test wait until the function returns true in setInterval loop. I guess there is a better way to do that, but couldn&apos;t figure out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504698</commentid>
    <comment_count>3</comment_count>
      <attachid>115548</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-17 03:03:51 -0800</bug_when>
    <thetext>Comment on attachment 115548
Patch

Attachment 115548 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10510147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504715</commentid>
    <comment_count>4</comment_count>
      <attachid>115548</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-17 03:45:54 -0800</bug_when>
    <thetext>Comment on attachment 115548
Patch

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

Excellent work, thanks bashi for fixing this! I&apos;d like to reduce the number of hacks springled around layout tests, and rather centralize/refactor the code, see below:

&gt; Source/WebCore/css/CSSFontSelector.cpp:588
&gt; +
&gt; +    for (unsigned i = 0; i &lt; familyFontFaces-&gt;size(); ++i) {
&gt; +        CSSFontFace* face = familyFontFaces-&gt;at(i).get();
&gt; +        if (!face-&gt;isLoaded())
&gt; +            return false;
&gt; +    }

size_t length = familyFontFaces-&gt;size();
for (size_t i = 0; i &lt; length; ++i) {
    if (!familyFontFaces-&gt;at(i)-&gt;isLoaded())
        return false;
}

&gt; Source/WebCore/css/CSSFontSelector.h:71
&gt; +    bool isFontFaceLoaded(const String&amp; familyName);

You should either avoid adding the familyName argument name here or add it in Internals.h as well in isCustomFontLoaded.

&gt; LayoutTests/svg/W3C-SVG-1.1/fonts-elem-07-b.svg:123
&gt; -            if (window.layoutTestController) {
&gt; +            if (window.internals &amp;&amp; window.layoutTestController) {
&gt;                  layoutTestController.waitUntilDone();
&gt;                  document.documentElement.offsetTop;
&gt; -                setTimeout(function() { layoutTestController.notifyDone(); }, 100);
&gt; +                setInterval(function() {
&gt; +                    if (internals.isCustomFontLoaded(document, &apos;TestComic&apos;))
&gt; +                        layoutTestController.notifyDone();
&gt; +                }, 0);

I&apos;d really love to centralize this trick, in eg. svg/custom/resources/SVGFont-loading-events.js
How about you fold this into &quot;waitForSVGFontsLoaded([&apos;font1&apos;, &apos;font2&apos;....&quot; method that accepts a list of fonts to be waited for and a callback function that should be fired once it loaded.
If the callback is not provided layoutTestController.notifyDone() is called. This callback could be used in svg-fonts-in-text-controls.js for example to start the text metrics testing.

This way all tests using SVG Fonts could easily be tweaked to use your new approach, and if we ever fire events for this, we could modify our testing hooks in one place.
What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504720</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-17 03:53:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; At first, I used event dispatching to notify whether the font are loaded. However, when I ran NRWT, I noticed this approach didn&apos;t work. If fonts are preliminary loaded and cached, WebKit immediately creates internal SimpleFontData objects before the document object is ready to dispatch events. In this case, there is no opportunity to dispatch font loaded events because at the time of the document is ready to dispatch events, font object are already created with cached data.
Good explaination.
 
&gt; In this patch, I added Internals::isCustomFontLoaded(document, family). This returns true when the font object that corresponds with the given family name is already loaded. Each test wait until the function returns true in setInterval loop. I guess there is a better way to do that, but couldn&apos;t figure out.
Hm, you could of course pass in a callback function that you fire once the font is loaded - that either implies overhead for in the font loading code (need to notify callbacks, if a font is requested and present, or if it appears after a load, etc..), which is something we want to avoid as this is only used for testing.
So we could use a Timer in WebCore::Internals, which does the same as you do in script: poll the information. I&apos;m not sure if there&apos;s any benefit in coding this manually.

If you nicely centralize the code to wait for SVG Fonts to be loaded in a script that can be used in LayoutTests/ we&apos;re happy as that&apos;s all what we want: reliable testing of SVG Fonts :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510474</commentid>
    <comment_count>6</comment_count>
      <attachid>116886</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-28 21:46:02 -0800</bug_when>
    <thetext>Created attachment 116886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510477</commentid>
    <comment_count>7</comment_count>
      <attachid>115548</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-28 21:48:30 -0800</bug_when>
    <thetext>Comment on attachment 115548
Patch

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

Sorry for late response. Revised the patch to address your comments/suggestions.

&gt;&gt; Source/WebCore/css/CSSFontSelector.cpp:588
&gt;&gt; +    }
&gt; 
&gt; size_t length = familyFontFaces-&gt;size();
&gt; for (size_t i = 0; i &lt; length; ++i) {
&gt;     if (!familyFontFaces-&gt;at(i)-&gt;isLoaded())
&gt;         return false;
&gt; }

Done.

&gt;&gt; Source/WebCore/css/CSSFontSelector.h:71
&gt;&gt; +    bool isFontFaceLoaded(const String&amp; familyName);
&gt; 
&gt; You should either avoid adding the familyName argument name here or add it in Internals.h as well in isCustomFontLoaded.

Added argument name in Internals.h.

&gt;&gt; LayoutTests/svg/W3C-SVG-1.1/fonts-elem-07-b.svg:123
&gt;&gt; +                }, 0);
&gt; 
&gt; I&apos;d really love to centralize this trick, in eg. svg/custom/resources/SVGFont-loading-events.js
&gt; How about you fold this into &quot;waitForSVGFontsLoaded([&apos;font1&apos;, &apos;font2&apos;....&quot; method that accepts a list of fonts to be waited for and a callback function that should be fired once it loaded.
&gt; If the callback is not provided layoutTestController.notifyDone() is called. This callback could be used in svg-fonts-in-text-controls.js for example to start the text metrics testing.
&gt; 
&gt; This way all tests using SVG Fonts could easily be tweaked to use your new approach, and if we ever fire events for this, we could modify our testing hooks in one place.
&gt; What do you think?

Done. Thank you for the suggestion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510483</commentid>
    <comment_count>8</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-28 21:55:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Hm, you could of course pass in a callback function that you fire once the font is loaded - that either implies overhead for in the font loading code (need to notify callbacks, if a font is requested and present, or if it appears after a load, etc..), which is something we want to avoid as this is only used for testing.
&gt; So we could use a Timer in WebCore::Internals, which does the same as you do in script: poll the information. I&apos;m not sure if there&apos;s any benefit in coding this manually.

I agree with you that avoiding overhead just for testing. I tried to use a timer in WebCore::Internals, but couldn&apos;t find benefit. It just complicate the implementation so I decided to use a loop in scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510498</commentid>
    <comment_count>9</comment_count>
      <attachid>116886</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 22:22:34 -0800</bug_when>
    <thetext>Comment on attachment 116886
Patch

Attachment 116886 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10678590

New failing tests:
svg/W3C-SVG-1.1/fonts-elem-07-b.svg
svg/custom/svg-fonts-without-missing-glyph.xhtml
svg/custom/svg-fonts-with-no-element-reference.html
svg/custom/svg-fonts-in-html.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511429</commentid>
    <comment_count>10</comment_count>
      <attachid>116886</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-29 23:43:15 -0800</bug_when>
    <thetext>Comment on attachment 116886
Patch

Attachment 116886 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10695045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512204</commentid>
    <comment_count>11</comment_count>
      <attachid>116886</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-30 16:06:57 -0800</bug_when>
    <thetext>Comment on attachment 116886
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).

This line should appear before the description.

&gt; Source/WebCore/testing/Internals.cpp:613
&gt; +    CSSStyleSelector* styleSelector = document-&gt;styleSelectorIfExists();
&gt; +    if (!styleSelector)
&gt; +        return false;
&gt; +
&gt; +    return styleSelector-&gt;fontSelector()-&gt;isFontFaceLoaded(familyName);

You probably need to add export symbols.

&gt; LayoutTests/svg/custom/resources/SVGFont-loading-events.js:2
&gt; +    if (window.internals &amp;&amp; window.layoutTestController) {

Please do an early exit here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512240</commentid>
    <comment_count>12</comment_count>
      <attachid>117295</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-30 16:49:44 -0800</bug_when>
    <thetext>Created attachment 117295
Try symbol export</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514855</commentid>
    <comment_count>13</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-04 20:30:06 -0800</bug_when>
    <thetext>Looks like http://trac.webkit.org/changeset/101858 fixed the flakiness. I&apos;d like to close this bug as WONTFIX.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115548</attachid>
            <date>2011-11-17 02:42:28 -0800</date>
            <delta_ts>2011-11-28 21:48:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72459-20111117194226.patch</filename>
            <type>text/plain</type>
            <size>19003</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ4NDhlODI0YjNjNTA3
ZWU0YjFjMWNhMDM3N2VmNzExMmI0NDA0Yi4uYzQ5OTY2MzY4ZGIwNzZhYmZmNjA2YzQ1MTFkYTUw
NmFkMzAzNTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTE3ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggZmxha3kg
U1ZHIGZvbnRzIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjQ1OQorCisgICAgICAgIEFkZHMgaW50ZXJuYWwgQVBJcyB3aGljaCBjaGVja3Mg
Y3VzdG9tIGZvbnRzIGFyZSBsb2FkZWQuIFRoaXMgQVBJcyBjYW4gYmUgdXNlZCBmb3IgdGVzdGlu
ZyBwdXJwb3NlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
U2VsZWN0b3I6OmlzRm9udEZhY2VMb2FkZWQpOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTRm9u
dFNlbGVjdG9yLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjppc0N1c3RvbUZvbnRMb2FkZWQpOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgaXNDdXN0b21Gb250TG9hZGVkKCkuCisKIDIwMTEtMTEtMTYgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gdmlv
bGF0ZXMgcGxhdGZvcm0gaXNvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCmluZGV4IDU4ZTIxMzE3NjNmZmVkMjAzNzA1Njc5YjA2ZDA5NWZhZDhlMGJjMDQuLmY2NDVj
YzgwYWVlZmY2ZGUwYzcxYzNhM2ZmNWY3Y2YwMzk0MGYwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCkBAIC01NzUsNCArNTc1LDE5IEBAIEZvbnREYXRhKiBDU1NGb250
U2VsZWN0b3I6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBjCiAgICAgcmV0dXJuIGZhY2UtPmdldEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbik7CiB9
CiAKK2Jvb2wgQ1NTRm9udFNlbGVjdG9yOjppc0ZvbnRGYWNlTG9hZGVkKGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+KiBmYW1pbHlG
b250RmFjZXMgPSBtX2ZvbnRGYWNlcy5nZXQoZmFtaWx5TmFtZSk7CisgICAgaWYgKCFmYW1pbHlG
b250RmFjZXMgfHwgZmFtaWx5Rm9udEZhY2VzLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlGb250RmFjZXMtPnNp
emUoKTsgKytpKSB7CisgICAgICAgIENTU0ZvbnRGYWNlKiBmYWNlID0gZmFtaWx5Rm9udEZhY2Vz
LT5hdChpKS5nZXQoKTsKKyAgICAgICAgaWYgKCFmYWNlLT5pc0xvYWRlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZTdlYTAyYjE1OGM3MmY0ODBkNmJkMTNm
MjU0NjY2MDE3NzQyYzlkYi4uMmE0ZTE2YTA2ZTViNjBmNzBkOWRjMDRmYmRmOTIyN2UwZTExMWRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNjgsNiArNjgsOCBAQCBw
dWJsaWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3Vt
ZW50OyB9CiAKKyAgICBib29sIGlzRm9udEZhY2VMb2FkZWQoY29uc3QgU3RyaW5nJiBmYW1pbHlO
YW1lKTsKKwogcHJpdmF0ZToKICAgICBDU1NGb250U2VsZWN0b3IoRG9jdW1lbnQqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ1YWI3ODg3ZTM4M2ZiNGI4YTA4OTI5
NDdmZmM4ZTE2ZjY0MDJlN2QuLjBjYjk1MTIxMWJlZTk4NDdhMWFkNDFkY2M3ZDVkMDlkZGVkOGI4
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcm5hbHMuaCIKIAorI2luY2x1ZGUg
IkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNTk3LDQgKzU5OSwxOCBAQCBib29sIEludGVybmFsczo6
dW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25D
b2RlJiBlYwogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+dW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCgpOwogfQogCitib29sIEludGVybmFsczo6aXNDdXN0b21Gb250
TG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIENTU1N0eWxl
U2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcklmRXhpc3Rz
KCk7CisgICAgaWYgKCFzdHlsZVNlbGVjdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCktPmlzRm9udEZhY2VMb2FkZWQo
ZmFtaWx5KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjkwOWQ3
MDg5YzNkMGViZDUxZGI2OWFiYTNjOWFhM2I2NjQyZDlhYi4uYjYxODUwYjhhMzljYThkOTRkYWQy
NTZiMDJlNDdjNjYxYTE5N2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
MDgsNiArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2luZ0Vu
YWJsZWQoRG9jdW1lbnQqLCBib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB1bmlmaWVk
VGV4dENoZWNraW5nRW5hYmxlZChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIGJv
b2wgaXNDdXN0b21Gb250TG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVybmFsc0lkOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNjYzg5MmM2MDJkOGJmMmRh
YjI2ZmIyNDk2MzQ0ZDQwMjVkMjkxMmMuLjk2OTJlOGM0MTg0OTVkZWE2NzAxMzJjNDQxYWI4Mjg5
YWU5YTU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTc5LDYgKzc5
LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgdm9pZCBzZXRVbmlmaWVkVGV4dENoZWNr
aW5nRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4gdW5pZmllZFRleHRDaGVja2luZ0Vu
YWJsZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgYm9vbGVhbiBpc0N1c3RvbUZvbnRMb2FkZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIERP
TVN0cmluZyBmYW1pbHkpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYzUzMTc5NmJmZGU5MzBiNGIzZTM0NGQwNTFmNTk0MjQ3NGFmNjdjMy4uZjNiNzNlMGU3MTgy
YjgzNzg1MWY3NDUwMzdkM2IyZGY2NDI2ZGM3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEx
LTExLTE3ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBGaXggZmxha3kgU1ZHIGZvbnRzIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ1OQorCisgICAgICAgIFVzZXMgaW50ZXJuYWxzLmlzQ3Vz
dG9tRm9udExvYWRlZCgpIHRvIG1ha2Ugc3VyZSB0aGUgZm9udHMgYXJlIGxvYWRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogUmVtb3ZlZCBzdmcgZm9udCB0ZXN0cyB3aGlj
aCBzaG91bGQgbm90IGJlIGZsYWt5LgorICAgICAgICAqIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1l
bGVtLTA3LWIuc3ZnOiBXYWl0cyB1bnRpbCBpbnRlcm5hbHMuaXNDdXN0b21Gb250TG9hZGVkKCkg
YmVjb21lcyB0cnVlLgorICAgICAgICAqIHN2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250
cy1pbi10ZXh0LWNvbnRyb2xzLmpzOiBEaXR0by4KKyAgICAgICAgKGlmKToKKyAgICAgICAgKiBz
dmcvY3VzdG9tL3N2Zy1mb250cy1mYWxsYmFjay54aHRtbDogRGl0dG8uCisgICAgICAgICogc3Zn
L2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLWV4cGVjdGVkLnR4dDogUmViYXNlZC4KKyAg
ICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQueGh0bWw6IFdhaXRzIHVudGls
IGludGVybmFscy5pc0N1c3RvbUZvbnRMb2FkZWQoKSBiZWNvbWVzIHRydWUuCisgICAgICAgICog
c3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aC1uby1lbGVtZW50LXJlZmVyZW5jZS5odG1sOiBEaXR0
by4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgu
eGh0bWw6IERpdHRvLgorICAgICAgICAqIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2lu
Zy5odG1sOiBEaXR0by4KKwogMjAxMS0xMS0xNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXBkYXRlIG1vcmUgY2hyb21pdW0gYmFz
ZWxpbmVzIGFuZCBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzODIwOGU0YWIwM2EzNzE4OTg5YTc5
MmM5ZDkwMDBmZWJlMzIzMmUxLi5lYTcyYzRiMzgyMzUxZDg2NjQxMTQ1YzA3YjRiM2NhNTBhZGZh
ZGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC04ODQsOCArODg0LDYgQEAgQlVHV0s2Mjk3NCBMSU5VWCBXSU4gOiBz
dmcvd2ljZC90ZXN0LXJpZ2h0c2l6aW5nLWIueGh0bWwgPSBJTUFHRStURVhUCiBCVUdXSzYyOTc0
IE1BQyA6IHN2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54aHRtbCA9IElNQUdFCiAvLyBFeHRl
bmRlZCBieSBCVUdDUjEwMTc5Ny4KIC8vIEJVR1dLNjI5NzQgV0lOIDogc3ZnL1czQy1TVkctMS4x
L2FuaW1hdGUtZWxlbS0zNi10LnN2ZyA9IElNQUdFCi1CVUdXSzYyOTc0IDogc3ZnL2N1c3RvbS9z
dmctZm9udHMtaW4taHRtbC5odG1sID0gSU1BR0UKLUJVR1dLNjI5NzQgOiBzdmcvY3VzdG9tL3N2
Zy1mb250cy13aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNlLmh0bWwgPSBJTUFHRStURVhUIElNQUdF
CiBCVUdXSzYyOTc0IE1BQyA6IHN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA4LWIuc3Zn
ID0gSU1BR0UKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MjcsNyArMTYyNSw2IEBAIEJVR0NSMTEyNTEg
V0lOIERFQlVHIDogZmFzdC9mb3Jtcy90ZXh0YXJlYS13aWR0aC5odG1sID0gRkFJTAogQlVHQ1Ix
MTI1MSBTTE9XIFdJTiBSRUxFQVNFIDogZmFzdC9mb3Jtcy90ZXh0YXJlYS13aWR0aC5odG1sID0g
RkFJTAogQlVHQ1IxMTI1MSBMSU5VWCBXSU4gUkVMRUFTRSA6IGZhc3QvZm9ybXMvdGV4dC1jb250
cm9sLWludHJpbnNpYy13aWR0aHMuaHRtbCA9IEZBSUwKIEJVR0NSMTEyNTEgTElOVVggV0lOIERF
QlVHIDogZmFzdC9mb3Jtcy90ZXh0LWNvbnRyb2wtaW50cmluc2ljLXdpZHRocy5odG1sID0gRkFJ
TAotQlVHQ1IxMTI1MSBMSU5VWCBXSU4gOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNv
bnRyb2xzLmh0bWwgPSBGQUlMCiBCVUdDUjExMjUxIExJTlVYIFdJTiA6IGZhc3QvZm9ybXMvdGV4
dGFyZWEtbWV0cmljcy5odG1sID0gRkFJTAogCiAvLyBSZWdyZXNzc2lvbnMgZnJvbSBXZWJLaXQg
TWVyZ2UgNDMxMTQ6NDMyNDIgdGhhdCBqdXN0IG5lZWQgdG8gYmUgcmUtYmFzZWxpbmVkLgpAQCAt
MjIyMCwxMSArMjIxNyw2IEBAIEJVR0NSNTMwNzMgTElOVVggOiBzdmcvY3VzdG9tL2NsaXAtcGF0
aC11bml0cy1jaGFuZ2VzLnN2ZyA9IFBBU1MgVEVYVAogLy8gc3BlY2lhbC1kb2N1bWVudCBtYWNo
aW5lcnkgc3RpbGwgd29ya3MuCiBCVUdDUjUzNTQ2IFdPTlRGSVggTElOVVggOiB1c2Vyc2NyaXB0
cy91c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sID0gVEVYVAogCi0vLyBUaGVzZSB0ZXN0
cyBhcmUgY29uc2lzdGVudGx5IGZhaWxpbmcgb24gTGludXgsIGFuZCB0aGUgbGF0dGVyIHRlc3Qg
aXMgZmxha3kgb24gV2luLgotQlVHQ1I1MzU1NCBMSU5VWCA6IHN2Zy9XM0MtU1ZHLTEuMS9mb250
cy1lbGVtLTA3LWIuc3ZnID0gSU1BR0UrVEVYVCBJTUFHRQotQlVHQ1I1MzU1NCBXSU4gOiBzdmcv
Y3VzdG9tL3N2Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwgPSBQQVNTIElNQUdF
Ci1CVUdDUjUzNTU0IExJTlVYIDogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aG91dC1taXNzaW5n
LWdseXBoLnhodG1sID0gSU1BR0UrVEVYVCBJTUFHRQotCiAvLyBOZXcgdGVzdCwgbmVlZCB0byB2
ZXJpZnkgaWYgaXQncyBzYWZlIHRvIHJlYmFzZWxpbmUuCiBCVUdXSzQ0NzcwIExJTlVYIFdJTiA6
IHN2Zy9yZXBhaW50L2ZpbHRlci1yZXBhaW50LnN2ZyA9IENSQVNIIElNQUdFK1RFWFQKIApAQCAt
MzQ3Miw5ICszNDY0LDcgQEAgQlVHV0s2NjkwMCBMSU5VWCBERUJVRyA6IGZhc3Qvd3JpdGluZy1t
b2RlL2phcGFuZXNlLXJsLXRleHQtd2l0aC1icm9rZW4tZm9udC5odG0KIEJVR1dLNjY5MDggV0lO
IExJTlVYIEdQVSBERUJVRyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmZvbnRm
YWNlLm5vdGlucGFnZS5odG1sID0gUEFTUyBURVhUCiBCVUdXSzY2OTA4IExFT1BBUkQgR1BVIDog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuZm9udGZhY2Uubm90aW5wYWdlLmh0bWwg
PSBQQVNTIFRFWFQKIEJVR1dLNjY5MDggOiBmYXN0L2Nzcy9mb250LWZhY2Utd29mZi5odG1sID0g
UEFTUyBJTUFHRStURVhUCi1CVUdXSzY2OTA4IDogc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJh
Y2sueGh0bWwgPSBQQVNTIElNQUdFK1RFWFQgSU1BR0UKIEJVR1dLNjY5MDggV0lOIFNOT1dMRU9Q
QVJEIDogZmFzdC9jc3MvZm9udC1mYWNlLW11bHRpcGxlLWZhY2VzLmh0bWwgPSBQQVNTIElNQUdF
K1RFWFQKLUJVR1dLNjY5MDggREVCVUcgOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQu
eGh0bWwgPSBQQVNTIElNQUdFK1RFWFQKIAogQlVHV0s2Njk3NCBERUJVRyA6IGZhc3QvZXZlbnRz
L2tleWRvd24tMS5odG1sID0gUEFTUyBUSU1FT1VUCiAKQEAgLTM2MzksMTAgKzM2MjksNiBAQCBC
VUdXSzY4NzM2IE1BQyA6IGZhc3QvdGFibGUvYm9yZGVyLWNvbGxhcHNpbmcvY2FjaGVkLWNoYW5n
ZS10YWJsZS1ib3JkZXItd2lkdGguaAogQlVHV0s2ODczNiBNQUMgOiBmYXN0L3RhYmxlL2JvcmRl
ci1jb2xsYXBzaW5nL2NhY2hlZC1jaGFuZ2UtdGJvZHktYm9yZGVyLWNvbG9yLmh0bWwgPSBJTUFH
RQogQlVHV0s2ODczNiBNQUMgOiBmYXN0L3RhYmxlL2JvcmRlci1jb2xsYXBzaW5nL2NhY2hlZC1j
aGFuZ2UtdGJvZHktYm9yZGVyLXdpZHRoLmh0bWwgPSBJTUFHRQogCi0vLyBUaGlzIHRlc3QgaXMg
Zmxha3kgYW5kIGNhdXNpbmcgdHJvdWJsZSBmb3IgdGhlIExpbnV4IEVXUy4gSXQgaXMgZmxha3kg
b24gdGhlCi0vLyBtYWluIGJvdHMgdG9vLCBhbHRob3VnaCBub3QgYXMgZmxha3kgZm9yIHNvbWUg
cmVhc29uLgotQlVHQUJBUlRIIFdJTiBMSU5VWCA6IHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQt
c3BhY2luZy5odG1sID0gUEFTUyBGQUlMCi0KIEJVR1dLNjg3NDcgOiBtZWRpYS9jb250cm9scy1y
aWdodC1jbGljay1vbi10aW1lYmFyLmh0bWwgPSBUSU1FT1VUIFBBU1MKIAogQlVHQ1I5NzY1NyBN
QUMgQ1BVLUNHIDogbWVkaWEvYXVkaW8tcmVwYWludC5odG1sID0gVElNRU9VVCBJTUFHRSBQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1i
LnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCmlu
ZGV4IDA4NWJkMTlmZGJjZGY1YTA1NmRiOGMwMWNmMmRhMzU3NTQ3ODBiYTIuLmQyNjgyNGY2MGNm
YWQ4ZTkzZTU5Zjk3NGYzZjc5NmUzMDViM2JjMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2
Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCisrKyBiL0xheW91dFRlc3RzL3N2Zy9X
M0MtU1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCkBAIC0xMTQsMTAgKzExNCwxMyBAQAogCTx0
ZXh0IGlkPSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgZm9udC1zaXplPSI0MCIgc3Ryb2tlPSJu
b25lIiBmaWxsPSJibGFjayI+JFJldmlzaW9uOiAxLjcgJDwvdGV4dD4KIAk8cmVjdCBpZD0idGVz
dC1mcmFtZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjQ3OCIgaGVpZ2h0PSIzNTgiIGZpbGw9Im5vbmUi
IHN0cm9rZT0iIzAwMDAwMCIvPgogICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7Ci0gICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAx
MDApOworICAgICAgICAgICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoaW50ZXJuYWxzLmlzQ3VzdG9tRm9udExvYWRlZChkb2N1bWVudCwgJ1Rl
c3RDb21pYycpKQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfQogICAg
ICAgICA8L3NjcmlwdD4KIDwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9zY3JpcHQtdGVzdHMvc3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMuanMgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5qcwpp
bmRleCBjMDM1YTllMWFmM2JkOWJhOTIyYTdjYzdiZDUzZDdhN2M5ZjI0NGNhLi4zOTQ3NDRiZjNj
YjUxMWNiZjNiZThmZmYxYzFhODNkZGY0NGEyYmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5qcworKysg
Yi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1j
b250cm9scy5qcwpAQCAtMSw1ICsxLDcgQEAKIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQg
dGhlIHdpZHRoIG9mIHRleHRhcmVhcyBhbmQgaW5wdXRzIGlzIGNvcnJlY3RseSBjYWxjdWxhdGVk
IGJhc2VkIG9uIHRoZSBtZXRyaWNzIG9mIHRoZSBTVkcgZm9udC4nKTsKIAord2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCiB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3R5bGUnKTsKIC8vIEZJWE1FOiBJcyB0aGVyZSBhIGJldHRlciB3YXkgdG8gY3JlYXRl
IGEgZm9udC1mYWNlIGZyb20gSlM/CiBzdHlsZUVsZW1lbnQuaW5uZXJUZXh0ID0gJ0Bmb250LWZh
Y2UgeyBmb250LWZhbWlseTogIlNWR3JhZmZpdGkiOyBzcmM6IHVybCgicmVzb3VyY2VzL2dyYWZm
aXRpLnN2ZyNTVkdyYWZmaXRpIikgZm9ybWF0KHN2ZykgfSc7CkBAIC0xOSwxMSArMjEsMTQgQEAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CiAvLyBOZWVkcyB0byBoYXBwZW4gYmVm
b3JlIG9uTG9hZC4KIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7CiAKLS8vIE5lZWQgdG8gd2Fp
dCBmb3IgdGhlIGxvYWQgZXZlbnQgdG8gbWFrZSBzdXJlIHRoZSBmb250IGlzIGxvYWRlZC4KLXdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKQotewotICAgIGRlYnVnKCJU
ZXh0YXJlYSBvZmZzZXRXaWR0aDogIiArIHRleHRhcmVhLm9mZnNldFdpZHRoKTsKLSAgICBkZWJ1
ZygiSW5wdXQgb2Zmc2V0V2lkdGg6ICIgKyBpbnB1dC5vZmZzZXRXaWR0aCk7Ci19LCB0cnVlKTsK
K2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmIChpbnRlcm5hbHMuaXNDdXN0b21Gb250TG9hZGVkKGRvY3VtZW50LCAnU1ZHcmFm
Zml0aScpKSB7CisgICAgICAgICAgICBkZWJ1ZygiVGV4dGFyZWEgb2Zmc2V0V2lkdGg6ICIgKyB0
ZXh0YXJlYS5vZmZzZXRXaWR0aCk7CisgICAgICAgICAgICBkZWJ1ZygiSW5wdXQgb2Zmc2V0V2lk
dGg6ICIgKyBpbnB1dC5vZmZzZXRXaWR0aCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorICAgIH0sIDApOworfQogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNr
LnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwK
aW5kZXggMjcxOGFhODJiNDNlZTIxZmE5MDlkMGMyNzFiNGQ2N2RlOWRmNzE3NS4uNWYyNzg1ODNk
MWYzZDBmOTRkYWI2ZDMxOTM2M2JiYmVhZjI0ZGJhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKQEAgLTc2LDEyICs3NiwxNyBAQAogICAg
IDwhLS0gJ2EnLCAnICcsICdvJyBmcm9tIFRlc3RGb250MiwgJyYjeGJlMjsnIGNhbid0IGJlIHJl
bmRlcmVkLCBhcyBub25lIG9mIHRoZSBkZWZhdWx0IGZvbnRzIGRlZmluZXMgaXQgLS0+CiAgICAg
PHNwYW4gc3R5bGU9J2ZvbnQtZmFtaWx5OiBUZXN0Rm9udDI7IGZvbnQtc2l6ZTogNDBweDsgJz5h
ICYjeGJlMjsgbzwvc3Bhbj48YnIvPgogPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Cis8c2NyaXB0PjwhW0NEQVRBWworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5vZmZzZXRUb3A7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMTAwKTsKKyAgICAgICAgc2V0SW50
ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzLmlzQ3VzdG9tRm9u
dExvYWRlZChkb2N1bWVudCwgJ1Rlc3RGb250MScpCisgICAgICAgICAgICAgICAgJiYgaW50ZXJu
YWxzLmlzQ3VzdG9tRm9udExvYWRlZChkb2N1bWVudCwgJ1Rlc3RGb250MicpCisgICAgICAgICAg
ICAgICAgJiYgaW50ZXJuYWxzLmlzQ3VzdG9tRm9udExvYWRlZChkb2N1bWVudCwgJ1Rlc3RGb250
MycpKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfSwgMCk7CiAgICAgfQotPC9zY3JpcHQ+CitdXT48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWlu
LWh0bWwuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0bWwuaHRt
bAppbmRleCA3NDcwNWE2NzFhYzZlZDZlN2VhNmZkYzI4NTZmYzRjMjA2YWZiMjI2Li4wYWYwMTk5
MTdjYTkyMWI2ZTMyZjA0Njc5NTU2YmU4ZjU2MzRhOWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sCkBAIC0yMDksMTAgKzIwOSwxMyBAQAogPGRp
diBpZD0iZXh0cmFEaXYxIj48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXYyIj48
c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXYzIj48c3Bhbj48L3NwYW4+PC9kaXY+
DQogPGRpdiBpZD0iZXh0cmFEaXY0Ij48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFE
aXY1Ij48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBpZD0iZXh0cmFEaXY2Ij48c3Bhbj48L3NwYW4+
PC9kaXY+DQogPHNjcmlwdD4NCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ew0KKyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsNCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCiAg
ICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7DQotICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0s
IDEwMCk7DQorICAgICAgICBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsNCisgICAgICAgICAgICBp
ZiAoaW50ZXJuYWxzLmlzQ3VzdG9tRm9udExvYWRlZChkb2N1bWVudCwgJ1NWR3JhZmZpdGknKSkN
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAg
ICAgICAgfSwgMCk7DQogICAgIH0NCiA8L3NjcmlwdD4NCiA8L2JvZHk+DQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xz
LWV4cGVjdGVkLnR4dAppbmRleCBkMDM0NzczYmZkM2Q3NTI5NTZmMTc3YTA2Mzg4NDViNTAwNGE5
NTI1Li41ZWNmOGYxZDg4NjVkNGQxMzc2MjcxNGU0MDgwNTAwOTVmMzJhYWNlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNv
bnRyb2xzLWV4cGVjdGVkLnR4dApAQCAtMyw5ICszLDkgQEAgVGhpcyB0ZXN0cyB0aGF0IHRoZSB3
aWR0aCBvZiB0ZXh0YXJlYXMgYW5kIGlucHV0cyBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZCBiYXNl
ZAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1RleHRhcmVhIG9mZnNldFdpZHRoOiAx
MzkKK0lucHV0IG9mZnNldFdpZHRoOiAxMjYKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQotVGV4dGFyZWEgb2Zmc2V0V2lkdGg6IDEyMQotSW5wdXQgb2Zm
c2V0V2lkdGg6IDEwOAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1m
b250cy1zZWdtZW50ZWQueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1z
ZWdtZW50ZWQueGh0bWwKaW5kZXggN2Q4MjQ0ZjNlNzk4MzU0MTgzNDIxM2IwZDU3Y2M0YTczNjIz
MTllMi4uZGE0OGRmNWUxNjJmOGIzZjMyMThjYjg4MTE0MjZmMGQzZjIyZTMzMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtc2VnbWVudGVkLnhodG1sCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRlZC54aHRtbApAQCAtMzcs
MTIgKzM3LDE1IEBACiAKIDwhLS0gJ0FCQycgc2hvdWxkIGJlIHJlbmRlcmVkIHVzaW5nIFRpbWVz
LCAnZGVmJyB1c2luZyBDb3VyaWVyLCAnbycgdXNpbmcgdGhlIFNWRyBGb250LCBhbmQgJ08nIGFn
YWluIGJ5IFRpbWVzIC0tPgogPHAgc3R5bGU9J2ZvbnQtZmFtaWx5OiBUZXN0Rm9udDsgZm9udC1z
aXplOiA0MHB4OyAnPkFCQ2RlZm9vb088L3A+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKzxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lm9mZnNldFRvcDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOworICAgICAgICBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMuaXNDdXN0b21Gb250
TG9hZGVkKGRvY3VtZW50LCAnVGVzdEZvbnQnKSkKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDApOwogICAgIH0KLTwvc2NyaXB0
PgorXV0+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNl
Lmh0bWwKaW5kZXggOGVhNDAwYWVlNzk3ZDNkOGM2YWQwZWJkNTk3MTNhMGY1ODZlZjRmYS4uZDk1
NTRhZDA2MTk2MWVlMTM4ODM0NzY4ZDJhN2NlM2YxMmU3NzcwZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aC1uby1lbGVtZW50LXJlZmVyZW5jZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGgtbm8tZWxlbWVudC1y
ZWZlcmVuY2UuaHRtbApAQCAtMzIsMTAgKzMyLDE0IEBACiA8cCBjbGFzcz0iZmlyc3QiPlRoaXMg
dGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aCBhIGZpcnN0IGZvbnQuPC9wPg0KIDxwIGNsYXNz
PSJzZWNvbmQiPlRoaXMgdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aCBhIHNlY29uZCBmb250
LjwvcD4NCiA8c2NyaXB0Pg0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
DQorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgew0KICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KICAg
ICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRvcDsNCi0gICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwg
MTAwKTsNCisgICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgew0KKyAgICAgICAgICAgIGlm
IChpbnRlcm5hbHMuaXNDdXN0b21Gb250TG9hZGVkKGRvY3VtZW50LCAnU1ZHcmFmZml0aS1GaXJz
dCcpDQorICAgICAgICAgICAgICAgICYmIGludGVybmFscy5pc0N1c3RvbUZvbnRMb2FkZWQoZG9j
dW1lbnQsICdTVkdyYWZmaXRpLVNlY29uZCcpKQ0KKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQorICAgICAgICB9LCAwKTsNCiAgICAgfQ0KIDwvc2Ny
aXB0Pg0KIDwvYm9keT4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1m
b250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L3N2Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwKaW5kZXggYjMwNGYwZmQzNjNj
OGE1NGRlZDdhZTNjODkzNzljYTkzZDE5YmE1Yy4uZTM2Y2JjYmI5NzFhMzQyNTQ3ZGYzOTlhNWM5
OTZmNzM1YTU5M2UxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9u
dHMtd2l0aG91dC1taXNzaW5nLWdseXBoLnhodG1sCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbApAQCAtMzAsMTIgKzMwLDE1
IEBACiA8cCBjbGFzcz0idGFyZ2V0Ij5BWFg8L3A+CiA8cCBjbGFzcz0idGFyZ2V0Ij5YWFg8L3A+
CiA8cCBjbGFzcz0idGFyZ2V0Ij5BQUE8L3A+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKzxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lm9mZnNldFRvcDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOworICAgICAgICBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMuaXNDdXN0b21Gb250
TG9hZGVkKGRvY3VtZW50LCAnTXlGb250JykpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCAwKTsKICAgICB9Ci08L3NjcmlwdD4K
K11dPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9zdmctZm9udHMtd29yZC1zcGFjaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3N2Zy1mb250cy13b3JkLXNwYWNpbmcuaHRtbAppbmRleCA3MjRkZDE2Yzk4OGU4ZmFk
Yzc5ZDViN2EyNDFlN2YzZTYzOTcwOWM3Li4yZTg1ZDIyNzY4Y2U2N2M2ZmVmM2MzNmU3ZTRlMTY1
YTg3YTVmZjFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13
b3JkLXNwYWNpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13
b3JkLXNwYWNpbmcuaHRtbApAQCAtMTQsNiArMTQsMTYgQEAKICAgICA8L2hlYWQ+CiAKICAgICA8
Ym9keT4KKyAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxzLmlzQ3VzdG9tRm9udExvYWRlZChk
b2N1bWVudCwgJ1NWR3JhZmZpdGknKSkKKyAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAg
IH0KKyAgICAgIDwvc2NyaXB0PgogICAgICAgbm8gc3BhY2luZzoKICAgICAgIDxwIGNsYXNzPSJ0
ZXN0U3R5bGUiPmFiYyBhYmMgYWJjPC9wPgogICAgICAgd29yZC1zcGFjaW5nOiAxMDBweCwgYWxs
IHNob3VsZCBsb29rIHRoZSBzYW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116886</attachid>
            <date>2011-11-28 21:46:02 -0800</date>
            <delta_ts>2011-11-30 16:49:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72459-20111129144600.patch</filename>
            <type>text/plain</type>
            <size>19885</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBt
b2RlIDEwMDY0NAppbmRleCAzOGU3ZjkwYmVkNTIyMWM0ZDkxMTI5MjYzMTIzMTM2YmJiZTQyMzI3
Li41ZjIwYzNmMmFkOGM1ZmE1MjM3Y2FlNmE1NDljNDVhZDdlOWRhYWQ5Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMS0xMS0yOCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgRml4IGZsYWt5IFNWRyBmb250cyB0ZXN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NTkKKworICAgICAgICBBZGRzIGlu
dGVybmFsIEFQSXMgd2hpY2ggY2hlY2tzIGN1c3RvbSBmb250cyBhcmUgbG9hZGVkLiBUaGlzIEFQ
SXMgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjppc0ZvbnRGYWNlTG9hZGVkKTogQWRk
ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNDdXN0b21Gb250
TG9hZGVkKTogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZGVkIGlzQ3VzdG9tRm9udExvYWRlZCgpLgorCiAy
MDExLTExLTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCBmb3Iga25vd2luZyB3aGVuIGEgVHJlZUVsZW1lbnQgaXMgYWRkZWQgb3Ig
Y2hhbmdlZCBhbnl3aGVyZSBpbiBhIFRyZWVPdXRsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAppbmRleCA1OGUyMTMxNzYzZmZlZDIwMzcwNTY3OWIwNmQwOTVmYWQ4ZTBi
YzA0Li5mMWI3MWVkZjc2ZTY0MDdjZTJiMDNkZTkzMTQ4ZTYwYzJhMjA0YmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNTc1LDQgKzU3NSwxOSBAQCBGb250RGF0
YSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgYwogICAgIHJldHVybiBmYWNlLT5nZXRGb250RGF0YShmb250RGVzY3Jp
cHRpb24pOwogfQogCitib29sIENTU0ZvbnRTZWxlY3Rvcjo6aXNGb250RmFjZUxvYWRlZChjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4g
PiogZmFtaWx5Rm9udEZhY2VzID0gbV9mb250RmFjZXMuZ2V0KGZhbWlseU5hbWUpOworICAgIGlm
ICghZmFtaWx5Rm9udEZhY2VzIHx8IGZhbWlseUZvbnRGYWNlcy0+aXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbGVuZ3RoID0gZmFtaWx5Rm9udEZhY2VzLT5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBpZiAoIWZhbWlseUZvbnRGYWNlcy0+YXQoaSktPmlzTG9hZGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBlN2VhMDJiMTU4YzcyZjQ4MGQ2YmQxM2YyNTQ2
NjYwMTc3NDJjOWRiLi4yYTRlMTZhMDZlNWI2MGY3MGQ5ZGMwNGZiZGY5MjI3ZTBlMTExZGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC02OCw2ICs2OCw4IEBAIHB1Ymxp
YzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7
IH0KIAorICAgIGJvb2wgaXNGb250RmFjZUxvYWRlZChjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUp
OworCiBwcml2YXRlOgogICAgIENTU0ZvbnRTZWxlY3RvcihEb2N1bWVudCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDVhYjc4ODdlMzgzZmI0YjhhMDg5Mjk0N2Zm
YzhlMTZmNjQwMmU3ZC4uNWNkNjFhOGU3NjE1YjViM2Y4NzQ3OGFlMjY4ZDNlMjAwNDlmMThjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGVybmFscy5oIgogCisjaW5jbHVkZSAiQ1NT
Rm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCkBAIC01OTcsNCArNTk5LDE4IEBAIGJvb2wgSW50ZXJuYWxzOjp1bmlm
aWVkVGV4dENoZWNraW5nRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjCiAgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5zZXR0aW5ncygpLT51bmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKCk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0N1c3RvbUZvbnRMb2Fk
ZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIENTU1N0eWxl
U2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcklmRXhpc3Rz
KCk7CisgICAgaWYgKCFzdHlsZVNlbGVjdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCktPmlzRm9udEZhY2VMb2FkZWQo
ZmFtaWx5TmFtZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI5
MDlkNzA4OWMzZDBlYmQ1MWRiNjlhYmEzYzlhYTNiNjY0MmQ5YWIuLjllZDBkNWNmODhmNzQ3NTkz
ZTI5Y2ZmZDdiOWY0NTUyZmJkNDkyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtMTA4LDYgKzEwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tp
bmdFbmFibGVkKERvY3VtZW50KiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgdW5p
ZmllZFRleHRDaGVja2luZ0VuYWJsZWQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICBib29sIGlzQ3VzdG9tRm9udExvYWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgZmFtaWx5
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVybmFs
c0lkOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNj
Yzg5MmM2MDJkOGJmMmRhYjI2ZmIyNDk2MzQ0ZDQwMjVkMjkxMmMuLjQwMDJmMjY0MmNmNzAzMzE0
ODg1NjBjODNiYTRjNDgxZjAxODY2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTc5LDYgKzc5LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgdm9pZCBzZXRV
bmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVh
biBlbmFibGVkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4gdW5pZmll
ZFRleHRDaGVja2luZ0VuYWJsZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKyAgICAgICAgYm9vbGVhbiBpc0N1c3RvbUZvbnRMb2FkZWQoaW4gRG9jdW1lbnQg
ZG9jdW1lbnQsIGluIERPTVN0cmluZyBmYW1pbHlOYW1lKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggODUy
NzgxODRhZTM2ZDk1YmFkNGU3MTFlNTk5NzVhYzdjM2UyYTY2ZC4uODkwY2U5Nzg1NzAwZTEzODg1
YmIyMTc5NTkwMTE0ZjgxMjU5Njk1YgotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTEtMjggIEtlbmlj
aGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeCBmbGFreSBT
VkcgZm9udHMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcyNDU5CisKKyAgICAgICAgQWRkcyB3YWl0Rm9yU1ZHRm9udHNMb2FkZWQoKS4gVGhp
cyB0YWtlcyBhIGxpc3Qgb2YgZm9udHMgdG8gYmUgd2FpdGVkIGZvciBhbmQgYSBjYWxsYmFjayBm
dW5jdGlvbiB0aGF0IHNob3VsZCBiZSBmaXJlZCBvbmNlIHRoZSBmb250cyBsb2FkZWQuIElmIHRo
ZSBjYWxsYmFjayBpcyBub3QgcHJvdmlkZWQgdGhlbiBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCkgaXMgY2FsbGVkLgorICAgICAgICBDaGFuZ2VzIHN2ZyBmb250IHRlc3RzIHRvIHVz
ZSB0aGlzIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGUgZm9udHMgYXJlIGxvYWRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogUmVtb3ZlZCBzdmcgZm9udCB0ZXN0cyB3aGlj
aCBzaG91bGQgbm90IGJlIGZsYWt5LgorICAgICAgICAqIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1l
bGVtLTA3LWIuc3ZnOiBVc2VzIHdhaXRGb3JTVkdGb250c0xvYWRlZCgpLgorICAgICAgICAqIHN2
Zy9jdXN0b20vcmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanM6IEFkZGVkLgorICAg
ICAgICAod2FpdEZvclNWR0ZvbnRzTG9hZGVkLml0ZXJhdG9yKToKKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5qczogVXNlcyB3YWl0
Rm9yU1ZHRm9udHNMb2FkZWQoKS4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy1mYWxs
YmFjay54aHRtbDogRGl0dG8uCisgICAgICAgICogc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRt
bC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNv
bnRyb2xzLWV4cGVjdGVkLnR4dDogUmViYXNlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1m
b250cy1pbi10ZXh0LWNvbnRyb2xzLmh0bWw6CisgICAgICAgICogc3ZnL2N1c3RvbS9zdmctZm9u
dHMtc2VnbWVudGVkLnhodG1sOiBVc2VzIHdhaXRGb3JTVkdGb250c0xvYWRlZCgpLgorICAgICAg
ICAqIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGgtbm8tZWxlbWVudC1yZWZlcmVuY2UuaHRtbDog
RGl0dG8uCisgICAgICAgICogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aG91dC1taXNzaW5nLWds
eXBoLnhodG1sOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250cy13b3JkLXNw
YWNpbmcuaHRtbDogRGl0dG8uCisKIDIwMTEtMTEtMjggIEplZmYgVGltYW51cyAgPHR3aXpAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFN1cHByZXNzaW5nIGEgZmFpbGluZyB3ZWJnbCBjb25mb3Jt
YW5jZSB0ZXN0IG9uIE1hYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA4ZDlhODA4MWI1NjNmZTgyNjRjMzFmMjFkODFk
NjIyMzZhZjkzZDRjLi5kZGJiMzIzNTVkMmMzNWFkYjc3MjM3NTA2MTQ4NzkzM2MwZjEyMTdhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CkBAIC04NjUsOCArODY1LDYgQEAgQlVHV0s2Mjk3NCBMSU5VWCBXSU4gOiBzdmcvd2lj
ZC90ZXN0LXJpZ2h0c2l6aW5nLWIueGh0bWwgPSBJTUFHRStURVhUCiBCVUdXSzYyOTc0IE1BQyA6
IHN2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54aHRtbCA9IElNQUdFCiAvLyBFeHRlbmRlZCBi
eSBCVUdDUjEwMTc5Ny4KIC8vIEJVR1dLNjI5NzQgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1h
dGUtZWxlbS0zNi10LnN2ZyA9IElNQUdFCi1CVUdXSzYyOTc0IDogc3ZnL2N1c3RvbS9zdmctZm9u
dHMtaW4taHRtbC5odG1sID0gSU1BR0UKLUJVR1dLNjI5NzQgOiBzdmcvY3VzdG9tL3N2Zy1mb250
cy13aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNlLmh0bWwgPSBJTUFHRStURVhUIElNQUdFCiBCVUdX
SzYyOTc0IE1BQyA6IHN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA4LWIuc3ZnID0gSU1B
R0UKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MjQsNyArMTYyMiw2IEBAIEJVR0NSMTEyNTEgV0lOIERF
QlVHIDogZmFzdC9mb3Jtcy90ZXh0YXJlYS13aWR0aC5odG1sID0gRkFJTAogQlVHQ1IxMTI1MSBT
TE9XIFdJTiBSRUxFQVNFIDogZmFzdC9mb3Jtcy90ZXh0YXJlYS13aWR0aC5odG1sID0gRkFJTAog
QlVHQ1IxMTI1MSBMSU5VWCBXSU4gUkVMRUFTRSA6IGZhc3QvZm9ybXMvdGV4dC1jb250cm9sLWlu
dHJpbnNpYy13aWR0aHMuaHRtbCA9IEZBSUwKIEJVR0NSMTEyNTEgTElOVVggV0lOIERFQlVHIDog
ZmFzdC9mb3Jtcy90ZXh0LWNvbnRyb2wtaW50cmluc2ljLXdpZHRocy5odG1sID0gRkFJTAotQlVH
Q1IxMTI1MSBMSU5VWCBXSU4gOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xz
Lmh0bWwgPSBGQUlMCiBCVUdDUjExMjUxIExJTlVYIFdJTiA6IGZhc3QvZm9ybXMvdGV4dGFyZWEt
bWV0cmljcy5odG1sID0gRkFJTAogCiAvLyBSZWdyZXNzc2lvbnMgZnJvbSBXZWJLaXQgTWVyZ2Ug
NDMxMTQ6NDMyNDIgdGhhdCBqdXN0IG5lZWQgdG8gYmUgcmUtYmFzZWxpbmVkLgpAQCAtMjIxMSwx
MSArMjIwOCw2IEBAIEJVR0NSNTMwNzMgTElOVVggOiBzdmcvY3VzdG9tL2NsaXAtcGF0aC11bml0
cy1jaGFuZ2VzLnN2ZyA9IFBBU1MgVEVYVAogLy8gc3BlY2lhbC1kb2N1bWVudCBtYWNoaW5lcnkg
c3RpbGwgd29ya3MuCiBCVUdDUjUzNTQ2IFdPTlRGSVggTElOVVggOiB1c2Vyc2NyaXB0cy91c2Vy
LXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sID0gVEVYVAogCi0vLyBUaGVzZSB0ZXN0cyBhcmUg
Y29uc2lzdGVudGx5IGZhaWxpbmcgb24gTGludXgsIGFuZCB0aGUgbGF0dGVyIHRlc3QgaXMgZmxh
a3kgb24gV2luLgotQlVHQ1I1MzU1NCBMSU5VWCA6IHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVt
LTA3LWIuc3ZnID0gSU1BR0UrVEVYVCBJTUFHRQotQlVHQ1I1MzU1NCBXSU4gOiBzdmcvY3VzdG9t
L3N2Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwgPSBQQVNTIElNQUdFCi1CVUdD
UjUzNTU0IExJTlVYIDogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aG91dC1taXNzaW5nLWdseXBo
LnhodG1sID0gSU1BR0UrVEVYVCBJTUFHRQotCiAvLyBOZXcgdGVzdCwgbmVlZCB0byB2ZXJpZnkg
aWYgaXQncyBzYWZlIHRvIHJlYmFzZWxpbmUuCiBCVUdXSzQ0NzcwIExJTlVYIFdJTiA6IHN2Zy9y
ZXBhaW50L2ZpbHRlci1yZXBhaW50LnN2ZyA9IENSQVNIIElNQUdFK1RFWFQKIApAQCAtMzQwNSw5
ICszMzk3LDcgQEAgQlVHV0s2NjkwMCBTTk9XTEVPUEFSRCBDUFUtQ0cgOiBmYXN0L3dyaXRpbmct
bW9kZS9qYXBhbmVzZS1ybC10ZXh0LXdpdGgtYnJva2VuLWYKIEJVR1dLNjY5MDggV0lOIExJTlVY
IEdQVSBERUJVRyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmZvbnRmYWNlLm5v
dGlucGFnZS5odG1sID0gUEFTUyBURVhUCiBCVUdXSzY2OTA4IExFT1BBUkQgR1BVIDogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuZm9udGZhY2Uubm90aW5wYWdlLmh0bWwgPSBQQVNT
IFRFWFQKIEJVR1dLNjY5MDggOiBmYXN0L2Nzcy9mb250LWZhY2Utd29mZi5odG1sID0gUEFTUyBJ
TUFHRStURVhUCi1CVUdXSzY2OTA4IDogc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0
bWwgPSBQQVNTIElNQUdFK1RFWFQgSU1BR0UKIEJVR1dLNjY5MDggV0lOIFNOT1dMRU9QQVJEIDog
ZmFzdC9jc3MvZm9udC1mYWNlLW11bHRpcGxlLWZhY2VzLmh0bWwgPSBQQVNTIElNQUdFK1RFWFQK
LUJVR1dLNjY5MDggREVCVUcgOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQueGh0bWwg
PSBQQVNTIElNQUdFK1RFWFQKIAogQlVHV0s2Njk3NCBERUJVRyA6IGZhc3QvZXZlbnRzL2tleWRv
d24tMS5odG1sID0gUEFTUyBUSU1FT1VUCiAKQEAgLTM1NDUsMTAgKzM1MzUsNiBAQCBCVUdXSzY4
NzM2IE1BQyA6IGZhc3QvdGFibGUvYm9yZGVyLWNvbGxhcHNpbmcvY2FjaGVkLWNoYW5nZS10YWJs
ZS1ib3JkZXItd2lkdGguaAogQlVHV0s2ODczNiBNQUMgOiBmYXN0L3RhYmxlL2JvcmRlci1jb2xs
YXBzaW5nL2NhY2hlZC1jaGFuZ2UtdGJvZHktYm9yZGVyLWNvbG9yLmh0bWwgPSBJTUFHRQogQlVH
V0s2ODczNiBNQUMgOiBmYXN0L3RhYmxlL2JvcmRlci1jb2xsYXBzaW5nL2NhY2hlZC1jaGFuZ2Ut
dGJvZHktYm9yZGVyLXdpZHRoLmh0bWwgPSBJTUFHRQogCi0vLyBUaGlzIHRlc3QgaXMgZmxha3kg
YW5kIGNhdXNpbmcgdHJvdWJsZSBmb3IgdGhlIExpbnV4IEVXUy4gSXQgaXMgZmxha3kgb24gdGhl
Ci0vLyBtYWluIGJvdHMgdG9vLCBhbHRob3VnaCBub3QgYXMgZmxha3kgZm9yIHNvbWUgcmVhc29u
LgotQlVHQUJBUlRIIFdJTiBMSU5VWCA6IHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2lu
Zy5odG1sID0gUEFTUyBGQUlMCi0KIEJVR1dLNjg3NDcgOiBtZWRpYS9jb250cm9scy1yaWdodC1j
bGljay1vbi10aW1lYmFyLmh0bWwgPSBUSU1FT1VUIFBBU1MKIAogQlVHQ1I5NzY1NyBNQUMgQ1BV
LUNHIDogbWVkaWEvYXVkaW8tcmVwYWludC5odG1sID0gVElNRU9VVCBJTUFHRSBQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1iLnN2ZyBi
L0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCmluZGV4IDA4
NWJkMTlmZGJjZGY1YTA1NmRiOGMwMWNmMmRhMzU3NTQ3ODBiYTIuLjgwZTM2ZjY3ZWMzNjA0YjRh
MTdjNWZhN2Y1ZGFkYmYzOGI2NDY1ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9XM0Mt
U1ZHLTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCisrKyBiL0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZH
LTEuMS9mb250cy1lbGVtLTA3LWIuc3ZnCkBAIC0xMTMsMTEgKzExMyw4IEBACiAJPC9nPgogCTx0
ZXh0IGlkPSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgZm9udC1zaXplPSI0MCIgc3Ryb2tlPSJu
b25lIiBmaWxsPSJibGFjayI+JFJldmlzaW9uOiAxLjcgJDwvdGV4dD4KIAk8cmVjdCBpZD0idGVz
dC1mcmFtZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjQ3OCIgaGVpZ2h0PSIzNTgiIGZpbGw9Im5vbmUi
IHN0cm9rZT0iIzAwMDAwMCIvPgorICAgICAgICA8c2NyaXB0IHhsaW5rOmhyZWY9Ii4uL2N1c3Rv
bS9yZXNvdXJjZXMvU1ZHRm9udC1sb2FkaW5nLWV2ZW50cy5qcyI+PC9zY3JpcHQ+CiAgICAgICAg
IDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7Ci0gICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOyB9LCAxMDApOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgd2FpdEZv
clNWR0ZvbnRzTG9hZGVkKFsnVGVzdENvbWljJ10pOwogICAgICAgICA8L3NjcmlwdD4KIDwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvU1ZHRm9udC1s
b2FkaW5nLWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL1NWR0Zv
bnQtbG9hZGluZy1ldmVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVmZDFkYTE3M2I1OGM4NTc2NDgyOTFh
NmJiZWFjNWYzYjUxNDhlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vcmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMKQEAgLTAsMCArMSwyMyBAQAor
ZnVuY3Rpb24gd2FpdEZvclNWR0ZvbnRzTG9hZGVkKGZvbnRzLCBjYWxsYmFjaykgeworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFmb250cyB8fCAhZm9udHMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZhciBmYW1pbHkgPSBmb250cy5zaGlmdCgpOworICAgICAg
ICAgICAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGludGVybmFscy5pc0N1c3RvbUZvbnRMb2FkZWQoZG9jdW1lbnQsIGZhbWlseSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CisgICAgICAgICAgICAg
ICAgICAgIGl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMCk7
CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3IoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1jb250
cm9scy5qcyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1p
bi10ZXh0LWNvbnRyb2xzLmpzCmluZGV4IGMwMzVhOWUxYWYzYmQ5YmE5MjJhN2NjN2JkNTNkN2E3
YzlmMjQ0Y2EuLjU4MGE1ZmIwYWU4M2E4NTY3ODhkMTYzNmYzMWFhNDkwMjM1NjM1YWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1pbi10
ZXh0LWNvbnRyb2xzLmpzCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3Rz
L3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLmpzCkBAIC0xLDUgKzEsNyBAQAogZGVzY3JpcHRp
b24oJ1RoaXMgdGVzdHMgdGhhdCB0aGUgd2lkdGggb2YgdGV4dGFyZWFzIGFuZCBpbnB1dHMgaXMg
Y29ycmVjdGx5IGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG1ldHJpY3Mgb2YgdGhlIFNWRyBmb250
LicpOwogCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKIHZhciBzdHlsZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogLy8gRklYTUU6IElzIHRoZXJlIGEg
YmV0dGVyIHdheSB0byBjcmVhdGUgYSBmb250LWZhY2UgZnJvbSBKUz8KIHN0eWxlRWxlbWVudC5p
bm5lclRleHQgPSAnQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAiU1ZHcmFmZml0aSI7IHNyYzog
dXJsKCJyZXNvdXJjZXMvZ3JhZmZpdGkuc3ZnI1NWR3JhZmZpdGkiKSBmb3JtYXQoc3ZnKSB9JzsK
QEAgLTE5LDExICsyMSwxMCBAQCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsKIC8v
IE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgb25Mb2FkLgogZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0
aDsKIAotLy8gTmVlZCB0byB3YWl0IGZvciB0aGUgbG9hZCBldmVudCB0byBtYWtlIHN1cmUgdGhl
IGZvbnQgaXMgbG9hZGVkLgotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
bigpCi17Cit3YWl0Rm9yU1ZHRm9udHNMb2FkZWQoWydTVkdyYWZmaXRpJ10sIGZ1bmN0aW9uKCkg
ewogICAgIGRlYnVnKCJUZXh0YXJlYSBvZmZzZXRXaWR0aDogIiArIHRleHRhcmVhLm9mZnNldFdp
ZHRoKTsKICAgICBkZWJ1ZygiSW5wdXQgb2Zmc2V0V2lkdGg6ICIgKyBpbnB1dC5vZmZzZXRXaWR0
aCk7Ci19LCB0cnVlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOwogCiB2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3Zn
LWZvbnRzLWZhbGxiYWNrLnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMt
ZmFsbGJhY2sueGh0bWwKaW5kZXggMjcxOGFhODJiNDNlZTIxZmE5MDlkMGMyNzFiNGQ2N2RlOWRm
NzE3NS4uNzM0MDEzNDE5ZDdiM2JkZTM3NzQwYzhjMGMwYzNmZTAyMGQ0YTRkMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKQEAgLTc2LDEy
ICs3Niw5IEBACiAgICAgPCEtLSAnYScsICcgJywgJ28nIGZyb20gVGVzdEZvbnQyLCAnJiN4YmUy
OycgY2FuJ3QgYmUgcmVuZGVyZWQsIGFzIG5vbmUgb2YgdGhlIGRlZmF1bHQgZm9udHMgZGVmaW5l
cyBpdCAtLT4KICAgICA8c3BhbiBzdHlsZT0nZm9udC1mYW1pbHk6IFRlc3RGb250MjsgZm9udC1z
aXplOiA0MHB4OyAnPmEgJiN4YmUyOyBvPC9zcGFuPjxici8+CiA8L3A+Ci08c2NyaXB0PgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQub2Zmc2V0VG9wOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDEwMCk7Ci0gICAgfQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD48IVtDREFUQVsKKyAgICB3YWl0Rm9yU1ZHRm9udHNMb2FkZWQoWydUZXN0Rm9udDEn
LCAnVGVzdEZvbnQyJywgJ1Rlc3RGb250MyddKTsKK11dPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRt
bC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sCmlu
ZGV4IDc0NzA1YTY3MWFjNmVkNmU3ZWE2ZmRjMjg1NmZjNGMyMDZhZmIyMjYuLjUzZWFlODA5OWEw
MzFlYWE0ZDU1NWUwNDRiZWZlNjMwODA0ZTYzNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2
Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0bWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWwKQEAgLTIwOCwxMiArMjA4LDkgQEAKIDwhLS0gQWRk
IGEgYmFja2dyb3VuZCBpbWFnZSB0byBlYWNoIGFuZCB1c2Ugd2lkdGggYW5kIGhlaWdodCB0byBj
b250cm9sIHNpemluZywgcGxhY2Ugd2l0aCBhYnNvbHV0ZSBwb3NpdGlvbmluZyAtLT4NCiA8ZGl2
IGlkPSJleHRyYURpdjEiPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjIiPjxz
cGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjMiPjxzcGFuPjwvc3Bhbj48L2Rpdj4N
CiA8ZGl2IGlkPSJleHRyYURpdjQiPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURp
djUiPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjYiPjxzcGFuPjwvc3Bhbj48
L2Rpdj4NCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMi
Pjwvc2NyaXB0Pg0KIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCi0g
ICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7DQotICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0s
IDEwMCk7DQotICAgIH0NCisgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVkKFsnU1ZHcmFmZml0aSdd
KTsNCiA8L3NjcmlwdD4NCiA8L2JvZHk+DQogPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3Rl
ZC50eHQKaW5kZXggZDAzNDc3M2JmZDNkNzUyOTU2ZjE3N2EwNjM4ODQ1YjUwMDRhOTUyNS4uNWVj
ZjhmMWQ4ODY1ZDRkMTM3NjI3MTRlNDA4MDUwMDk1ZjMyYWFjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1l
eHBlY3RlZC50eHQKQEAgLTMsOSArMyw5IEBAIFRoaXMgdGVzdHMgdGhhdCB0aGUgd2lkdGggb2Yg
dGV4dGFyZWFzIGFuZCBpbnB1dHMgaXMgY29ycmVjdGx5IGNhbGN1bGF0ZWQgYmFzZWQKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitUZXh0YXJlYSBvZmZzZXRXaWR0aDogMTM5CitJbnB1
dCBvZmZzZXRXaWR0aDogMTI2CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKLVRleHRhcmVhIG9mZnNldFdpZHRoOiAxMjEKLUlucHV0IG9mZnNldFdpZHRo
OiAxMDgKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4t
dGV4dC1jb250cm9scy5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4t
dGV4dC1jb250cm9scy5odG1sCmluZGV4IDhlZjU0MjlmOWQ0OTA1NGM1MTlkMmQyZDllNDdjNzJl
MTE2MjI0MDcuLmNkMjM2ZGEwNjEyMWY2YTNlZDM4NTkxZjI2ZjgyMTI3Y2UwZGM1OWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRy
b2xzLmh0bWwKQEAgLTYsNiArNiw3IEBACiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0Zv
bnQtbG9hZGluZy1ldmVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRl
ZC54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRlZC54aHRt
bAppbmRleCA3ZDgyNDRmM2U3OTgzNTQxODM0MjEzYjBkNTdjYzRhNzM2MjMxOWUyLi45ZGIxYWRm
YjVhMDM5MzJkNmI5OTkxNDJlNDkxZDQwYWJlYzU3OWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9zdmctZm9udHMtc2VnbWVudGVkLnhodG1sCkBAIC0zNywxMiArMzcsOSBAQAog
CiA8IS0tICdBQkMnIHNob3VsZCBiZSByZW5kZXJlZCB1c2luZyBUaW1lcywgJ2RlZicgdXNpbmcg
Q291cmllciwgJ28nIHVzaW5nIHRoZSBTVkcgRm9udCwgYW5kICdPJyBhZ2FpbiBieSBUaW1lcyAt
LT4KIDxwIHN0eWxlPSdmb250LWZhbWlseTogVGVzdEZvbnQ7IGZvbnQtc2l6ZTogNDBweDsgJz5B
QkNkZWZvb29PPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRvcDsKLSAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAx
MDApOwotICAgIH0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdGb250LWxv
YWRpbmctZXZlbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgd2FpdEZv
clNWR0ZvbnRzTG9hZGVkKFsnVGVzdEZvbnQnXSk7CitdXT48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGgt
bm8tZWxlbWVudC1yZWZlcmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZv
bnRzLXdpdGgtbm8tZWxlbWVudC1yZWZlcmVuY2UuaHRtbAppbmRleCA4ZWE0MDBhZWU3OTdkM2Q4
YzZhZDBlYmQ1OTcxM2EwZjU4NmVmNGZhLi4xMjEzMThmNzY4MzljNzFiYzk3YzJlZTUzYzllNTI5
MGFjOWQ2OTJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13
aXRoLW5vLWVsZW1lbnQtcmVmZXJlbmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9zdmctZm9udHMtd2l0aC1uby1lbGVtZW50LXJlZmVyZW5jZS5odG1sCkBAIC0zMSwxMiArMzEs
OSBAQAogPGJvZHk+DQogPHAgY2xhc3M9ImZpcnN0Ij5UaGlzIHRleHQgc2hvdWxkIGJlIHJlbmRl
cmVkIHdpdGggYSBmaXJzdCBmb250LjwvcD4NCiA8cCBjbGFzcz0ic2Vjb25kIj5UaGlzIHRleHQg
c2hvdWxkIGJlIHJlbmRlcmVkIHdpdGggYSBzZWNvbmQgZm9udC48L3A+DQorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpzIj48L3NjcmlwdD4NCiA8c2NyaXB0
Pg0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQotICAgICAgICBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQub2Zmc2V0VG9wOw0KLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOw0KLSAgICB9DQorICAg
IHdhaXRGb3JTVkdGb250c0xvYWRlZChbJ1NWR3JhZmZpdGktRmlyc3QnLCAnU1ZHcmFmZml0aS1T
ZWNvbmQnXSk7DQogPC9zY3JpcHQ+DQogPC9ib2R5Pg0KIA0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbCBiL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRt
bAppbmRleCBiMzA0ZjBmZDM2M2M4YTU0ZGVkN2FlM2M4OTM3OWNhOTNkMTliYTVjLi5jNWQ4OGI2
OTY2MmZjZTVmMTBhYzFjZGE5MDhkN2ZlODc5YTdiNThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aG91dC1taXNzaW5nLWdseXBoLnho
dG1sCkBAIC0zMCwxMiArMzAsOSBAQAogPHAgY2xhc3M9InRhcmdldCI+QVhYPC9wPgogPHAgY2xh
c3M9InRhcmdldCI+WFhYPC9wPgogPHAgY2xhc3M9InRhcmdldCI+QUFBPC9wPgotPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50Lm9mZnNldFRvcDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOwotICAgIH0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVkKFsnTXlGb250
J10pOworXV0+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13b3JkLXNwYWNpbmcuaHRtbCBiL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2luZy5odG1sCmluZGV4IDcyNGRkMTZjOTg4
ZThmYWRjNzlkNWI3YTI0MWU3ZjNlNjM5NzA5YzcuLjQzZDUzZmEzNmM2ZDQzZDc1MmZiZjc3NDAw
YWJmMzY5NmExNjVkZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZv
bnRzLXdvcmQtc3BhY2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZv
bnRzLXdvcmQtc3BhY2luZy5odG1sCkBAIC0xNCw2ICsxNCwxMCBAQAogICAgIDwvaGVhZD4KIAog
ICAgIDxib2R5PgorICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdGb250LWxvYWRpbmct
ZXZlbnRzLmpzIj48L3NjcmlwdD4KKyAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgd2FpdEZvclNW
R0ZvbnRzTG9hZGVkKFsnU1ZHcmFmZml0aSddKTsKKyAgICAgIDwvc2NyaXB0PgogICAgICAgbm8g
c3BhY2luZzoKICAgICAgIDxwIGNsYXNzPSJ0ZXN0U3R5bGUiPmFiYyBhYmMgYWJjPC9wPgogICAg
ICAgd29yZC1zcGFjaW5nOiAxMDBweCwgYWxsIHNob3VsZCBsb29rIHRoZSBzYW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117295</attachid>
            <date>2011-11-30 16:49:44 -0800</date>
            <delta_ts>2011-11-30 16:49:44 -0800</delta_ts>
            <desc>Try symbol export</desc>
            <filename>bug-72459-20111201094942.patch</filename>
            <type>text/plain</type>
            <size>21466</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgxYzFmOTM2NGRjNWE4
YzI5MDlkOGZjZDAxOWRlZWVkZTYyMzYwZC4uMjRlYjg4MTU4ZmFkMDY1MzA2NGQyNDdhYzA2NjM4
ZDE2Y2M0MTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTMwICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggZmxha3kg
U1ZHIGZvbnRzIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjQ1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZHMgaW50ZXJuYWwgQVBJcyB3aGljaCBjaGVja3MgY3VzdG9tIGZvbnRzIGFyZSBs
b2FkZWQuIFRoaXMgQVBJcyBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwdXJwb3NlLgorCisgICAg
ICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
U2VsZWN0b3I6OmlzRm9udEZhY2VMb2FkZWQpOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTRm9u
dFNlbGVjdG9yLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjppc0N1c3RvbUZvbnRMb2FkZWQpOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgaXNDdXN0b21Gb250TG9hZGVkKCkuCisKIDIwMTEtMTEtMzAgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2Fubm90IHNlbGVjdCBSVEwgdGV4dCBpbnNp
ZGUgTFRSIHRleHQgZnJvbSByaWdodCB0byBsZWZ0IGJ5IGEgbW91c2UgZHJhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA5OWZkMWNjZTQxZjI4Zjk5MzQyMjJhMjJjYjY5NGM5NWNiZDIxZmFlLi4y
Yjc2Y2NiYmFmOTM0Y2VmOWQyMmFlNDZlODJjMTUwMGVkYzY4ZGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtNDExLDYgKzQxMSw3IEBAIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXRy
YW5zbGF0ZUVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUVkZGRkZGQKIF9fWk43
V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFFdgogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3Vy
Y2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VS
TEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJD
b3JlMTVDU1NGb250U2VsZWN0b3IxNmlzRm9udEZhY2VMb2FkZWRFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNv
cmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTJk
ZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCmluZGV4IDU4ZTIxMzE3NjNmZmVkMjAzNzA1Njc5YjA2ZDA5NWZhZDhlMGJj
MDQuLmYxYjcxZWRmNzZlNjQwN2NlMmIwM2RlOTMxNDhlNjBjMmEyMDRiY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC01NzUsNCArNTc1LDE5IEBAIEZvbnREYXRh
KiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBjCiAgICAgcmV0dXJuIGZhY2UtPmdldEZvbnREYXRhKGZvbnREZXNjcmlw
dGlvbik7CiB9CiAKK2Jvb2wgQ1NTRm9udFNlbGVjdG9yOjppc0ZvbnRGYWNlTG9hZGVkKGNvbnN0
IFN0cmluZyYgZmFtaWx5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+
KiBmYW1pbHlGb250RmFjZXMgPSBtX2ZvbnRGYWNlcy5nZXQoZmFtaWx5TmFtZSk7CisgICAgaWYg
KCFmYW1pbHlGb250RmFjZXMgfHwgZmFtaWx5Rm9udEZhY2VzLT5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBsZW5ndGggPSBmYW1pbHlGb250RmFjZXMtPnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
IGlmICghZmFtaWx5Rm9udEZhY2VzLT5hdChpKS0+aXNMb2FkZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGU3ZWEwMmIxNThjNzJmNDgwZDZiZDEzZjI1NDY2
NjAxNzc0MmM5ZGIuLjJhNGUxNmEwNmU1YjYwZjcwZDlkYzA0ZmJkZjkyMjdlMGUxMTFkY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGlj
OgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsg
fQogCisgICAgYm9vbCBpc0ZvbnRGYWNlTG9hZGVkKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSk7
CisKIHByaXZhdGU6CiAgICAgQ1NTRm9udFNlbGVjdG9yKERvY3VtZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkNWFiNzg4N2UzODNmYjRiOGEwODkyOTQ3ZmZj
OGUxNmY2NDAyZTdkLi41Y2Q2MWE4ZTc2MTViNWIzZjg3NDc4YWUyNjhkM2UyMDA0OWYxOGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxzLmgiCiAKKyNpbmNsdWRlICJDU1NG
b250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKQEAgLTU5Nyw0ICs1OTksMTggQEAgYm9vbCBJbnRlcm5hbHM6OnVuaWZp
ZWRUZXh0Q2hlY2tpbmdFbmFibGVkKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYg
ZWMKICAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPnNldHRpbmdzKCktPnVuaWZpZWRUZXh0
Q2hlY2tlckVuYWJsZWQoKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6OmlzQ3VzdG9tRm9udExvYWRl
ZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQ1NTU3R5bGVT
ZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGRvY3VtZW50LT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMo
KTsKKyAgICBpZiAoIXN0eWxlU2VsZWN0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBzdHlsZVNlbGVjdG9yLT5mb250U2VsZWN0b3IoKS0+aXNGb250RmFjZUxvYWRlZChm
YW1pbHlOYW1lKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjkw
OWQ3MDg5YzNkMGViZDUxZGI2OWFiYTNjOWFhM2I2NjQyZDlhYi4uOWVkMGQ1Y2Y4OGY3NDc1OTNl
MjljZmZkN2I5ZjQ1NTJmYmQ0OTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2lu
Z0VuYWJsZWQoRG9jdW1lbnQqLCBib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB1bmlm
aWVkVGV4dENoZWNraW5nRW5hYmxlZChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAg
IGJvb2wgaXNDdXN0b21Gb250TG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBmYW1pbHlO
YW1lLCBFeGNlcHRpb25Db2RlJik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxz
SWQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggY2Nj
ODkyYzYwMmQ4YmYyZGFiMjZmYjI0OTYzNDRkNDAyNWQyOTEyYy4uNDAwMmYyNjQyY2Y3MDMzMTQ4
ODU2MGM4M2JhNGM0ODFmMDE4NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtNzksNiArNzksNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICB2b2lkIHNldFVu
aWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFu
IGVuYWJsZWQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiB1bmlmaWVk
VGV4dENoZWNraW5nRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNl
cHRpb24pOworICAgICAgICBib29sZWFuIGlzQ3VzdG9tRm9udExvYWRlZChpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gRE9NU3RyaW5nIGZhbWlseU5hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
ICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
IGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA0Mzg3Y2E5MzBjOGMzMmI1
Y2Y1MjA5ZjQ0N2FhYjI0OWM1NmMzYjU2Li4wMmNkZjM5ZGQyMTI2MDcyZWNlN2E2YjhjZGU5NDU0
ZDNmY2Y3ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisr
KyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTQ3LDYgKzQ3LDcgQEAgX1pO
N1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5T
XzdFbGVtZW50RVBLTlNfNVJhbmcKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0
aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XzsKIF9a
TjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlND
OUV4ZWNTdGF0ZUVpOworX1pON1dlYkNvcmUxNUNTU0ZvbnRTZWxlY3RvcjE2aXNGb250RmFjZUxv
YWRlZEVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE3c2V0
U3VnZ2VzdGVkVmFsdWVFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xv
d0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVO
UzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM18xMFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0
c0lTNl9FRU5TQl9JUzlfRUVFRVM2XzsKIF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9F
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDc5ODA4OGM2NGNlZGI2MDkxMzBlNzc4M2U0MTYxNzJkY2RkNmU3ZjAuLmViNThh
NzRkM2YwZjgyN2Y5MTg1ODMwMTk5NzVmNjhmZGIxMjVjMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAxMS0xMS0yOCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRml4IGZsYWt5IFNWRyBmb250cyB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NTkKKworICAgICAgICBBZGRzIHdhaXRGb3JT
VkdGb250c0xvYWRlZCgpLiBUaGlzIHRha2VzIGEgbGlzdCBvZiBmb250cyB0byBiZSB3YWl0ZWQg
Zm9yIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGZpcmVkIG9uY2UgdGhl
IGZvbnRzIGxvYWRlZC4gSWYgdGhlIGNhbGxiYWNrIGlzIG5vdCBwcm92aWRlZCB0aGVuIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSBpcyBjYWxsZWQuCisgICAgICAgIENoYW5nZXMg
c3ZnIGZvbnQgdGVzdHMgdG8gdXNlIHRoaXMgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHRoZSBmb250
cyBhcmUgbG9hZGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBSZW1vdmVk
IHN2ZyBmb250IHRlc3RzIHdoaWNoIHNob3VsZCBub3QgYmUgZmxha3kuCisgICAgICAgICogc3Zn
L1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDctYi5zdmc6IFVzZXMgd2FpdEZvclNWR0ZvbnRzTG9h
ZGVkKCkuCisgICAgICAgICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvU1ZHRm9udC1sb2FkaW5nLWV2
ZW50cy5qczogQWRkZWQuCisgICAgICAgICh3YWl0Rm9yU1ZHRm9udHNMb2FkZWQuaXRlcmF0b3Ip
OgorICAgICAgICAqIHN2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1pbi10ZXh0LWNv
bnRyb2xzLmpzOiBVc2VzIHdhaXRGb3JTVkdGb250c0xvYWRlZCgpLgorICAgICAgICAqIHN2Zy9j
dXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWw6IERpdHRvLgorICAgICAgICAqIHN2Zy9jdXN0b20v
c3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMtZXhwZWN0ZWQudHh0OiBSZWJhc2VkLgorICAgICAg
ICAqIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMuaHRtbDoKKyAgICAgICAg
KiBzdmcvY3VzdG9tL3N2Zy1mb250cy1zZWdtZW50ZWQueGh0bWw6IFVzZXMgd2FpdEZvclNWR0Zv
bnRzTG9hZGVkKCkuCisgICAgICAgICogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aC1uby1lbGVt
ZW50LXJlZmVyZW5jZS5odG1sOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N2Zy1mb250
cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWw6IERpdHRvLgorICAgICAgICAqIHN2Zy9jdXN0
b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2luZy5odG1sOiBEaXR0by4KKwogMjAxMS0xMS0zMCAgVmlu
Y2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
QWRkaW5nIGJhc2VsaW5lIHZhcmlhdGlvbnMgZm9yIHBsYXRmb3JtIHNwZWNpZmljIGNvbG9yIGRp
ZmZlcmVuY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMTM4YWRjMWVhNmZjODI5Zjk4MzBiYmI4MGMzNDlkNmUwMjQz
OTZjOC4uYjY3OWE3MGI2ZmQwNTJiYmY2MzM1YWU0Y2JlMDg5NWU0OTc0YjdkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtODYxLDggKzg2MSw2IEBAIEJVR1dLNjI5NzQgTElOVVggV0lOIDogc3ZnL3dpY2QvdGVzdC1y
aWdodHNpemluZy1iLnhodG1sID0gSU1BR0UrVEVYVAogQlVHV0s2Mjk3NCBNQUMgOiBzdmcvd2lj
ZC90ZXN0LXJpZ2h0c2l6aW5nLWIueGh0bWwgPSBJTUFHRQogLy8gRXh0ZW5kZWQgYnkgQlVHQ1Ix
MDE3OTcuCiAvLyBCVUdXSzYyOTc0IFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0t
MzYtdC5zdmcgPSBJTUFHRQotQlVHV0s2Mjk3NCA6IHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0
bWwuaHRtbCA9IElNQUdFCi1CVUdXSzYyOTc0IDogc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0aC1u
by1lbGVtZW50LXJlZmVyZW5jZS5odG1sID0gSU1BR0UrVEVYVCBJTUFHRQogQlVHV0s2Mjk3NCBN
QUMgOiBzdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wOC1iLnN2ZyA9IElNQUdFCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0xNjA4LDcgKzE2MDYsNiBAQCBCVUdDUjExMjUxIFdJTiBERUJVRyA6IGZh
c3QvZm9ybXMvdGV4dGFyZWEtd2lkdGguaHRtbCA9IEZBSUwKIEJVR0NSMTEyNTEgU0xPVyBXSU4g
UkVMRUFTRSA6IGZhc3QvZm9ybXMvdGV4dGFyZWEtd2lkdGguaHRtbCA9IEZBSUwKIEJVR0NSMTEy
NTEgTElOVVggV0lOIFJFTEVBU0UgOiBmYXN0L2Zvcm1zL3RleHQtY29udHJvbC1pbnRyaW5zaWMt
d2lkdGhzLmh0bWwgPSBGQUlMCiBCVUdDUjExMjUxIExJTlVYIFdJTiBERUJVRyA6IGZhc3QvZm9y
bXMvdGV4dC1jb250cm9sLWludHJpbnNpYy13aWR0aHMuaHRtbCA9IEZBSUwKLUJVR0NSMTEyNTEg
TElOVVggV0lOIDogc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5odG1sID0g
RkFJTAogQlVHQ1IxMTI1MSBMSU5VWCBXSU4gOiBmYXN0L2Zvcm1zL3RleHRhcmVhLW1ldHJpY3Mu
aHRtbCA9IEZBSUwKIAogLy8gUmVncmVzc3Npb25zIGZyb20gV2ViS2l0IE1lcmdlIDQzMTE0OjQz
MjQyIHRoYXQganVzdCBuZWVkIHRvIGJlIHJlLWJhc2VsaW5lZC4KQEAgLTIxODQsMTEgKzIxODEs
NiBAQCBCVUdDUjUzMDczIExJTlVYIDogc3ZnL2N1c3RvbS9jbGlwLXBhdGgtdW5pdHMtY2hhbmdl
cy5zdmcgPSBQQVNTIFRFWFQKIC8vIHNwZWNpYWwtZG9jdW1lbnQgbWFjaGluZXJ5IHN0aWxsIHdv
cmtzLgogQlVHQ1I1MzU0NiBXT05URklYIExJTlVYIDogdXNlcnNjcmlwdHMvdXNlci1zY3JpcHQt
dmlkZW8tZG9jdW1lbnQuaHRtbCA9IFRFWFQKIAotLy8gVGhlc2UgdGVzdHMgYXJlIGNvbnNpc3Rl
bnRseSBmYWlsaW5nIG9uIExpbnV4LCBhbmQgdGhlIGxhdHRlciB0ZXN0IGlzIGZsYWt5IG9uIFdp
bi4KLUJVR0NSNTM1NTQgTElOVVggOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1iLnN2
ZyA9IElNQUdFK1RFWFQgSU1BR0UKLUJVR0NSNTM1NTQgV0lOIDogc3ZnL2N1c3RvbS9zdmctZm9u
dHMtd2l0aG91dC1taXNzaW5nLWdseXBoLnhodG1sID0gUEFTUyBJTUFHRQotQlVHQ1I1MzU1NCBM
SU5VWCA6IHN2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbCA9
IElNQUdFK1RFWFQgSU1BR0UKLQogLy8gTmV3IHRlc3QsIG5lZWQgdG8gdmVyaWZ5IGlmIGl0J3Mg
c2FmZSB0byByZWJhc2VsaW5lLgogQlVHV0s0NDc3MCBMSU5VWCBXSU4gOiBzdmcvcmVwYWludC9m
aWx0ZXItcmVwYWludC5zdmcgPSBDUkFTSCBJTUFHRStURVhUCiAKQEAgLTMzNjAsOSArMzM1Miw3
IEBAIEJVR1dLNjY5MDAgU05PV0xFT1BBUkQgQ1BVLUNHIDogZmFzdC93cml0aW5nLW1vZGUvamFw
YW5lc2UtcmwtdGV4dC13aXRoLWJyb2tlbi1mCiBCVUdXSzY2OTA4IFdJTiBMSU5VWCBHUFUgREVC
VUcgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2Uu
aHRtbCA9IFBBU1MgVEVYVAogQlVHV0s2NjkwOCBMRU9QQVJEIEdQVSA6IGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5kcmF3LmZvbnRmYWNlLm5vdGlucGFnZS5odG1sID0gUEFTUyBURVhUCiBC
VUdXSzY2OTA4IDogZmFzdC9jc3MvZm9udC1mYWNlLXdvZmYuaHRtbCA9IFBBU1MgSU1BR0UrVEVY
VAotQlVHV0s2NjkwOCA6IHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sID0gUEFT
UyBJTUFHRStURVhUIElNQUdFCiBCVUdXSzY2OTA4IFdJTiBTTk9XTEVPUEFSRCA6IGZhc3QvY3Nz
L2ZvbnQtZmFjZS1tdWx0aXBsZS1mYWNlcy5odG1sID0gUEFTUyBJTUFHRStURVhUCi1CVUdXSzY2
OTA4IERFQlVHIDogc3ZnL2N1c3RvbS9zdmctZm9udHMtc2VnbWVudGVkLnhodG1sID0gUEFTUyBJ
TUFHRStURVhUCiAKIEJVR1dLNjY5NzQgREVCVUcgOiBmYXN0L2V2ZW50cy9rZXlkb3duLTEuaHRt
bCA9IFBBU1MgVElNRU9VVAogCkBAIC0zNDk1LDEwICszNDg1LDYgQEAgQlVHV0s2ODczNiBNQUMg
OiBmYXN0L3RhYmxlL2JvcmRlci1jb2xsYXBzaW5nL2NhY2hlZC1jaGFuZ2UtdGFibGUtYm9yZGVy
LXdpZHRoLmgKIEJVR1dLNjg3MzYgTUFDIDogZmFzdC90YWJsZS9ib3JkZXItY29sbGFwc2luZy9j
YWNoZWQtY2hhbmdlLXRib2R5LWJvcmRlci1jb2xvci5odG1sID0gSU1BR0UKIEJVR1dLNjg3MzYg
TUFDIDogZmFzdC90YWJsZS9ib3JkZXItY29sbGFwc2luZy9jYWNoZWQtY2hhbmdlLXRib2R5LWJv
cmRlci13aWR0aC5odG1sID0gSU1BR0UKIAotLy8gVGhpcyB0ZXN0IGlzIGZsYWt5IGFuZCBjYXVz
aW5nIHRyb3VibGUgZm9yIHRoZSBMaW51eCBFV1MuIEl0IGlzIGZsYWt5IG9uIHRoZQotLy8gbWFp
biBib3RzIHRvbywgYWx0aG91Z2ggbm90IGFzIGZsYWt5IGZvciBzb21lIHJlYXNvbi4KLUJVR0FC
QVJUSCBXSU4gTElOVVggOiBzdmcvY3VzdG9tL3N2Zy1mb250cy13b3JkLXNwYWNpbmcuaHRtbCA9
IFBBU1MgRkFJTAotCiBCVUdXSzY4NzQ3IDogbWVkaWEvY29udHJvbHMtcmlnaHQtY2xpY2stb24t
dGltZWJhci5odG1sID0gVElNRU9VVCBQQVNTCiAKIEJVR0NSOTc2NTcgTUFDIENQVS1DRyA6IG1l
ZGlhL2F1ZGlvLXJlcGFpbnQuaHRtbCA9IFRJTUVPVVQgSU1BR0UgUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDctYi5zdmcgYi9MYXlvdXRU
ZXN0cy9zdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1iLnN2ZwppbmRleCAwODViZDE5ZmRi
Y2RmNWEwNTZkYjhjMDFjZjJkYTM1NzU0NzgwYmEyLi44MGUzNmY2N2VjMzYwNGI0YTE3YzVmYTdm
NWRhZGJmMzhiNjQ2NTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEv
Zm9udHMtZWxlbS0wNy1iLnN2ZworKysgYi9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEvZm9u
dHMtZWxlbS0wNy1iLnN2ZwpAQCAtMTEzLDExICsxMTMsOCBAQAogCTwvZz4KIAk8dGV4dCBpZD0i
cmV2aXNpb24iIHg9IjEwIiB5PSIzNDAiIGZvbnQtc2l6ZT0iNDAiIHN0cm9rZT0ibm9uZSIgZmls
bD0iYmxhY2siPiRSZXZpc2lvbjogMS43ICQ8L3RleHQ+CiAJPHJlY3QgaWQ9InRlc3QtZnJhbWUi
IHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9
IiMwMDAwMDAiLz4KKyAgICAgICAgPHNjcmlwdCB4bGluazpocmVmPSIuLi9jdXN0b20vcmVzb3Vy
Y2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAg
ICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0VG9wOwotICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsgfSwgMTAwKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdhaXRGb3JTVkdGb250
c0xvYWRlZChbJ1Rlc3RDb21pYyddKTsKICAgICAgICAgPC9zY3JpcHQ+CiA8L3N2Zz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1l
dmVudHMuanMgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9TVkdGb250LWxvYWRp
bmctZXZlbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYzE4NGIwZjNmMjg1ZmE2MTBjYzUzYTA5ZjE1YzI1
ZjdiMDg5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291
cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0aW9u
IHdhaXRGb3JTVkdGb250c0xvYWRlZChmb250cywgY2FsbGJhY2spIHsKKyAgICBpZiAoIXdpbmRv
dy5pbnRlcm5hbHMgfHwgIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisgICAgdmFyIGl0ZXJhdG9yID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlmICghZm9udHMgfHwgIWZvbnRzLmxlbmd0aCkgeworICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHZhciBmYW1pbHkg
PSBmb250cy5zaGlmdCgpOworICAgICAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMuaXNDdXN0b21Gb250TG9hZGVkKGRvY3Vt
ZW50LCBmYW1pbHkpKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7Cisg
ICAgICAgICAgICAgICAgaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgMCk7
CisgICAgfQorICAgIGl0ZXJhdG9yKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3NjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5qcyBiL0xheW91
dFRlc3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xz
LmpzCmluZGV4IGMwMzVhOWUxYWYzYmQ5YmE5MjJhN2NjN2JkNTNkN2E3YzlmMjQ0Y2EuLjU4MGE1
ZmIwYWU4M2E4NTY3ODhkMTYzNmYzMWFhNDkwMjM1NjM1YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLmpz
CisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc2NyaXB0LXRlc3RzL3N2Zy1mb250cy1pbi10
ZXh0LWNvbnRyb2xzLmpzCkBAIC0xLDUgKzEsNyBAQAogZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMg
dGhhdCB0aGUgd2lkdGggb2YgdGV4dGFyZWFzIGFuZCBpbnB1dHMgaXMgY29ycmVjdGx5IGNhbGN1
bGF0ZWQgYmFzZWQgb24gdGhlIG1ldHJpY3Mgb2YgdGhlIFNWRyBmb250LicpOwogCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOwogLy8gRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBj
cmVhdGUgYSBmb250LWZhY2UgZnJvbSBKUz8KIHN0eWxlRWxlbWVudC5pbm5lclRleHQgPSAnQGZv
bnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAiU1ZHcmFmZml0aSI7IHNyYzogdXJsKCJyZXNvdXJjZXMv
Z3JhZmZpdGkuc3ZnI1NWR3JhZmZpdGkiKSBmb3JtYXQoc3ZnKSB9JzsKQEAgLTE5LDExICsyMSwx
MCBAQCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsKIC8vIE5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgb25Mb2FkLgogZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKIAotLy8gTmVlZCB0
byB3YWl0IGZvciB0aGUgbG9hZCBldmVudCB0byBtYWtlIHN1cmUgdGhlIGZvbnQgaXMgbG9hZGVk
Lgotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpCi17Cit3YWl0Rm9y
U1ZHRm9udHNMb2FkZWQoWydTVkdyYWZmaXRpJ10sIGZ1bmN0aW9uKCkgewogICAgIGRlYnVnKCJU
ZXh0YXJlYSBvZmZzZXRXaWR0aDogIiArIHRleHRhcmVhLm9mZnNldFdpZHRoKTsKICAgICBkZWJ1
ZygiSW5wdXQgb2Zmc2V0V2lkdGg6ICIgKyBpbnB1dC5vZmZzZXRXaWR0aCk7Ci19LCB0cnVlKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNr
LnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwK
aW5kZXggMjcxOGFhODJiNDNlZTIxZmE5MDlkMGMyNzFiNGQ2N2RlOWRmNzE3NS4uNzM0MDEzNDE5
ZDdiM2JkZTM3NzQwYzhjMGMwYzNmZTAyMGQ0YTRkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwKQEAgLTc2LDEyICs3Niw5IEBACiAgICAg
PCEtLSAnYScsICcgJywgJ28nIGZyb20gVGVzdEZvbnQyLCAnJiN4YmUyOycgY2FuJ3QgYmUgcmVu
ZGVyZWQsIGFzIG5vbmUgb2YgdGhlIGRlZmF1bHQgZm9udHMgZGVmaW5lcyBpdCAtLT4KICAgICA8
c3BhbiBzdHlsZT0nZm9udC1mYW1pbHk6IFRlc3RGb250MjsgZm9udC1zaXplOiA0MHB4OyAnPmEg
JiN4YmUyOyBvPC9zcGFuPjxici8+CiA8L3A+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0VG9wOwot
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7IH0sIDEwMCk7Ci0gICAgfQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD48IVtDREFU
QVsKKyAgICB3YWl0Rm9yU1ZHRm9udHNMb2FkZWQoWydUZXN0Rm9udDEnLCAnVGVzdEZvbnQyJywg
J1Rlc3RGb250MyddKTsKK11dPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sIGIvTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sCmluZGV4IDc0NzA1YTY3MWFj
NmVkNmU3ZWE2ZmRjMjg1NmZjNGMyMDZhZmIyMjYuLjUzZWFlODA5OWEwMzFlYWE0ZDU1NWUwNDRi
ZWZlNjMwODA0ZTYzNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZv
bnRzLWluLWh0bWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1p
bi1odG1sLmh0bWwKQEAgLTIwOCwxMiArMjA4LDkgQEAKIDwhLS0gQWRkIGEgYmFja2dyb3VuZCBp
bWFnZSB0byBlYWNoIGFuZCB1c2Ugd2lkdGggYW5kIGhlaWdodCB0byBjb250cm9sIHNpemluZywg
cGxhY2Ugd2l0aCBhYnNvbHV0ZSBwb3NpdGlvbmluZyAtLT4NCiA8ZGl2IGlkPSJleHRyYURpdjEi
PjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjIiPjxzcGFuPjwvc3Bhbj48L2Rp
dj48ZGl2IGlkPSJleHRyYURpdjMiPjxzcGFuPjwvc3Bhbj48L2Rpdj4NCiA8ZGl2IGlkPSJleHRy
YURpdjQiPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjUiPjxzcGFuPjwvc3Bh
bj48L2Rpdj48ZGl2IGlkPSJleHRyYURpdjYiPjxzcGFuPjwvc3Bhbj48L2Rpdj4NCis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVudHMuanMiPjwvc2NyaXB0Pg0KIDxz
Y3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCi0gICAgICAgIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7DQotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDEwMCk7DQotICAgIH0N
CisgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVkKFsnU1ZHcmFmZml0aSddKTsNCiA8L3NjcmlwdD4N
CiA8L2JvZHk+DQogPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
c3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3RlZC50eHQKaW5kZXggZDAz
NDc3M2JmZDNkNzUyOTU2ZjE3N2EwNjM4ODQ1YjUwMDRhOTUyNS4uNWVjZjhmMWQ4ODY1ZDRkMTM3
NjI3MTRlNDA4MDUwMDk1ZjMyYWFjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy1leHBlY3RlZC50eHQKQEAg
LTMsOSArMyw5IEBAIFRoaXMgdGVzdHMgdGhhdCB0aGUgd2lkdGggb2YgdGV4dGFyZWFzIGFuZCBp
bnB1dHMgaXMgY29ycmVjdGx5IGNhbGN1bGF0ZWQgYmFzZWQKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCitUZXh0YXJlYSBvZmZzZXRXaWR0aDogMTM5CitJbnB1dCBvZmZzZXRXaWR0aDog
MTI2CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLVRl
eHRhcmVhIG9mZnNldFdpZHRoOiAxMjEKLUlucHV0IG9mZnNldFdpZHRoOiAxMDgKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9scy5o
dG1sCmluZGV4IDhlZjU0MjlmOWQ0OTA1NGM1MTlkMmQyZDllNDdjNzJlMTE2MjI0MDcuLmNkMjM2
ZGEwNjEyMWY2YTNlZDM4NTkxZjI2ZjgyMTI3Y2UwZGM1OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLmh0bWwKQEAgLTYs
NiArNiw3IEBACiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0ZvbnQtbG9hZGluZy1ldmVu
dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmctZm9udHMtaW4t
dGV4dC1jb250cm9scy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRlZC54aHRtbCBiL0xheW91
dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXNlZ21lbnRlZC54aHRtbAppbmRleCA3ZDgyNDRm
M2U3OTgzNTQxODM0MjEzYjBkNTdjYzRhNzM2MjMxOWUyLi45ZGIxYWRmYjVhMDM5MzJkNmI5OTkx
NDJlNDkxZDQwYWJlYzU3OWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2
Zy1mb250cy1zZWdtZW50ZWQueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmct
Zm9udHMtc2VnbWVudGVkLnhodG1sCkBAIC0zNywxMiArMzcsOSBAQAogCiA8IS0tICdBQkMnIHNo
b3VsZCBiZSByZW5kZXJlZCB1c2luZyBUaW1lcywgJ2RlZicgdXNpbmcgQ291cmllciwgJ28nIHVz
aW5nIHRoZSBTVkcgRm9udCwgYW5kICdPJyBhZ2FpbiBieSBUaW1lcyAtLT4KIDxwIHN0eWxlPSdm
b250LWZhbWlseTogVGVzdEZvbnQ7IGZvbnQtc2l6ZTogNDBweDsgJz5BQkNkZWZvb29PPC9wPgot
PHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRvcDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOwotICAgIH0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVk
KFsnVGVzdEZvbnQnXSk7CitdXT48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGgtbm8tZWxlbWVudC1yZWZl
cmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdpdGgtbm8tZWxl
bWVudC1yZWZlcmVuY2UuaHRtbAppbmRleCA4ZWE0MDBhZWU3OTdkM2Q4YzZhZDBlYmQ1OTcxM2Ew
ZjU4NmVmNGZhLi4xMjEzMThmNzY4MzljNzFiYzk3YzJlZTUzYzllNTI5MGFjOWQ2OTJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1mb250cy13aXRoLW5vLWVsZW1lbnQt
cmVmZXJlbmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdmctZm9udHMtd2l0
aC1uby1lbGVtZW50LXJlZmVyZW5jZS5odG1sCkBAIC0zMSwxMiArMzEsOSBAQAogPGJvZHk+DQog
PHAgY2xhc3M9ImZpcnN0Ij5UaGlzIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkIHdpdGggYSBmaXJz
dCBmb250LjwvcD4NCiA8cCBjbGFzcz0ic2Vjb25kIj5UaGlzIHRleHQgc2hvdWxkIGJlIHJlbmRl
cmVkIHdpdGggYSBzZWNvbmQgZm9udC48L3A+DQorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdG
b250LWxvYWRpbmctZXZlbnRzLmpzIj48L3NjcmlwdD4NCiA8c2NyaXB0Pg0KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7DQotICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zm
c2V0VG9wOw0KLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMDApOw0KLSAgICB9DQorICAgIHdhaXRGb3JTVkdGb250
c0xvYWRlZChbJ1NWR3JhZmZpdGktRmlyc3QnLCAnU1ZHcmFmZml0aS1TZWNvbmQnXSk7DQogPC9z
Y3JpcHQ+DQogPC9ib2R5Pg0KIA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
c3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9j
dXN0b20vc3ZnLWZvbnRzLXdpdGhvdXQtbWlzc2luZy1nbHlwaC54aHRtbAppbmRleCBiMzA0ZjBm
ZDM2M2M4YTU0ZGVkN2FlM2M4OTM3OWNhOTNkMTliYTVjLi5jNWQ4OGI2OTY2MmZjZTVmMTBhYzFj
ZGE5MDhkN2ZlODc5YTdiNThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2
Zy1mb250cy13aXRob3V0LW1pc3NpbmctZ2x5cGgueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9zdmctZm9udHMtd2l0aG91dC1taXNzaW5nLWdseXBoLnhodG1sCkBAIC0zMCwxMiAr
MzAsOSBAQAogPHAgY2xhc3M9InRhcmdldCI+QVhYPC9wPgogPHAgY2xhc3M9InRhcmdldCI+WFhY
PC9wPgogPHAgY2xhc3M9InRhcmdldCI+QUFBPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRv
cDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOyB9LCAxMDApOwotICAgIH0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+PCFb
Q0RBVEFbCisgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVkKFsnTXlGb250J10pOworXV0+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L3N2Zy1mb250cy13b3JkLXNwYWNpbmcuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3Zn
LWZvbnRzLXdvcmQtc3BhY2luZy5odG1sCmluZGV4IDcyNGRkMTZjOTg4ZThmYWRjNzlkNWI3YTI0
MWU3ZjNlNjM5NzA5YzcuLjQzZDUzZmEzNmM2ZDQzZDc1MmZiZjc3NDAwYWJmMzY5NmExNjVkZDcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2lu
Zy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLWZvbnRzLXdvcmQtc3BhY2lu
Zy5odG1sCkBAIC0xNCw2ICsxNCwxMCBAQAogICAgIDwvaGVhZD4KIAogICAgIDxib2R5PgorICAg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdGb250LWxvYWRpbmctZXZlbnRzLmpzIj48L3Nj
cmlwdD4KKyAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgd2FpdEZvclNWR0ZvbnRzTG9hZGVkKFsn
U1ZHcmFmZml0aSddKTsKKyAgICAgIDwvc2NyaXB0PgogICAgICAgbm8gc3BhY2luZzoKICAgICAg
IDxwIGNsYXNzPSJ0ZXN0U3R5bGUiPmFiYyBhYmMgYWJjPC9wPgogICAgICAgd29yZC1zcGFjaW5n
OiAxMDBweCwgYWxsIHNob3VsZCBsb29rIHRoZSBzYW1lCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>