<?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>142673</bug_id>
          
          <creation_ts>2015-03-13 10:05:11 -0700</creation_ts>
          <short_desc>[GTK] Automatically adjust font size when gtk-xft-dpi changes</short_desc>
          <delta_ts>2017-11-15 04:06:49 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=745256</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=744921</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=744796</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=746166</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>givascu</cc>
    
    <cc>gustavo</cc>
    
    <cc>mario</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>Ms2ger</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076955</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-13 10:05:11 -0700</bug_when>
    <thetext>Applications should not need to manually handle changes in the gtk-xft-dpi setting. Currently every application that uses WebKitGTK+ must manually listen for changes in this setting and manually update the font size, or else the application will not respond properly to e.g. changes in the Large Text accessibility setting. WebKitGTK+ should handle this automatically.

If necessary, we may want to deprecate our existing font size settings and replace them with settings that expect sizes in em rather than px.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077095</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-03-13 18:49:37 -0700</bug_when>
    <thetext>We decided to use pixels to maintain consistency with other WebKit ports. How likely is it that gtk-xft-dpi will change while WebKit is running?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077102</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-13 19:26:01 -0700</bug_when>
    <thetext>&gt; How likely is it that gtk-xft-dpi will change while WebKit is running?

The only reason I can think of is if people turn on the Large Text accessibility option, or Scaling Factor in GNOME Tweak Tool. The entire desktop responds immediately to that, except for a WebKitWebView. GNOME applications are getting patches to do so (see the See Also bugs; I guess maybe Endless wants this?), but it&apos;s a considerable amount of boilerplate code to share between each app.

But it&apos;s not just that: the px are also really silly difficult to use properly: https://git.gnome.org/browse/epiphany/tree/embed/ephy-embed-prefs.c#n206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078159</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2015-03-18 03:24:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; How likely is it that gtk-xft-dpi will change while WebKit is running?
&gt; 
&gt; The only reason I can think of is if people turn on the Large Text
&gt; accessibility option, or Scaling Factor in GNOME Tweak Tool. The entire
&gt; desktop responds immediately to that, except for a WebKitWebView.

Exactly, that&apos;s actually the use case that triggered the patches for epiphany, devhelp and yelp. Users of our system rely on quite a few WebKit based apps (including Yelp, but not only that one) to access to text-based content, and it was quite confusing for them not to get any instant feedback when the &quot;Larger Text&quot; a11y option was toggled.

Also, I&apos;ve to say that even for me this has been an issue lately, since I normally use that a11y option myself whenever I move from working in my external 24&quot; screen to working in my 14&quot; 1920x1080 laptop (where I find everything a bit too small). 

&gt; GNOME applications are getting patches to do so (see the See Also bugs; I
&gt; guess maybe Endless wants this?), but it&apos;s a considerable amount of
&gt; boilerplate code to share between each app.

That would definitely be interesting for us, although at the moment is not a big deal either since we have fixed the 2-3 places where this needs to be addressed (that is, is not that we had to fix trillions of apps, but Yelp + a WebKit based engine used from different apps).

Thus, I&apos;m more open to help with this task although my understanding from our IRC conversation is that this was not going to be fixed in WebKit because of the pixels related issue, which is why I did not file the bug. But maybe I should have done it anyway... sorry about that and thanks Michael for stepping up and doing it. 

&gt; But it&apos;s not just that: the px are also really silly difficult to use
&gt; properly:
&gt; https://git.gnome.org/browse/epiphany/tree/embed/ephy-embed-prefs.c#n206

True. It actually took me a while to understand what was going on there and where those &quot;magic&quot; numbers (25.4, 96, 72) came from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082802</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-04-04 12:11:32 -0700</bug_when>
    <thetext>https://bugzilla.gnome.org/show_bug.cgi?id=746166 in particular is a good example of why this needs to live in GTK+ -- there is a considerable amount of code in devhelp that tries to get the dpi right on a per-screen basis. Probably no other applications even attempt to do that right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082803</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-04-04 12:11:45 -0700</bug_when>
    <thetext>I mean, &quot;why this needs to live in WebKit&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230644</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-16 15:47:39 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; We decided to use pixels to maintain consistency with other WebKit ports.

It&apos;s tangential to this bug report, but this is something we should reconsider at the hackfest. Other ports are just wrong; the status quo is that apps using WebKit are all broken on hidpi unless the application copies a bunch of confusing boilerplate font size code out of Epiphany. We&apos;re sharing it in a bunch of GNOME apps now, but most apps don&apos;t have it and are broken. We need a simple font size setting that works independently of screen resolution, and should deprecate the current setting because it is too difficult to use properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284174</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-06 21:02:29 -0800</bug_when>
    <thetext>I found a good summary of this issue that I wrote in a different bug, https://bugzilla.gnome.org/show_bug.cgi?id=774248#c18:

&quot;WebKit requires applications compute text size manually based on the size of the monitor and pixel density. I wish I were kidding, but we just copy/paste the same 100 lines of code to do this among a bunch of different GNOME apps; each new app that uses WebKit doesn&apos;t know to do this and is broken until we figure it out, and it&apos;s easier to copy/paste than spend a day fixing WebKit and writing layout tests for it.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351188</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-21 08:03:04 -0700</bug_when>
    <thetext>So this still needs to happen:

(In reply to Michael Catanzaro from comment #0)
&gt; If necessary, we may want to deprecate our existing font size settings and
&gt; replace them with settings that expect sizes in em rather than px.

The default size should be reasonable, so that most applications don&apos;t need to have any font size code at all.

Then, we need to update GNOME applications to use the new settings, and delete the 100 lines of copypaste font size setting code from each one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366131</commentid>
    <comment_count>9</comment_count>
      <attachid>325369</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-30 12:46:45 -0700</bug_when>
    <thetext>Created attachment 325369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366132</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-30 12:48:09 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366133</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-30 12:48:21 -0700</bug_when>
    <thetext>Attachment 325369 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:906:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:911:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:939:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:941:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:942:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:943:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:944:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitSettings.h&quot;
Total errors found: 10 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366140</commentid>
    <comment_count>12</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-30 13:02:39 -0700</bug_when>
    <thetext>Hi,

Please check my proposed patch from comment 9.

I&apos;ve added new font size properties in points and deprecated the old ones in pixels. Whenever the font size in points is updated, it is converted internally to pixels with respect to the screen DPI. This is similar with what WebKit1 had, only that now WebKitSettings also listens to gtk-xft-dpi changes and updates the font size internally when the DPI has changed.

I&apos;ve tested this in Devhelp and I have a patch ready to use the new properties once this gets accepted.

This is my first WebKit patch, so please go easy on me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366143</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-30 13:10:03 -0700</bug_when>
    <thetext>Thanks, I&apos;ll review it soon.

(In reply to Build Bot from comment #11)
&gt; Attachment 325369 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:906:  When
&gt; wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:908:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:909:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:910:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:911:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:939:  When
&gt; wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:941:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:942:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:943:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:944:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; WARNING: File exempt from style guide. Skipping:
&gt; &quot;Source/WebKit/UIProcess/API/gtk/WebKitSettings.h&quot;
&gt; Total errors found: 10 in 4 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

You&apos;ll have to follow WebKit code style for the property declarations too, even if it doesn&apos;t match the surrounding code:

    /**
     * WebKitSettings:default-font-size-pts:
     *
     * The default font size in points to use for content displayed if
     * no font size is specified.
     *
     * Since: 2.20
     */
    g_object_class_install_property(
        gObjectClass,
        PROP_DEFAULT_FONT_SIZE_PTS,
        g_param_spec_uint(
            &quot;default-font-size-pts&quot;,
            _(&quot;Default font size in points&quot;),
            _(&quot;The default font size in points used to display text.&quot;),
            5, G_MAXUINT, 12,
            readWriteConstructParamFlags));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366161</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-30 13:38:46 -0700</bug_when>
    <thetext>One more pre-review comment. The EWS bots (the green and red bubbles above) try building your patch to look for problems. I see the GTK bubble is green, which is great, but the WPE bubble is red:

/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp: In function &apos;void webKitSettingsDispose(GObject*)&apos;:
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:230:21: warning: unused variable &apos;settings&apos; [-Wunused-variable]

You&apos;ll need to move the declaration down into the #if PLATFORM(GTK) block you added below to avoid this warning for WPE. It&apos;s C++ so the code style for declarations is different: you should limit the scope of variables by declaring them only where they&apos;re actually required, rather than at the top of functions.

/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp: In function &apos;void webKitSettingsSetProperty(GObject*, guint, const GValue*, GParamSpec*)&apos;:
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:309:84: error: &apos;webkit_settings_set_default_font_size_pts&apos; was not declared in this scope
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:315:94: error: &apos;webkit_settings_set_default_monospace_font_size_pts&apos; was not declared in this scope
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp: In function &apos;void webKitSettingsGetProperty(GObject*, guint, GValue*, GParamSpec*)&apos;:
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:489:83: error: &apos;webkit_settings_get_default_font_size_pts&apos; was not declared in this scope
/home/ews/igalia-wpe-ews/WebKit/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:495:93: error: &apos;webkit_settings_get_default_monospace_font_size_pts&apos; was not declared in this scope

I forgot to tell you that there are separate WebKitSettings.h files for GTK and WPE, and they have to be updated in tandem. I know that&apos;s yucky, but the only alternative is to generate the headers from a common template, and we haven&apos;t gone down that road yet. So you&apos;ll have to take care of that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366177</commentid>
    <comment_count>15</comment_count>
      <attachid>325377</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-30 14:26:12 -0700</bug_when>
    <thetext>Created attachment 325377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366180</commentid>
    <comment_count>16</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-30 14:39:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; You&apos;ll need to move the declaration down into the #if PLATFORM(GTK) block
&gt; you added below to avoid this warning for WPE. It&apos;s C++ so the code style
&gt; for declarations is different: you should limit the scope of variables by
&gt; declaring them only where they&apos;re actually required, rather than at the top
&gt; of functions.
&gt; 
&gt; I forgot to tell you that there are separate WebKitSettings.h files for GTK
&gt; and WPE, and they have to be updated in tandem. I know that&apos;s yucky, but the
&gt; only alternative is to generate the headers from a common template, and we
&gt; haven&apos;t gone down that road yet. So you&apos;ll have to take care of that too.

OK, I fixed this and the coding style in attachment 325377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366290</commentid>
    <comment_count>17</comment_count>
      <attachid>325377</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-30 19:22:43 -0700</bug_when>
    <thetext>Comment on attachment 325377
Patch

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

It&apos;s pretty good for your first patch! Almost all of my comments are for minor issues, and I snuck in a couple programming quizzes (which I wouldn&apos;t ordinarily do in a patch review, but it seemed useful here). But I see two significant problems.

(1) I&apos;m afraid I forgot to mention that API changes are dead on arrival without accompanying API tests. We&apos;re a lot stricter about tests in WebKit than we are in Epiphany; WebKit would be almost totally unmaintainable if not for the tens of thousands of tests. Most of them live under the LayoutTests directory, but API tests live under Tools/TestWebKitAPI/Tests. Normally writing a good API test is just as hard or harder than adding the new API, but in this case you&apos;ll actually have it pretty easy as with settings we normally just test the default value of the setting, and check that the value changes when you change it. You&apos;ll want to edit Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp to add simple checks for the new functions: basically, just copy the existing ones and edit as appropriate. To run the API tests, normally I would tell you to use the script Tools/Scripts/run-gtk-tests, but that only really works if you build WebKit using build-webkit, whereas you&apos;re using GNOME JHBuild. So instead, the easiest way to run the tests is to cd into the build directory, WebKitBuild/(whateveryounamedit)/bin/TestWebKitAPI/WebKit2Gtk/, and then jhbuild run ./TestWebKitSettings. Use -l to list the possible tests and -p to run just one single test.

(2) Your *_get_font_size_pts() functions only return a reasonable result if you first call the corresponding *_set_font_size_pts() function. Instead, they should do the right thing even if the user has only ever called the old *_set_font_size() function. So instead of saving the size in points in the priv struct, you&apos;ll actually need to do the reverse computation to change from pixels back to points. I&apos;m not sure, but you might need to use round(). Before you fix this, add tests for this, make sure the tests fail, and then write the implementation and make sure the tests pass.

&gt; Source/WebKit/ChangeLog:3
&gt; +        [GTK] Automatically adjust font size when gtk-xft-dpi changes

I&apos;ve renamed this bug to have a more descriptive title. When you run prepare-ChangeLog again, it will pick up the new title. (You&apos;ll have to delete the old ChangeLog entries you already wrote, of course.)

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:80
&gt; +    guint32 defaultFontSizePts { 12 };
&gt; +    guint32 defaultMonospaceFontSizePts { 10 };

Wow, the existing font size settings really do use guint32 rather than guint. OK then. I was going to tell you to use guint or unsigned instead, but this is really the best type here!

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:83
&gt; +    gulong gtkXftDpiChangedHandlerID { 0 };

OK, I don&apos;t normally write review comments for stuff that you&apos;ve done correctly, especially twice in a row, but this line of code is an educational opportunity! Homework question: why is this initialization to 0 here needed, if in normal GObject code the priv struct is guaranteed to be zero-initialized for you? You wouldn&apos;t need the initialization here in Epiphany, since it would be guaranteed to be 0 already.

Hint: Look in WTFGType.h.

(Take a minute or two to look before you read below. Spoiler alert!)

Answer: It&apos;s constructed (in the instance init) using a placement new. Three consequences of that. (1) In WebKit, new is overridden to use WebKit&apos;s custom memory allocator bmalloc, which is faster than glibc&apos;s malloc. (2) It means the priv struct is a C++ object, so it can have constructors and destructors that will actually run. (3) C++ construction rules come into play... I&apos;m not completely sure, but I think the state of the variable would be undefined if you didn&apos;t explicitly initialize it here.

If you poke around further in WTFGType.h, you&apos;ll notice that finalize is defined there too, to call the priv struct&apos;s destructor. So in WebKit GObject implementations, you don&apos;t define either the instance init or the finalize function like you would in normal GObject implementations. Instead you have to use constructors and destructors. (You still have dispose, though.)

P.S. In WebKit we strongly prefer inline member initialization, { 0 } style, rather than using constructor initializer lists.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:173
&gt; +    double dpi, diagonalInPixels, diagonalInInches;
&gt; +    GdkScreen* screen;

This is C++, so these variables should not be declared up here. Better to declare them at the point of first use.

Actually, this is good practice to do in modern C code as well. But GNOME stuff was written for C89, where variables had to be declared at the top of functions, which is why you&apos;re used to the opposite.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:175
&gt; +    screen = gdk_screen_get_default();

GdkScreen* screen = gdk_screen_get_default();

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:180
&gt; +    dpi = gdk_screen_get_resolution(screen);

double dpi = ...;

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:186
&gt; +    diagonalInPixels = hypot(gdk_screen_get_width(screen), gdk_screen_get_height(screen));
&gt; +    diagonalInInches = hypot(gdk_screen_get_width_mm(screen), gdk_screen_get_height_mm(screen)) / millimetresPerInch;

You should #include &lt;cmath&gt; at the top of the file to pull this in explicitly. Who knows how it&apos;s getting included right now.

Also, though I&apos;m pretty sure it doesn&apos;t matter in this case because the return type should be double either way: we sometimes have subtle type bugs caused by mixing up C and C++ math functions. So I would explicitly call std::hypot here. No reason not to.

Also, declare them here too, not up above.

Lastly, I&apos;ll mention that using GdkScreen rather than GdkMonitor to get the screen dimensions is deprecated, but since we don&apos;t want to bump our GTK+ version requirement, I agree it&apos;s much better to use the old API unconditionally rather than add #if GTK_CHECK_VERSION() conditionals to choose between the two. So no need to change that. We can switch to GdkMonitor in the future if needed.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:193
&gt; +static inline guint32 convertFontSizeToPixels(guint32 fontSize, double dpi)

The result of this function is being used to call internal API, not external API, so use uint32_t rather than guint32 (which is only appropriate for use in the public GObject API).

Normally we would write &quot;unsigned&quot; rather than uint32_t, but in this case, if you look in WebPreferences.h you&apos;ll see that the type used there is uint32_t. So best match that.

And yes, it&apos;s of course guaranteed to be the same as guint32. So this comment is somewhat pedantic. But it&apos;s a style we try to follow.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:202
&gt; +    double dpi;
&gt; +    int gtkXftDpi;

Declare these below, at the point of first use.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:205
&gt; +    // gtk-xft-dpi uses -1 for default value.
&gt; +    g_object_get(gtkSettings, &quot;gtk-xft-dpi&quot;, &amp;gtkXftDpi, NULL);

gint gtkXftDpi;
g_object_get(gtk_settings, &quot;gtk-xft-dpi&quot;, &amp;gtkXftDpi, nullptr);

Note: I used gint, rather than int, because that&apos;s the type of the gtk-xft-dpi property. Pedantic, doesn&apos;t really matter, but good to do.

Also note that I used nullptr rather than NULL. Always use nullptr in WebKit (and other modern C++ code), never NULL. It avoids weird corner case bugs.

Now, here is another homework question. If this were C code (not actually sure about C++, and doesn&apos;t matter much because C++ has nullptr), then you would technically need to use a casted (char *)NULL here rather than just plain NULL. We use this idiom all the time in GNOME C code without the cast, but that actually relies on an implementation detail of glibc and can blow up badly (and has blown up badly!) on embedded systems with alternate C libraries. Why, in C, does it need the cast? (Hint: the C library has some latitude in how it defines NULL.) (P.S. Don&apos;t actually start adding the cast in your GNOME code, because other GNOME code does not use the cast: there would be no point. But it&apos;s good to know about this stuff!)

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:234
&gt; +        if (priv-&gt;gtkSettings &amp;&amp; g_signal_handler_is_connected(priv-&gt;gtkSettings, priv-&gt;gtkXftDpiChangedHandlerID))

Huh. Didn&apos;t know about g_signal_handler_is_connected(). But you do not need to use it here, because priv-&gt;gtkXftDpiChangedHandlerID will be 0 if it&apos;s not connected.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:887
&gt; +     * Deprecated: 2.20. This property does not scale the text automatically
&gt; +     * when the screen DPI changes. Use default-font-size-pts instead.

True. You might instead write &quot;This property does not scale the text automatically to account for screen DPI.&quot; That might be a bit more useful, because accounting for DPI *changes* is something that application developers rarely care to think about, but ensuring it works properly on hidpi screens in the first place really is important to application developers.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:900
&gt; +     * The default font size in points to use for content displayed if

Add commas: The default font size, in points, ...

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:912
&gt; +            5, G_MAXUINT, 12,

How do you know 5 is the right number to use for the minimum size? Are 4-point fonts not allowed?

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:922
&gt; +     * Deprecated: 2.20. This property does not scale the text automatically
&gt; +     * when the screen DPI changes. Use default-monospace-font-size-pts instead.

Same comment here.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:935
&gt; +     * The default font size in points to use for content displayed in

And here.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2191
&gt; +    g_warning(&quot;The property WebKitSettings:default-font-size is deprecated and should not be used anymore.&quot;);

This should go directly in webKitSettingsSetProperty so that the warning only prints if the GObject property is used directly. Programmers don&apos;t need runtime warnings about using deprecated functions, because the compiler will warn them, which is better. Runtime warnings are only needed for the GObject properties because there&apos;s no way to get a compile warning.

Incidentally, this will make your life easier when writing tests, too, because we only test the functions and just assume the properties are implemented properly. (Probably the wrong way around, actually, but don&apos;t worry about that now: stick to the existing style for the tests.) And if the test emits a warning, you&apos;ll have to disable warning traps to ensure the warning does not cause the test to blow up. I&apos;m just mentioning this so you don&apos;t waste time trying to figure out how to do that in case you were to try working on the tests before you move the warning.

Also, I would add to the text of warning: &quot;Use WebKitSettings:default-font-size-pts instead.&quot;

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2208
&gt; +    g_warning(&quot;The property WebKitSettings:default-font-size is deprecated and should not be used anymore.&quot;);

Ditto

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2254
&gt; +    g_object_notify(G_OBJECT(settings), &quot;default-font-size-pts&quot;);

Hmm... this is a preexisting problem that you should not attempt to fix in this patch, but I would appreciate it if you file a bug describing it: because the properties in this file are not declared with G_PARAM_EXPLICIT_NOTIFY, if the property is set using g_object_set() rather than webkit_settings-set_default_font_size_pts(), I think the notify will occur twice: first here, and then again by GObject. That has caused bugs in GNOME apps in the past, and it&apos;s why G_PARAM_EXPLICIT_NOTIFY is good! (Prefix the bug title with [WPE][GTK] and select either the GTK or WPE Bugzilla component, otherwise nobody will notice you reported it.)

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2270
&gt; +    g_warning(&quot;The property WebKitSettings:default-monospace-font-size is deprecated and should not be used anymore.&quot;);

Move it

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2282
&gt; + * Deprecated: 2.20. Use webkit_settings_set_default_monospace_font_size_pts() instead.

Ditto

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2287
&gt; +    g_warning(&quot;The property WebKitSettings:default-monospace-font-size is deprecated and should not be used anymore.&quot;);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366350</commentid>
    <comment_count>18</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 03:38:37 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; Comment on attachment 325377 [details]
&gt; Patch
&gt;  
&gt; (2) Your *_get_font_size_pts() functions only return a reasonable result if
&gt; you first call the corresponding *_set_font_size_pts() function. Instead,
&gt; they should do the right thing even if the user has only ever called the old
&gt; *_set_font_size() function. So instead of saving the size in points in the
&gt; priv struct, you&apos;ll actually need to do the reverse computation to change
&gt; from pixels back to points. I&apos;m not sure, but you might need to use round().
&gt; Before you fix this, add tests for this, make sure the tests fail, and then
&gt; write the implementation and make sure the tests pass.

This won&apos;t work correctly when the screen DPI changes. We need to save either the &quot;initial&quot; font size in points or the previous DPI to correctly calculate the new font size in pixels for the new DPI. I&apos;ll explain below.

The formulas for doing the conversions are:

(1) Pixels = Points * DPI / 72;
(2) Points = Pixels * 72 / DPI;

The 72 comes from the fact that 1 point is defined as 1/72 inches.

If we don&apos;t store Points anywhere, then that&apos;s fine only when the screen DPI remains constant. Because we can always convert back from Pixels to Points knowing the DPI. However, if the screen DPI varies, and we don&apos;t store the previous DPI either, then we can&apos;t convert back to the font size in points of the initial DPI, because we only know the current DPI which is the new one, and thus we cannot apply the scaling factor.

Here&apos;s an example:

Suppose that the initial DPI is 96 and the font size is 12 points, i.e. 16 pixels at this DPI. We only save the size in pixels. Then the DPI changes to 80, for example. Knowing only the current font size of 16 pixels and the current DPI of 80, we cannot really calculate the new font size value in pixels. Because we have no way to tell if those 16 pixels initially came from a font size of 12 points at 96 DPI. They might as well come from a font size of 8 points at 144 DPI, for example.

We can do this right only if:

A. We know that the initial font size in points was 12. Then formula (1) is used directly to calculate the new font size in pixels: 12 * 72 / 80 == 13.3 pixels. That&apos;s what my patch does now.

B. We know that the initial DPI was 96. Then both formulas (1) and (2) are used, first (2) to get the initial font size in points, and then (1) to calculate the new font size in pixels: (16 * 72 / 96) * 80 / 72 == 13.3 pixels. Here the scaling factor is basically the current DPI divided by the previous DPI, which is 80/96 in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366389</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-31 07:57:18 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; Answer: It&apos;s constructed (in the instance init) using a placement new. Three
&gt; consequences of that. (1) In WebKit, new is overridden to use WebKit&apos;s
&gt; custom memory allocator bmalloc, which is faster than glibc&apos;s malloc.

Actually (1) is totally wrong... the point of placement new is that it constructs the object using previously-allocated memory. Here the memory is actually allocated (and zeroed) by GObject. I&apos;m not sure whether or not it&apos;s undefined behavior to not explicitly initialize all the struct members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366391</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-31 08:05:10 -0700</bug_when>
    <thetext>Also, for future reference, I just rediscovered the G_PARAM_DEPRECATED flag, which is the right way to deprecate GObject properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366400</commentid>
    <comment_count>21</comment_count>
      <attachid>325442</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 08:35:26 -0700</bug_when>
    <thetext>Created attachment 325442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366401</commentid>
    <comment_count>22</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 08:39:15 -0700</bug_when>
    <thetext>The patch in attachment 325442 uses approach B. described in comment 18 to calculate the new font size values when the screen DPI changes. This simplifies things a bit.

I&apos;ve also fixed the things mentioned in the previous patch review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366408</commentid>
    <comment_count>23</comment_count>
      <attachid>325442</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-31 08:54:03 -0700</bug_when>
    <thetext>Comment on attachment 325442
Patch

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

The code changes are looking good. The tests need a bit more work, though.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:182
&gt; +    double diagonalInPixels = std::hypot((double)gdk_screen_get_width(screen), (double)gdk_screen_get_height(screen));
&gt; +    double diagonalInInches = std::hypot((double)gdk_screen_get_width_mm(screen), (double)gdk_screen_get_height_mm(screen)) / millimetresPerInch;

Is casting the parameters really required? I thought it would not be. If so, best go back to unqualified hypot, because that&apos;s a mess. And it will be even more of a mess once you fix the casting style. ;) In C++ code you should use C++ casts (static_cast, dynamic_cast, const_cast, and reinterpret_cast) rather than the old C-style casts. In WebKit you can&apos;t use dynamic_cast, because we compile with -fno-rtti, but the other three should be used in whatever combinations necessary. Here you want static_cast.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:147
&gt; +    // Default font size in points is 12.
&gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 12);
&gt; +    webkit_settings_set_default_font_size_pts(settings, 10);
&gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 10);

I&apos;d like to see a little bit more on the tests. You should test the interaction of the new functions with the old functions. Check the value of webkit_settings_get_default_font_size_pts() before the call to webkit_settings_set_default_font_size(), so that you have a test for the default default font size. ;) Then clarify the comment, since it&apos;s confusing that the default font size in pixels was changed, but the size in points is still the same (I guess because the change was not very much?). And test to ensure a larger change in the default pixel font size causes a corresponding change in the default points font size, and also vice-versa.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:157
&gt; +    // Default monospace font size in points is 10.
&gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 10);
&gt; +    webkit_settings_set_default_font_size_pts(settings, 8);
&gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 8);

Same here. Also: whoops, this isn&apos;t testing the monospace font size!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366414</commentid>
    <comment_count>24</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 09:08:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #23)
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:182
&gt; &gt; +    double diagonalInPixels = std::hypot((double)gdk_screen_get_width(screen), (double)gdk_screen_get_height(screen));
&gt; &gt; +    double diagonalInInches = std::hypot((double)gdk_screen_get_width_mm(screen), (double)gdk_screen_get_height_mm(screen)) / millimetresPerInch;
&gt; 
&gt; Is casting the parameters really required? I thought it would not be. If so,
&gt; best go back to unqualified hypot, because that&apos;s a mess. And it will be
&gt; even more of a mess once you fix the casting style. ;) In C++ code you
&gt; should use C++ casts (static_cast, dynamic_cast, const_cast, and
&gt; reinterpret_cast) rather than the old C-style casts. In WebKit you can&apos;t use
&gt; dynamic_cast, because we compile with -fno-rtti, but the other three should
&gt; be used in whatever combinations necessary. Here you want static_cast.

Since there&apos;s no overload of std::hypot that takes two ints, I wasn&apos;t sure which version of std::hypot C++ will call. We&apos;d prefer the one that has doubles for parameters for reasons of precision, so that&apos;s why I added the casts.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:147
&gt; &gt; +    // Default font size in points is 12.
&gt; &gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 12);
&gt; &gt; +    webkit_settings_set_default_font_size_pts(settings, 10);
&gt; &gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 10);
&gt; 
&gt; I&apos;d like to see a little bit more on the tests. You should test the
&gt; interaction of the new functions with the old functions. Check the value of
&gt; webkit_settings_get_default_font_size_pts() before the call to
&gt; webkit_settings_set_default_font_size(), so that you have a test for the
&gt; default default font size. ;) Then clarify the comment, since it&apos;s confusing
&gt; that the default font size in pixels was changed, but the size in points is
&gt; still the same (I guess because the change was not very much?). And test to
&gt; ensure a larger change in the default pixel font size causes a corresponding
&gt; change in the default points font size, and also vice-versa.

OK.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:157
&gt; &gt; +    // Default monospace font size in points is 10.
&gt; &gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 10);
&gt; &gt; +    webkit_settings_set_default_font_size_pts(settings, 8);
&gt; &gt; +    g_assert_cmpuint(webkit_settings_get_default_font_size_pts(settings), ==, 8);
&gt; 
&gt; Same here. Also: whoops, this isn&apos;t testing the monospace font size!

Right, I forgot to change the function name after I copy-pasted the line from before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366416</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-31 09:21:00 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #24)
&gt; Since there&apos;s no overload of std::hypot that takes two ints, I wasn&apos;t sure
&gt; which version of std::hypot C++ will call. We&apos;d prefer the one that has
&gt; doubles for parameters for reasons of precision, so that&apos;s why I added the
&gt; casts.

cppreference is your friend:

http://en.cppreference.com/w/cpp/numeric/math/hypot

I think, without the casts, you&apos;ll get the fourth overload, since it&apos;s being called with int parameters. And that says:

&quot;4) A set of overloads or a function template for all combinations of arguments of arithmetic type not covered by (1-3). If any argument has integral type, it is cast to double. If any other argument is long double, then the return type is long double, otherwise it is double.&quot;

so it will be double even without the casts, and the casts aren&apos;t needed. Could you check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366420</commentid>
    <comment_count>26</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 09:25:34 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #25)
&gt; (In reply to Gabriel Ivașcu from comment #24)
&gt; &gt; Since there&apos;s no overload of std::hypot that takes two ints, I wasn&apos;t sure
&gt; &gt; which version of std::hypot C++ will call. We&apos;d prefer the one that has
&gt; &gt; doubles for parameters for reasons of precision, so that&apos;s why I added the
&gt; &gt; casts.
&gt; 
&gt; cppreference is your friend:
&gt; 
&gt; http://en.cppreference.com/w/cpp/numeric/math/hypot
&gt; 
&gt; I think, without the casts, you&apos;ll get the fourth overload, since it&apos;s being
&gt; called with int parameters. And that says:
&gt; 
&gt; &quot;4) A set of overloads or a function template for all combinations of
&gt; arguments of arithmetic type not covered by (1-3). If any argument has
&gt; integral type, it is cast to double. If any other argument is long double,
&gt; then the return type is long double, otherwise it is double.&quot;
&gt; 
&gt; so it will be double even without the casts, and the casts aren&apos;t needed.
&gt; Could you check?

Yes, you&apos;re right, I was going to comment on this myself. The integral types are converted to double by default, so there&apos;s no need for explicit conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366464</commentid>
    <comment_count>27</comment_count>
      <attachid>325462</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 11:32:16 -0700</bug_when>
    <thetext>Created attachment 325462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366469</commentid>
    <comment_count>28</comment_count>
      <attachid>325462</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-31 11:38:19 -0700</bug_when>
    <thetext>Comment on attachment 325462
Patch

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

OK, good, this passes my review. Only a couple minor comments remaining.

Now, because this patch adds new public API, we have a rule that it has to be approved by two GTK reviewers. I&apos;m sure Carlos Garcia will want to be the second reviewer, so please ping him tomorrow and ask.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:47
&gt; +    // Set a DPI value of 96 for the test. This must be set before creating
&gt; +    // the WebKitSettings object so that the notify::gtk-xft-dpi signal handler
&gt; +    // of WebKitSettings won&apos;t get called to modify the initial font size values.
&gt; +    GtkSettings* gtkSettings = gtk_settings_get_default();
&gt; +    if (gtkSettings)
&gt; +        g_object_set(gtkSettings, &quot;gtk-xft-dpi&quot;, 96 * 1024, nullptr);

You need #if PLATFORM(GTK) guards around this, to avoid breaking WPE.

Also: I would add a second call to this down at the end of the test, and then verify that the font size in pixels changes when you change the DPI, but the font size in points does not.

Lastly, since the font size tests are now more complicated than just setting a value and verifying that it&apos;s changed, I would add a new test case function testFontSettings and split all of this out of testWebKitSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366481</commentid>
    <comment_count>29</comment_count>
      <attachid>325468</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 12:19:19 -0700</bug_when>
    <thetext>Created attachment 325468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366484</commentid>
    <comment_count>30</comment_count>
      <attachid>325469</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 12:28:10 -0700</bug_when>
    <thetext>Created attachment 325469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366488</commentid>
    <comment_count>31</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-10-31 12:30:42 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #30)
&gt; Created attachment 325469 [details]
&gt; Patch

This is the same as attachment 325468, only that it fixes a typo in a comment from the old code that I&apos;ve moved to a new function in TestWebKitSettings.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367859</commentid>
    <comment_count>32</comment_count>
      <attachid>325469</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-03 02:23:28 -0700</bug_when>
    <thetext>Comment on attachment 325469
Patch

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

I would split this patch in two, one to add the new API, either as new properties or as new convenient methods to set/get the font size in points, and then another patch to automatically update the font size when dpi changes.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:83
&gt; +    gulong gtkXftDpiChangedHandlerID { 0 };

This is already set to 0 on allocation.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:188
&gt; +static double getScreenDPI()
&gt; +{
&gt; +    static const double defaultDPI = 96;
&gt; +
&gt; +#if PLATFORM(GTK)
&gt; +    static const double millimetresPerInch = 25.4;
&gt; +
&gt; +    GdkScreen* screen = gdk_screen_get_default();
&gt; +    if (!screen)
&gt; +        return defaultDPI;
&gt; +
&gt; +    double dpi = gdk_screen_get_resolution(screen);
&gt; +    if (dpi != -1)
&gt; +        return dpi;
&gt; +
&gt; +    double diagonalInPixels = std::hypot(gdk_screen_get_width(screen), gdk_screen_get_height(screen));
&gt; +    double diagonalInInches = std::hypot(gdk_screen_get_width_mm(screen), gdk_screen_get_height_mm(screen)) / millimetresPerInch;
&gt; +
&gt; +    return diagonalInPixels / diagonalInInches;
&gt; +#else
&gt; +    return defaultDPI;
&gt; +#endif
&gt; +}

This should probably be moved to PlatformScreenGtk.cpp adding a new method to get the screen DPI.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:209
&gt; +    settings-&gt;priv-&gt;preferences-&gt;setDefaultFontSize(std::round(prevFontSizePx * scalingFactor));
&gt; +    settings-&gt;priv-&gt;preferences-&gt;setDefaultFixedFontSize(std::round(prevMonospaceFontSizePx * scalingFactor));

So, in the end we are changing the font settings in pixels, but we are not sending the notify signal. We should check it actually changed and emit the signal.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:227
&gt; +#if PLATFORM(GTK)
&gt; +    priv-&gt;gtkSettings = gtk_settings_get_default();
&gt; +    if (priv-&gt;gtkSettings)
&gt; +        priv-&gt;gtkXftDpiChangedHandlerID = g_signal_connect(priv-&gt;gtkSettings, &quot;notify::gtk-xft-dpi&quot;, G_CALLBACK(webKitSettingsGtkXftDpiChanged), WEBKIT_SETTINGS(object));
&gt; +#endif

This could also be factored out in platform layer to avoid more ifdefs here, maybe adding a PlatformScreenObserver or similar. Or even simpler, adding a function to PlatformScreen to set a dpi observer setScreenDPIObserverHandler(Function&lt;void()&gt;&amp;&amp;); that you can pass a lambda here in the constructor and nullptr in dispose.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:886
&gt; +     * Deprecated: 2.20. This property does not scale the text automatically
&gt; +     * to account for screen DPI. Use default-font-size-pts instead.

This is not true after this patch. We are connecting to the dpi changed signal in the constructor and updating this setting.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2234
&gt; +guint32 webkit_settings_get_default_font_size_pts(WebKitSettings* settings)
&gt; +{
&gt; +    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), 0);
&gt; +
&gt; +    return convertPixelsToPoints(settings-&gt;priv-&gt;preferences-&gt;defaultFontSize(), settings-&gt;priv-&gt;screenDPI);

Since we are updating the same thing underneath, I wonder why we need new settings and deprecate the old ones. We could simply add these new functions to set/get the same setting but using points instead of pixels.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:-152
&gt; -    g_assert_cmpuint(webkit_settings_get_minimum_font_size(settings), ==, 7);

I think you can leave this here and add another specific test case for checking the updates after the dpi change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367885</commentid>
    <comment_count>33</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-03 05:19:07 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #32)
&gt; Comment on attachment 325469 [details]
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:83
&gt; &gt; +    gulong gtkXftDpiChangedHandlerID { 0 };
&gt; 
&gt; This is already set to 0 on allocation.

Hmmm Michael explicitly said that the fields in the private structure are not guaranteed to be zero-initialized.
 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2234
&gt; &gt; +guint32 webkit_settings_get_default_font_size_pts(WebKitSettings* settings)
&gt; &gt; +{
&gt; &gt; +    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), 0);
&gt; &gt; +
&gt; &gt; +    return convertPixelsToPoints(settings-&gt;priv-&gt;preferences-&gt;defaultFontSize(), settings-&gt;priv-&gt;screenDPI);
&gt; 
&gt; Since we are updating the same thing underneath, I wonder why we need new
&gt; settings and deprecate the old ones. We could simply add these new functions
&gt; to set/get the same setting but using points instead of pixels.

I think keeping the old properties in pixels and only adding font size setter/getter in points partially defeats the purpose of this bug. One of the goals was to make users not have to handle pixel values anymore, by getting rid of the pixel properties eventually in the future. (The other goal was to make the text scale automatically when the DPI changes.)

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:-152
&gt; &gt; -    g_assert_cmpuint(webkit_settings_get_minimum_font_size(settings), ==, 7);
&gt; 
&gt; I think you can leave this here and add another specific test case for
&gt; checking the updates after the dpi change.

The minimum font size is not altered by the DPI change, it remains the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367890</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-03 05:55:07 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #33)
&gt; (In reply to Carlos Garcia Campos from comment #32)
&gt; &gt; Comment on attachment 325469 [details]
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:83
&gt; &gt; &gt; +    gulong gtkXftDpiChangedHandlerID { 0 };
&gt; &gt; 
&gt; &gt; This is already set to 0 on allocation.
&gt; 
&gt; Hmmm Michael explicitly said that the fields in the private structure are
&gt; not guaranteed to be zero-initialized.

The private struct is allocated by glib as part of the object instance struct initialization using g_malloc0().
 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:2234
&gt; &gt; &gt; +guint32 webkit_settings_get_default_font_size_pts(WebKitSettings* settings)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), 0);
&gt; &gt; &gt; +
&gt; &gt; &gt; +    return convertPixelsToPoints(settings-&gt;priv-&gt;preferences-&gt;defaultFontSize(), settings-&gt;priv-&gt;screenDPI);
&gt; &gt; 
&gt; &gt; Since we are updating the same thing underneath, I wonder why we need new
&gt; &gt; settings and deprecate the old ones. We could simply add these new functions
&gt; &gt; to set/get the same setting but using points instead of pixels.
&gt; 
&gt; I think keeping the old properties in pixels and only adding font size
&gt; setter/getter in points partially defeats the purpose of this bug. One of
&gt; the goals was to make users not have to handle pixel values anymore, by
&gt; getting rid of the pixel properties eventually in the future. (The other
&gt; goal was to make the text scale automatically when the DPI changes.)

Two goals, two bugs and patches then :-)

&gt; &gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:-152
&gt; &gt; &gt; -    g_assert_cmpuint(webkit_settings_get_minimum_font_size(settings), ==, 7);
&gt; &gt; 
&gt; &gt; I think you can leave this here and add another specific test case for
&gt; &gt; checking the updates after the dpi change.
&gt; 
&gt; The minimum font size is not altered by the DPI change, it remains the same.

I meant the whole block, not just that particular line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368051</commentid>
    <comment_count>35</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-03 12:07:12 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #33)
&gt; Hmmm Michael explicitly said that the fields in the private structure are
&gt; not guaranteed to be zero-initialized.

But see my next comment #19 where I corrected that to &quot;I&apos;m not sure&quot;. I think it&apos;s technically default-constructed, which is effectively the same. But certainly the fact that the struct is initially zero-initialized has no effect on its value after construction.

&gt; I think keeping the old properties in pixels and only adding font size
&gt; setter/getter in points partially defeats the purpose of this bug. One of
&gt; the goals was to make users not have to handle pixel values anymore, by
&gt; getting rid of the pixel properties eventually in the future. (The other
&gt; goal was to make the text scale automatically when the DPI changes.)

But you don&apos;t have to handle pixels anymore if you use the functions. There&apos;s not really any compelling reason that the properties have to be used directly; it&apos;s just a bit more convenient when initializing the WebKitSettings object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368103</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-03 13:18:58 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #35)
&gt; (In reply to Gabriel Ivașcu from comment #33)
&gt; &gt; Hmmm Michael explicitly said that the fields in the private structure are
&gt; &gt; not guaranteed to be zero-initialized.
&gt; 
&gt; But see my next comment #19 where I corrected that to &quot;I&apos;m not sure&quot;. I
&gt; think it&apos;s technically default-constructed, which is effectively the same.

No, that&apos;s wrong too. The internet says the members are just uninitialized.

&gt; But certainly the fact that the struct is initially zero-initialized has no
&gt; effect on its value after construction.

I might be wrong about that too... I guess the values are undefined, and it just always works on all compilers because compilers don&apos;t touch the memory that&apos;s already been zeroed. But I&apos;m not sure; maybe it is safe to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368351</commentid>
    <comment_count>37</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-04 07:13:58 -0700</bug_when>
    <thetext>OK, as Carlos pointed out, I&apos;ll split this into two separate bugs and patches:

(1) Add functionality to handle font sizes in points.
(2) Handle DPI changes and scale the text accordingly.

I suggest keeping this bug for (2), as that was its original purpose, but for that I need to ask Michael to change the bug&apos;s name back to the original, since I don&apos;t have enough permissions.

And I&apos;ll open a separate bug for (1) with a smaller patch for it. But for this I&apos;m not sure if we should fall back to the alternative design, where we keep the old font size properties in pixels, and only add setter/getter methods for the font size in points. I believe this isn&apos;t really the best approach, for reasons of usability and consistency.

I&apos;ll try to highlight below why I favor adding points properties and deprecating the pixels properties (which should be eventually removed for good):

A. It&apos;s a plus to consistency. Currently, &quot;minimum-font-size&quot; property is in points, whereas &quot;default-font-size&quot; and &quot;default-monospace-font-size&quot; are in pixels, which is already not too consistent. Splitting the default font size properties in both pixels and points, will break the consistency even more, whereas replacing the pixels properties with points properties will bring unity.

B. I think users should have to deal with raw pixels. And it&apos;s easier for them to understand that they are supposed to use only the points properties/methods from now on if they see that the pixels properties/methods are deprecated and will be removed in a future version. This is in contrast with keeping the pixels properties/methods and only adding points methods, which can be misleading and confusing: changing the pixels value will change the points value too and vice versa. (Of course, this would happen too if they would use both the new properties and the deprecated ones, but that would be their fault.)

C. It&apos;s easier for apps to handle font sizes in points rather than pixels, i.e. they can pass to WebKitSettings the font size value obtained directly from the user preferences. Furthermore, what apps currently do, is to set multiple font properties at once with g_object_set(). See https://git.gnome.org/browse/epiphany/tree/embed/ephy-embed-prefs.c?h=gnome-3-26#n354 and https://git.gnome.org/browse/devhelp/tree/src/dh-util.c?h=gnome-3-24#n168. Switching from pixels properties to points properties will only require changing the property names, whereas keeping the pixels properties and only adding points methods, will require calling the setter for points in addition to g_object_set().

If I&apos;m missing something and you strongly believe that the font size properties in pixels should not be deprecated and/or removed, please let me know, so I would know what patch to upload to (1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368354</commentid>
    <comment_count>38</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-04 07:16:57 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #37) 
&gt; B. I think users should have to deal with raw pixels. 

*should NOT have</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368426</commentid>
    <comment_count>39</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-05 00:26:57 -0700</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #37)
&gt; OK, as Carlos pointed out, I&apos;ll split this into two separate bugs and
&gt; patches:
&gt; 
&gt; (1) Add functionality to handle font sizes in points.
&gt; (2) Handle DPI changes and scale the text accordingly.

Perfect, thanks!

&gt; I suggest keeping this bug for (2), as that was its original purpose, but
&gt; for that I need to ask Michael to change the bug&apos;s name back to the
&gt; original, since I don&apos;t have enough permissions.
&gt; 
&gt; And I&apos;ll open a separate bug for (1) with a smaller patch for it. But for
&gt; this I&apos;m not sure if we should fall back to the alternative design, where we
&gt; keep the old font size properties in pixels, and only add setter/getter
&gt; methods for the font size in points. I believe this isn&apos;t really the best
&gt; approach, for reasons of usability and consistency.
&gt; 
&gt; I&apos;ll try to highlight below why I favor adding points properties and
&gt; deprecating the pixels properties (which should be eventually removed for
&gt; good):
&gt; 
&gt; A. It&apos;s a plus to consistency. Currently, &quot;minimum-font-size&quot; property is in
&gt; points, whereas &quot;default-font-size&quot; and &quot;default-monospace-font-size&quot; are in
&gt; pixels, which is already not too consistent.

Yes, I didn&apos;t even know minimum-font-size was in points.

&gt; Splitting the default font size
&gt; properties in both pixels and points, will break the consistency even more,
&gt; whereas replacing the pixels properties with points properties will bring
&gt; unity.

That would still be inconsistent because new properties in points will have the -pts suffix, but minimum-font-size will be in point without the -pts suffix. What I don&apos;t like about adding new properties is that changing one property will affect two properties, because of both are changing the same internal value. They are not two properties but two ways of expressing the same property. So, adding methods to set the same property in other units makes it clear that we are changing the same thing.

&gt; B. I think users should have to deal with raw pixels. And it&apos;s easier for
&gt; them to understand that they are supposed to use only the points
&gt; properties/methods from now on if they see that the pixels
&gt; properties/methods are deprecated and will be removed in a future version.

I&apos;m not sure that&apos;s always the case. In a GNOME desktop environment with gnome-settings-daemon, and GTK+ providing accurate information about the DPI, that&apos;s for sure the case. But in a embedded device, with not desktop and not using any toolkit at all (WPE), that targets a specific screen where you know the DPI, you might want to move the conversions to the app side instead of using the default one provided by WebCore.

&gt; This is in contrast with keeping the pixels properties/methods and only
&gt; adding points methods, which can be misleading and confusing: changing the
&gt; pixels value will change the points value too and vice versa. (Of course,
&gt; this would happen too if they would use both the new properties and the
&gt; deprecated ones, but that would be their fault.)

I&apos;m not sure I get what you mean here, the fact that changing one property makes another one change too is what I find confusing here.

&gt; C. It&apos;s easier for apps to handle font sizes in points rather than pixels,
&gt; i.e. they can pass to WebKitSettings the font size value obtained directly
&gt; from the user preferences.

I agree, and again that&apos;s the case of desktop applications in a desktop environment with system preferences.

&gt; Furthermore, what apps currently do, is to set
&gt; multiple font properties at once with g_object_set(). See
&gt; https://git.gnome.org/browse/epiphany/tree/embed/ephy-embed-prefs.c?h=gnome-
&gt; 3-26#n354 and
&gt; https://git.gnome.org/browse/devhelp/tree/src/dh-util.c?h=gnome-3-24#n168.
&gt; Switching from pixels properties to points properties will only require
&gt; changing the property names, whereas keeping the pixels properties and only
&gt; adding points methods, will require calling the setter for points in
&gt; addition to g_object_set().

Yes, I agree it&apos;s more convenient to use g_object_set() in that case, but I don&apos;t think it&apos;s enough reason. We could add global functions to convert between pixels/points instead of making them part of WebKitSettings, that way you could keep using g_object_set().

&gt; If I&apos;m missing something and you strongly believe that the font size
&gt; properties in pixels should not be deprecated and/or removed, please let me
&gt; know, so I would know what patch to upload to (1).

I still think it&apos;s better to not duplicate the properties for the reasons I&apos;ve just exposed, but that doesn&apos;t mean the decision is made, so don&apos;t change the patch yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368432</commentid>
    <comment_count>40</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-05 03:15:33 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #39) 
&gt; That would still be inconsistent because new properties in points will have
&gt; the -pts suffix, but minimum-font-size will be in point without the -pts
&gt; suffix. What I don&apos;t like about adding new properties is that changing one
&gt; property will affect two properties, because of both are changing the same
&gt; internal value. They are not two properties but two ways of expressing the
&gt; same property. So, adding methods to set the same property in other units
&gt; makes it clear that we are changing the same thing.

I understand what you&apos;re saying. My reasoning was that:

1) Users would not use both set of properties at the same time, since the first set would be deprecated.

2) Eventually the pixels properties will be completely removed in a future version, and then the points properties will take their place and so there will be only one set of properties.
 
&gt; I&apos;m not sure that&apos;s always the case. In a GNOME desktop environment with
&gt; gnome-settings-daemon, and GTK+ providing accurate information about the
&gt; DPI, that&apos;s for sure the case. But in a embedded device, with not desktop
&gt; and not using any toolkit at all (WPE), that targets a specific screen where
&gt; you know the DPI, you might want to move the conversions to the app side
&gt; instead of using the default one provided by WebCore.

I admit, I only took into consideration the case of a desktop environment. You definitely have more knowledge about this stuff.

&gt; I agree, and again that&apos;s the case of desktop applications in a desktop
&gt; environment with system preferences.

Ditto.
 
&gt; Yes, I agree it&apos;s more convenient to use g_object_set() in that case, but I
&gt; don&apos;t think it&apos;s enough reason. We could add global functions to convert
&gt; between pixels/points instead of making them part of WebKitSettings, that
&gt; way you could keep using g_object_set().

In either design we choose, apps would not really need their own functions to convert between points and pixels anymore. That implies calculating the screen DPI, and WebCore would already be doing that in PlatformScreen. Apps would use the setter method for points and the conversion will be made internally by WebKitSettings with the DPI from WebCore.
 
&gt; I still think it&apos;s better to not duplicate the properties for the reasons
&gt; I&apos;ve just exposed, but that doesn&apos;t mean the decision is made, so don&apos;t
&gt; change the patch yet.

OK, since I didn&apos;t really consider the case of embedded devices where apps might want to do their own conversions, I think we can keep the properties in pixels and only add methods for font sizes in points that the desktop environment apps could use.

Maybe Michael can have the final say on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368448</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-05 07:53:30 -0800</bug_when>
    <thetext>&gt; Maybe Michael can have the final say on this?

Wrong way around: I&apos;ll defer to Carlos. But let&apos;s discuss a bit more.

I was almost going to ask you to implement Carlos&apos;s suggestion of having global functions to convert between pixels and points and vice-versa (also for GTK only). We don&apos;t currently have any global functions in our API, but we have another use-case for one in bug #174816, so there&apos;s no harm in adding them. This will make it easier to set the font size using g_object_set() while keeping the original points properties. But I eventually decided that&apos;s a bad idea, because of your argument regarding the disparity between having the existing minimum-font-size in points and the other two font sizes in pixels. That&apos;s confusing, and really annoying me. (Does minimum-font-size even work properly? How could it, if WebKit was not able to convert between points and pixels?)

I think our solution should fix that. And the only way to do that is to deprecate the existing properties. So my preference is still to stick with the original plan, deprecate all the existing pixels stuff and add the points versions. I don&apos;t agree with Carlos that it&apos;s bad to have multiple properties that change at the same time; it makes sense in certain situations, such as GTlsCertificate where we provide separate DER and PEM properties to get the certificate in different formats. I don&apos;t think that&apos;s confusing. And in this case, we&apos;ll actually only have one non-deprecated way to get the settings, which is relevant because the deprecated ones will eventually go away. So I think that&apos;s fine. In the future, when we add the GTK+ 4 API, we can remove the original pixels versions (from the new API) and then drop the -pts from the names (in the new API), addressing the naming disparity. So this is right for the long term. It&apos;ll require some #if conditions, but I think it&apos;s the best approach.

Now, for WPE, I agree with Carlos that it probably makes the most sense to stick with pixels instead of points, at least for now, because (to my knowledge) WPE does not expose any monitor DPI information, so the points settings cannot ever really work properly. I propose that we just accept that WPE and GTK need different API here. So let&apos;s guard the new API with #if PLATFORM(GTK), guard the G_PARAM_DEPRECATED use as well, remove the new points API from the WPE header file, and not deprecate the pixels API for WPE. It&apos;ll require even more conditions, which will be a bit messy, but it&apos;s the right thing to do IMO.

Carlos, does that sound OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368554</commentid>
    <comment_count>42</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-05 23:12:54 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #41)
&gt; &gt; Maybe Michael can have the final say on this?
&gt; 
&gt; Wrong way around: I&apos;ll defer to Carlos. But let&apos;s discuss a bit more.
&gt; 
&gt; I was almost going to ask you to implement Carlos&apos;s suggestion of having
&gt; global functions to convert between pixels and points and vice-versa (also
&gt; for GTK only). We don&apos;t currently have any global functions in our API, but
&gt; we have another use-case for one in bug #174816, so there&apos;s no harm in
&gt; adding them. This will make it easier to set the font size using
&gt; g_object_set() while keeping the original points properties. But I
&gt; eventually decided that&apos;s a bad idea, because of your argument regarding the
&gt; disparity between having the existing minimum-font-size in points and the
&gt; other two font sizes in pixels. That&apos;s confusing, and really annoying me.
&gt; (Does minimum-font-size even work properly? How could it, if WebKit was not
&gt; able to convert between points and pixels?)

It turns out that it&apos;s a bug in the documentation, minimum font size is no different to other font size settings and it&apos;s in pixels, which is what WebCore expects. There&apos;s also minimum logical size that we used to expose in WebKit1, but never exposed in WebKit2, I guess because I didn&apos;t find any application using it.

&gt; I think our solution should fix that. And the only way to do that is to
&gt; deprecate the existing properties.

The actual fix is removing the points thing from the documentation.

&gt; So my preference is still to stick with
&gt; the original plan, deprecate all the existing pixels stuff and add the
&gt; points versions. I don&apos;t agree with Carlos that it&apos;s bad to have multiple
&gt; properties that change at the same time; it makes sense in certain
&gt; situations, such as GTlsCertificate where we provide separate DER and PEM
&gt; properties to get the certificate in different formats. I don&apos;t think that&apos;s
&gt; confusing. And in this case, we&apos;ll actually only have one non-deprecated way
&gt; to get the settings, which is relevant because the deprecated ones will
&gt; eventually go away.

Thing is that I was not convinced of deprecated the pixel ones yet, so I was considering having both at the same time.

&gt; So I think that&apos;s fine. In the future, when we add the
&gt; GTK+ 4 API, we can remove the original pixels versions (from the new API)
&gt; and then drop the -pts from the names (in the new API), addressing the
&gt; naming disparity. So this is right for the long term. It&apos;ll require some #if
&gt; conditions, but I think it&apos;s the best approach.

I think using pixels will work in any case, so having convenient methods to get/set in points for other cases like desktop environment would solve the issue without deprecating and making more difficult for apps to port to the next API version.

&gt; Now, for WPE, I agree with Carlos that it probably makes the most sense to
&gt; stick with pixels instead of points, at least for now, because (to my
&gt; knowledge) WPE does not expose any monitor DPI information, so the points
&gt; settings cannot ever really work properly. I propose that we just accept
&gt; that WPE and GTK need different API here. So let&apos;s guard the new API with
&gt; #if PLATFORM(GTK), guard the G_PARAM_DEPRECATED use as well, remove the new
&gt; points API from the WPE header file, and not deprecate the pixels API for
&gt; WPE. It&apos;ll require even more conditions, which will be a bit messy, but it&apos;s
&gt; the right thing to do IMO.
&gt; 
&gt; Carlos, does that sound OK?

I don&apos;t think it&apos;s a good idea to introduce more differences in the API between GTK and WPE, and I don&apos;t think it&apos;s needed in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368581</commentid>
    <comment_count>43</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-06 03:37:40 -0800</bug_when>
    <thetext>OK, I assume we&apos;ve reached a conclusion? I&apos;ll update the patch in bug 179285.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368629</commentid>
    <comment_count>44</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-06 08:23:58 -0800</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #43)
&gt; OK, I assume we&apos;ve reached a conclusion? I&apos;ll update the patch in bug 179285.

Almost. Instead of get_default_font_size_pts() and set_default_font_size_pts(), let&apos;s instead go with Carlos&apos;s suggestion to expose functions for converting from points to pixels and vice-versa. Then those global functions can be used in combination with the existing pixels properties. And we can minimize the difference between the GTK and WPE APIs, since it would just be two functions that WPE doesn&apos;t have, rather than having a separate set of font size properties that work a bit differently.

And, of course, please fix the documentation of minimum-font-size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368722</commentid>
    <comment_count>45</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-06 11:33:35 -0800</bug_when>
    <thetext>OK. What would be the best place for the new global functions to convert between pixels and points?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368728</commentid>
    <comment_count>46</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-06 11:40:33 -0800</bug_when>
    <thetext>I&apos;m going to suggest adding a new API header &quot;webkit-util.h&quot;. But let&apos;s see if Carlos has a different recommendation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368962</commentid>
    <comment_count>47</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-07 02:06:24 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #46)
&gt; I&apos;m going to suggest adding a new API header &quot;webkit-util.h&quot;. But let&apos;s see
&gt; if Carlos has a different recommendation.

Why are we still discussing this in this bug? Anyway, maybe generic functions to convert between points and pixels sounds out of scope of WebKit, it should be in GTK+ instead (or GdkScreen). If we add generic methods it might not be obvious that those are thought to be used to set/get fonts sizes in WebKitSettings in points. Adding them to WebKitSettings makes it obvious. If we still want to have global functions, I would add them to WebKitSettings as &quot;static&quot; methods (static as in C++, methods of WebKitSettings that don&apos;t receive an object instance).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368970</commentid>
    <comment_count>48</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-07 04:03:58 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #47)
&gt; Why are we still discussing this in this bug?

OK, let&apos;s switch this conversation to bug 179285.

&gt; Adding them to WebKitSettings makes it obvious. If we still want to have
&gt; global functions, I would add them to WebKitSettings as &quot;static&quot; methods
&gt; (static as in C++, methods of WebKitSettings that don&apos;t receive an object
&gt; instance).

I&apos;m OK with this. I&apos;ll submit a patch to bug 179285.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370878</commentid>
    <comment_count>49</comment_count>
      <attachid>326753</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-13 03:29:21 -0800</bug_when>
    <thetext>Created attachment 326753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370881</commentid>
    <comment_count>50</comment_count>
      <attachid>326755</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-13 03:42:02 -0800</bug_when>
    <thetext>Created attachment 326755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370886</commentid>
    <comment_count>51</comment_count>
      <attachid>326755</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-13 05:40:10 -0800</bug_when>
    <thetext>Comment on attachment 326755
Patch

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

Good!

&gt; Source/WebCore/platform/gtk/PlatformScreenGtk.cpp:43
&gt; +#include &lt;wtf/Optional.h&gt;
&gt;  
&gt;  #include &lt;cmath&gt;
&gt;  #include &lt;gtk/gtk.h&gt;

This header should go down below with the other &lt;&gt; includes; it&apos;s treated as a &quot;system&quot; header even though it&apos;s really part of WebKit, because it&apos;s not in the WebCore subproject.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:180
&gt; +        double newScreenDpi = WebCore::screenDPI();
&gt; +
&gt; +        if (newScreenDpi == settings-&gt;priv-&gt;screenDpi)

Style nit: I&apos;d use auto here, and remove the blank line.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:185
&gt; +        double scalingFactor = newScreenDpi / settings-&gt;priv-&gt;screenDpi;
&gt; +        uint32_t prevFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFontSize();
&gt; +        uint32_t prevMonospaceFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFixedFontSize();

Probably best to use auto for all of these declarations, instead of writing out the type and hoping it never changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370967</commentid>
    <comment_count>52</comment_count>
      <attachid>326773</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-13 11:27:22 -0800</bug_when>
    <thetext>Created attachment 326773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371043</commentid>
    <comment_count>53</comment_count>
      <attachid>326773</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-13 13:35:01 -0800</bug_when>
    <thetext>Comment on attachment 326773
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by Michael Catanzaro.

Don&apos;t set r? again when the reviewer is already set. Use &apos;webkit-patch --no-review&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371053</commentid>
    <comment_count>54</comment_count>
      <attachid>326773</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-13 13:42:57 -0800</bug_when>
    <thetext>Comment on attachment 326773
Patch

Clearing flags on attachment: 326773

Committed r224776: &lt;https://trac.webkit.org/changeset/224776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371054</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-13 13:43:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371055</commentid>
    <comment_count>56</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-13 13:47:37 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #53)
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        Reviewed by Michael Catanzaro.
&gt; 
&gt; Don&apos;t set r? again when the reviewer is already set. Use &apos;webkit-patch
&gt; --no-review&apos;

Sorry, I thought I need to wait for cgarcia&apos;s review too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371199</commentid>
    <comment_count>57</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-13 18:29:23 -0800</bug_when>
    <thetext>Well he already reviewed this one, and I&apos;m fairly confident you implemented his suggestion correctly. At least, it looks good to me. Of course, if he does have follow-up comments, you should implement them.

(Two GTK/WPE reviewers are required for patches that add API, but this patch doesn&apos;t.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371307</commentid>
    <comment_count>58</comment_count>
      <attachid>326773</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-13 23:51:11 -0800</bug_when>
    <thetext>Comment on attachment 326773
Patch

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

I&apos;m sorry to be late here. I have only a few of comments that can be fixed in a follow up.

&gt; Source/WebCore/platform/PlatformScreen.h:30
&gt; +#if USE(GLIB)
&gt; +#include &lt;wtf/Function.h&gt;
&gt; +#endif

I don&apos;t normally protect common header includes even if they are only used by one implementation, but don&apos;t bother to change this now that already landed.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:164
&gt; +    WebCore::setScreenDPIObserverHandler(nullptr);

This doesn&apos;t work, because there can be multiple instances of WebKitSettings, it&apos;s the way we make web view groups, by sharing WebKitSettings objects. In this case, once one instance is deleted, all others will stop receiving notifications. We should either change PlatformScreen to receive a pair of Function, context and keep a map, or use a single handler here but notify all WebKitSetting instances. The former should be easier.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:182
&gt; +        auto scalingFactor = newScreenDpi / settings-&gt;priv-&gt;screenDpi;

I would set the new dpi after this to ensure it&apos;s updated when notify signals are emitted.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:190
&gt; +        auto prevFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFontSize();
&gt; +        auto prevMonospaceFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFixedFontSize();
&gt; +
&gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFontSize(std::round(prevFontSize * scalingFactor));
&gt; +        g_object_notify(G_OBJECT(settings), &quot;default-font-size&quot;);
&gt; +
&gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFixedFontSize(std::round(prevMonospaceFontSize * scalingFactor));
&gt; +        g_object_notify(G_OBJECT(settings), &quot;default-monospace-font-size&quot;);

This is already done by webkit_settings_set_default_font_size() and webkit_settings_set_default_monospace_font_size(), so I would use those instead. I would also use g_object_freeze_notify()/thaw_notify().

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:193
&gt; +    });

I think we should document this behavior in the properties and/or the public setters, the user should know that the values set by her will change automatically when screen dpi changes, and that it can be monitored using the notify signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371337</commentid>
    <comment_count>59</comment_count>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-14 01:51:03 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #58)
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:164
&gt; &gt; +    WebCore::setScreenDPIObserverHandler(nullptr);
&gt; 
&gt; This doesn&apos;t work, because there can be multiple instances of
&gt; WebKitSettings, it&apos;s the way we make web view groups, by sharing
&gt; WebKitSettings objects. In this case, once one instance is deleted, all
&gt; others will stop receiving notifications. We should either change
&gt; PlatformScreen to receive a pair of Function, context and keep a map, or use
&gt; a single handler here but notify all WebKitSetting instances. The former
&gt; should be easier.

What do you mean by context? The WebKitSettings object itself?

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:190
&gt; &gt; +        auto prevFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFontSize();
&gt; &gt; +        auto prevMonospaceFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFixedFontSize();
&gt; &gt; +
&gt; &gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFontSize(std::round(prevFontSize * scalingFactor));
&gt; &gt; +        g_object_notify(G_OBJECT(settings), &quot;default-font-size&quot;);
&gt; &gt; +
&gt; &gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFixedFontSize(std::round(prevMonospaceFontSize * scalingFactor));
&gt; &gt; +        g_object_notify(G_OBJECT(settings), &quot;default-monospace-font-size&quot;);
&gt; 
&gt; This is already done by webkit_settings_set_default_font_size() and
&gt; webkit_settings_set_default_monospace_font_size(), so I would use those
&gt; instead. I would also use g_object_freeze_notify()/thaw_notify().

Why would we need to freeze/thaw the notify signals if we&apos;re going to replace the manual set and notify with the setter function? Do we want to emit the signals only after both font sizes were set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371350</commentid>
    <comment_count>60</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-14 03:05:01 -0800</bug_when>
    <thetext>(In reply to Gabriel Ivașcu from comment #59)
&gt; (In reply to Carlos Garcia Campos from comment #58)
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:164
&gt; &gt; &gt; +    WebCore::setScreenDPIObserverHandler(nullptr);
&gt; &gt; 
&gt; &gt; This doesn&apos;t work, because there can be multiple instances of
&gt; &gt; WebKitSettings, it&apos;s the way we make web view groups, by sharing
&gt; &gt; WebKitSettings objects. In this case, once one instance is deleted, all
&gt; &gt; others will stop receiving notifications. We should either change
&gt; &gt; PlatformScreen to receive a pair of Function, context and keep a map, or use
&gt; &gt; a single handler here but notify all WebKitSetting instances. The former
&gt; &gt; should be easier.
&gt; 
&gt; What do you mean by context? The WebKitSettings object itself?

Yes, in this case is the WebKitSettings object itself, but from the WebCore point of view it&apos;s void*.

&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:190
&gt; &gt; &gt; +        auto prevFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFontSize();
&gt; &gt; &gt; +        auto prevMonospaceFontSize = settings-&gt;priv-&gt;preferences-&gt;defaultFixedFontSize();
&gt; &gt; &gt; +
&gt; &gt; &gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFontSize(std::round(prevFontSize * scalingFactor));
&gt; &gt; &gt; +        g_object_notify(G_OBJECT(settings), &quot;default-font-size&quot;);
&gt; &gt; &gt; +
&gt; &gt; &gt; +        settings-&gt;priv-&gt;preferences-&gt;setDefaultFixedFontSize(std::round(prevMonospaceFontSize * scalingFactor));
&gt; &gt; &gt; +        g_object_notify(G_OBJECT(settings), &quot;default-monospace-font-size&quot;);
&gt; &gt; 
&gt; &gt; This is already done by webkit_settings_set_default_font_size() and
&gt; &gt; webkit_settings_set_default_monospace_font_size(), so I would use those
&gt; &gt; instead. I would also use g_object_freeze_notify()/thaw_notify().
&gt; 
&gt; Why would we need to freeze/thaw the notify signals if we&apos;re going to
&gt; replace the manual set and notify with the setter function? Do we want to
&gt; emit the signals only after both font sizes were set?

We don&apos;t need it, but it&apos;s desirable when we know that notify could be called multiple times in a row.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371390</commentid>
    <comment_count>61</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-14 08:49:00 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #58)
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:164
&gt; &gt; +    WebCore::setScreenDPIObserverHandler(nullptr);
&gt; 
&gt; This doesn&apos;t work, because there can be multiple instances of
&gt; WebKitSettings, it&apos;s the way we make web view groups, by sharing
&gt; WebKitSettings objects. In this case, once one instance is deleted, all
&gt; others will stop receiving notifications. We should either change
&gt; PlatformScreen to receive a pair of Function, context and keep a map, or use
&gt; a single handler here but notify all WebKitSetting instances. The former
&gt; should be easier.

Ow :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371391</commentid>
    <comment_count>62</comment_count>
      <attachid>326881</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-14 08:49:19 -0800</bug_when>
    <thetext>Created attachment 326881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371753</commentid>
    <comment_count>63</comment_count>
      <attachid>326881</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-14 23:52:57 -0800</bug_when>
    <thetext>Comment on attachment 326881
Patch

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

&gt; Source/WebCore/platform/gtk/PlatformScreenGtk.cpp:43
&gt; -#include &lt;wtf/Optional.h&gt;
&gt; +#include &lt;unordered_map&gt;

Use HashMap from WTF, please.

&gt; Source/WebCore/platform/gtk/PlatformScreenGtk.cpp:116
&gt; -static std::optional&lt;Function&lt;void()&gt;&gt; screenDPIObserverHandler;
&gt; +static std::unordered_map&lt;void*, Function&lt;void()&gt;&gt; m_screenDPIObserverHandlersMap;

For global maps we normally use a function with a NeverDestroyed map that returns a reference of the map.

&gt; Source/WebCore/platform/gtk/PlatformScreenGtk.cpp:128
&gt;  

Instead of null-checking gtkSettings everywhere  we can just return early since it doesn&apos;t make sense to save the handler that we are not going to call ever.

&gt; Source/WebCore/platform/gtk/PlatformScreenGtk.cpp:134
&gt; +    if (m_screenDPIObserverHandlersMap.size() &gt; 0) {

Do not compare to 0, use either size() or when using HashMap !isEmpty().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371770</commentid>
    <comment_count>64</comment_count>
      <attachid>326975</attachid>
    <who name="Gabriel Ivașcu">givascu</who>
    <bug_when>2017-11-15 03:20:18 -0800</bug_when>
    <thetext>Created attachment 326975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371780</commentid>
    <comment_count>65</comment_count>
      <attachid>326975</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-15 04:06:46 -0800</bug_when>
    <thetext>Comment on attachment 326975
Patch

Clearing flags on attachment: 326975

Committed r224872: &lt;https://trac.webkit.org/changeset/224872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371781</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-15 04:06:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325369</attachid>
            <date>2017-10-30 12:46:45 -0700</date>
            <delta_ts>2017-10-30 14:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171030214644.patch</filename>
            <type>text/plain</type>
            <size>19227</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLjI2NWJhMjIwNzRiMjZkNDlmNmQ0OTMwYmNlYWQyMDNi
MzIyZGFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTAtMzAgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEF1dG9tYXRpY2Fs
bHkgYWRqdXN0IGZvbnQgc2l6ZSB3aGVuIGd0ay14ZnQtZHBpIGNoYW5nZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKGdldFNjcmVlbkRQSSk6CisgICAgICAgIChj
b252ZXJ0Rm9udFNpemVUb1BpeGVscyk6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0d0a1hmdERw
aUNoYW5nZWQpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NTZXRQcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9z
aXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXpl
X3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2Zv
bnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3Nw
YWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorCiAyMDE3LTEwLTMwICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBGaXggYnVpbGQgd2Fybmlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNl
dHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRp
bmdzLmNwcAppbmRleCA5NDdlYjQyMGNmYWIzYjk5MDhlN2QzMmYzY2YwYjZiZjgwYWFmMmQzLi42
MWY1NTFmNDlmMzQxN2NiOTA4NDc3YTc0ZjdiNmM1ZTJlMjBhMzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC03Niw2
ICs3NiwxMiBAQCBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyB1
c2VyQWdlbnQ7CiAgICAgYm9vbCBhbGxvd01vZGFsRGlhbG9ncyB7IGZhbHNlIH07CiAgICAgYm9v
bCB6b29tVGV4dE9ubHkgeyBmYWxzZSB9OworICAgIGd1aW50MzIgZGVmYXVsdEZvbnRTaXplUHRz
IHsgMTIgfTsKKyAgICBndWludDMyIGRlZmF1bHRNb25vc3BhY2VGb250U2l6ZVB0cyB7IDEwIH07
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1NldHRpbmdzKiBndGtTZXR0aW5nczsKKyAgICBn
dWxvbmcgZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogLyoq
CkBAIC0xMjAsNyArMTI2LDkgQEAgZW51bSB7CiAgICAgUFJPUF9GQU5UQVNZX0ZPTlRfRkFNSUxZ
LAogICAgIFBST1BfUElDVE9HUkFQSF9GT05UX0ZBTUlMWSwKICAgICBQUk9QX0RFRkFVTFRfRk9O
VF9TSVpFLAorICAgIFBST1BfREVGQVVMVF9GT05UX1NJWkVfUFRTLAogICAgIFBST1BfREVGQVVM
VF9NT05PU1BBQ0VfRk9OVF9TSVpFLAorICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9T
SVpFX1BUUywKICAgICBQUk9QX01JTklNVU1fRk9OVF9TSVpFLAogICAgIFBST1BfREVGQVVMVF9D
SEFSU0VULAogICAgIFBST1BfRU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCkBAIC0xNTUsMTIgKzE2
Myw4MSBAQCBlbnVtIHsKICNlbmRpZgogfTsKIAorc3RhdGljIGRvdWJsZSBnZXRTY3JlZW5EUEko
KQoreworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2LjA7CisKKyNpZiBQ
TEFURk9STShHVEspCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaWxsaW1ldHJlc1BlckluY2gg
PSAyNS40OworICAgIGRvdWJsZSBkcGksIGRpYWdvbmFsSW5QaXhlbHMsIGRpYWdvbmFsSW5JbmNo
ZXM7CisgICAgR2RrU2NyZWVuKiBzY3JlZW47CisKKyAgICBzY3JlZW4gPSBnZGtfc2NyZWVuX2dl
dF9kZWZhdWx0KCk7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHJldHVybiBkZWZhdWx0RFBJ
OworCisgICAgLy8gZ2RrX3NjcmVlbl9nZXRfcmVzb2x1dGlvbigpIHJldHVybnMgLTEgd2hlbiBu
byBEUEkgaXMgc2V0LgorICAgIGRwaSA9IGdka19zY3JlZW5fZ2V0X3Jlc29sdXRpb24oc2NyZWVu
KTsKKyAgICBpZiAoZHBpICE9IC0xKQorICAgICAgICByZXR1cm4gZHBpOworCisgICAgLy8gQ2Fs
Y3VsYXRlIHNjcmVlbiBEUEkgbWFudWFsbHkuCisgICAgZGlhZ29uYWxJblBpeGVscyA9IGh5cG90
KGdka19zY3JlZW5fZ2V0X3dpZHRoKHNjcmVlbiksIGdka19zY3JlZW5fZ2V0X2hlaWdodChzY3Jl
ZW4pKTsKKyAgICBkaWFnb25hbEluSW5jaGVzID0gaHlwb3QoZ2RrX3NjcmVlbl9nZXRfd2lkdGhf
bW0oc2NyZWVuKSwgZ2RrX3NjcmVlbl9nZXRfaGVpZ2h0X21tKHNjcmVlbikpIC8gbWlsbGltZXRy
ZXNQZXJJbmNoOworICAgIHJldHVybiBkaWFnb25hbEluUGl4ZWxzIC8gZGlhZ29uYWxJbkluY2hl
czsKKyNlbHNlCisgICAgcmV0dXJuIGRlZmF1bHREUEk7CisjZW5kaWYKK30KKworc3RhdGljIGlu
bGluZSBndWludDMyIGNvbnZlcnRGb250U2l6ZVRvUGl4ZWxzKGd1aW50MzIgZm9udFNpemUsIGRv
dWJsZSBkcGkpCit7CisgICAgcmV0dXJuIGZvbnRTaXplIC8gNzIuMCAqIChkcGkgPiAwID8gZHBp
IDogZ2V0U2NyZWVuRFBJKCkpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorc3RhdGljIHZvaWQg
d2ViS2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncywg
R1BhcmFtU3BlYyogcHNwZWMsIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBkb3Vi
bGUgZHBpOworICAgIGludCBndGtYZnREcGk7CisKKyAgICAvLyBndGsteGZ0LWRwaSB1c2VzIC0x
IGZvciBkZWZhdWx0IHZhbHVlLgorICAgIGdfb2JqZWN0X2dldChndGtTZXR0aW5ncywgImd0ay14
ZnQtZHBpIiwgJmd0a1hmdERwaSwgTlVMTCk7CisgICAgZHBpID0gZ3RrWGZ0RHBpICE9IC0xID8g
Z3RrWGZ0RHBpIC8gMTAyNC4wIDogLTE7CisKKyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMtPnNldERlZmF1bHRGb250U2l6ZShjb252ZXJ0Rm9udFNpemVUb1BpeGVscyhzZXR0aW5ncy0+
cHJpdi0+ZGVmYXVsdEZvbnRTaXplUHRzLCBkcGkpKTsKKyAgICBzZXR0aW5ncy0+cHJpdi0+cHJl
ZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKGNvbnZlcnRGb250U2l6ZVRvUGl4ZWxz
KHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQdHMsIGRwaSkpOworfQor
I2VuZGlmCisKIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9zZXR0aW5nc19wYXJlbnRfY2xh
c3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwogCi0gICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0g
V0VCS0lUX1NFVFRJTkdTKG9iamVjdCktPnByaXYtPnByZWZlcmVuY2VzLmdldCgpOworICAgIFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworICAgIFdl
YlByZWZlcmVuY2VzKiBwcmVmcyA9IHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKTsK
ICAgICBwcmVmcy0+c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24odHJ1ZSk7CisKKyNp
ZiBQTEFURk9STShHVEspCisgICAgc2V0dGluZ3MtPnByaXYtPmd0a1NldHRpbmdzID0gZ3RrX3Nl
dHRpbmdzX2dldF9kZWZhdWx0KCk7CisgICAgaWYgKHNldHRpbmdzLT5wcml2LT5ndGtTZXR0aW5n
cykKKyAgICAgICAgc2V0dGluZ3MtPnByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSBn
X3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLT5wcml2LT5ndGtTZXR0aW5ncywgIm5vdGlmeTo6Z3Rr
LXhmdC1kcGkiLCBHX0NBTExCQUNLKHdlYktpdFNldHRpbmdzR3RrWGZ0RHBpQ2hhbmdlZCksIHNl
dHRpbmdzKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2Uo
R09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJ
VF9TRVRUSU5HUyhvYmplY3QpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlmIChzZXR0aW5n
cy0+cHJpdi0+Z3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCkgeworICAgICAgICBpZiAoc2V0dGlu
Z3MtPnByaXYtPmd0a1NldHRpbmdzICYmIGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKHNl
dHRpbmdzLT5wcml2LT5ndGtTZXR0aW5ncywgc2V0dGluZ3MtPnByaXYtPmd0a1hmdERwaUNoYW5n
ZWRIYW5kbGVySUQpKQorICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHNl
dHRpbmdzLT5wcml2LT5ndGtTZXR0aW5ncywgc2V0dGluZ3MtPnByaXYtPmd0a1hmdERwaUNoYW5n
ZWRIYW5kbGVySUQpOworICAgICAgICBzZXR0aW5ncy0+cHJpdi0+Z3RrWGZ0RHBpQ2hhbmdlZEhh
bmRsZXJJRCA9IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
c2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElk
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCkBAIC0yMjgsOSAr
MzA1LDE1IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAgICAgY2FzZSBQUk9QX0RFRkFVTFRf
Rk9OVF9TSVpFOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXpl
KHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFDRV9G
T05UX1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkVfUFRTOgorICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMo
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQUk9QX01JTklNVU1fRk9OVF9TSVpFOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X21pbmltdW1fZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDAyLDkgKzQ4NSwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZh
bAogICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRToKICAgICAgICAgZ192YWx1ZV9zZXRf
dWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5n
cykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVGQVVMVF9GT05UX1NJWkVfUFRT
OgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFOgogICAgICAgICBnX3ZhbHVlX3NldF91
aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6
ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVGQVVMVF9NT05P
U1BBQ0VfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdz
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9NSU5JTVVNX0ZPTlRfU0laRToKICAg
ICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVt
X2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKQEAgLTUwOSw2ICs1OTgsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0Ns
YXNzKiBrbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGtsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2ViS2l0U2V0
dGluZ3NDb25zdHJ1Y3RlZDsKKyAgICBnT2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJLaXRTZXR0
aW5nc0Rpc3Bvc2U7CiAgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0
U2V0dGluZ3NHZXRQcm9wZXJ0eTsKIApAQCAtNzkyLDYgKzg4Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAg
ICAqCiAgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIHBpeGVscyB0byB1c2UgZm9yIGNv
bnRlbnQgZGlzcGxheWVkIGlmCiAgICAgICogbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAg
ICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDIuMjAuIFRoaXMgcHJvcGVydHkgZG9lcyBub3Qgc2Nh
bGUgdGhlIHRleHQgYXV0b21hdGljYWxseQorICAgICAqIHdoZW4gdGhlIHNjcmVlbiBEUEkgY2hh
bmdlcy4gVXNlIGRlZmF1bHQtZm9udC1zaXplLXB0cyBpbnN0ZWFkLgogICAgICAqLwogICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRSwKQEAgLTgwMiwx
MCArODk1LDI5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktp
dFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOwogCiAg
ICAgLyoqCisgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUtcHRzOgorICAg
ICAqCisgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIHBvaW50cyB0byB1c2UgZm9yIGNv
bnRlbnQgZGlzcGxheWVkIGlmCisgICAgICogbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAg
ICAgKgorICAgICAqIFNpbmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFX1BUUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50KCJkZWZhdWx0LWZvbnQtc2l6ZS1wdHMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRGVmYXVsdCBmb250IHNpemUgaW4gcG9pbnRzIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUg
aW4gcG9pbnRzIHVzZWQgdG8gZGlzcGxheSB0ZXh0LiIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgR19NQVhVSU5ULCAxMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0
ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFNldHRpbmdz
OmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZToKICAgICAgKgogICAgICAqIFRoZSBkZWZhdWx0
IGZvbnQgc2l6ZSBpbiBwaXhlbHMgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXllZCBpbgogICAg
ICAqIG1vbm9zcGFjZSBmb250IGlmIG5vIGZvbnQgc2l6ZSBpcyBzcGVjaWZpZWQuCisgICAgICoK
KyAgICAgKiBEZXByZWNhdGVkOiAyLjIwLiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNjYWxlIHRo
ZSB0ZXh0IGF1dG9tYXRpY2FsbHkKKyAgICAgKiB3aGVuIHRoZSBzY3JlZW4gRFBJIGNoYW5nZXMu
IFVzZSBkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUtcHRzIGluc3RlYWQuCiAgICAgICovCiAg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRf
U0laRSwKQEAgLTgxNiw2ICs5MjgsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2Ns
YXNzX2luaXQoV2ViS2l0U2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJh
bUZsYWdzKSk7CiAKICAgICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9z
cGFjZS1mb250LXNpemUtcHRzOgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXpl
IGluIHBvaW50cyB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCisgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
T2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0RF
RkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0laRV9QVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgiZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXpl
LXB0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcG9pbnRzIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgZGVm
YXVsdCBmb250IHNpemUgaW4gcG9pbnRzIHVzZWQgdG8gZGlzcGxheSBtb25vc3BhY2UgdGV4dC4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUsIEdfTUFYVUlOVCwgMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAv
KioKICAgICAgKiBXZWJLaXRTZXR0aW5nczptaW5pbXVtLWZvbnQtc2l6ZToKICAgICAgKgogICAg
ICAqIFRoZSBtaW5pbXVtIGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0byBkaXNwbGF5IHRleHQu
IFRoaXMgc2V0dGluZwpAQCAtMjA1MCwxMCArMjE3OCwxMyBAQCB2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0CiAgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVy
dHkuCiAgKgogICogUmV0dXJuczogVGhlIGRlZmF1bHQgZm9udCBzaXplLgorICoKKyAqIERlcHJl
Y2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisgICAgZ193YXJuaW5nKCJU
aGUgcHJvcGVydHkgV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgaXMgZGVwcmVjYXRl
ZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIik7CiAKICAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKIH0KQEAgLTIwNjQsMTAg
KzIxOTUsMTMgQEAgZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXpl
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKICAqIEBmb250X3NpemU6IGRlZmF1bHQgZm9udCBz
aXplIHRvIGJlIHNldCBpbiBwaXhlbHMKICAqCiAgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpk
ZWZhdWx0LWZvbnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIwLiBVc2Ug
d2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFkLgogICov
CiB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBndWludDMyIGZvbnRTaXplKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisgICAgZ193YXJuaW5nKCJUaGUgcHJvcGVy
dHkgV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgc2hv
dWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIik7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKICAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYt
PnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKQEAgLTIwNzksMTYgKzIyMTMsNTcgQEAg
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ3VpbnQzMiBmb24KIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2RlZmF1bHRfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MK
KyAqCisgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUtcHRzIHBy
b3BlcnR5LgorICoKKyAqIFJldHVybnM6IFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMu
CisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPmRlZmF1bHRGb250U2l6ZVB0czsKK30KKworLyoqCisg
KiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBmb250X3NpemU6IGRlZmF1bHQgZm9udCBzaXplIHRv
IGJlIHNldCBpbiBwb2ludHMKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0
LWZvbnQtc2l6ZS1wdHMgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjAKKyAqLwordm9pZCB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIGd1aW50MzIgZm9udFNpemUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIGlmIChzZXR0aW5ncy0+cHJpdi0+ZGVm
YXVsdEZvbnRTaXplUHRzID09IGZvbnRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXR0
aW5ncy0+cHJpdi0+ZGVmYXVsdEZvbnRTaXplUHRzID0gZm9udFNpemU7CisgICAgc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT5zZXREZWZhdWx0Rm9udFNpemUoY29udmVydEZvbnRTaXplVG9Q
aXhlbHMoc2V0dGluZ3MtPnByaXYtPmRlZmF1bHRGb250U2l6ZVB0cywgLTEpKTsKKyAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUtcHRzIik7
Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemU6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgogICogR2V0cyB0aGUg
I1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KICAq
CiAgKiBSZXR1cm5zOiBEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUuCisgKgorICogRGVwcmVj
YXRlZDogMi4yMC4gVXNlIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplX3B0cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDAp
OworICAgIGdfd2FybmluZygiVGhlIHByb3BlcnR5IFdlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9u
b3NwYWNlLWZvbnQtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55
bW9yZS4iKTsKIAogICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1
bHRGaXhlZEZvbnRTaXplKCk7CiB9CkBAIC0yMDk5LDEwICsyMjc0LDEzIEBAIGd1aW50MzIgd2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzCiAgKiBAZm9udF9zaXplOiBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUg
dG8gYmUgc2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1
bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIw
LiBVc2Ugd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
KCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3Nw
YWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50MzIgZm9udFNpemUp
CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KyAgICBnX3dhcm5pbmcoIlRoZSBwcm9wZXJ0eSBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9z
cGFjZS1mb250LXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1v
cmUuIik7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKICAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0
Rml4ZWRGb250U2l6ZSgpOwpAQCAtMjExNCw2ICsyMjkyLDQ0IEBAIHZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnCiB9CiAKIC8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFj
ZV9mb250X3NpemVfcHRzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAq
IEdldHMgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUtcHRz
IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IERlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSBp
biBwb2ludHMuCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3Nw
YWNlRm9udFNpemVQdHM7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemVfcHRzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5n
cworICogQGZvbnRfc2l6ZTogZGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIHRvIGJlIHNldCBp
biBwb2ludHMKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFj
ZS1mb250LXNpemUtcHRzIHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3ZvaWQg
d2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgaWYgKHNldHRpbmdz
LT5wcml2LT5kZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQdHMgPT0gZm9udFNpemUpCisgICAgICAg
IHJldHVybjsKKworICAgIHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQ
dHMgPSBmb250U2l6ZTsKKyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1
bHRGaXhlZEZvbnRTaXplKGNvbnZlcnRGb250U2l6ZVRvUGl4ZWxzKHNldHRpbmdzLT5wcml2LT5k
ZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQdHMsIC0xKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiKTsKK30K
KworLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplOgogICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAppbmRleCA3ZjYzNTc3ODdmYmZhYWZkYzVkNWJm
NWQwMzJlYjIxNWZkNTRhNzNiLi5mMmEzZWQxYzAzODA5ZTFjMjdkMWZmNmQ1MmYyZDYwY2FhMWRi
YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0
aW5ncy5oCkBAIC0yMjQsMjEgKzIyNCwzNSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9zZXR0
aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseSAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKnBpY3RvZ3JhcGhf
Zm9udF9mYW1pbHkpOwogCi1XRUJLSVRfQVBJIGd1aW50MzIKK1dFQktJVF9ERVBSRUNBVEVEX0ZP
Uih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cykgZ3VpbnQzMgogd2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKLVdFQktJVF9BUEkgdm9pZAorV0VCS0lU
X0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRz
KSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplICAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIg
ICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKLXdlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyAqc2V0dGluZ3MpOword2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6
ZV9wdHMgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAK
IFdFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9w
dHMgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cykgZ3VpbnQz
Mgord2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUgICAgICAg
ICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9ERVBSRUNBVEVE
X0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMp
IHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAg
ICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAg
ICAgICAgIGZvbnRfc2l6ZSk7CiAKIFdFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNl
dHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3Nl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRp
bmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VC
S0lUX0FQSSBndWludDMyCiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAogV0VC
S0lUX0FQSSB2b2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAzNmY0ZmYz
ZDI3NTZlMmE4YmM4ZThmOTMzYjUxMGE1N2JjZjVhYWU5Li5mODI2NWMzMjFhOTczYjE1MDhlY2Vl
YzYyYTIzZjljMTk5MzgwMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAg
LTQwNSw4ICs0MDUsMTIgQEAgd2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRfZmFt
aWx5CiB3ZWJraXRfc2V0dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkKIHdlYmtpdF9z
ZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9mb250X3NpemUKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzCit3
ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cwogd2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVm
YXVsdF9tb25vc3BhY2VfZm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9u
b3NwYWNlX2ZvbnRfc2l6ZV9wdHMKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3Bh
Y2VfZm9udF9zaXplX3B0cwogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZQog
d2Via2l0X3NldHRpbmdzX3NldF9taW5pbXVtX2ZvbnRfc2l6ZQogd2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X2NoYXJzZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325377</attachid>
            <date>2017-10-30 14:26:12 -0700</date>
            <delta_ts>2017-10-31 08:35:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171030232610.patch</filename>
            <type>text/plain</type>
            <size>21133</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLmE3OWFkNWQ1YWRjOTdlZTMwM2QwYTVlMjc4N2YyNTg1
YWFiZWE5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMTAtMzAgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEF1dG9tYXRpY2Fs
bHkgYWRqdXN0IGZvbnQgc2l6ZSB3aGVuIGd0ay14ZnQtZHBpIGNoYW5nZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKGdldFNjcmVlbkRQSSk6CisgICAgICAgIChj
b252ZXJ0Rm9udFNpemVUb1BpeGVscyk6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0d0a1hmdERw
aUNoYW5nZWQpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NTZXRQcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9z
aXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXpl
X3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2Zv
bnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3Nw
YWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFNldHRpbmdzLmg6CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCmlu
ZGV4IDk0N2ViNDIwY2ZhYjNiOTkwOGU3ZDMyZjNjZjBiNmJmODBhYWYyZDMuLmU5ZTIyZDBhODhh
NzA2OTdlZDQ2MTMyMmZiNDdlMDc5ZTEwY2U0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTc2LDYgKzc2LDEyIEBA
IHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsK
ICAgICBib29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0
T25seSB7IGZhbHNlIH07CisgICAgZ3VpbnQzMiBkZWZhdWx0Rm9udFNpemVQdHMgeyAxMiB9Owor
ICAgIGd1aW50MzIgZGVmYXVsdE1vbm9zcGFjZUZvbnRTaXplUHRzIHsgMTAgfTsKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgR3RrU2V0dGluZ3MqIGd0a1NldHRpbmdzOworICAgIGd1bG9uZyBndGtY
ZnREcGlDaGFuZ2VkSGFuZGxlcklEIHsgMCB9OworI2VuZGlmCiB9OwogCiAvKioKQEAgLTEyMCw3
ICsxMjYsOSBAQCBlbnVtIHsKICAgICBQUk9QX0ZBTlRBU1lfRk9OVF9GQU1JTFksCiAgICAgUFJP
UF9QSUNUT0dSQVBIX0ZPTlRfRkFNSUxZLAogICAgIFBST1BfREVGQVVMVF9GT05UX1NJWkUsCisg
ICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFMsCiAgICAgUFJPUF9ERUZBVUxUX01PTk9TUEFD
RV9GT05UX1NJWkUsCisgICAgUFJPUF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkVfUFRTLAog
ICAgIFBST1BfTUlOSU1VTV9GT05UX1NJWkUsCiAgICAgUFJPUF9ERUZBVUxUX0NIQVJTRVQsCiAg
ICAgUFJPUF9FTkFCTEVfUFJJVkFURV9CUk9XU0lORywKQEAgLTE1NSwxMiArMTYzLDgxIEBAIGVu
dW0gewogI2VuZGlmCiB9OwogCitzdGF0aWMgZG91YmxlIGdldFNjcmVlbkRQSSgpCit7CisgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBkZWZhdWx0RFBJID0gOTYuMDsKKworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1pbGxpbWV0cmVzUGVySW5jaCA9IDI1LjQ7Cisg
ICAgZG91YmxlIGRwaSwgZGlhZ29uYWxJblBpeGVscywgZGlhZ29uYWxJbkluY2hlczsKKyAgICBH
ZGtTY3JlZW4qIHNjcmVlbjsKKworICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQo
KTsKKyAgICBpZiAoIXNjcmVlbikKKyAgICAgICAgcmV0dXJuIGRlZmF1bHREUEk7CisKKyAgICAv
LyBnZGtfc2NyZWVuX2dldF9yZXNvbHV0aW9uKCkgcmV0dXJucyAtMSB3aGVuIG5vIERQSSBpcyBz
ZXQuCisgICAgZHBpID0gZ2RrX3NjcmVlbl9nZXRfcmVzb2x1dGlvbihzY3JlZW4pOworICAgIGlm
IChkcGkgIT0gLTEpCisgICAgICAgIHJldHVybiBkcGk7CisKKyAgICAvLyBDYWxjdWxhdGUgc2Ny
ZWVuIERQSSBtYW51YWxseS4KKyAgICBkaWFnb25hbEluUGl4ZWxzID0gaHlwb3QoZ2RrX3NjcmVl
bl9nZXRfd2lkdGgoc2NyZWVuKSwgZ2RrX3NjcmVlbl9nZXRfaGVpZ2h0KHNjcmVlbikpOworICAg
IGRpYWdvbmFsSW5JbmNoZXMgPSBoeXBvdChnZGtfc2NyZWVuX2dldF93aWR0aF9tbShzY3JlZW4p
LCBnZGtfc2NyZWVuX2dldF9oZWlnaHRfbW0oc2NyZWVuKSkgLyBtaWxsaW1ldHJlc1BlckluY2g7
CisgICAgcmV0dXJuIGRpYWdvbmFsSW5QaXhlbHMgLyBkaWFnb25hbEluSW5jaGVzOworI2Vsc2UK
KyAgICByZXR1cm4gZGVmYXVsdERQSTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGd1aW50
MzIgY29udmVydEZvbnRTaXplVG9QaXhlbHMoZ3VpbnQzMiBmb250U2l6ZSwgZG91YmxlIGRwaSkK
K3sKKyAgICByZXR1cm4gZm9udFNpemUgLyA3Mi4wICogKGRwaSA+IDAgPyBkcGkgOiBnZXRTY3Jl
ZW5EUEkoKSk7Cit9CisKKyNpZiBQTEFURk9STShHVEspCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc0d0a1hmdERwaUNoYW5nZWQoR3RrU2V0dGluZ3MqIGd0a1NldHRpbmdzLCBHUGFyYW1TcGVj
KiBwc3BlYywgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGRvdWJsZSBkcGk7Cisg
ICAgaW50IGd0a1hmdERwaTsKKworICAgIC8vIGd0ay14ZnQtZHBpIHVzZXMgLTEgZm9yIGRlZmF1
bHQgdmFsdWUuCisgICAgZ19vYmplY3RfZ2V0KGd0a1NldHRpbmdzLCAiZ3RrLXhmdC1kcGkiLCAm
Z3RrWGZ0RHBpLCBOVUxMKTsKKyAgICBkcGkgPSBndGtYZnREcGkgIT0gLTEgPyBndGtYZnREcGkg
LyAxMDI0LjAgOiAtMTsKKworICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVm
YXVsdEZvbnRTaXplKGNvbnZlcnRGb250U2l6ZVRvUGl4ZWxzKHNldHRpbmdzLT5wcml2LT5kZWZh
dWx0Rm9udFNpemVQdHMsIGRwaSkpOworICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+
c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoY29udmVydEZvbnRTaXplVG9QaXhlbHMoc2V0dGluZ3Mt
PnByaXYtPmRlZmF1bHRNb25vc3BhY2VGb250U2l6ZVB0cywgZHBpKSk7Cit9CisjZW5kaWYKKwog
c3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdGVkKG9iamVjdCk7CiAKLSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBXRUJLSVRfU0VU
VElOR1Mob2JqZWN0KS0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCk7CisgICAgV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisgICAgV2ViUHJlZmVyZW5j
ZXMqIHByZWZzID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpOwogICAgIHByZWZz
LT5zZXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbih0cnVlKTsKKworI2lmIFBMQVRGT1JN
KEdUSykKKyAgICBzZXR0aW5ncy0+cHJpdi0+Z3RrU2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0
X2RlZmF1bHQoKTsKKyAgICBpZiAoc2V0dGluZ3MtPnByaXYtPmd0a1NldHRpbmdzKQorICAgICAg
ICBzZXR0aW5ncy0+cHJpdi0+Z3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCA9IGdfc2lnbmFsX2Nv
bm5lY3Qoc2V0dGluZ3MtPnByaXYtPmd0a1NldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWRwaSIs
IEdfQ0FMTEJBQ0sod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKSwgc2V0dGluZ3MpOwor
I2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzRGlzcG9zZShHT2JqZWN0KiBv
YmplY3QpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpLT5wcml2OworCisgICAgaWYgKHByaXYtPmd0
a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpIHsKKyAgICAgICAgaWYgKHByaXYtPmd0a1NldHRpbmdz
ICYmIGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKHByaXYtPmd0a1NldHRpbmdzLCBwcml2
LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSkKKyAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRs
ZXJfZGlzY29ubmVjdChwcml2LT5ndGtTZXR0aW5ncywgcHJpdi0+Z3RrWGZ0RHBpQ2hhbmdlZEhh
bmRsZXJJRCk7CisgICAgICAgIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSAwOwor
ICAgIH0KKyNlbmRpZgorCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVu
dF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0U2V0dGlu
Z3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpAQCAtMjI4LDkgKzMwNSwxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBjb25zdCBHVmFsdQogICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRToKICAg
ICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncywgZ192
YWx1ZV9nZXRfdWludCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVG
QVVMVF9GT05UX1NJWkVfUFRTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplX3B0cyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFOgogICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0
aW5ncywgZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF91aW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9NSU5J
TVVNX0ZPTlRfU0laRToKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9taW5pbXVtX2ZvbnRf
c2l6ZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpOwogICAgICAgICBicmVhazsK
QEAgLTQwMiw5ICs0ODUsMTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWwKICAgICBjYXNlIFBS
T1BfREVGQVVMVF9GT05UX1NJWkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgZ192
YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6
ZV9wdHMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0RFRkFVTFRf
TU9OT1NQQUNFX0ZPTlRfU0laRToKICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0la
RV9QVFM6CisgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyhzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfTUlOSU1VTV9GT05UX1NJWkU6CiAgICAgICAgIGdfdmFsdWVf
c2V0X3VpbnQodmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11bV9mb250X3NpemUoc2V0
dGluZ3MpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MDksNiArNTk4LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0dGluZ3NDbGFzcyoga2xhc3MpCiB7
CiAgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7
CiAgICAgZ09iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYktpdFNldHRpbmdzQ29uc3RydWN0
ZWQ7CisgICAgZ09iamVjdENsYXNzLT5kaXNwb3NlID0gd2ViS2l0U2V0dGluZ3NEaXNwb3NlOwog
ICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0
eTsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdFNldHRpbmdzR2V0UHJv
cGVydHk7CiAKQEAgLTc5Miw2ICs4ODIsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
Y2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgKgogICAgICAqIFRo
ZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwaXhlbHMgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXll
ZCBpZgogICAgICAqIG5vIGZvbnQgc2l6ZSBpcyBzcGVjaWZpZWQuCisgICAgICoKKyAgICAgKiBE
ZXByZWNhdGVkOiAyLjIwLiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNjYWxlIHRoZSB0ZXh0IGF1
dG9tYXRpY2FsbHkKKyAgICAgKiB3aGVuIHRoZSBzY3JlZW4gRFBJIGNoYW5nZXMuIFVzZSBkZWZh
dWx0LWZvbnQtc2l6ZS1wdHMgaW5zdGVhZC4KICAgICAgKi8KICAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfREVGQVVMVF9GT05UX1NJWkUsCkBAIC04MDIsMTAgKzg5NSwzMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNz
KiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAq
IFdlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9udC1zaXplLXB0czoKKyAgICAgKgorICAgICAqIFRo
ZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXll
ZCBpZgorICAgICAqIG5vIGZvbnQgc2l6ZSBpcyBzcGVjaWZpZWQuCisgICAgICoKKyAgICAgKiBT
aW5jZTogMi4yMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
CisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9Q
VFMsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRlZmF1bHQtZm9u
dC1zaXplLXB0cyIsCisgICAgICAgICAgICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMi
KSwKKyAgICAgICAgICAgIF8oIlRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0
byBkaXNwbGF5IHRleHQuIiksCisgICAgICAgICAgICA1LCBHX01BWFVJTlQsIDEyLAorICAgICAg
ICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCiAgICAgICog
V2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplOgogICAgICAqCiAgICAg
ICogVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIHBpeGVscyB0byB1c2UgZm9yIGNvbnRlbnQgZGlz
cGxheWVkIGluCiAgICAgICogbW9ub3NwYWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNp
ZmllZC4KKyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDIuMjAuIFRoaXMgcHJvcGVydHkgZG9l
cyBub3Qgc2NhbGUgdGhlIHRleHQgYXV0b21hdGljYWxseQorICAgICAqIHdoZW4gdGhlIHNjcmVl
biBEUEkgY2hhbmdlcy4gVXNlIGRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMgaW5zdGVh
ZC4KICAgICAgKi8KICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfREVGQVVMVF9N
T05PU1BBQ0VfRk9OVF9TSVpFLApAQCAtODE2LDYgKzkzMCwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0
ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFNldHRpbmdz
OmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHM6CisgICAgICoKKyAgICAgKiBUaGUgZGVm
YXVsdCBmb250IHNpemUgaW4gcG9pbnRzIHRvIHVzZSBmb3IgY29udGVudCBkaXNwbGF5ZWQgaW4K
KyAgICAgKiBtb25vc3BhY2UgZm9udCBpZiBubyBmb250IHNpemUgaXMgc3BlY2lmaWVkLgorICAg
ICAqCisgICAgICogU2luY2U6IDIuMjAKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfREVGQVVM
VF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoCisg
ICAgICAgICAgICAiZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplLXB0cyIsCisgICAgICAgICAg
ICBfKCJEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcG9pbnRzIiksCisgICAgICAgICAg
ICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gcG9pbnRzIHVzZWQgdG8gZGlzcGxheSBtb25v
c3BhY2UgdGV4dC4iKSwKKyAgICAgICAgICAgIDUsIEdfTUFYVUlOVCwgMTAsCisgICAgICAgICAg
ICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKICAgICAgKiBXZWJL
aXRTZXR0aW5nczptaW5pbXVtLWZvbnQtc2l6ZToKICAgICAgKgogICAgICAqIFRoZSBtaW5pbXVt
IGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0byBkaXNwbGF5IHRleHQuIFRoaXMgc2V0dGluZwpA
QCAtMjA1MCwxMCArMjE4MiwxMyBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfcGljdG9ncmFw
aF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0CiAgKiBHZXRzIHRo
ZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVydHkuCiAgKgogICogUmV0
dXJuczogVGhlIGRlZmF1bHQgZm9udCBzaXplLgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVz
ZSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cygpIGluc3RlYWQuCiAg
Ki8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisgICAgZ193YXJuaW5nKCJUaGUgcHJvcGVydHkgV2Vi
S2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5v
dCBiZSB1c2VkIGFueW1vcmUuIik7CiAKICAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKIH0KQEAgLTIwNjQsMTAgKzIxOTksMTMgQEAgZ3Vp
bnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncykKICAqIEBmb250X3NpemU6IGRlZmF1bHQgZm9udCBzaXplIHRvIGJlIHNldCBp
biBwaXhlbHMKICAqCiAgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0LWZvbnQtc2l6
ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIwLiBVc2Ugd2Via2l0X3NldHRpbmdz
X3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFkLgogICovCiB2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
dWludDMyIGZvbnRTaXplKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisgICAgZ193YXJuaW5nKCJUaGUgcHJvcGVydHkgV2ViS2l0U2V0dGlu
Z3M6ZGVmYXVsdC1mb250LXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2Vk
IGFueW1vcmUuIik7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKICAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5k
ZWZhdWx0Rm9udFNpemUoKTsKQEAgLTIwNzksMTYgKzIyMTcsNTcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ3Vp
bnQzMiBmb24KIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9z
aXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXRzIHRo
ZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUtcHRzIHByb3BlcnR5LgorICoKKyAq
IFJldHVybnM6IFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMuCisgKgorICogU2luY2U6
IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXpl
X3B0cyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPmRlZmF1bHRGb250U2l6ZVB0czsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0
dGluZ3MKKyAqIEBmb250X3NpemU6IGRlZmF1bHQgZm9udCBzaXplIHRvIGJlIHNldCBpbiBwb2lu
dHMKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0LWZvbnQtc2l6ZS1wdHMg
cHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjAKKyAqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50
MzIgZm9udFNpemUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIGlmIChzZXR0aW5ncy0+cHJpdi0+ZGVmYXVsdEZvbnRTaXplUHRz
ID09IGZvbnRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXR0aW5ncy0+cHJpdi0+ZGVm
YXVsdEZvbnRTaXplUHRzID0gZm9udFNpemU7CisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT5zZXREZWZhdWx0Rm9udFNpemUoY29udmVydEZvbnRTaXplVG9QaXhlbHMoc2V0dGluZ3Mt
PnByaXYtPmRlZmF1bHRGb250U2l6ZVB0cywgLTEpKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUtcHRzIik7Cit9CisKKy8qKgogICog
d2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemU6CiAgKiBAc2V0
dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgogICogR2V0cyB0aGUgI1dlYktpdFNldHRpbmdz
OmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KICAqCiAgKiBSZXR1cm5zOiBE
ZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUuCisgKgorICogRGVwcmVjYXRlZDogMi4yMC4gVXNl
IHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cygpIGlu
c3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFj
ZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOworICAgIGdfd2Fybmlu
ZygiVGhlIHByb3BlcnR5IFdlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6
ZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4iKTsKIAogICAg
IHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXpl
KCk7CiB9CkBAIC0yMDk5LDEwICsyMjc4LDEzIEBAIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzCiAg
KiBAZm9udF9zaXplOiBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgdG8gYmUgc2V0IGluIHBp
eGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZv
bnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIwLiBVc2Ugd2Via2l0X3Nl
dHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKCkgaW5zdGVhZC4KICAq
Lwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50MzIgZm9udFNpemUpCiB7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKKyAgICBnX3dhcm5pbmco
IlRoZSBwcm9wZXJ0eSBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUg
aXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIik7CiAKICAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKICAgICB1aW50MzJf
dCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rml4ZWRGb250U2l6ZSgp
OwpAQCAtMjExNCw2ICsyMjk2LDQ0IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiB9CiAKIC8q
KgorICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldHMgdGhlICNXZWJL
aXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUtcHRzIHByb3BlcnR5LgorICoK
KyAqIFJldHVybnM6IERlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSBpbiBwb2ludHMuCisgKgor
ICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOwor
CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQdHM7
Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemVfcHRzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGZvbnRfc2l6
ZTogZGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIHRvIGJlIHNldCBpbiBwb2ludHMKKyAqCisg
KiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUtcHRz
IHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdz
X3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgaWYgKHNldHRpbmdzLT5wcml2LT5kZWZhdWx0
TW9ub3NwYWNlRm9udFNpemVQdHMgPT0gZm9udFNpemUpCisgICAgICAgIHJldHVybjsKKworICAg
IHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3NwYWNlRm9udFNpemVQdHMgPSBmb250U2l6ZTsK
KyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXpl
KGNvbnZlcnRGb250U2l6ZVRvUGl4ZWxzKHNldHRpbmdzLT5wcml2LT5kZWZhdWx0TW9ub3NwYWNl
Rm9udFNpemVQdHMsIC0xKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiKTsKK30KKworLyoqCiAgKiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplOgogICogQHNldHRpbmdzOiBhICNXZWJL
aXRTZXR0aW5ncwogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuaAppbmRleCA3ZjYzNTc3ODdmYmZhYWZkYzVkNWJmNWQwMzJlYjIxNWZkNTRh
NzNiLi5mMmEzZWQxYzAzODA5ZTFjMjdkMWZmNmQ1MmYyZDYwY2FhMWRiYTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCkBAIC0yMjQs
MjEgKzIyNCwzNSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfcGljdG9n
cmFwaF9mb250X2ZhbWlseSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKnBpY3RvZ3JhcGhfZm9udF9mYW1pbHkpOwog
Ci1XRUJLSVRfQVBJIGd1aW50MzIKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cykgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRp
bmdzICpzZXR0aW5ncyk7CiAKLVdFQktJVF9BUEkgdm9pZAorV0VCS0lUX0RFUFJFQ0FURURfRk9S
KHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICBmb250X3Np
emUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKLXdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9t
b25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGlu
Z3MpOword2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9p
ZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAg
ICAgZm9udF9zaXplKTsKKworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cykgZ3VpbnQzMgord2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUgICAgICAgICAgICAgICAgKFdlYktp
dFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIHZvaWQKIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6
ZSk7CiAKIFdFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9z
cGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0FQSSBndWludDMy
CiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSB2b2lkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAzNmY0ZmYzZDI3NTZlMmE4YmM4ZThm
OTMzYjUxMGE1N2JjZjVhYWU5Li5mODI2NWMzMjFhOTczYjE1MDhlY2VlYzYyYTIzZjljMTk5Mzgw
MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTQwNSw4ICs0MDUsMTIg
QEAgd2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5CiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkKIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUKK3dl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzCit3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cwogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6
ZV9wdHMKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0
cwogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZQogd2Via2l0X3NldHRpbmdz
X3NldF9taW5pbXVtX2ZvbnRfc2l6ZQogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2NoYXJz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0dGluZ3Mu
aAppbmRleCA3YmQ0NjEyZmQ3MzdkZTEzMzQ5NjA1ZWU0YTI1OWYzZmJmMmU5ODlkLi45MTBlYzk2
NjEzNGY4Yjg5MjU3NmEwODI0ZGNjYmIxMThhNzkxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZXR0aW5ncy5oCkBAIC0yMDgsMjEgKzIwOCwzNSBA
QCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2Zh
bWlseSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgKnBpY3RvZ3JhcGhfZm9udF9mYW1pbHkpOwogCi1XRUJLSVRfQVBJ
IGd1aW50MzIKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0cykgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cyk7CiAKLVdFQktJVF9BUEkgdm9pZAorV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0
aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2RlZmF1bHRfZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGlu
Z3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICBmb250X3NpemUpOwogCiBXRUJL
SVRfQVBJIGd1aW50MzIKLXdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOword2Via2l0
X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9pZAord2Via2l0X3Nl
dHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAgICAgZm9udF9zaXpl
KTsKKworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9t
b25vc3BhY2VfZm9udF9zaXplX3B0cykgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X21vbm9zcGFjZV9mb250X3NpemUgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpz
ZXR0aW5ncyk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5n
cyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CiAKIFdFQktJ
VF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3Np
emVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0FQSSBndWludDMyCiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSB2b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325442</attachid>
            <date>2017-10-31 08:35:26 -0700</date>
            <delta_ts>2017-10-31 11:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171031173525.patch</filename>
            <type>text/plain</type>
            <size>23322</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLjhlNThlM2NiMTU2YjYwYzBkN2UxZmRjYjBiMDY5Mzg0
YWYwMDkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMzEgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzZXR0aW5n
cyB0byBzZXQgZm9udCBzaXplIGluIHBvaW50cywgYW5kIGRlcHJlY2F0ZSB0aGUgcGl4ZWwgc2l6
ZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoZ2V0
U2NyZWVuRFBJKToKKyAgICAgICAgKGNvbnZlcnRQb2ludHNUb1BpeGVscyk6CisgICAgICAgIChj
b252ZXJ0UGl4ZWxzVG9Qb2ludHMpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlD
aGFuZ2VkKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2ViS2l0U2V0dGluZ3NEaXNwb3NlKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVy
dHkpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFNldHRpbmdzLmg6CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDk0N2ViNDIwY2ZhYjNiOTkwOGU3ZDMyZjNjZjBiNmJmODBhYWYyZDMuLjg3ZGUw
NDQ3ODhlOGJhYzZkYzc1NzlhNWI1NmU0ZTQyNzY4MDJjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTc2LDYgKzc3LDExIEBAIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsKICAgICBi
b29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0T25seSB7
IGZhbHNlIH07CisgICAgZG91YmxlIHNjcmVlbkRQSSB7IDk2IH07CisjaWYgUExBVEZPUk0oR1RL
KQorICAgIEd0a1NldHRpbmdzKiBndGtTZXR0aW5nczsKKyAgICBndWxvbmcgZ3RrWGZ0RHBpQ2hh
bmdlZEhhbmRsZXJJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogLyoqCkBAIC0xMjAsNyArMTI2LDkg
QEAgZW51bSB7CiAgICAgUFJPUF9GQU5UQVNZX0ZPTlRfRkFNSUxZLAogICAgIFBST1BfUElDVE9H
UkFQSF9GT05UX0ZBTUlMWSwKICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFLAorICAgIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTLAogICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9T
SVpFLAorICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKICAgICBQUk9Q
X01JTklNVU1fRk9OVF9TSVpFLAogICAgIFBST1BfREVGQVVMVF9DSEFSU0VULAogICAgIFBST1Bf
RU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCkBAIC0xNTUsMTIgKzE2Myw4MCBAQCBlbnVtIHsKICNl
bmRpZgogfTsKIAorc3RhdGljIGRvdWJsZSBnZXRTY3JlZW5EUEkoKQoreworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2OworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWlsbGltZXRyZXNQZXJJbmNoID0gMjUuNDsKKworICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOworICAgIGlmICghc2NyZWVu
KQorICAgICAgICByZXR1cm4gZGVmYXVsdERQSTsKKworICAgIGRvdWJsZSBkcGkgPSBnZGtfc2Ny
ZWVuX2dldF9yZXNvbHV0aW9uKHNjcmVlbik7CisgICAgaWYgKGRwaSAhPSAtMSkKKyAgICAgICAg
cmV0dXJuIGRwaTsKKworICAgIGRvdWJsZSBkaWFnb25hbEluUGl4ZWxzID0gc3RkOjpoeXBvdCgo
ZG91YmxlKWdka19zY3JlZW5fZ2V0X3dpZHRoKHNjcmVlbiksIChkb3VibGUpZ2RrX3NjcmVlbl9n
ZXRfaGVpZ2h0KHNjcmVlbikpOworICAgIGRvdWJsZSBkaWFnb25hbEluSW5jaGVzID0gc3RkOjpo
eXBvdCgoZG91YmxlKWdka19zY3JlZW5fZ2V0X3dpZHRoX21tKHNjcmVlbiksIChkb3VibGUpZ2Rr
X3NjcmVlbl9nZXRfaGVpZ2h0X21tKHNjcmVlbikpIC8gbWlsbGltZXRyZXNQZXJJbmNoOworCisg
ICAgcmV0dXJuIGRpYWdvbmFsSW5QaXhlbHMgLyBkaWFnb25hbEluSW5jaGVzOworI2Vsc2UKKyAg
ICByZXR1cm4gZGVmYXVsdERQSTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90
IGNvbnZlcnRQb2ludHNUb1BpeGVscyhkb3VibGUgcG9pbnRzLCBkb3VibGUgZHBpKQoreworICAg
IHJldHVybiBzdGQ6OnJvdW5kKHBvaW50cyAqIGRwaSAvIDcyKTsKK30KKworc3RhdGljIGlubGlu
ZSB1aW50MzJfdCBjb252ZXJ0UGl4ZWxzVG9Qb2ludHMoZG91YmxlIHBpeGVscywgZG91YmxlIGRw
aSkKK3sKKyAgICByZXR1cm4gc3RkOjpyb3VuZChwaXhlbHMgKiA3MiAvIGRwaSk7Cit9CisKKyNp
ZiBQTEFURk9STShHVEspCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0d0a1hmdERwaUNoYW5n
ZWQoR3RrU2V0dGluZ3MqIGd0a1NldHRpbmdzLCBHUGFyYW1TcGVjKiBwc3BlYywgV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIGRvdWJsZSBuZXdTY3JlZW5EUEkgPSBnZXRTY3JlZW5E
UEkoKTsKKyAgICBkb3VibGUgc2NhbGluZ0ZhY3RvciA9IG5ld1NjcmVlbkRQSSAvIHNldHRpbmdz
LT5wcml2LT5zY3JlZW5EUEk7CisgICAgdWludDMyX3QgcHJldkZvbnRTaXplUHggPSBzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGb250U2l6ZSgpOworICAgIHVpbnQzMl90IHBy
ZXZNb25vc3BhY2VGb250U2l6ZVB4ID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZh
dWx0Rml4ZWRGb250U2l6ZSgpOworCisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5z
ZXREZWZhdWx0Rm9udFNpemUoc3RkOjpyb3VuZChwcmV2Rm9udFNpemVQeCAqIHNjYWxpbmdGYWN0
b3IpKTsKKyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZv
bnRTaXplKHN0ZDo6cm91bmQocHJldk1vbm9zcGFjZUZvbnRTaXplUHggKiBzY2FsaW5nRmFjdG9y
KSk7CisgICAgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSA9IG5ld1NjcmVlbkRQSTsKK30KKyNl
bmRpZgorCiBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0NvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNz
KS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAotICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmcyA9IFdF
QktJVF9TRVRUSU5HUyhvYmplY3QpLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBXZWJL
aXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdjsK
KyAgICBXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBwcml2LT5wcmVmZXJlbmNlcy5nZXQoKTsKICAg
ICBwcmVmcy0+c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24odHJ1ZSk7CisKKyNpZiBQ
TEFURk9STShHVEspCisgICAgcHJpdi0+c2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7CisgICAg
cHJpdi0+Z3RrU2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKKyAgICBpZiAo
cHJpdi0+Z3RrU2V0dGluZ3MpCisgICAgICAgIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVy
SUQgPSBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmd0a1NldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0
LWRwaSIsIEdfQ0FMTEJBQ0sod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKSwgV0VCS0lU
X1NFVFRJTkdTKG9iamVjdCkpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFNldHRp
bmdzRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdl
YktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpLT5wcml2
OworICAgIGlmIChwcml2LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7CisgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT5ndGtTZXR0aW5ncywgcHJpdi0+Z3RrWGZ0
RHBpQ2hhbmdlZEhhbmRsZXJJRCk7CisgICAgICAgIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5k
bGVySUQgPSAwOworICAgIH0KKyNlbmRpZgorICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9zZXR0
aW5nc19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YktpdFNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKQEAgLTIyOCw5ICszMDQs
MTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHUKICAgICBjYXNlIFBST1BfREVGQVVMVF9GT05U
X1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUoc2V0
dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRf
U0laRToKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0laRV9QVFM6CisgICAgICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyhzZXR0
aW5ncywgZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IFBST1BfTUlOSU1VTV9GT05UX1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbWlu
aW11bV9mb250X3NpemUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7CkBAIC00MDIsOSArNDg0LDE1IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdz
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsCiAg
ICAgY2FzZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFOgogICAgICAgICBnX3ZhbHVlX3NldF91aW50
KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFM6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVs
dF9mb250X3NpemVfcHRzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQo
dmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNl
dHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFD
RV9GT05UX1NJWkVfUFRTOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX01JTklNVU1fRk9OVF9TSVpFOgogICAgICAg
ICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9u
dF9zaXplKHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTA5LDYgKzU5Nyw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3Mq
IGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xB
U1Moa2xhc3MpOwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJLaXRTZXR0aW5n
c0NvbnN0cnVjdGVkOworICAgIGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYktpdFNldHRpbmdz
RGlzcG9zZTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRTZXR0
aW5nc0dldFByb3BlcnR5OwogCkBAIC03OTIsMjggKzg4MSw3NCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAg
KgogICAgICAqIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwaXhlbHMgdG8gdXNlIGZvciBjb250
ZW50IGRpc3BsYXllZCBpZgogICAgICAqIG5vIGZvbnQgc2l6ZSBpcyBzcGVjaWZpZWQuCisgICAg
ICoKKyAgICAgKiBEZXByZWNhdGVkOiAyLjIwLiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IHNjYWxl
IHRoZSB0ZXh0IGF1dG9tYXRpY2FsbHkKKyAgICAgKiB0byBhY2NvdW50IGZvciBzY3JlZW4gRFBJ
LiBVc2UgZGVmYXVsdC1mb250LXNpemUtcHRzIGluc3RlYWQuCiAgICAgICovCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoImRlZmF1bHQtZm9udC1z
aXplIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkRlZmF1bHQgZm9udCBzaXplIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0
byBkaXNwbGF5IHRleHQuIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDE2LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1G
bGFncykpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdP
YmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRSwKKyAgICAgICAgZ19w
YXJhbV9zcGVjX3VpbnQoCisgICAgICAgICAgICAiZGVmYXVsdC1mb250LXNpemUiLAorICAgICAg
ICAgICAgXygiRGVmYXVsdCBmb250IHNpemUiKSwKKyAgICAgICAgICAgIF8oIlRoZSBkZWZhdWx0
IGZvbnQgc2l6ZSB1c2VkIHRvIGRpc3BsYXkgdGV4dC4iKSwKKyAgICAgICAgICAgIDAsIEdfTUFY
VUlOVCwgMTYsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4ocmVhZFdyaXRl
Q29uc3RydWN0UGFyYW1GbGFncyB8IEdfUEFSQU1fREVQUkVDQVRFRCkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9udC1zaXplLXB0czoKKyAgICAgKgorICAg
ICAqIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwgaW4gcG9pbnRzLCB0byB1c2UgZm9yIGNvbnRlbnQg
ZGlzcGxheWVkIGlmCisgICAgICogbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0RFRkFVTFRfRk9O
VF9TSVpFX1BUUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoCisgICAgICAgICAgICAiZGVm
YXVsdC1mb250LXNpemUtcHRzIiwKKyAgICAgICAgICAgIF8oIkRlZmF1bHQgZm9udCBzaXplIGlu
IHBvaW50cyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIHBvaW50
cyB1c2VkIHRvIGRpc3BsYXkgdGV4dC4iKSwKKyAgICAgICAgICAgIDAsIEdfTUFYVUlOVCwgMTIs
CisgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CiAKICAgICAvKioK
ICAgICAgKiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemU6CiAgICAg
ICoKICAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gcGl4ZWxzIHRvIHVzZSBmb3IgY29u
dGVudCBkaXNwbGF5ZWQgaW4KICAgICAgKiBtb25vc3BhY2UgZm9udCBpZiBubyBmb250IHNpemUg
aXMgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGVwcmVjYXRlZDogMi4yMC4gVGhpcyBwcm9w
ZXJ0eSBkb2VzIG5vdCBzY2FsZSB0aGUgdGV4dCBhdXRvbWF0aWNhbGx5CisgICAgICogdG8gYWNj
b3VudCBmb3Igc2NyZWVuIERQSS4gVXNlIGRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMg
aW5zdGVhZC4KICAgICAgKi8KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdP
YmplY3RDbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfREVG
QVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJE
ZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBkZWZhdWx0IGZvbnQgc2l6ZSB1c2Vk
IHRvIGRpc3BsYXkgbW9ub3NwYWNlIHRleHQuIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDEzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29u
c3RydWN0UGFyYW1GbGFncykpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
CisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9ERUZBVUxUX01PTk9TUEFDRV9G
T05UX1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRlZmF1
bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIsCisgICAgICAgICAgICBfKCJEZWZhdWx0IG1vbm9zcGFj
ZSBmb250IHNpemUiKSwKKyAgICAgICAgICAgIF8oIlRoZSBkZWZhdWx0IGZvbnQgc2l6ZSB1c2Vk
IHRvIGRpc3BsYXkgbW9ub3NwYWNlIHRleHQuIiksCisgICAgICAgICAgICAwLCBHX01BWFVJTlQs
IDEzLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KHJlYWRXcml0ZUNvbnN0
cnVjdFBhcmFtRmxhZ3MgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKSk7CisKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUtcHRzOgorICAgICAq
CisgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXplLCBpbiBwb2ludHMsIHRvIHVzZSBmb3IgY29u
dGVudCBkaXNwbGF5ZWQgaW4KKyAgICAgKiBtb25vc3BhY2UgZm9udCBpZiBubyBmb250IHNpemUg
aXMgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjAKKyAgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKKyAgICAgICAgZ19w
YXJhbV9zcGVjX3VpbnQoCisgICAgICAgICAgICAiZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXpl
LXB0cyIsCisgICAgICAgICAgICBfKCJEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcG9p
bnRzIiksCisgICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gcG9pbnRzIHVz
ZWQgdG8gZGlzcGxheSBtb25vc3BhY2UgdGV4dC4iKSwKKyAgICAgICAgICAgIDAsIEdfTUFYVUlO
VCwgMTAsCisgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CiAKICAg
ICAvKioKICAgICAgKiBXZWJLaXRTZXR0aW5nczptaW5pbXVtLWZvbnQtc2l6ZToKQEAgLTIwNTAs
NiArMjE4NSw4IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFt
aWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QKICAqIEdldHMgdGhlICNXZWJLaXRT
ZXR0aW5nczpkZWZhdWx0LWZvbnQtc2l6ZSBwcm9wZXJ0eS4KICAqCiAgKiBSZXR1cm5zOiBUaGUg
ZGVmYXVsdCBmb250IHNpemUuCisgKgorICogRGVwcmVjYXRlZDogMi4yMC4gVXNlIHdlYmtpdF9z
ZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKCkgaW5zdGVhZC4KICAqLwogZ3VpbnQz
MiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncykKIHsKQEAgLTIwNjQsNiArMjIwMSw4IEBAIGd1aW50MzIgd2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiAgKiBAZm9u
dF9zaXplOiBkZWZhdWx0IGZvbnQgc2l6ZSB0byBiZSBzZXQgaW4gcGl4ZWxzCiAgKgogICogU2V0
IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVydHkuCisgKgorICog
RGVwcmVjYXRlZDogMi4yMC4gVXNlIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3Np
emVfcHRzKCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKIHsK
QEAgLTIwNzksMTIgKzIyMTgsNDggQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQzMiBmb24KIH0KIAogLyoq
CisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6
ZGVmYXVsdC1mb250LXNpemUtcHRzIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IFRoZSBkZWZh
dWx0IGZvbnQgc2l6ZSwgaW4gcG9pbnRzLgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK2d1aW50
MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRU
SU5HUyhzZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIGNvbnZlcnRQaXhlbHNUb1BvaW50cyhz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGb250U2l6ZSgpLCBzZXR0aW5ncy0+
cHJpdi0+c2NyZWVuRFBJKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBm
b250X3NpemU6IGRlZmF1bHQgZm9udCBzaXplIHRvIGJlIHNldCwgaW4gcG9pbnRzCisgKgorICog
U2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUtcHRzIHByb3BlcnR5Lgor
ICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBndWludDMyIGZvbnRTaXpl
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7
CisKKyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGb250U2l6ZShj
b252ZXJ0UG9pbnRzVG9QaXhlbHMoZm9udFNpemUsIHNldHRpbmdzLT5wcml2LT5zY3JlZW5EUEkp
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250
LXNpemUtcHRzIik7Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemU6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgog
ICogR2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBw
cm9wZXJ0eS4KICAqCiAgKiBSZXR1cm5zOiBEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUuCisg
KgorICogRGVwcmVjYXRlZDogMi4yMC4gVXNlIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9t
b25vc3BhY2VfZm9udF9zaXplX3B0cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3Nl
dHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKQogewpAQCAtMjA5OSw2ICsyMjc0LDggQEAgZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MK
ICAqIEBmb250X3NpemU6IGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBiZSBzZXQgaW4g
cGl4ZWxzCiAgKgogICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3BhY2Ut
Zm9udC1zaXplIHByb3BlcnR5LgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFkLgog
ICovCiB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXpl
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKIHsKQEAgLTIxMTQs
NiArMjI5MSw0MCBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZwogfQogCiAvKioKKyAqIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6
ZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplLXB0cyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5z
OiBEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUsIGluIHBvaW50cy4KKyAqCisgKiBTaW5jZTog
Mi4yMAorICovCitndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplX3B0cyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisKKyAgICByZXR1
cm4gY29udmVydFBpeGVsc1RvUG9pbnRzKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVm
YXVsdEZpeGVkRm9udFNpemUoKSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSk7Cit9CisKKy8q
KgorICogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGZvbnRfc2l6ZTogZGVmYXVs
dCBtb25vc3BhY2UgZm9udCBzaXplIHRvIGJlIHNldCwgaW4gcG9pbnRzCisgKgorICogU2V0IHRo
ZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplLXB0cyBwcm9wZXJ0
eS4KKyAqCisgKiBTaW5jZTogMi4yMAorICovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVm
YXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1
aW50MzIgZm9udFNpemUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVm
YXVsdEZpeGVkRm9udFNpemUoY29udmVydFBvaW50c1RvUGl4ZWxzKGZvbnRTaXplLCBzZXR0aW5n
cy0+cHJpdi0+c2NyZWVuRFBJKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiKTsKK30KKworLyoqCiAgKiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplOgogICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncwogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaAppbmRleCA3ZjYzNTc3ODdmYmZhYWZkYzVkNWJmNWQwMzJlYjIxNWZk
NTRhNzNiLi5mMmEzZWQxYzAzODA5ZTFjMjdkMWZmNmQ1MmYyZDYwY2FhMWRiYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCkBAIC0y
MjQsMjEgKzIyNCwzNSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfcGlj
dG9ncmFwaF9mb250X2ZhbWlseSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAq
c2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKnBpY3RvZ3JhcGhfZm9udF9mYW1pbHkp
OwogCi1XRUJLSVRfQVBJIGd1aW50MzIKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0
dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cykgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNl
dHRpbmdzICpzZXR0aW5ncyk7CiAKLVdFQktJVF9BUEkgdm9pZAorV0VCS0lUX0RFUFJFQ0FURURf
Rk9SKHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKSB2b2lkCiB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICBmb250
X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKLXdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MpOword2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdFQktJVF9BUEkg
dm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAg
ICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cykgZ3VpbnQzMgord2Via2l0X3Nl
dHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUgICAgICAgICAgICAgICAgKFdl
YktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRf
c2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIHZvaWQKIHdlYmtp
dF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRf
c2l6ZSk7CiAKIFdFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0FQSSBndWlu
dDMyCiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSB2b2lk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAzNmY0ZmYzZDI3NTZlMmE4YmM4
ZThmOTMzYjUxMGE1N2JjZjVhYWU5Li5mODI2NWMzMjFhOTczYjE1MDhlY2VlYzYyYTIzZjljMTk5
MzgwMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTQwNSw4ICs0MDUs
MTIgQEAgd2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5CiB3ZWJraXRf
c2V0dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkKIHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUK
K3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzCit3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cwogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X21vbm9zcGFjZV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3Bh
Y2VfZm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRf
c2l6ZV9wdHMKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXpl
X3B0cwogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZQogd2Via2l0X3NldHRp
bmdzX3NldF9taW5pbXVtX2ZvbnRfc2l6ZQogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2No
YXJzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0dGlu
Z3MuaAppbmRleCA3YmQ0NjEyZmQ3MzdkZTEzMzQ5NjA1ZWU0YTI1OWYzZmJmMmU5ODlkLi45MTBl
Yzk2NjEzNGY4Yjg5MjU3NmEwODI0ZGNjYmIxMThhNzkxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZXR0aW5ncy5oCkBAIC0yMDgsMjEgKzIwOCwz
NSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfcGljdG9ncmFwaF9mb250
X2ZhbWlseSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgKnBpY3RvZ3JhcGhfZm9udF9mYW1pbHkpOwogCi1XRUJLSVRf
QVBJIGd1aW50MzIKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cykgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CiAKLVdFQktJVF9BUEkgdm9pZAorV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0
dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICBmb250X3NpemUpOwogCiBX
RUJLSVRfQVBJIGd1aW50MzIKLXdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOword2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9pZAord2Via2l0
X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAgICAgZm9udF9z
aXplKTsKKworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplX3B0cykgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdz
ICpzZXR0aW5ncyk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0
X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIHZvaWQKIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CiAKIFdF
QktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemVfcHRzICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludDMyICAgICAgICAgZm9udF9zaXplKTsKKworV0VCS0lUX0FQSSBndWludDMyCiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSB2b2lkCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjlmYWM4ZTBjMWI5NDc5
ZjhiMGY3Njk4N2JiMmM0ZTc3NjU1ODAxZi4uNGQ5NTdhOThjMzA1NGE1ZGNhOWExNDRjMTdlNGU0
NjE0ZGMwMmE5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTMxICBHYWJyaWVsIEl2YXNjdSAgPGdpdmFz
Y3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc2V0dGluZ3MgdG8gc2V0IGZvbnQg
c2l6ZSBpbiBwb2ludHMsIGFuZCBkZXByZWNhdGUgdGhlIHBpeGVsIHNpemUgc2V0dGluZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh0
ZXN0V2ViS2l0U2V0dGluZ3MpOgorCiAyMDE3LTEwLTMwICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBGaXggYnVpbGQgd2FybmluZ3MK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0U2V0dGluZ3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYjZhZjY3MTJjZmQ2NzMwZjhjMmNlYWVlMDJiYjdh
NGJlOWRjZWZhYS4uY2VlMDk3NjM2ODUwNDViZWJjMmM4MmI4MDI5YTYwNzRkYWUwYTQ5MyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRT
ZXR0aW5ncy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE0MSwxMSArMTQxLDIxIEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzLCAxNCk7CiAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSwgPT0s
IDE0KTsKIAorICAgIC8vIERlZmF1bHQgZm9udCBzaXplIGluIHBvaW50cyBpcyAxMi4KKyAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRz
KHNldHRpbmdzKSwgPT0sIDEyKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9u
dF9zaXplX3B0cyhzZXR0aW5ncywgMTApOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3Nl
dHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTApOworCiAg
ICAgLy8gRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIGlzIDEzLgogICAgIGdfYXNzZXJ0X2Nt
cHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0
dGluZ3MpLCA9PSwgMTMpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3Bh
Y2VfZm9udF9zaXplKHNldHRpbmdzLCAxMCk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAx
MCk7CiAKKyAgICAvLyBEZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcG9pbnRzIGlzIDEw
LgorICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRf
c2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTApOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVm
YXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzLCA4KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0sIDgp
OworCiAgICAgLy8gRGVmYXVsdCBtaW5pbXVtIGZvbnQgc2l6ZSBpcyAwLgogICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncyks
ID09LCAwKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21pbmltdW1fZm9udF9zaXplKHNldHRp
bmdzLCA3KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325462</attachid>
            <date>2017-10-31 11:32:16 -0700</date>
            <delta_ts>2017-10-31 12:19:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171031203215.patch</filename>
            <type>text/plain</type>
            <size>25251</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLjhlNThlM2NiMTU2YjYwYzBkN2UxZmRjYjBiMDY5Mzg0
YWYwMDkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMzEgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzZXR0aW5n
cyB0byBzZXQgZm9udCBzaXplIGluIHBvaW50cywgYW5kIGRlcHJlY2F0ZSB0aGUgcGl4ZWwgc2l6
ZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoZ2V0
U2NyZWVuRFBJKToKKyAgICAgICAgKGNvbnZlcnRQb2ludHNUb1BpeGVscyk6CisgICAgICAgIChj
b252ZXJ0UGl4ZWxzVG9Qb2ludHMpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlD
aGFuZ2VkKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2ViS2l0U2V0dGluZ3NEaXNwb3NlKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVy
dHkpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFNldHRpbmdzLmg6CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDk0N2ViNDIwY2ZhYjNiOTkwOGU3ZDMyZjNjZjBiNmJmODBhYWYyZDMuLmFhMGZk
ZjllNzY2YTJlMzIwZWY0ZGQ1NGZlZGY1MzEwOGVkZmY1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTc2LDYgKzc3LDExIEBAIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsKICAgICBi
b29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0T25seSB7
IGZhbHNlIH07CisgICAgZG91YmxlIHNjcmVlbkRQSSB7IDk2IH07CisjaWYgUExBVEZPUk0oR1RL
KQorICAgIEd0a1NldHRpbmdzKiBndGtTZXR0aW5nczsKKyAgICBndWxvbmcgZ3RrWGZ0RHBpQ2hh
bmdlZEhhbmRsZXJJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogLyoqCkBAIC0xMjAsNyArMTI2LDkg
QEAgZW51bSB7CiAgICAgUFJPUF9GQU5UQVNZX0ZPTlRfRkFNSUxZLAogICAgIFBST1BfUElDVE9H
UkFQSF9GT05UX0ZBTUlMWSwKICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFLAorICAgIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTLAogICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9T
SVpFLAorICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKICAgICBQUk9Q
X01JTklNVU1fRk9OVF9TSVpFLAogICAgIFBST1BfREVGQVVMVF9DSEFSU0VULAogICAgIFBST1Bf
RU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCkBAIC0xNTUsMTIgKzE2Myw4MCBAQCBlbnVtIHsKICNl
bmRpZgogfTsKIAorc3RhdGljIGRvdWJsZSBnZXRTY3JlZW5EUEkoKQoreworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2OworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWlsbGltZXRyZXNQZXJJbmNoID0gMjUuNDsKKworICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOworICAgIGlmICghc2NyZWVu
KQorICAgICAgICByZXR1cm4gZGVmYXVsdERQSTsKKworICAgIGRvdWJsZSBkcGkgPSBnZGtfc2Ny
ZWVuX2dldF9yZXNvbHV0aW9uKHNjcmVlbik7CisgICAgaWYgKGRwaSAhPSAtMSkKKyAgICAgICAg
cmV0dXJuIGRwaTsKKworICAgIGRvdWJsZSBkaWFnb25hbEluUGl4ZWxzID0gc3RkOjpoeXBvdChn
ZGtfc2NyZWVuX2dldF93aWR0aChzY3JlZW4pLCBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVu
KSk7CisgICAgZG91YmxlIGRpYWdvbmFsSW5JbmNoZXMgPSBzdGQ6Omh5cG90KGdka19zY3JlZW5f
Z2V0X3dpZHRoX21tKHNjcmVlbiksIGdka19zY3JlZW5fZ2V0X2hlaWdodF9tbShzY3JlZW4pKSAv
IG1pbGxpbWV0cmVzUGVySW5jaDsKKworICAgIHJldHVybiBkaWFnb25hbEluUGl4ZWxzIC8gZGlh
Z29uYWxJbkluY2hlczsKKyNlbHNlCisgICAgcmV0dXJuIGRlZmF1bHREUEk7CisjZW5kaWYKK30K
Kworc3RhdGljIGlubGluZSB1aW50MzJfdCBjb252ZXJ0UG9pbnRzVG9QaXhlbHMoZG91YmxlIHBv
aW50cywgZG91YmxlIGRwaSkKK3sKKyAgICByZXR1cm4gc3RkOjpyb3VuZChwb2ludHMgKiBkcGkg
LyA3Mik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgY29udmVydFBpeGVsc1RvUG9pbnRz
KGRvdWJsZSBwaXhlbHMsIGRvdWJsZSBkcGkpCit7CisgICAgcmV0dXJuIHN0ZDo6cm91bmQocGl4
ZWxzICogNzIgLyBkcGkpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncywgR1Bh
cmFtU3BlYyogcHNwZWMsIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBkb3VibGUg
bmV3U2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7CisgICAgZG91YmxlIHNjYWxpbmdGYWN0b3Ig
PSBuZXdTY3JlZW5EUEkgLyBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJOworICAgIHVpbnQzMl90
IHByZXZGb250U2l6ZVB4ID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9u
dFNpemUoKTsKKyAgICB1aW50MzJfdCBwcmV2TW9ub3NwYWNlRm9udFNpemVQeCA9IHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKKworICAgIHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKHN0ZDo6cm91bmQocHJl
dkZvbnRTaXplUHggKiBzY2FsaW5nRmFjdG9yKSk7CisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdGQ6OnJvdW5kKHByZXZNb25vc3BhY2VG
b250U2l6ZVB4ICogc2NhbGluZ0ZhY3RvcikpOworICAgIHNldHRpbmdzLT5wcml2LT5zY3JlZW5E
UEkgPSBuZXdTY3JlZW5EUEk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgd2ViS2l0U2V0dGlu
Z3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBX
ZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCk7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gV0VCS0lU
X1NFVFRJTkdTKG9iamVjdCktPnByaXY7CisgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0gcHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCk7CiAgICAgcHJlZnMtPnNldFNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKHRydWUpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHByaXYtPnNjcmVlbkRQ
SSA9IGdldFNjcmVlbkRQSSgpOworICAgIHByaXYtPmd0a1NldHRpbmdzID0gZ3RrX3NldHRpbmdz
X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKHByaXYtPmd0a1NldHRpbmdzKQorICAgICAgICBwcml2
LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gZ19zaWduYWxfY29ubmVjdChwcml2LT5ndGtT
ZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGkiLCBHX0NBTExCQUNLKHdlYktpdFNldHRpbmdz
R3RrWGZ0RHBpQ2hhbmdlZCksIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpKTsKKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQorewor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBXRUJL
SVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdjsKKyAgICBpZiAocHJpdi0+Z3RrWGZ0RHBpQ2hhbmdl
ZEhhbmRsZXJJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocHJpdi0+
Z3RrU2V0dGluZ3MsIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpOworICAgICAgICBw
cml2LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gMDsKKyAgICB9CisjZW5kaWYKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmpl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMpCkBAIC0yMjgsOSArMzA0LDE1IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAg
ICAgY2FzZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFM6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50
KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFD
RV9GT05UX1NJWkVfUFRTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9u
b3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX01JTklNVU1fRk9OVF9TSVpFOgogICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21pbmltdW1fZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDAyLDkgKzQ4NCwxNSBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRToK
ICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFOgog
ICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgZ192YWx1
ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9N
SU5JTVVNX0ZPTlRfU0laRToKICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVh
azsKQEAgLTUwOSw2ICs1OTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3Nf
aW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdP
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmNv
bnN0cnVjdGVkID0gd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZDsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmRpc3Bvc2UgPSB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2U7CiAgICAgZ09iamVjdENsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKIApAQCAtNzkyLDI4ICs4
ODEsNzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0
dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICoKICAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUg
aW4gcGl4ZWxzIHRvIHVzZSBmb3IgY29udGVudCBkaXNwbGF5ZWQgaWYKICAgICAgKiBubyBmb250
IHNpemUgaXMgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGVwcmVjYXRlZDogMi4yMC4gVGhp
cyBwcm9wZXJ0eSBkb2VzIG5vdCBzY2FsZSB0aGUgdGV4dCBhdXRvbWF0aWNhbGx5CisgICAgICog
dG8gYWNjb3VudCBmb3Igc2NyZWVuIERQSS4gVXNlIGRlZmF1bHQtZm9udC1zaXplLXB0cyBpbnN0
ZWFkLgogICAgICAqLwotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVj
dENsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ERUZBVUxU
X0ZPTlRfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY191aW50KCJkZWZhdWx0LWZvbnQtc2l6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhl
IGRlZmF1bHQgZm9udCBzaXplIHVzZWQgdG8gZGlzcGxheSB0ZXh0LiIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAx
NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfREVGQVVM
VF9GT05UX1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtZm9udC1zaXplIiwKKyAgICAgICAgICAgIF8oIkRlZmF1bHQgZm9udCBzaXplIiksCisg
ICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IHRleHQu
IiksCisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDE2LAorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R1BhcmFtRmxhZ3M+KHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MgfCBHX1BBUkFNX0RF
UFJFQ0FURUQpKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LWZv
bnQtc2l6ZS1wdHM6CisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBv
aW50cywgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXllZCBpZgorICAgICAqIG5vIGZvbnQgc2l6
ZSBpcyBzcGVjaWZpZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yMAorICAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywK
KyAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y191aW50KAorICAgICAgICAgICAgImRlZmF1bHQtZm9udC1zaXplLXB0cyIsCisgICAgICAgICAg
ICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMiKSwKKyAgICAgICAgICAgIF8oIlRoZSBk
ZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0byBkaXNwbGF5IHRleHQuIiksCisgICAg
ICAgICAgICAwLCBHX01BWFVJTlQsIDEyLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0
UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1t
b25vc3BhY2UtZm9udC1zaXplOgogICAgICAqCiAgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXpl
IGluIHBpeGVscyB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCiAgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIERl
cHJlY2F0ZWQ6IDIuMjAuIFRoaXMgcHJvcGVydHkgZG9lcyBub3Qgc2NhbGUgdGhlIHRleHQgYXV0
b21hdGljYWxseQorICAgICAqIHRvIGFjY291bnQgZm9yIHNjcmVlbiBEUEkuIFVzZSBkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUtcHRzIGluc3RlYWQuCiAgICAgICovCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0laRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50KCJkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
R19NQVhVSU5ULCAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAg
IFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFLAorICAgICAgICBnX3BhcmFtX3NwZWNf
dWludCgKKyAgICAgICAgICAgICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUiLAorICAgICAg
ICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCisgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAor
ICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAxMywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihyZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzIHwgR19QQVJBTV9ERVBSRUNB
VEVEKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3Bh
Y2UtZm9udC1zaXplLXB0czoKKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwg
aW4gcG9pbnRzLCB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCisgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
KyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZP
TlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiLAorICAgICAgICAgICAgXygiRGVmYXVsdCBt
b25vc3BhY2UgZm9udCBzaXplIGluIHBvaW50cyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1
bHQgZm9udCBzaXplIGluIHBvaW50cyB1c2VkIHRvIGRpc3BsYXkgbW9ub3NwYWNlIHRleHQuIiks
CisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDEwLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29u
c3RydWN0UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6bWlu
aW11bS1mb250LXNpemU6CkBAIC0yMDUwLDYgKzIxODUsOCBAQCB2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0CiAgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVy
dHkuCiAgKgogICogUmV0dXJuczogVGhlIGRlZmF1bHQgZm9udCBzaXplLgorICoKKyAqIERlcHJl
Y2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CkBAIC0yMDY0LDYgKzIyMDEsOCBA
QCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogICogQGZvbnRfc2l6ZTogZGVmYXVsdCBmb250IHNpemUgdG8gYmUg
c2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9u
dC1zaXplIHByb3BlcnR5LgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cygpIGluc3RlYWQuCiAgKi8KIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9udFNpemUpCiB7CkBAIC0yMDc5LDEyICsyMjE4LDQ4IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9uCiB9CiAKIC8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9udC1zaXplLXB0cyBwcm9wZXJ0eS4K
KyAqCisgKiBSZXR1cm5zOiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBvaW50cy4KKyAqCisg
KiBTaW5jZTogMi4yMAorICovCitndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9m
b250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKKworICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxzVG9Qb2ludHMoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZh
dWx0Rm9udFNpemUoKSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZm9udF9zaXplOiBkZWZhdWx0IGZvbnQgc2l6ZSB0byBi
ZSBzZXQsIGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQt
Zm9udC1zaXplLXB0cyBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4yMAorICovCit2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT5zZXREZWZhdWx0Rm9udFNpemUoY29udmVydFBvaW50c1RvUGl4ZWxzKGZvbnRTaXplLCBz
ZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImRlZmF1bHQtZm9udC1zaXplLXB0cyIpOworfQorCisvKioKICAqIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplOgogICogQHNldHRpbmdz
OiBhICNXZWJLaXRTZXR0aW5ncwogICoKICAqIEdldHMgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZh
dWx0LW1vbm9zcGFjZS1mb250LXNpemUgcHJvcGVydHkuCiAgKgogICogUmV0dXJuczogRGVmYXVs
dCBtb25vc3BhY2UgZm9udCBzaXplLgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFk
LgogICovCiBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKQEAgLTIwOTksNiArMjI3NCw4IEBA
IGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzCiAgKiBAZm9udF9zaXplOiBkZWZhdWx0IG1vbm9zcGFj
ZSBmb250IHNpemUgdG8gYmUgc2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNl
dHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXBy
ZWNhdGVkOiAyLjIwLiBVc2Ugd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50
MzIgZm9udFNpemUpCiB7CkBAIC0yMTE0LDYgKzIyOTEsNDAgQEAgdm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGcKIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMg
cHJvcGVydHkuCisgKgorICogUmV0dXJuczogRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplLCBp
biBwb2ludHMuCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIGNvbnZlcnRQaXhlbHNUb1BvaW50cyhzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXplKCksIHNldHRpbmdzLT5w
cml2LT5zY3JlZW5EUEkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGlu
Z3MKKyAqIEBmb250X3NpemU6IGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBiZSBzZXQs
IGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3Nw
YWNlLWZvbnQtc2l6ZS1wdHMgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjAKKyAqLwordm9p
ZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBndWludDMyIGZvbnRTaXplKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKGNvbnZlcnRQb2ludHNU
b1BpeGVscyhmb250U2l6ZSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSkpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNp
emUtcHRzIik7Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRf
c2l6ZToKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2Y2MzU3Nzg3
ZmJmYWFmZGM1ZDViZjVkMDMyZWIyMTVmZDU0YTczYi4uZjJhM2VkMWMwMzgwOWUxYzI3ZDFmZjZk
NTJmMmQ2MGNhYTFkYmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaApAQCAtMjI0LDIxICsyMjQsMzUgQEAgV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfc2V0dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICpwaWN0b2dyYXBoX2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRf
REVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMp
IGd1aW50MzIKIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJ
IHZvaWQKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplX3B0cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAq
c2V0dGluZ3MpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBS
RUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6
ZV9wdHMpIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJL
SVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd1aW50MzIgICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRf
c2l6ZSk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVt
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggMzZmNGZmM2QyNzU2ZTJhOGJjOGU4ZjkzM2I1MTBhNTdiY2Y1YWFlOS4uZjgyNjVjMzIx
YTk3M2IxNTA4ZWNlZWM2MmEyM2Y5YzE5OTM4MDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CkBAIC00MDUsOCArNDA1LDEyIEBAIHdlYmtpdF9zZXR0aW5nc19nZXRfcGljdG9n
cmFwaF9mb250X2ZhbWlseQogd2Via2l0X3NldHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFt
aWx5CiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplCiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9zaXplX3B0cword2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZQord2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMKIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11
bV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11bV9mb250X3NpemUKIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9jaGFyc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2JkNDYxMmZkNzM3ZGUxMzM0OTYw
NWVlNGEyNTlmM2ZiZjJlOTg5ZC4uOTEwZWM5NjYxMzRmOGI4OTI1NzZhMDgyNGRjY2JiMTE4YTc5
MTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0
dGluZ3MuaApAQCAtMjA4LDIxICsyMDgsMzUgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpwaWN0b2dyYXBo
X2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRfREVQUkVDQVRFRF9G
T1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMpIGd1aW50MzIKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKK1dFQktJ
VF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMy
ICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0
U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3Np
emVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwog
CiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVf
cHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIGd1aW50
MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfREVQUkVDQVRF
RF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
KSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIg
ICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dF
QktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdF
QktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDY5ZmFjOGUwYzFiOTQ3OWY4YjBmNzY5ODdiYjJjNGU3NzY1NTgwMWYuLjRkOTU3
YTk4YzMwNTRhNWRjYTlhMTQ0YzE3ZTRlNDYxNGRjMDJhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0z
MSAgR2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIHNldHRpbmdzIHRvIHNldCBmb250IHNpemUgaW4gcG9pbnRzLCBhbmQgZGVwcmVjYXRlIHRo
ZSBwaXhlbCBzaXplIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2V0dGluZ3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKwogMjAxNy0xMC0z
MCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV0gRml4IGJ1aWxkIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGI2YWY2
NzEyY2ZkNjczMGY4YzJjZWFlZTAyYmI3YTRiZTlkY2VmYWEuLmI3ZDdhOWI4Mjg4YTJlNmUyMDA1
OWNhZTg0NTIwODFmNjQwNWE4ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zOSw2ICsz
OSwxMyBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlciogZ1NlcnZlcjsKIAogc3RhdGljIHZvaWQg
dGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogeworICAgIC8vIFNldCBh
IERQSSB2YWx1ZSBvZiA5NiBmb3IgdGhlIHRlc3QuIFRoaXMgbXVzdCBiZSBzZXQgYmVmb3JlIGNy
ZWF0aW5nCisgICAgLy8gdGhlIFdlYktpdFNldHRpbmdzIG9iamVjdCBzbyB0aGF0IHRoZSBub3Rp
Znk6Omd0ay14ZnQtZHBpIHNpZ25hbCBoYW5kbGVyCisgICAgLy8gb2YgV2ViS2l0U2V0dGluZ3Mg
d29uJ3QgZ2V0IGNhbGxlZCB0byBtb2RpZnkgdGhlIGluaXRpYWwgZm9udCBzaXplIHZhbHVlcy4K
KyAgICBHdGtTZXR0aW5ncyogZ3RrU2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQo
KTsKKyAgICBpZiAoZ3RrU2V0dGluZ3MpCisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5n
cywgImd0ay14ZnQtZHBpIiwgOTYgKiAxMDI0LCBudWxscHRyKTsKKwogICAgIFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcoKTsKIAogICAgIC8vIEphdmFTY3Jp
cHQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgpAQCAtMTM2LDE1ICsxNDMsMzUgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYi
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2Zv
bnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7CiAKLSAgICAvLyBEZWZhdWx0
IGZvbnQgc2l6ZSBpcyAxNi4KKyAgICAvLyBEZWZhdWx0IGRlZmF1bHQgZm9udCBzaXplIGluIHBv
aW50cyBpcyAxMi4KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0sIDEyKTsKKyAgICAvLyBEZWZhdWx0IGRl
ZmF1bHQgZm9udCBzaXplIGluIHBpeGVscyBpcyAxNi4KICAgICBnX2Fzc2VydF9jbXB1aW50KHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMTYpOwot
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MsIDE0KTsK
LSAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3Np
emUoc2V0dGluZ3MpLCA9PSwgMTQpOwogCi0gICAgLy8gRGVmYXVsdCBtb25vc3BhY2UgZm9udCBz
aXplIGlzIDEzLgorICAgIC8vIFRlc3QgZGVmYXVsdCBmb250IHNpemUgaW4gcG9pbnRzLiBBdCA5
NiBEUEksIDI0IHBvaW50cyBpcyAzMiBwaXhlbHMuCisgICAgd2Via2l0X3NldHRpbmdzX3NldF9k
ZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MsIDI0KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0s
IDI0KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9m
b250X3NpemUoc2V0dGluZ3MpLCA9PSwgMzIpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IGZvbnQg
c2l6ZSBpbiBwaXhlbHMuIEF0IDk2IERQSSwgMTIgcGl4ZWxzIGlzIDkgcG9pbnRzLgorICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MsIDEyKTsKKyAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0
dGluZ3MpLCA9PSwgMTIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgOSk7CisKKyAgICAvLyBEZWZh
dWx0IGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSBpbiBwb2ludHMgaXMgMTAuCisgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRf
c2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTApOworICAgIC8vIERlZmF1bHQgZGVmYXVsdCBtb25v
c3BhY2UgZm9udCBzaXplIGluIHBpeGVscyBpcyAxMy4KICAgICBnX2Fzc2VydF9jbXB1aW50KHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSwg
PT0sIDEzKTsKLSAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRf
c2l6ZShzZXR0aW5ncywgMTApOwotICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMTApOworCisg
ICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcG9pbnRzLiBBdCA5NiBE
UEksIDE4IHBvaW50cyBpcyAyNCBwaXhlbHMuCisgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZh
dWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdzLCAxOCk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9w
dHMoc2V0dGluZ3MpLCA9PSwgMTgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjQpOwor
CisgICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcGl4ZWxzLiBBdCA5
NiBEUEksIDggcGl4ZWxzIGlzIDYgcG9pbnRzLgorICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVm
YXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCA4KTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRp
bmdzKSwgPT0sIDgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0sIDYpOwogCiAgICAg
Ly8gRGVmYXVsdCBtaW5pbXVtIGZvbnQgc2l6ZSBpcyAwLgogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325468</attachid>
            <date>2017-10-31 12:19:19 -0700</date>
            <delta_ts>2017-10-31 12:28:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171031211918.patch</filename>
            <type>text/plain</type>
            <size>32392</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLjhlNThlM2NiMTU2YjYwYzBkN2UxZmRjYjBiMDY5Mzg0
YWYwMDkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMzEgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzZXR0aW5n
cyB0byBzZXQgZm9udCBzaXplIGluIHBvaW50cywgYW5kIGRlcHJlY2F0ZSB0aGUgcGl4ZWwgc2l6
ZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoZ2V0
U2NyZWVuRFBJKToKKyAgICAgICAgKGNvbnZlcnRQb2ludHNUb1BpeGVscyk6CisgICAgICAgIChj
b252ZXJ0UGl4ZWxzVG9Qb2ludHMpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlD
aGFuZ2VkKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2ViS2l0U2V0dGluZ3NEaXNwb3NlKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVy
dHkpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFNldHRpbmdzLmg6CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDk0N2ViNDIwY2ZhYjNiOTkwOGU3ZDMyZjNjZjBiNmJmODBhYWYyZDMuLjkxYjU0
ZWU5YjNjYjUwNzYzMWYyMTQ3YjNlNjc3NGIwY2Q0ZWRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTc2LDYgKzc3LDExIEBAIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsKICAgICBi
b29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0T25seSB7
IGZhbHNlIH07CisgICAgZG91YmxlIHNjcmVlbkRQSSB7IDk2IH07CisjaWYgUExBVEZPUk0oR1RL
KQorICAgIEd0a1NldHRpbmdzKiBndGtTZXR0aW5nczsKKyAgICBndWxvbmcgZ3RrWGZ0RHBpQ2hh
bmdlZEhhbmRsZXJJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogLyoqCkBAIC0xMjAsNyArMTI2LDkg
QEAgZW51bSB7CiAgICAgUFJPUF9GQU5UQVNZX0ZPTlRfRkFNSUxZLAogICAgIFBST1BfUElDVE9H
UkFQSF9GT05UX0ZBTUlMWSwKICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFLAorICAgIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTLAogICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9T
SVpFLAorICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKICAgICBQUk9Q
X01JTklNVU1fRk9OVF9TSVpFLAogICAgIFBST1BfREVGQVVMVF9DSEFSU0VULAogICAgIFBST1Bf
RU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCkBAIC0xNTUsMTIgKzE2Myw4MCBAQCBlbnVtIHsKICNl
bmRpZgogfTsKIAorc3RhdGljIGRvdWJsZSBnZXRTY3JlZW5EUEkoKQoreworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2OworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWlsbGltZXRyZXNQZXJJbmNoID0gMjUuNDsKKworICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOworICAgIGlmICghc2NyZWVu
KQorICAgICAgICByZXR1cm4gZGVmYXVsdERQSTsKKworICAgIGRvdWJsZSBkcGkgPSBnZGtfc2Ny
ZWVuX2dldF9yZXNvbHV0aW9uKHNjcmVlbik7CisgICAgaWYgKGRwaSAhPSAtMSkKKyAgICAgICAg
cmV0dXJuIGRwaTsKKworICAgIGRvdWJsZSBkaWFnb25hbEluUGl4ZWxzID0gc3RkOjpoeXBvdChn
ZGtfc2NyZWVuX2dldF93aWR0aChzY3JlZW4pLCBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVu
KSk7CisgICAgZG91YmxlIGRpYWdvbmFsSW5JbmNoZXMgPSBzdGQ6Omh5cG90KGdka19zY3JlZW5f
Z2V0X3dpZHRoX21tKHNjcmVlbiksIGdka19zY3JlZW5fZ2V0X2hlaWdodF9tbShzY3JlZW4pKSAv
IG1pbGxpbWV0cmVzUGVySW5jaDsKKworICAgIHJldHVybiBkaWFnb25hbEluUGl4ZWxzIC8gZGlh
Z29uYWxJbkluY2hlczsKKyNlbHNlCisgICAgcmV0dXJuIGRlZmF1bHREUEk7CisjZW5kaWYKK30K
Kworc3RhdGljIGlubGluZSB1aW50MzJfdCBjb252ZXJ0UG9pbnRzVG9QaXhlbHMoZG91YmxlIHBv
aW50cywgZG91YmxlIGRwaSkKK3sKKyAgICByZXR1cm4gc3RkOjpyb3VuZChwb2ludHMgKiBkcGkg
LyA3Mik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgY29udmVydFBpeGVsc1RvUG9pbnRz
KGRvdWJsZSBwaXhlbHMsIGRvdWJsZSBkcGkpCit7CisgICAgcmV0dXJuIHN0ZDo6cm91bmQocGl4
ZWxzICogNzIgLyBkcGkpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncywgR1Bh
cmFtU3BlYyogcHNwZWMsIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBkb3VibGUg
bmV3U2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7CisgICAgZG91YmxlIHNjYWxpbmdGYWN0b3Ig
PSBuZXdTY3JlZW5EUEkgLyBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJOworICAgIHVpbnQzMl90
IHByZXZGb250U2l6ZVB4ID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9u
dFNpemUoKTsKKyAgICB1aW50MzJfdCBwcmV2TW9ub3NwYWNlRm9udFNpemVQeCA9IHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKKworICAgIHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKHN0ZDo6cm91bmQocHJl
dkZvbnRTaXplUHggKiBzY2FsaW5nRmFjdG9yKSk7CisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdGQ6OnJvdW5kKHByZXZNb25vc3BhY2VG
b250U2l6ZVB4ICogc2NhbGluZ0ZhY3RvcikpOworICAgIHNldHRpbmdzLT5wcml2LT5zY3JlZW5E
UEkgPSBuZXdTY3JlZW5EUEk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgd2ViS2l0U2V0dGlu
Z3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBX
ZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCk7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gV0VCS0lU
X1NFVFRJTkdTKG9iamVjdCktPnByaXY7CisgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0gcHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCk7CiAgICAgcHJlZnMtPnNldFNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKHRydWUpOworCisgICAgcHJpdi0+c2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHByaXYtPmd0a1NldHRpbmdzID0gZ3RrX3NldHRpbmdz
X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKHByaXYtPmd0a1NldHRpbmdzKQorICAgICAgICBwcml2
LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gZ19zaWduYWxfY29ubmVjdChwcml2LT5ndGtT
ZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGkiLCBHX0NBTExCQUNLKHdlYktpdFNldHRpbmdz
R3RrWGZ0RHBpQ2hhbmdlZCksIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpKTsKKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQorewor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBXRUJL
SVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdjsKKyAgICBpZiAocHJpdi0+Z3RrWGZ0RHBpQ2hhbmdl
ZEhhbmRsZXJJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocHJpdi0+
Z3RrU2V0dGluZ3MsIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpOworICAgICAgICBw
cml2LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gMDsKKyAgICB9CisjZW5kaWYKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmpl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMpCkBAIC0yMjgsOSArMzA0LDE1IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAg
ICAgY2FzZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFM6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50
KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFD
RV9GT05UX1NJWkVfUFRTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9u
b3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX01JTklNVU1fRk9OVF9TSVpFOgogICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21pbmltdW1fZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDAyLDkgKzQ4NCwxNSBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRToK
ICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFOgog
ICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgZ192YWx1
ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9N
SU5JTVVNX0ZPTlRfU0laRToKICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVh
azsKQEAgLTUwOSw2ICs1OTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3Nf
aW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdP
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmNv
bnN0cnVjdGVkID0gd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZDsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmRpc3Bvc2UgPSB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2U7CiAgICAgZ09iamVjdENsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKIApAQCAtNzkyLDI4ICs4
ODEsNzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0
dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICoKICAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUg
aW4gcGl4ZWxzIHRvIHVzZSBmb3IgY29udGVudCBkaXNwbGF5ZWQgaWYKICAgICAgKiBubyBmb250
IHNpemUgaXMgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGVwcmVjYXRlZDogMi4yMC4gVGhp
cyBwcm9wZXJ0eSBkb2VzIG5vdCBzY2FsZSB0aGUgdGV4dCBhdXRvbWF0aWNhbGx5CisgICAgICog
dG8gYWNjb3VudCBmb3Igc2NyZWVuIERQSS4gVXNlIGRlZmF1bHQtZm9udC1zaXplLXB0cyBpbnN0
ZWFkLgogICAgICAqLwotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVj
dENsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ERUZBVUxU
X0ZPTlRfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY191aW50KCJkZWZhdWx0LWZvbnQtc2l6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhl
IGRlZmF1bHQgZm9udCBzaXplIHVzZWQgdG8gZGlzcGxheSB0ZXh0LiIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAx
NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfREVGQVVM
VF9GT05UX1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtZm9udC1zaXplIiwKKyAgICAgICAgICAgIF8oIkRlZmF1bHQgZm9udCBzaXplIiksCisg
ICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IHRleHQu
IiksCisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDE2LAorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R1BhcmFtRmxhZ3M+KHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MgfCBHX1BBUkFNX0RF
UFJFQ0FURUQpKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LWZv
bnQtc2l6ZS1wdHM6CisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBv
aW50cywgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXllZCBpZgorICAgICAqIG5vIGZvbnQgc2l6
ZSBpcyBzcGVjaWZpZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yMAorICAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywK
KyAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y191aW50KAorICAgICAgICAgICAgImRlZmF1bHQtZm9udC1zaXplLXB0cyIsCisgICAgICAgICAg
ICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMiKSwKKyAgICAgICAgICAgIF8oIlRoZSBk
ZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0byBkaXNwbGF5IHRleHQuIiksCisgICAg
ICAgICAgICAwLCBHX01BWFVJTlQsIDEyLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0
UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1t
b25vc3BhY2UtZm9udC1zaXplOgogICAgICAqCiAgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXpl
IGluIHBpeGVscyB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCiAgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIERl
cHJlY2F0ZWQ6IDIuMjAuIFRoaXMgcHJvcGVydHkgZG9lcyBub3Qgc2NhbGUgdGhlIHRleHQgYXV0
b21hdGljYWxseQorICAgICAqIHRvIGFjY291bnQgZm9yIHNjcmVlbiBEUEkuIFVzZSBkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUtcHRzIGluc3RlYWQuCiAgICAgICovCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0laRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50KCJkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
R19NQVhVSU5ULCAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAg
IFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFLAorICAgICAgICBnX3BhcmFtX3NwZWNf
dWludCgKKyAgICAgICAgICAgICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUiLAorICAgICAg
ICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCisgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAor
ICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAxMywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihyZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzIHwgR19QQVJBTV9ERVBSRUNB
VEVEKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3Bh
Y2UtZm9udC1zaXplLXB0czoKKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwg
aW4gcG9pbnRzLCB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCisgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
KyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZP
TlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiLAorICAgICAgICAgICAgXygiRGVmYXVsdCBt
b25vc3BhY2UgZm9udCBzaXplIGluIHBvaW50cyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1
bHQgZm9udCBzaXplIGluIHBvaW50cyB1c2VkIHRvIGRpc3BsYXkgbW9ub3NwYWNlIHRleHQuIiks
CisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDEwLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29u
c3RydWN0UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6bWlu
aW11bS1mb250LXNpemU6CkBAIC0yMDUwLDYgKzIxODUsOCBAQCB2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0CiAgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVy
dHkuCiAgKgogICogUmV0dXJuczogVGhlIGRlZmF1bHQgZm9udCBzaXplLgorICoKKyAqIERlcHJl
Y2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CkBAIC0yMDY0LDYgKzIyMDEsOCBA
QCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogICogQGZvbnRfc2l6ZTogZGVmYXVsdCBmb250IHNpemUgdG8gYmUg
c2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9u
dC1zaXplIHByb3BlcnR5LgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cygpIGluc3RlYWQuCiAgKi8KIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9udFNpemUpCiB7CkBAIC0yMDc5LDEyICsyMjE4LDQ4IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9uCiB9CiAKIC8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9udC1zaXplLXB0cyBwcm9wZXJ0eS4K
KyAqCisgKiBSZXR1cm5zOiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBvaW50cy4KKyAqCisg
KiBTaW5jZTogMi4yMAorICovCitndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9m
b250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKKworICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxzVG9Qb2ludHMoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZh
dWx0Rm9udFNpemUoKSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZm9udF9zaXplOiBkZWZhdWx0IGZvbnQgc2l6ZSB0byBi
ZSBzZXQsIGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQt
Zm9udC1zaXplLXB0cyBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4yMAorICovCit2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT5zZXREZWZhdWx0Rm9udFNpemUoY29udmVydFBvaW50c1RvUGl4ZWxzKGZvbnRTaXplLCBz
ZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImRlZmF1bHQtZm9udC1zaXplLXB0cyIpOworfQorCisvKioKICAqIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplOgogICogQHNldHRpbmdz
OiBhICNXZWJLaXRTZXR0aW5ncwogICoKICAqIEdldHMgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZh
dWx0LW1vbm9zcGFjZS1mb250LXNpemUgcHJvcGVydHkuCiAgKgogICogUmV0dXJuczogRGVmYXVs
dCBtb25vc3BhY2UgZm9udCBzaXplLgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFk
LgogICovCiBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKQEAgLTIwOTksNiArMjI3NCw4IEBA
IGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzCiAgKiBAZm9udF9zaXplOiBkZWZhdWx0IG1vbm9zcGFj
ZSBmb250IHNpemUgdG8gYmUgc2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNl
dHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXBy
ZWNhdGVkOiAyLjIwLiBVc2Ugd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50
MzIgZm9udFNpemUpCiB7CkBAIC0yMTE0LDYgKzIyOTEsNDAgQEAgdm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGcKIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMg
cHJvcGVydHkuCisgKgorICogUmV0dXJuczogRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplLCBp
biBwb2ludHMuCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIGNvbnZlcnRQaXhlbHNUb1BvaW50cyhzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXplKCksIHNldHRpbmdzLT5w
cml2LT5zY3JlZW5EUEkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGlu
Z3MKKyAqIEBmb250X3NpemU6IGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBiZSBzZXQs
IGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3Nw
YWNlLWZvbnQtc2l6ZS1wdHMgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjAKKyAqLwordm9p
ZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBndWludDMyIGZvbnRTaXplKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKGNvbnZlcnRQb2ludHNU
b1BpeGVscyhmb250U2l6ZSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSkpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNp
emUtcHRzIik7Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRf
c2l6ZToKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2Y2MzU3Nzg3
ZmJmYWFmZGM1ZDViZjVkMDMyZWIyMTVmZDU0YTczYi4uZjJhM2VkMWMwMzgwOWUxYzI3ZDFmZjZk
NTJmMmQ2MGNhYTFkYmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaApAQCAtMjI0LDIxICsyMjQsMzUgQEAgV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfc2V0dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICpwaWN0b2dyYXBoX2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRf
REVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMp
IGd1aW50MzIKIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJ
IHZvaWQKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplX3B0cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAq
c2V0dGluZ3MpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBS
RUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6
ZV9wdHMpIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJL
SVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd1aW50MzIgICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRf
c2l6ZSk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVt
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggMzZmNGZmM2QyNzU2ZTJhOGJjOGU4ZjkzM2I1MTBhNTdiY2Y1YWFlOS4uZjgyNjVjMzIx
YTk3M2IxNTA4ZWNlZWM2MmEyM2Y5YzE5OTM4MDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CkBAIC00MDUsOCArNDA1LDEyIEBAIHdlYmtpdF9zZXR0aW5nc19nZXRfcGljdG9n
cmFwaF9mb250X2ZhbWlseQogd2Via2l0X3NldHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFt
aWx5CiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplCiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9zaXplX3B0cword2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZQord2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMKIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11
bV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11bV9mb250X3NpemUKIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9jaGFyc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2JkNDYxMmZkNzM3ZGUxMzM0OTYw
NWVlNGEyNTlmM2ZiZjJlOTg5ZC4uOTEwZWM5NjYxMzRmOGI4OTI1NzZhMDgyNGRjY2JiMTE4YTc5
MTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0
dGluZ3MuaApAQCAtMjA4LDIxICsyMDgsMzUgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpwaWN0b2dyYXBo
X2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRfREVQUkVDQVRFRF9G
T1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMpIGd1aW50MzIKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKK1dFQktJ
VF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMy
ICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0
U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3Np
emVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwog
CiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVf
cHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIGd1aW50
MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfREVQUkVDQVRF
RF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
KSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIg
ICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dF
QktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdF
QktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDY5ZmFjOGUwYzFiOTQ3OWY4YjBmNzY5ODdiYjJjNGU3NzY1NTgwMWYuLjM1Njg4
YmJkMDBkZGM0NDQ1ZDAxNDAxNjEyOWIzMTRkYjQzMWRkYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMC0z
MSAgR2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIHNldHRpbmdzIHRvIHNldCBmb250IHNpemUgaW4gcG9pbnRzLCBhbmQgZGVwcmVjYXRlIHRo
ZSBwaXhlbCBzaXplIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2V0dGluZ3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKHRl
c3RGb250U2V0dGluZ3MpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNy0xMC0zMCAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0g
Rml4IGJ1aWxkIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGI2YWY2NzEyY2Zk
NjczMGY4YzJjZWFlZTAyYmI3YTRiZTlkY2VmYWEuLjM1NmU4NjdmMjg5MDM0ZjljYjYwNTYzYzMz
YjhhZjFkMTBjYTk1ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0xMDEsNTYgKzEwMSw2
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikK
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGlu
Z3MsIFRSVUUpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZyhzZXR0aW5ncykpOwogCi0gICAgLy8gRGVmYXVsdCBmb250IGZhbWlseSBp
cyAic2Fucy1zZXJpZiIuCi0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2Fucy1zZXJpZiIpOwotICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncywgIm1vbm9zcGFj
ZSIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgIm1vbm9zcGFjZSIpOwotCi0gICAgLy8gRGVmYXVsdCBt
b25vc3BhY2UgZm9udCBmYW1pbHkgZm9udCBmYW1pbHkgaXMgIm1vbm9zcGFjZSIuCi0gICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KHNl
dHRpbmdzKSwgPT0sICJtb25vc3BhY2UiKTsKLSAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21vbm9z
cGFjZV9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9tb25vc3BhY2VfZm9udF9mYW1pbHkoc2V0dGluZ3Mp
LCA9PSwgInNhbnMtc2VyaWYiKTsKLQotICAgIC8vIERlZmF1bHQgc2VyaWYgZm9udCBmYW1pbHkg
aXMgInNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9zZXJp
Zl9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2VyaWYiKTsKLSAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRpbmdzLCAic2Fucy1zZXJpZiIpOwotICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRp
bmdzKSwgPT0sICJzYW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IHNhbnMgc2VyaWYgZm9u
dCBmYW1pbHkgaXMgInNhbnMtc2VyaWYiLgotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0
dGluZ3NfZ2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNhbnMtc2Vy
aWYiKTsKLSAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0
dGluZ3MsICJzZXJpZiIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0
X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNlcmlmIik7Ci0KLSAgICAv
LyBEZWZhdWx0IGN1cnNpdmUgZm9udCBmYW1pbHkgInNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NldHRpbmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0s
ICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseShz
ZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRp
bmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7
Ci0KLSAgICAvLyBEZWZhdWx0IGZhbnRhc3kgZm9udCBmYW1pbHkgaXMgInNlcmlmIi4KLSAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNl
dHRpbmdzKSwgPT0sICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZmFudGFzeV9m
b250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJz
YW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IHBpY3RvZ3JhcGggZm9udCBmYW1pbHkgaXMg
InNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dy
YXBoX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsK
LSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRf
ZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IGZv
bnQgc2l6ZSBpcyAxNi4KLSAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMTYpOwotICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MsIDE0KTsKLSAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwg
MTQpOwotCi0gICAgLy8gRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIGlzIDEzLgotICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemUoc2V0dGluZ3MpLCA9PSwgMTMpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCAxMCk7Ci0gICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5n
cyksID09LCAxMCk7Ci0KLSAgICAvLyBEZWZhdWx0IG1pbmltdW0gZm9udCBzaXplIGlzIDAuCi0g
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXpl
KHNldHRpbmdzKSwgPT0sIDApOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11bV9mb250
X3NpemUoc2V0dGluZ3MsIDcpOwotICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCA3KTsKLQogICAgIC8vIERlZmF1
bHQgY2hhcnNldCBpcyAiaXNvLTg4NTktMSIuCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZGVmYXVsdF9jaGFyc2V0KHNldHRpbmdzKSwgPT0sICJpc28tODg1OS0xIik7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJzZXQoc2V0dGluZ3MsICJ1dGY4
Iik7CkBAIC0yOTcsNiArMjQ3LDExNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3Mo
VGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0dGlu
Z3MpKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEZvbnRTZXR0aW5ncyhUZXN0ICosIGdjb25zdHBv
aW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFNldCBhIERQSSB2YWx1ZSBvZiA5
NiBmb3IgdGhlIHRlc3QuIFRoaXMgbXVzdCBiZSBzZXQgYmVmb3JlIGNyZWF0aW5nCisgICAgLy8g
dGhlIFdlYktpdFNldHRpbmdzIG9iamVjdCBzbyB0aGF0IHRoZSBub3RpZnk6Omd0ay14ZnQtZHBp
IHNpZ25hbCBoYW5kbGVyCisgICAgLy8gb2YgV2ViS2l0U2V0dGluZ3Mgd29uJ3QgZ2V0IGNhbGxl
ZCB0byBtb2RpZnkgdGhlIGluaXRpYWwgZm9udCBzaXplIHZhbHVlcy4KKyAgICBHdGtTZXR0aW5n
cyogZ3RrU2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKKyAgICBpZiAoZ3Rr
U2V0dGluZ3MpCisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBp
IiwgOTYgKiAxMDI0LCBudWxscHRyKTsKKyNlbmRpZgorCisgICAgV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzID0gd2Via2l0X3NldHRpbmdzX25ldygpOworCisgICAgLy8gRGVmYXVsdCBmb250IGZh
bWlseSBpcyAic2Fucy1zZXJpZiIuCisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2Fucy1zZXJpZiIpOwor
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncywgIm1v
bm9zcGFjZSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgIm1vbm9zcGFjZSIpOworCisgICAgLy8gRGVm
YXVsdCBtb25vc3BhY2UgZm9udCBmYW1pbHkgZm9udCBmYW1pbHkgaXMgIm1vbm9zcGFjZSIuCisg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfbW9ub3NwYWNlX2ZvbnRfZmFt
aWx5KHNldHRpbmdzKSwgPT0sICJtb25vc3BhY2UiKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X21vbm9zcGFjZV9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9tb25vc3BhY2VfZm9udF9mYW1pbHkoc2V0
dGluZ3MpLCA9PSwgInNhbnMtc2VyaWYiKTsKKworICAgIC8vIERlZmF1bHQgc2VyaWYgZm9udCBm
YW1pbHkgaXMgInNlcmlmIi4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dl
dF9zZXJpZl9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2VyaWYiKTsKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRpbmdzLCAic2Fucy1zZXJpZiIpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X3NlcmlmX2ZvbnRfZmFtaWx5
KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7CisKKyAgICAvLyBEZWZhdWx0IHNhbnMgc2Vy
aWYgZm9udCBmYW1pbHkgaXMgInNhbnMtc2VyaWYiLgorICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfc2V0dGluZ3NfZ2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNh
bnMtc2VyaWYiKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3NhbnNfc2VyaWZfZm9udF9mYW1p
bHkoc2V0dGluZ3MsICJzZXJpZiIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGlu
Z3NfZ2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNlcmlmIik7CisK
KyAgICAvLyBEZWZhdWx0IGN1cnNpdmUgZm9udCBmYW1pbHkgInNlcmlmIi4KKyAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdz
KSwgPT0sICJzZXJpZiIpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2Zh
bWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3NldHRpbmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNl
cmlmIik7CisKKyAgICAvLyBEZWZhdWx0IGZhbnRhc3kgZm9udCBmYW1pbHkgaXMgInNlcmlmIi4K
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFt
aWx5KHNldHRpbmdzKSwgPT0sICJzZXJpZiIpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZmFu
dGFzeV9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwg
PT0sICJzYW5zLXNlcmlmIik7CisKKyAgICAvLyBEZWZhdWx0IHBpY3RvZ3JhcGggZm9udCBmYW1p
bHkgaXMgInNlcmlmIi4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9w
aWN0b2dyYXBoX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzZXJpZiIpOworICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2Vy
aWYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBo
X2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7CisKKyAgICAvLyBEZWZh
dWx0IGRlZmF1bHQgZm9udCBzaXplIGluIHBvaW50cyBpcyAxMi4KKyAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzKSwg
PT0sIDEyKTsKKyAgICAvLyBEZWZhdWx0IGRlZmF1bHQgZm9udCBzaXplIGluIHBpeGVscyBpcyAx
Ni4KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250
X3NpemUoc2V0dGluZ3MpLCA9PSwgMTYpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IGZvbnQgc2l6
ZSBpbiBwb2ludHMuIEF0IDk2IERQSSwgMjQgcG9pbnRzIGlzIDMyIHBpeGVscy4KKyAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncywgMjQpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9w
dHMoc2V0dGluZ3MpLCA9PSwgMjQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAzMik7CisKKyAgICAvLyBU
ZXN0IGRlZmF1bHQgZm9udCBzaXplIGluIHBpeGVscy4gQXQgOTYgRFBJLCAxMiBwaXhlbHMgaXMg
OSBwb2ludHMuCisgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0
aW5ncywgMTIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAxMik7CisgICAgZ19hc3NlcnRfY21wdWludCh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCA5
KTsKKworICAgIC8vIERlZmF1bHQgZGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIGluIHBvaW50
cyBpcyAxMC4KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCAxMCk7CisgICAgLy8gRGVm
YXVsdCBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcGl4ZWxzIGlzIDEzLgorICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemUoc2V0dGluZ3MpLCA9PSwgMTMpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9zcGFj
ZSBmb250IHNpemUgaW4gcG9pbnRzLiBBdCA5NiBEUEksIDE4IHBvaW50cyBpcyAyNCBwaXhlbHMu
CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
KHNldHRpbmdzLCAxOCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTgpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjQpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9z
cGFjZSBmb250IHNpemUgaW4gcGl4ZWxzLiBBdCA5NiBEUEksIDggcGl4ZWxzIGlzIDYgcG9pbnRz
LgorICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNl
dHRpbmdzLCA4KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDgpOworICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVf
cHRzKHNldHRpbmdzKSwgPT0sIDYpOworCisgICAgLy8gRGVmYXVsdCBtaW5pbXVtIGZvbnQgc2l6
ZSBpcyAwLgorICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVt
X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAwKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21p
bmltdW1fZm9udF9zaXplKHNldHRpbmdzLCA3KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF9zZXR0aW5nc19nZXRfbWluaW11bV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgNyk7CisKKyNp
ZiBQTEFURk9STShHVEspCisgICAgLy8gVGVzdCBmb250IHNpemUgc2NhbGluZyBvbiBEUEkgY2hh
bmdlLiBUaGUgZm9udCBzaXplIGluIHBpeGVscyBzaG91bGQKKyAgICAvLyBzY2FsZSBhY2NvcmRp
bmdseSwgd2hpbGUgdGhlIGZvbnQgc2l6ZSBpbiBwb2ludHMgc2hvdWxkIHJlbWFpbiB0aGUgc2Ft
ZS4KKyAgICBpZiAoZ3RrU2V0dGluZ3MpIHsKKyAgICAgICAgLy8gQXQgOTYgRFBJLCAxNSBwb2lu
dHMgaXMgMjAgcGl4ZWxzLgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9u
dF9zaXplX3B0cyhzZXR0aW5ncywgMTUpOworICAgICAgICAvLyBBdCA5NiBEUEksIDEyIHBvaW50
cyBpcyAxNiBwaXhlbHMuCisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25v
c3BhY2VfZm9udF9zaXplX3B0cyhzZXR0aW5ncywgMTIpOworCisgICAgICAgIC8vIFNldCBEUEkg
dG8gMTIwLiBUaGUgc2NhbGluZyBmYWN0b3IgZm9yIHRoZSBwaXhlbCB2YWx1ZXMgaXMgMS4yNXgu
CisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBpIiwgMTIwICog
MTAyNCwgbnVsbHB0cik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTUpOworICAgICAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplX3B0cyhzZXR0aW5ncyksID09LCAxMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAyNSk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjApOworCisgICAgICAgIC8vIFNldCBE
UEkgYmFjayB0byA5Ni4gVGhlIHNjYWxpbmcgZmFjdG9yIGZvciB0aGUgcGl4ZWwgdmFsdWVzIGlz
IDAuOHguCisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBpIiwg
OTYgKiAxMDI0LCBudWxscHRyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCAxNSk7CisgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFj
ZV9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0sIDEyKTsKKyAgICAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSwgPT0s
IDIwKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAxNik7CisgICAgfQorI2VuZGlm
CisKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVChzZXR0aW5ncykpOworfQorCiB2b2lkIHRl
c3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzID0gYWRvcHRHUmVmKHdl
YmtpdF9zZXR0aW5nc19uZXdfd2l0aF9zZXR0aW5ncygKQEAgLTM4Nyw2ICs0NDgsNyBAQCB2b2lk
IGJlZm9yZUFsbCgpCiAKICAgICBUZXN0OjphZGQoIldlYktpdFNldHRpbmdzIiwgIndlYmtpdC1z
ZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5ncyk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0
aW5ncyIsICJuZXctd2l0aC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0
aW5ncyk7CisgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJmb250LXNldHRpbmdzIiwg
dGVzdEZvbnRTZXR0aW5ncyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFNldHRpbmdzIiwgInVzZXItYWdlbnQiLCB0ZXN0V2ViS2l0U2V0dGluZ3NVc2Vy
QWdlbnQpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325469</attachid>
            <date>2017-10-31 12:28:10 -0700</date>
            <delta_ts>2017-11-13 03:29:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171031212808.patch</filename>
            <type>text/plain</type>
            <size>32380</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzMmZjNWI5
MjFhNjE0Nzk3MmIwNWVjYzI2MjBlNDUuLjhlNThlM2NiMTU2YjYwYzBkN2UxZmRjYjBiMDY5Mzg0
YWYwMDkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMzEgIEdhYnJpZWwg
SXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzZXR0aW5n
cyB0byBzZXQgZm9udCBzaXplIGluIHBvaW50cywgYW5kIGRlcHJlY2F0ZSB0aGUgcGl4ZWwgc2l6
ZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoZ2V0
U2NyZWVuRFBJKToKKyAgICAgICAgKGNvbnZlcnRQb2ludHNUb1BpeGVscyk6CisgICAgICAgIChj
b252ZXJ0UGl4ZWxzVG9Qb2ludHMpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHdGtYZnREcGlD
aGFuZ2VkKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2ViS2l0U2V0dGluZ3NEaXNwb3NlKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVy
dHkpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1
bHRfZm9udF9zaXplX3B0cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9k
ZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFNldHRpbmdzLmg6CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDk0N2ViNDIwY2ZhYjNiOTkwOGU3ZDMyZjNjZjBiNmJmODBhYWYyZDMuLjkxYjU0
ZWU5YjNjYjUwNzYzMWYyMTQ3YjNlNjc3NGIwY2Q0ZWRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTc2LDYgKzc3LDExIEBAIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsKICAgICBi
b29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0T25seSB7
IGZhbHNlIH07CisgICAgZG91YmxlIHNjcmVlbkRQSSB7IDk2IH07CisjaWYgUExBVEZPUk0oR1RL
KQorICAgIEd0a1NldHRpbmdzKiBndGtTZXR0aW5nczsKKyAgICBndWxvbmcgZ3RrWGZ0RHBpQ2hh
bmdlZEhhbmRsZXJJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogLyoqCkBAIC0xMjAsNyArMTI2LDkg
QEAgZW51bSB7CiAgICAgUFJPUF9GQU5UQVNZX0ZPTlRfRkFNSUxZLAogICAgIFBST1BfUElDVE9H
UkFQSF9GT05UX0ZBTUlMWSwKICAgICBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFLAorICAgIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTLAogICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9T
SVpFLAorICAgIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUywKICAgICBQUk9Q
X01JTklNVU1fRk9OVF9TSVpFLAogICAgIFBST1BfREVGQVVMVF9DSEFSU0VULAogICAgIFBST1Bf
RU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCkBAIC0xNTUsMTIgKzE2Myw4MCBAQCBlbnVtIHsKICNl
bmRpZgogfTsKIAorc3RhdGljIGRvdWJsZSBnZXRTY3JlZW5EUEkoKQoreworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2OworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWlsbGltZXRyZXNQZXJJbmNoID0gMjUuNDsKKworICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOworICAgIGlmICghc2NyZWVu
KQorICAgICAgICByZXR1cm4gZGVmYXVsdERQSTsKKworICAgIGRvdWJsZSBkcGkgPSBnZGtfc2Ny
ZWVuX2dldF9yZXNvbHV0aW9uKHNjcmVlbik7CisgICAgaWYgKGRwaSAhPSAtMSkKKyAgICAgICAg
cmV0dXJuIGRwaTsKKworICAgIGRvdWJsZSBkaWFnb25hbEluUGl4ZWxzID0gc3RkOjpoeXBvdChn
ZGtfc2NyZWVuX2dldF93aWR0aChzY3JlZW4pLCBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVu
KSk7CisgICAgZG91YmxlIGRpYWdvbmFsSW5JbmNoZXMgPSBzdGQ6Omh5cG90KGdka19zY3JlZW5f
Z2V0X3dpZHRoX21tKHNjcmVlbiksIGdka19zY3JlZW5fZ2V0X2hlaWdodF9tbShzY3JlZW4pKSAv
IG1pbGxpbWV0cmVzUGVySW5jaDsKKworICAgIHJldHVybiBkaWFnb25hbEluUGl4ZWxzIC8gZGlh
Z29uYWxJbkluY2hlczsKKyNlbHNlCisgICAgcmV0dXJuIGRlZmF1bHREUEk7CisjZW5kaWYKK30K
Kworc3RhdGljIGlubGluZSB1aW50MzJfdCBjb252ZXJ0UG9pbnRzVG9QaXhlbHMoZG91YmxlIHBv
aW50cywgZG91YmxlIGRwaSkKK3sKKyAgICByZXR1cm4gc3RkOjpyb3VuZChwb2ludHMgKiBkcGkg
LyA3Mik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgY29udmVydFBpeGVsc1RvUG9pbnRz
KGRvdWJsZSBwaXhlbHMsIGRvdWJsZSBkcGkpCit7CisgICAgcmV0dXJuIHN0ZDo6cm91bmQocGl4
ZWxzICogNzIgLyBkcGkpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NHdGtYZnREcGlDaGFuZ2VkKEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncywgR1Bh
cmFtU3BlYyogcHNwZWMsIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBkb3VibGUg
bmV3U2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7CisgICAgZG91YmxlIHNjYWxpbmdGYWN0b3Ig
PSBuZXdTY3JlZW5EUEkgLyBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJOworICAgIHVpbnQzMl90
IHByZXZGb250U2l6ZVB4ID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9u
dFNpemUoKTsKKyAgICB1aW50MzJfdCBwcmV2TW9ub3NwYWNlRm9udFNpemVQeCA9IHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKKworICAgIHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKHN0ZDo6cm91bmQocHJl
dkZvbnRTaXplUHggKiBzY2FsaW5nRmFjdG9yKSk7CisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdGQ6OnJvdW5kKHByZXZNb25vc3BhY2VG
b250U2l6ZVB4ICogc2NhbGluZ0ZhY3RvcikpOworICAgIHNldHRpbmdzLT5wcml2LT5zY3JlZW5E
UEkgPSBuZXdTY3JlZW5EUEk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgd2ViS2l0U2V0dGlu
Z3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBX
ZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCk7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gV0VCS0lU
X1NFVFRJTkdTKG9iamVjdCktPnByaXY7CisgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0gcHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCk7CiAgICAgcHJlZnMtPnNldFNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKHRydWUpOworCisgICAgcHJpdi0+c2NyZWVuRFBJID0gZ2V0U2NyZWVuRFBJKCk7
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHByaXYtPmd0a1NldHRpbmdzID0gZ3RrX3NldHRpbmdz
X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKHByaXYtPmd0a1NldHRpbmdzKQorICAgICAgICBwcml2
LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gZ19zaWduYWxfY29ubmVjdChwcml2LT5ndGtT
ZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGkiLCBHX0NBTExCQUNLKHdlYktpdFNldHRpbmdz
R3RrWGZ0RHBpQ2hhbmdlZCksIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpKTsKKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQorewor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBXRUJL
SVRfU0VUVElOR1Mob2JqZWN0KS0+cHJpdjsKKyAgICBpZiAocHJpdi0+Z3RrWGZ0RHBpQ2hhbmdl
ZEhhbmRsZXJJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocHJpdi0+
Z3RrU2V0dGluZ3MsIHByaXYtPmd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpOworICAgICAgICBw
cml2LT5ndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gMDsKKyAgICB9CisjZW5kaWYKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmpl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMpCkBAIC0yMjgsOSArMzA0LDE1IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAg
ICAgY2FzZSBQUk9QX0RFRkFVTFRfRk9OVF9TSVpFOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFM6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9ERUZBVUxUX01PTk9TUEFDRV9GT05UX1NJWkU6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVlX2dldF91aW50
KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERUZBVUxUX01PTk9TUEFD
RV9GT05UX1NJWkVfUFRTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9u
b3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX01JTklNVU1fRk9OVF9TSVpFOgogICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21pbmltdW1fZm9udF9zaXplKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDAyLDkgKzQ4NCwxNSBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRToK
ICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
REVGQVVMVF9GT05UX1NJWkVfUFRTOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFOgog
ICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFX1BUUzoKKyAgICAgICAgZ192YWx1
ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9N
SU5JTVVNX0ZPTlRfU0laRToKICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncykpOwogICAgICAgICBicmVh
azsKQEAgLTUwOSw2ICs1OTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3Nf
aW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdP
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmNv
bnN0cnVjdGVkID0gd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZDsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmRpc3Bvc2UgPSB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2U7CiAgICAgZ09iamVjdENsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKIApAQCAtNzkyLDI4ICs4
ODEsNzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0
dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICoKICAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUg
aW4gcGl4ZWxzIHRvIHVzZSBmb3IgY29udGVudCBkaXNwbGF5ZWQgaWYKICAgICAgKiBubyBmb250
IHNpemUgaXMgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGVwcmVjYXRlZDogMi4yMC4gVGhp
cyBwcm9wZXJ0eSBkb2VzIG5vdCBzY2FsZSB0aGUgdGV4dCBhdXRvbWF0aWNhbGx5CisgICAgICog
dG8gYWNjb3VudCBmb3Igc2NyZWVuIERQSS4gVXNlIGRlZmF1bHQtZm9udC1zaXplLXB0cyBpbnN0
ZWFkLgogICAgICAqLwotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVj
dENsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ERUZBVUxU
X0ZPTlRfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY191aW50KCJkZWZhdWx0LWZvbnQtc2l6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhl
IGRlZmF1bHQgZm9udCBzaXplIHVzZWQgdG8gZGlzcGxheSB0ZXh0LiIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAx
NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfREVGQVVM
VF9GT05UX1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtZm9udC1zaXplIiwKKyAgICAgICAgICAgIF8oIkRlZmF1bHQgZm9udCBzaXplIiksCisg
ICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IHRleHQu
IiksCisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDE2LAorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R1BhcmFtRmxhZ3M+KHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MgfCBHX1BBUkFNX0RF
UFJFQ0FURUQpKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpkZWZhdWx0LWZv
bnQtc2l6ZS1wdHM6CisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBv
aW50cywgdG8gdXNlIGZvciBjb250ZW50IGRpc3BsYXllZCBpZgorICAgICAqIG5vIGZvbnQgc2l6
ZSBpcyBzcGVjaWZpZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yMAorICAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywK
KyAgICAgICAgUFJPUF9ERUZBVUxUX0ZPTlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y191aW50KAorICAgICAgICAgICAgImRlZmF1bHQtZm9udC1zaXplLXB0cyIsCisgICAgICAgICAg
ICBfKCJEZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMiKSwKKyAgICAgICAgICAgIF8oIlRoZSBk
ZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMgdXNlZCB0byBkaXNwbGF5IHRleHQuIiksCisgICAg
ICAgICAgICAwLCBHX01BWFVJTlQsIDEyLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0
UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1t
b25vc3BhY2UtZm9udC1zaXplOgogICAgICAqCiAgICAgICogVGhlIGRlZmF1bHQgZm9udCBzaXpl
IGluIHBpeGVscyB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCiAgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIERl
cHJlY2F0ZWQ6IDIuMjAuIFRoaXMgcHJvcGVydHkgZG9lcyBub3Qgc2NhbGUgdGhlIHRleHQgYXV0
b21hdGljYWxseQorICAgICAqIHRvIGFjY291bnQgZm9yIHNjcmVlbiBEUEkuIFVzZSBkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUtcHRzIGluc3RlYWQuCiAgICAgICovCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZPTlRfU0laRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50KCJkZWZhdWx0
LW1vbm9zcGFjZS1mb250LXNpemUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
R19NQVhVSU5ULCAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAg
IFBST1BfREVGQVVMVF9NT05PU1BBQ0VfRk9OVF9TSVpFLAorICAgICAgICBnX3BhcmFtX3NwZWNf
dWludCgKKyAgICAgICAgICAgICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUiLAorICAgICAg
ICAgICAgXygiRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIiksCisgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBmb250IHNpemUgdXNlZCB0byBkaXNwbGF5IG1vbm9zcGFjZSB0ZXh0LiIpLAor
ICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAxMywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihyZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzIHwgR19QQVJBTV9ERVBSRUNB
VEVEKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1tb25vc3Bh
Y2UtZm9udC1zaXplLXB0czoKKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSwg
aW4gcG9pbnRzLCB0byB1c2UgZm9yIGNvbnRlbnQgZGlzcGxheWVkIGluCisgICAgICogbW9ub3Nw
YWNlIGZvbnQgaWYgbm8gZm9udCBzaXplIGlzIHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjIwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
KyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0RFRkFVTFRfTU9OT1NQQUNFX0ZP
TlRfU0laRV9QVFMsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KAorICAgICAgICAgICAgImRl
ZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMiLAorICAgICAgICAgICAgXygiRGVmYXVsdCBt
b25vc3BhY2UgZm9udCBzaXplIGluIHBvaW50cyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1
bHQgZm9udCBzaXplIGluIHBvaW50cyB1c2VkIHRvIGRpc3BsYXkgbW9ub3NwYWNlIHRleHQuIiks
CisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDEwLAorICAgICAgICAgICAgcmVhZFdyaXRlQ29u
c3RydWN0UGFyYW1GbGFncykpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0U2V0dGluZ3M6bWlu
aW11bS1mb250LXNpemU6CkBAIC0yMDUwLDYgKzIxODUsOCBAQCB2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0CiAgKiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3M6ZGVmYXVsdC1mb250LXNpemUgcHJvcGVy
dHkuCiAgKgogICogUmV0dXJuczogVGhlIGRlZmF1bHQgZm9udCBzaXplLgorICoKKyAqIERlcHJl
Y2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cygpIGluc3RlYWQuCiAgKi8KIGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CkBAIC0yMDY0LDYgKzIyMDEsOCBA
QCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogICogQGZvbnRfc2l6ZTogZGVmYXVsdCBmb250IHNpemUgdG8gYmUg
c2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9u
dC1zaXplIHByb3BlcnR5LgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cygpIGluc3RlYWQuCiAgKi8KIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9udFNpemUpCiB7CkBAIC0yMDc5LDEyICsyMjE4LDQ4IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGd1aW50MzIgZm9uCiB9CiAKIC8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtZm9udC1zaXplLXB0cyBwcm9wZXJ0eS4K
KyAqCisgKiBSZXR1cm5zOiBUaGUgZGVmYXVsdCBmb250IHNpemUsIGluIHBvaW50cy4KKyAqCisg
KiBTaW5jZTogMi4yMAorICovCitndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9m
b250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKKworICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxzVG9Qb2ludHMoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZh
dWx0Rm9udFNpemUoKSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZm9udF9zaXplOiBkZWZhdWx0IGZvbnQgc2l6ZSB0byBi
ZSBzZXQsIGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQt
Zm9udC1zaXplLXB0cyBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4yMAorICovCit2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncywgZ3VpbnQzMiBmb250U2l6ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT5zZXREZWZhdWx0Rm9udFNpemUoY29udmVydFBvaW50c1RvUGl4ZWxzKGZvbnRTaXplLCBz
ZXR0aW5ncy0+cHJpdi0+c2NyZWVuRFBJKSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImRlZmF1bHQtZm9udC1zaXplLXB0cyIpOworfQorCisvKioKICAqIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplOgogICogQHNldHRpbmdz
OiBhICNXZWJLaXRTZXR0aW5ncwogICoKICAqIEdldHMgdGhlICNXZWJLaXRTZXR0aW5nczpkZWZh
dWx0LW1vbm9zcGFjZS1mb250LXNpemUgcHJvcGVydHkuCiAgKgogICogUmV0dXJuczogRGVmYXVs
dCBtb25vc3BhY2UgZm9udCBzaXplLgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMjAuIFVzZSB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoKSBpbnN0ZWFk
LgogICovCiBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKQEAgLTIwOTksNiArMjI3NCw4IEBA
IGd1aW50MzIgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzCiAgKiBAZm9udF9zaXplOiBkZWZhdWx0IG1vbm9zcGFj
ZSBmb250IHNpemUgdG8gYmUgc2V0IGluIHBpeGVscwogICoKICAqIFNldCB0aGUgI1dlYktpdFNl
dHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSBwcm9wZXJ0eS4KKyAqCisgKiBEZXBy
ZWNhdGVkOiAyLjIwLiBVc2Ugd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50
MzIgZm9udFNpemUpCiB7CkBAIC0yMTE0LDYgKzIyOTEsNDAgQEAgdm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGcKIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZV9wdHM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0cyB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZS1wdHMg
cHJvcGVydHkuCisgKgorICogUmV0dXJuczogRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplLCBp
biBwb2ludHMuCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ3VpbnQzMiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIGNvbnZlcnRQaXhlbHNUb1BvaW50cyhzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXplKCksIHNldHRpbmdzLT5w
cml2LT5zY3JlZW5EUEkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplX3B0czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGlu
Z3MKKyAqIEBmb250X3NpemU6IGRlZmF1bHQgbW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBiZSBzZXQs
IGluIHBvaW50cworICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRlZmF1bHQtbW9ub3Nw
YWNlLWZvbnQtc2l6ZS1wdHMgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjAKKyAqLwordm9p
ZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBndWludDMyIGZvbnRTaXplKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKGNvbnZlcnRQb2ludHNU
b1BpeGVscyhmb250U2l6ZSwgc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRQSSkpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNp
emUtcHRzIik7Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRf
c2l6ZToKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2Y2MzU3Nzg3
ZmJmYWFmZGM1ZDViZjVkMDMyZWIyMTVmZDU0YTczYi4uZjJhM2VkMWMwMzgwOWUxYzI3ZDFmZjZk
NTJmMmQ2MGNhYTFkYmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaApAQCAtMjI0LDIxICsyMjQsMzUgQEAgV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfc2V0dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICpwaWN0b2dyYXBoX2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRf
REVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMp
IGd1aW50MzIKIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJ
IHZvaWQKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRf
Zm9udF9zaXplX3B0cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDMyICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAq
c2V0dGluZ3MpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9mb250X3NpemVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBS
RUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6
ZV9wdHMpIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9u
dF9zaXplICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJL
SVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemVfcHRzKSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd1aW50MzIgICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRf
c2l6ZSk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVt
X2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggMzZmNGZmM2QyNzU2ZTJhOGJjOGU4ZjkzM2I1MTBhNTdiY2Y1YWFlOS4uZjgyNjVjMzIx
YTk3M2IxNTA4ZWNlZWM2MmEyM2Y5YzE5OTM4MDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CkBAIC00MDUsOCArNDA1LDEyIEBAIHdlYmtpdF9zZXR0aW5nc19nZXRfcGljdG9n
cmFwaF9mb250X2ZhbWlseQogd2Via2l0X3NldHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFt
aWx5CiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplCiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9zaXplX3B0cword2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZQord2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMKIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11
bV9mb250X3NpemUKIHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11bV9mb250X3NpemUKIHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9jaGFyc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFNldHRpbmdzLmgKaW5kZXggN2JkNDYxMmZkNzM3ZGUxMzM0OTYw
NWVlNGEyNTlmM2ZiZjJlOTg5ZC4uOTEwZWM5NjYxMzRmOGI4OTI1NzZhMDgyNGRjY2JiMTE4YTc5
MTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0
dGluZ3MuaApAQCAtMjA4LDIxICsyMDgsMzUgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3BpY3RvZ3JhcGhfZm9udF9mYW1pbHkgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpwaWN0b2dyYXBo
X2ZvbnRfZmFtaWx5KTsKIAotV0VCS0lUX0FQSSBndWludDMyCitXRUJLSVRfREVQUkVDQVRFRF9G
T1Iod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMpIGd1aW50MzIKIHdl
YmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKK1dFQktJ
VF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0
cykgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMy
ICAgICAgICAgZm9udF9zaXplKTsKIAogV0VCS0lUX0FQSSBndWludDMyCi13ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAgICAgICAgICAgICAgICAoV2ViS2l0
U2V0dGluZ3MgKnNldHRpbmdzKTsKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3Np
emVfcHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwog
CiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemVf
cHRzICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZV9wdHMpIGd1aW50
MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfREVQUkVDQVRF
RF9GT1Iod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRz
KSB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIg
ICAgICAgICBmb250X3NpemUpOwogCiBXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAgIGZvbnRfc2l6ZSk7CisKK1dF
QktJVF9BUEkgZ3VpbnQzMgogd2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CiAKIFdF
QktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDY5ZmFjOGUwYzFiOTQ3OWY4YjBmNzY5ODdiYjJjNGU3NzY1NTgwMWYuLjM1Njg4
YmJkMDBkZGM0NDQ1ZDAxNDAxNjEyOWIzMTRkYjQzMWRkYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMC0z
MSAgR2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIHNldHRpbmdzIHRvIHNldCBmb250IHNpemUgaW4gcG9pbnRzLCBhbmQgZGVwcmVjYXRlIHRo
ZSBwaXhlbCBzaXplIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2V0dGluZ3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKHRl
c3RGb250U2V0dGluZ3MpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNy0xMC0zMCAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0g
Rml4IGJ1aWxkIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGI2YWY2NzEyY2Zk
NjczMGY4YzJjZWFlZTAyYmI3YTRiZTlkY2VmYWEuLjMwZjA1MTJjMmFmNzI4NWM3Y2Y3ODZiZjEw
OTFiNDJkMDc1OTgyNjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0xMDEsNTYgKzEwMSw2
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikK
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGlu
Z3MsIFRSVUUpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZyhzZXR0aW5ncykpOwogCi0gICAgLy8gRGVmYXVsdCBmb250IGZhbWlseSBp
cyAic2Fucy1zZXJpZiIuCi0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2Fucy1zZXJpZiIpOwotICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncywgIm1vbm9zcGFj
ZSIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgIm1vbm9zcGFjZSIpOwotCi0gICAgLy8gRGVmYXVsdCBt
b25vc3BhY2UgZm9udCBmYW1pbHkgZm9udCBmYW1pbHkgaXMgIm1vbm9zcGFjZSIuCi0gICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KHNl
dHRpbmdzKSwgPT0sICJtb25vc3BhY2UiKTsKLSAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21vbm9z
cGFjZV9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9tb25vc3BhY2VfZm9udF9mYW1pbHkoc2V0dGluZ3Mp
LCA9PSwgInNhbnMtc2VyaWYiKTsKLQotICAgIC8vIERlZmF1bHQgc2VyaWYgZm9udCBmYW1pbHkg
aXMgInNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9zZXJp
Zl9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2VyaWYiKTsKLSAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRpbmdzLCAic2Fucy1zZXJpZiIpOwotICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRp
bmdzKSwgPT0sICJzYW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IHNhbnMgc2VyaWYgZm9u
dCBmYW1pbHkgaXMgInNhbnMtc2VyaWYiLgotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0
dGluZ3NfZ2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNhbnMtc2Vy
aWYiKTsKLSAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0
dGluZ3MsICJzZXJpZiIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0
X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNlcmlmIik7Ci0KLSAgICAv
LyBEZWZhdWx0IGN1cnNpdmUgZm9udCBmYW1pbHkgInNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NldHRpbmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0s
ICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseShz
ZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRp
bmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7
Ci0KLSAgICAvLyBEZWZhdWx0IGZhbnRhc3kgZm9udCBmYW1pbHkgaXMgInNlcmlmIi4KLSAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNl
dHRpbmdzKSwgPT0sICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZmFudGFzeV9m
b250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJz
YW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IHBpY3RvZ3JhcGggZm9udCBmYW1pbHkgaXMg
InNlcmlmIi4KLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dy
YXBoX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzZXJpZiIpOwotICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsK
LSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRf
ZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7Ci0KLSAgICAvLyBEZWZhdWx0IGZv
bnQgc2l6ZSBpcyAxNi4KLSAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMTYpOwotICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MsIDE0KTsKLSAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwg
MTQpOwotCi0gICAgLy8gRGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIGlzIDEzLgotICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemUoc2V0dGluZ3MpLCA9PSwgMTMpOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVs
dF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCAxMCk7Ci0gICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5n
cyksID09LCAxMCk7Ci0KLSAgICAvLyBEZWZhdWx0IG1pbmltdW0gZm9udCBzaXplIGlzIDAuCi0g
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X21pbmltdW1fZm9udF9zaXpl
KHNldHRpbmdzKSwgPT0sIDApOwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11bV9mb250
X3NpemUoc2V0dGluZ3MsIDcpOwotICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9taW5pbXVtX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCA3KTsKLQogICAgIC8vIERlZmF1
bHQgY2hhcnNldCBpcyAiaXNvLTg4NTktMSIuCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZGVmYXVsdF9jaGFyc2V0KHNldHRpbmdzKSwgPT0sICJpc28tODg1OS0xIik7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJzZXQoc2V0dGluZ3MsICJ1dGY4
Iik7CkBAIC0yOTcsNiArMjQ3LDExNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3Mo
VGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0dGlu
Z3MpKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEZvbnRTZXR0aW5ncyhUZXN0ICosIGdjb25zdHBv
aW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFNldCBhIERQSSB2YWx1ZSBvZiA5
NiBmb3IgdGhlIHRlc3QuIFRoaXMgbXVzdCBiZSBzZXQgYmVmb3JlIGNyZWF0aW5nCisgICAgLy8g
dGhlIFdlYktpdFNldHRpbmdzIG9iamVjdCBzbyB0aGF0IHRoZSBub3RpZnk6Omd0ay14ZnQtZHBp
IHNpZ25hbCBoYW5kbGVyCisgICAgLy8gb2YgV2ViS2l0U2V0dGluZ3Mgd29uJ3QgZ2V0IGNhbGxl
ZCB0byBtb2RpZnkgdGhlIGluaXRpYWwgZm9udCBzaXplIHZhbHVlcy4KKyAgICBHdGtTZXR0aW5n
cyogZ3RrU2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKKyAgICBpZiAoZ3Rr
U2V0dGluZ3MpCisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBp
IiwgOTYgKiAxMDI0LCBudWxscHRyKTsKKyNlbmRpZgorCisgICAgV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzID0gd2Via2l0X3NldHRpbmdzX25ldygpOworCisgICAgLy8gRGVmYXVsdCBmb250IGZh
bWlseSBpcyAic2Fucy1zZXJpZiIuCisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5n
c19nZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncyksID09LCAic2Fucy1zZXJpZiIpOwor
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShzZXR0aW5ncywgIm1v
bm9zcGFjZSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgIm1vbm9zcGFjZSIpOworCisgICAgLy8gRGVm
YXVsdCBtb25vc3BhY2UgZm9udCBmYW1pbHkgaXMgIm1vbm9zcGFjZSIuCisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KHNldHRpbmdz
KSwgPT0sICJtb25vc3BhY2UiKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21vbm9zcGFjZV9m
b250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3NldHRpbmdzX2dldF9tb25vc3BhY2VfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwg
InNhbnMtc2VyaWYiKTsKKworICAgIC8vIERlZmF1bHQgc2VyaWYgZm9udCBmYW1pbHkgaXMgInNl
cmlmIi4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9zZXJpZl9mb250
X2ZhbWlseShzZXR0aW5ncyksID09LCAic2VyaWYiKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRpbmdzLCAic2Fucy1zZXJpZiIpOworICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X3NlcmlmX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwg
PT0sICJzYW5zLXNlcmlmIik7CisKKyAgICAvLyBEZWZhdWx0IHNhbnMgc2VyaWYgZm9udCBmYW1p
bHkgaXMgInNhbnMtc2VyaWYiLgorICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3Nf
Z2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNhbnMtc2VyaWYiKTsK
KyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3NhbnNfc2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3Ms
ICJzZXJpZiIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X3NhbnNf
c2VyaWZfZm9udF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNlcmlmIik7CisKKyAgICAvLyBEZWZh
dWx0IGN1cnNpdmUgZm9udCBmYW1pbHkgInNlcmlmIi4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3NldHRpbmdzX2dldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzZXJp
ZiIpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseShzZXR0aW5n
cywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dl
dF9jdXJzaXZlX2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7CisKKyAg
ICAvLyBEZWZhdWx0IGZhbnRhc3kgZm9udCBmYW1pbHkgaXMgInNlcmlmIi4KKyAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNldHRpbmdz
KSwgPT0sICJzZXJpZiIpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZmFudGFzeV9mb250X2Zh
bWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3NldHRpbmdzX2dldF9mYW50YXN5X2ZvbnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzYW5zLXNl
cmlmIik7CisKKyAgICAvLyBEZWZhdWx0IHBpY3RvZ3JhcGggZm9udCBmYW1pbHkgaXMgInNlcmlm
Ii4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2Zv
bnRfZmFtaWx5KHNldHRpbmdzKSwgPT0sICJzZXJpZiIpOworICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShzZXR0aW5ncywgInNhbnMtc2VyaWYiKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NldHRpbmdzX2dldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5
KHNldHRpbmdzKSwgPT0sICJzYW5zLXNlcmlmIik7CisKKyAgICAvLyBEZWZhdWx0IGRlZmF1bHQg
Zm9udCBzaXplIGluIHBvaW50cyBpcyAxMi4KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9z
ZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemVfcHRzKHNldHRpbmdzKSwgPT0sIDEyKTsKKyAg
ICAvLyBEZWZhdWx0IGRlZmF1bHQgZm9udCBzaXplIGluIHBpeGVscyBpcyAxNi4KKyAgICBnX2Fz
c2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGlu
Z3MpLCA9PSwgMTYpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBwb2ludHMu
IEF0IDk2IERQSSwgMjQgcG9pbnRzIGlzIDMyIHBpeGVscy4KKyAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncywgMjQpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3Mp
LCA9PSwgMjQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZh
dWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAzMik7CisKKyAgICAvLyBUZXN0IGRlZmF1bHQg
Zm9udCBzaXplIGluIHBpeGVscy4gQXQgOTYgRFBJLCAxMiBwaXhlbHMgaXMgOSBwb2ludHMuCisg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncywgMTIpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6
ZShzZXR0aW5ncyksID09LCAxMik7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCA5KTsKKworICAgIC8v
IERlZmF1bHQgZGVmYXVsdCBtb25vc3BhY2UgZm9udCBzaXplIGluIHBvaW50cyBpcyAxMC4KKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2Vf
Zm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCAxMCk7CisgICAgLy8gRGVmYXVsdCBkZWZhdWx0
IG1vbm9zcGFjZSBmb250IHNpemUgaW4gcGl4ZWxzIGlzIDEzLgorICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGlu
Z3MpLCA9PSwgMTMpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNpemUg
aW4gcG9pbnRzLiBBdCA5NiBEUEksIDE4IHBvaW50cyBpcyAyNCBwaXhlbHMuCisgICAgd2Via2l0
X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdzLCAx
OCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9u
b3NwYWNlX2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTgpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0
dGluZ3MpLCA9PSwgMjQpOworCisgICAgLy8gVGVzdCBkZWZhdWx0IG1vbm9zcGFjZSBmb250IHNp
emUgaW4gcGl4ZWxzLiBBdCA5NiBEUEksIDggcGl4ZWxzIGlzIDYgcG9pbnRzLgorICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCA4KTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3Bh
Y2VfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVfcHRzKHNldHRpbmdz
KSwgPT0sIDYpOworCisgICAgLy8gRGVmYXVsdCBtaW5pbXVtIGZvbnQgc2l6ZSBpcyAwLgorICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9taW5pbXVtX2ZvbnRfc2l6ZShz
ZXR0aW5ncyksID09LCAwKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21pbmltdW1fZm9udF9z
aXplKHNldHRpbmdzLCA3KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19n
ZXRfbWluaW11bV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgNyk7CisKKyNpZiBQTEFURk9STShH
VEspCisgICAgLy8gVGVzdCBmb250IHNpemUgc2NhbGluZyBvbiBEUEkgY2hhbmdlLiBUaGUgZm9u
dCBzaXplIGluIHBpeGVscyBzaG91bGQKKyAgICAvLyBzY2FsZSBhY2NvcmRpbmdseSwgd2hpbGUg
dGhlIGZvbnQgc2l6ZSBpbiBwb2ludHMgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4KKyAgICBpZiAo
Z3RrU2V0dGluZ3MpIHsKKyAgICAgICAgLy8gQXQgOTYgRFBJLCAxNSBwb2ludHMgaXMgMjAgcGl4
ZWxzLgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplX3B0cyhz
ZXR0aW5ncywgMTUpOworICAgICAgICAvLyBBdCA5NiBEUEksIDEyIHBvaW50cyBpcyAxNiBwaXhl
bHMuCisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9z
aXplX3B0cyhzZXR0aW5ncywgMTIpOworCisgICAgICAgIC8vIFNldCBEUEkgdG8gMTIwLiBUaGUg
c2NhbGluZyBmYWN0b3IgZm9yIHRoZSBwaXhlbCB2YWx1ZXMgaXMgMS4yNXguCisgICAgICAgIGdf
b2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBpIiwgMTIwICogMTAyNCwgbnVsbHB0
cik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0
X2ZvbnRfc2l6ZV9wdHMoc2V0dGluZ3MpLCA9PSwgMTUpOworICAgICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplX3B0cyhz
ZXR0aW5ncyksID09LCAxMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAyNSk7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250
X3NpemUoc2V0dGluZ3MpLCA9PSwgMjApOworCisgICAgICAgIC8vIFNldCBEUEkgYmFjayB0byA5
Ni4gVGhlIHNjYWxpbmcgZmFjdG9yIGZvciB0aGUgcGl4ZWwgdmFsdWVzIGlzIDAuOHguCisgICAg
ICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBpIiwgOTYgKiAxMDI0LCBu
dWxscHRyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfZm9udF9zaXplX3B0cyhzZXR0aW5ncyksID09LCAxNSk7CisgICAgICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemVf
cHRzKHNldHRpbmdzKSwgPT0sIDEyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDIwKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAxNik7CisgICAgfQorI2VuZGlmCisKKyAgICBnX29i
amVjdF91bnJlZihHX09CSkVDVChzZXR0aW5ncykpOworfQorCiB2b2lkIHRlc3RXZWJLaXRTZXR0
aW5nc05ld1dpdGhTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdS
ZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5n
c19uZXdfd2l0aF9zZXR0aW5ncygKQEAgLTM4Nyw2ICs0NDgsNyBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAKICAgICBUZXN0OjphZGQoIldlYktpdFNldHRpbmdzIiwgIndlYmtpdC1zZXR0aW5ncyIsIHRl
c3RXZWJLaXRTZXR0aW5ncyk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJuZXct
d2l0aC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyk7CisgICAg
VGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJmb250LXNldHRpbmdzIiwgdGVzdEZvbnRTZXR0
aW5ncyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNl
dHRpbmdzIiwgInVzZXItYWdlbnQiLCB0ZXN0V2ViS2l0U2V0dGluZ3NVc2VyQWdlbnQpOwogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326753</attachid>
            <date>2017-11-13 03:29:21 -0800</date>
            <delta_ts>2017-11-13 03:41:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171113132920.patch</filename>
            <type>text/plain</type>
            <size>10033</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ2Y2E3MmI3ZGMxZjdj
M2Y2ZWYyY2RjYmVlY2VkY2I5MTRjNDczYy4uNmUxNDNlNDRjZGFlNGNlYzlkMDA0NGJlNzU2NWFm
MzVkZDA2NmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTExLTEzICBHYWJy
aWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0
aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omd0a1hmdERQSUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHA6CisKIDIwMTctMTEtMTIgIEdhYnJpZWwgSXZh
c2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBmdW5jdGlvbmFs
aXR5IHRvIGhhbmRsZSBmb250IHNpemVzIGluIHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMTg5MWE2MTA5
YWNmNjZmMjFhMDVmZGFiMjhhYzk4OTA3M2FlNjNhLi4xNDJmYzVlODMzMTE5NDA4MjE2ODkwNTE0
MGU4MDkzZWUyMGRmZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBH
YWJyaWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRv
bWF0aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0Rpc3Bv
c2UpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisKIDIwMTctMTEtMTIgIEdhYnJpZWwgSXZhc2N1ICA8
Z2l2YXNjdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBmdW5jdGlvbmFsaXR5IHRv
IGhhbmRsZSBmb250IHNpemVzIGluIHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgKaW5kZXggOWMyNmQ4ODE5ZDE1ZmY3MDM2NmVmMWY0ZDUxNGMwNmY1MjZiYzgw
OS4uMjQyMzdkYWMzMTZiODljZDY0ZGRkMTM4NGNlYmMwYjVhY2Q2Y2VkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCkBAIC0yNSw2ICsyNSwxMCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2lmIFVTRShHTElCKQorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiBPQkpDX0NMQVNTIE5TU2NyZWVuOwogT0JKQ19DTEFT
UyBOU1dpbmRvdzsKQEAgLTYwLDYgKzY0LDcgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lk
Z2V0Kik7CiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAjaWYgVVNFKEdMSUIpCiBk
b3VibGUgc2NyZWVuRFBJKCk7Cit2b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxlcihGdW5j
dGlvbjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVu
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5j
cHAKaW5kZXggYzhkMDQxZDVjOTI2YWQyMTI0NzQ1Y2IxMjBmOTFkZmIxNWQ5ZWRiYS4uNDViZTA3
MDc2NWM0MmVjYTYyYzM1MTdhZGVlMGZiNDg2ZDBkMWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKICNpbmNsdWRl
IDxjbWF0aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CkBAIC0xMTIsNiArMTEzLDMyIEBAIGRvdWJs
ZSBzY3JlZW5EUEkoKQogICAgIHJldHVybiBjYWNoZWREcGk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPEZ1bmN0aW9uPHZvaWQoKT4+IHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcjsKKworc3Rh
dGljIHZvaWQgZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKCkKK3sKKyAgICBpZiAoc2NyZWVuRFBJ
T2JzZXJ2ZXJIYW5kbGVyKQorICAgICAgICAoKnNjcmVlbkRQSU9ic2VydmVySGFuZGxlcikoKTsK
K30KKwordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYm
IGhhbmRsZXIpCit7CisgICAgc3RhdGljIEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncyA9IGd0a19z
ZXR0aW5nc19nZXRfZGVmYXVsdCgpOworICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGd0a1hmdERw
aUNoYW5nZWRIYW5kbGVySUQgPSAwOworCisgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAgIGlm
IChndGtTZXR0aW5ncyAmJiBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7CisgICAgICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZ3RrU2V0dGluZ3MsIGd0a1hmdERwaUNoYW5n
ZWRIYW5kbGVySUQpOworICAgICAgICAgICAgZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNjcmVlbkRQSU9ic2Vy
dmVySGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CisgICAgaWYgKGd0a1NldHRpbmdzICYmICFn
dGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKQorICAgICAgICBndGtYZnREcGlDaGFuZ2VkSGFuZGxl
cklEID0gZ19zaWduYWxfY29ubmVjdChndGtTZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGki
LCBHX0NBTExCQUNLKGd0a1hmdERQSUNoYW5nZWRDYWxsYmFjayksIG51bGxwdHIpOworfQorCiBz
dGF0aWMgR2RrU2NyZWVuKiBnZXRTY3JlZW4oR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgcmV0
dXJuIGd0a193aWRnZXRfaGFzX3NjcmVlbih3aWRnZXQpID8gZ3RrX3dpZGdldF9nZXRfc2NyZWVu
KHdpZGdldCkgOiBnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAppbmRleCBmY2U2NzhjMTkyMWM4
NmE3ZGMwYTVkM2U1YWRjNzFmMDEzNDI4MjU2Li41NDVkMzM0YmI5OTc4YjczYzBhMmZiNTZlYTUz
NzJhMGJlNGI0ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxh
dGZvcm1TY3JlZW5XUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0
Zm9ybVNjcmVlbldQRS5jcHAKQEAgLTYwLDYgKzYwLDExIEBAIGRvdWJsZSBzY3JlZW5EUEkoKQog
ICAgIHJldHVybiA5NjsKIH0KIAordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVu
Y3Rpb248dm9pZCgpPiYmKTsKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBGbG9hdFJl
Y3Qgc2NyZWVuUmVjdChXaWRnZXQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKaW5k
ZXggNGZlZGNjM2U1MWE3NTBiMWY2N2FhNDQ2MGRhYTlmYzE0ZTA0OTcwNi4uNzJmZGNmYWMzZTY0
N2VhOGY1ZGY4YzkxMDZiY2I5MWU5NjkwN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcApAQCAtNzksNiArNzksNyBAQCBz
dHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyB1c2VyQWdlbnQ7CiAg
ICAgYm9vbCBhbGxvd01vZGFsRGlhbG9ncyB7IGZhbHNlIH07CiAgICAgYm9vbCB6b29tVGV4dE9u
bHkgeyBmYWxzZSB9OworICAgIGRvdWJsZSBzY3JlZW5EcGkgeyA5NiB9OwogfTsKIAogLyoqCkBA
IC0xNTgsMTIgKzE1OSwzOSBAQCBlbnVtIHsKICNlbmRpZgogfTsKIAorc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJDb3JlOjpzZXRT
Y3JlZW5EUElPYnNlcnZlckhhbmRsZXIobnVsbHB0cik7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKwogc3RhdGlj
IHZvaWQgd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVk
KG9iamVjdCk7CiAKLSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBXRUJLSVRfU0VUVElOR1Mo
b2JqZWN0KS0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCk7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisgICAgV2ViUHJlZmVyZW5jZXMqIHBy
ZWZzID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpOwogICAgIHByZWZzLT5zZXRT
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbih0cnVlKTsKKworICAgIHNldHRpbmdzLT5wcml2
LT5zY3JlZW5EcGkgPSBXZWJDb3JlOjpzY3JlZW5EUEkoKTsKKyAgICBXZWJDb3JlOjpzZXRTY3Jl
ZW5EUElPYnNlcnZlckhhbmRsZXIoW3NldHRpbmdzXSgpIHsKKyAgICAgICAgZG91YmxlIG5ld1Nj
cmVlbkRwaSA9IFdlYkNvcmU6OnNjcmVlbkRQSSgpOworCisgICAgICAgIGlmIChuZXdTY3JlZW5E
cGkgPT0gc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRwaSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBkb3VibGUgc2NhbGluZ0ZhY3RvciA9IG5ld1NjcmVlbkRwaSAvIHNldHRpbmdzLT5w
cml2LT5zY3JlZW5EcGk7CisgICAgICAgIHVpbnQzMl90IHByZXZGb250U2l6ZSA9IHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZvbnRTaXplKCk7CisgICAgICAgIHVpbnQzMl90
IHByZXZNb25vc3BhY2VGb250U2l6ZSA9IHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVm
YXVsdEZpeGVkRm9udFNpemUoKTsKKworICAgICAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMtPnNldERlZmF1bHRGb250U2l6ZShzdGQ6OnJvdW5kKHByZXZGb250U2l6ZSAqIHNjYWxpbmdG
YWN0b3IpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImRl
ZmF1bHQtZm9udC1zaXplIik7CisKKyAgICAgICAgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdGQ6OnJvdW5kKHByZXZNb25vc3BhY2VGb250U2l6
ZSAqIHNjYWxpbmdGYWN0b3IpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIpOworCisgICAgICAgIHNldHRp
bmdzLT5wcml2LT5zY3JlZW5EcGkgPSBuZXdTY3JlZW5EcGk7CisgICAgfSk7CiB9CiAKIHN0YXRp
YyB2b2lkIHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKQEAgLTUx
Miw2ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJL
aXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVk
ID0gd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZDsKKyAgICBnT2JqZWN0Q2xhc3MtPmRpc3Bvc2Ug
PSB3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2U7CiAgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkg
PSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFmYzNiMzc4NzQxNTRjMjNkMjdiMTExZjc3
ODFlMDA2MjI2YzljOWYuLjQ1MjMyMmRhYWI0YmUwMzY5ZGVmNDUyZDVkNWViNzI5ODU1MTA0MzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNy0xMS0xMyAgR2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQXV0b21hdGljYWxseSBhZGp1c3QgZm9udCBzaXplIHdoZW4g
Z3RrLXhmdC1kcGkgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6CisKIDIwMTctMTEtMTIg
IEdhYnJpZWwgSXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFk
ZCBmdW5jdGlvbmFsaXR5IHRvIGhhbmRsZSBmb250IHNpemVzIGluIHBvaW50cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5n
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNl
dHRpbmdzLmNwcAppbmRleCAxMTViNTNjOGJhMzdjYTZjYjJiNjY1YzRlNzkwYzNkOTlkOTUwYjkw
Li4wOWVlY2NlZmM4NTFhZWYwY2UyMjljMWM3N2U1MmFlZWVkOTAwMmExIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNl
dHRpbmdzLmNwcApAQCAtMTY4LDYgKzE2OCwzMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0
dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gQXQgOTYgRFBJLCA4IHBpeGVscyBp
cyA2IHBvaW50cyBhbmQgMjQgcGl4ZWxzIGlzIDE4IHBvaW50cy4KICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRzKDgpLCA9PSwgNik7CiAgICAg
Z19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cygyNCks
ID09LCAxOCk7CisKKyAgICAvLyBUZXN0IGZvbnQgc2l6ZSBvbiBEUEkgY2hhbmdlLiBUaGUgZm9u
dCBzaXplIHZhbHVlIGluIHBpeGVscyBzaG91bGQgc2NhbGUKKyAgICAvLyBhY2NvcmRpbmdseSwg
d2hpbGUgdGhlIGZvbnQgc2l6ZSB2YWx1ZSBpbiBwb2ludHMgc2hvdWxkIHJlbWFpbiB0aGUgc2Ft
ZS4KKyAgICBpZiAoZ3RrU2V0dGluZ3MpIHsKKyAgICAgICAgLy8gQXQgOTYgRFBJLCAyMCBwaXhl
bHMgaXMgMTUgcG9pbnRzLgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9u
dF9zaXplKHNldHRpbmdzLCAyMCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3Nl
dHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2Zv
bnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTUpOworICAgICAgICAvLyBBdCA5NiBEUEksIDE2IHBp
eGVscyBpcyAxMiBwb2ludHMuCisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9t
b25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzLCAxNik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMod2Via2l0X3NldHRpbmdzX2dl
dF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpKSwgPT0sIDEyKTsKKworICAg
ICAgICAvLyBTZXQgRFBJIHRvIDEyMC4gVGhlIHNjYWxpbmcgZmFjdG9yIGlzIDEyMCAvIDk2ID09
IDEuMjUuCisgICAgICAgIGdfb2JqZWN0X3NldChndGtTZXR0aW5ncywgImd0ay14ZnQtZHBpIiwg
MTIwICogMTAyNCwgbnVsbHB0cik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3Nl
dHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAyNSk7CisgICAgICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMod2Vi
a2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTUpOwor
ICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25v
c3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDIwKTsKKyAgICAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTIpOworCisg
ICAgICAgIC8vIFNldCBEUEkgYmFjayB0byA5Ni4gVGhlIHNjYWxpbmcgZmFjdG9yIGlzIDk2IC8g
MTIwID09IDAuOC4KKyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a1NldHRpbmdzLCAiZ3RrLXhmdC1k
cGkiLCA5NiAqIDEwMjQsIG51bGxwdHIpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjApOworICAg
ICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRz
KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoc2V0dGluZ3MpKSwgPT0sIDE1
KTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRf
bW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAxNik7CisgICAgICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMod2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MpKSwgPT0sIDEyKTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIC8vIERlZmF1bHQgY2hhcnNldCBpcyAiaXNvLTg4NTktMSIu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326755</attachid>
            <date>2017-11-13 03:42:02 -0800</date>
            <delta_ts>2017-11-13 11:27:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171113134201.patch</filename>
            <type>text/plain</type>
            <size>10032</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ2Y2E3MmI3ZGMxZjdj
M2Y2ZWYyY2RjYmVlY2VkY2I5MTRjNDczYy4uNmUxNDNlNDRjZGFlNGNlYzlkMDA0NGJlNzU2NWFm
MzVkZDA2NmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTExLTEzICBHYWJy
aWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0
aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omd0a1hmdERQSUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHA6CisKIDIwMTctMTEtMTIgIEdhYnJpZWwgSXZh
c2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBmdW5jdGlvbmFs
aXR5IHRvIGhhbmRsZSBmb250IHNpemVzIGluIHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMTg5MWE2MTA5
YWNmNjZmMjFhMDVmZGFiMjhhYzk4OTA3M2FlNjNhLi4xNDJmYzVlODMzMTE5NDA4MjE2ODkwNTE0
MGU4MDkzZWUyMGRmZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBH
YWJyaWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRv
bWF0aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc0Rpc3Bv
c2UpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisKIDIwMTctMTEtMTIgIEdhYnJpZWwgSXZhc2N1ICA8
Z2l2YXNjdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBmdW5jdGlvbmFsaXR5IHRv
IGhhbmRsZSBmb250IHNpemVzIGluIHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgKaW5kZXggOWMyNmQ4ODE5ZDE1ZmY3MDM2NmVmMWY0ZDUxNGMwNmY1MjZiYzgw
OS4uMjQyMzdkYWMzMTZiODljZDY0ZGRkMTM4NGNlYmMwYjVhY2Q2Y2VkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCkBAIC0yNSw2ICsyNSwxMCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2lmIFVTRShHTElCKQorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiBPQkpDX0NMQVNTIE5TU2NyZWVuOwogT0JKQ19DTEFT
UyBOU1dpbmRvdzsKQEAgLTYwLDYgKzY0LDcgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lk
Z2V0Kik7CiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAjaWYgVVNFKEdMSUIpCiBk
b3VibGUgc2NyZWVuRFBJKCk7Cit2b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxlcihGdW5j
dGlvbjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVu
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5j
cHAKaW5kZXggYzhkMDQxZDVjOTI2YWQyMTI0NzQ1Y2IxMjBmOTFkZmIxNWQ5ZWRiYS4uNDViZTA3
MDc2NWM0MmVjYTYyYzM1MTdhZGVlMGZiNDg2ZDBkMWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKICNpbmNsdWRl
IDxjbWF0aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CkBAIC0xMTIsNiArMTEzLDMyIEBAIGRvdWJs
ZSBzY3JlZW5EUEkoKQogICAgIHJldHVybiBjYWNoZWREcGk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPEZ1bmN0aW9uPHZvaWQoKT4+IHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcjsKKworc3Rh
dGljIHZvaWQgZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKCkKK3sKKyAgICBpZiAoc2NyZWVuRFBJ
T2JzZXJ2ZXJIYW5kbGVyKQorICAgICAgICAoKnNjcmVlbkRQSU9ic2VydmVySGFuZGxlcikoKTsK
K30KKwordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYm
IGhhbmRsZXIpCit7CisgICAgc3RhdGljIEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncyA9IGd0a19z
ZXR0aW5nc19nZXRfZGVmYXVsdCgpOworICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGd0a1hmdERw
aUNoYW5nZWRIYW5kbGVySUQgPSAwOworCisgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAgIGlm
IChndGtTZXR0aW5ncyAmJiBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7CisgICAgICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZ3RrU2V0dGluZ3MsIGd0a1hmdERwaUNoYW5n
ZWRIYW5kbGVySUQpOworICAgICAgICAgICAgZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNjcmVlbkRQSU9ic2Vy
dmVySGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CisgICAgaWYgKGd0a1NldHRpbmdzICYmICFn
dGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKQorICAgICAgICBndGtYZnREcGlDaGFuZ2VkSGFuZGxl
cklEID0gZ19zaWduYWxfY29ubmVjdChndGtTZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGki
LCBHX0NBTExCQUNLKGd0a1hmdERQSUNoYW5nZWRDYWxsYmFjayksIG51bGxwdHIpOworfQorCiBz
dGF0aWMgR2RrU2NyZWVuKiBnZXRTY3JlZW4oR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgcmV0
dXJuIGd0a193aWRnZXRfaGFzX3NjcmVlbih3aWRnZXQpID8gZ3RrX3dpZGdldF9nZXRfc2NyZWVu
KHdpZGdldCkgOiBnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAppbmRleCBmY2U2NzhjMTkyMWM4
NmE3ZGMwYTVkM2U1YWRjNzFmMDEzNDI4MjU2Li5iNGI1OWRkZDNkNzlmYjI5NjIyMmQ3NWZkY2Iz
ZTZlZTE4ODg2MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxh
dGZvcm1TY3JlZW5XUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0
Zm9ybVNjcmVlbldQRS5jcHAKQEAgLTYwLDYgKzYwLDExIEBAIGRvdWJsZSBzY3JlZW5EUEkoKQog
ICAgIHJldHVybiA5NjsKIH0KIAordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVu
Y3Rpb248dm9pZCgpPiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIEZsb2F0UmVj
dCBzY3JlZW5SZWN0KFdpZGdldCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAppbmRl
eCA0ZmVkY2MzZTUxYTc1MGIxZjY3YWE0NDYwZGFhOWZjMTRlMDQ5NzA2Li43MmZkY2ZhYzNlNjQ3
ZWE4ZjVkZjhjOTEwNmJjYjkxZTk2OTA3ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC03OSw2ICs3OSw3IEBAIHN0
cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIHVzZXJBZ2VudDsKICAg
ICBib29sIGFsbG93TW9kYWxEaWFsb2dzIHsgZmFsc2UgfTsKICAgICBib29sIHpvb21UZXh0T25s
eSB7IGZhbHNlIH07CisgICAgZG91YmxlIHNjcmVlbkRwaSB7IDk2IH07CiB9OwogCiAvKioKQEAg
LTE1OCwxMiArMTU5LDM5IEBAIGVudW0gewogI2VuZGlmCiB9OwogCitzdGF0aWMgdm9pZCB3ZWJL
aXRTZXR0aW5nc0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYkNvcmU6OnNldFNj
cmVlbkRQSU9ic2VydmVySGFuZGxlcihudWxscHRyKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJLaXRTZXR0aW5nc0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQo
b2JqZWN0KTsKIAotICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmcyA9IFdFQktJVF9TRVRUSU5HUyhv
YmplY3QpLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KTsKKyAgICBXZWJQcmVmZXJlbmNlcyogcHJl
ZnMgPSBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCk7CiAgICAgcHJlZnMtPnNldFNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHRydWUpOworCisgICAgc2V0dGluZ3MtPnByaXYt
PnNjcmVlbkRwaSA9IFdlYkNvcmU6OnNjcmVlbkRQSSgpOworICAgIFdlYkNvcmU6OnNldFNjcmVl
bkRQSU9ic2VydmVySGFuZGxlcihbc2V0dGluZ3NdKCkgeworICAgICAgICBkb3VibGUgbmV3U2Ny
ZWVuRHBpID0gV2ViQ29yZTo6c2NyZWVuRFBJKCk7CisKKyAgICAgICAgaWYgKG5ld1NjcmVlbkRw
aSA9PSBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRHBpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGRvdWJsZSBzY2FsaW5nRmFjdG9yID0gbmV3U2NyZWVuRHBpIC8gc2V0dGluZ3MtPnBy
aXYtPnNjcmVlbkRwaTsKKyAgICAgICAgdWludDMyX3QgcHJldkZvbnRTaXplID0gc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKKyAgICAgICAgdWludDMyX3Qg
cHJldk1vbm9zcGFjZUZvbnRTaXplID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZh
dWx0Rml4ZWRGb250U2l6ZSgpOworCisgICAgICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+c2V0RGVmYXVsdEZvbnRTaXplKHN0ZDo6cm91bmQocHJldkZvbnRTaXplICogc2NhbGluZ0Zh
Y3RvcikpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVm
YXVsdC1mb250LXNpemUiKTsKKworICAgICAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMt
PnNldERlZmF1bHRGaXhlZEZvbnRTaXplKHN0ZDo6cm91bmQocHJldk1vbm9zcGFjZUZvbnRTaXpl
ICogc2NhbGluZ0ZhY3RvcikpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAiZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplIik7CisKKyAgICAgICAgc2V0dGlu
Z3MtPnByaXYtPnNjcmVlbkRwaSA9IG5ld1NjcmVlbkRwaTsKKyAgICB9KTsKIH0KIAogc3RhdGlj
IHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpAQCAtNTEy
LDYgKzU0MCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktp
dFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQg
PSB3ZWJLaXRTZXR0aW5nc0NvbnN0cnVjdGVkOworICAgIGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9
IHdlYktpdFNldHRpbmdzRGlzcG9zZTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9
IHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVy
dHkgPSB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWZjM2IzNzg3NDE1NGMyM2QyN2IxMTFmNzc4
MWUwMDYyMjZjOWM5Zi4uNDUyMzIyZGFhYjRiZTAzNjlkZWY0NTJkNWQ1ZWI3Mjk4NTUxMDQzMyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE3LTExLTEzICBHYWJyaWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBn
dGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKwogMjAxNy0xMS0xMiAg
R2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIGZvbnQgc2l6ZXMgaW4gcG9pbnRzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwCmluZGV4IDExNWI1M2M4YmEzN2NhNmNiMmI2NjVjNGU3OTBjM2Q5OWQ5NTBiOTAu
LjA5ZWVjY2VmYzg1MWFlZjBjZTIyOWMxYzc3ZTUyYWVlZWQ5MDAyYTEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwCkBAIC0xNjgsNiArMTY4LDMxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0
aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBBdCA5NiBEUEksIDggcGl4ZWxzIGlz
IDYgcG9pbnRzIGFuZCAyNCBwaXhlbHMgaXMgMTggcG9pbnRzLgogICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMoOCksID09LCA2KTsKICAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRzKDI0KSwg
PT0sIDE4KTsKKworICAgIC8vIFRlc3QgZm9udCBzaXplIG9uIERQSSBjaGFuZ2UuIFRoZSBmb250
IHNpemUgdmFsdWUgaW4gcGl4ZWxzIHNob3VsZCBzY2FsZQorICAgIC8vIGFjY29yZGluZ2x5LCB3
aGlsZSB0aGUgZm9udCBzaXplIHZhbHVlIGluIHBvaW50cyBzaG91bGQgcmVtYWluIHRoZSBzYW1l
LgorICAgIGlmIChndGtTZXR0aW5ncykgeworICAgICAgICAvLyBBdCA5NiBEUEksIDIwIHBpeGVs
cyBpcyAxNSBwb2ludHMuCisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250
X3NpemUoc2V0dGluZ3MsIDIwKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0
dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9zaXplKHNldHRpbmdzKSksID09LCAxNSk7CisgICAgICAgIC8vIEF0IDk2IERQSSwgMTYgcGl4
ZWxzIGlzIDEyIHBvaW50cy4KKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21v
bm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MsIDE2KTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTIpOworCisgICAg
ICAgIC8vIFNldCBEUEkgdG8gMTIwLiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgMTIwIC8gOTYgPT0g
MS4yNS4KKyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a1NldHRpbmdzLCAiZ3RrLXhmdC1kcGkiLCAx
MjAgKiAxMDI0LCBudWxscHRyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDI1KTsKKyAgICAgICAg
Z19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSksID09LCAxNSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9z
cGFjZV9mb250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjApOworICAgICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRzKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZGVmYXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSksID09LCAxMik7CisKKyAg
ICAgICAgLy8gU2V0IERQSSBiYWNrIHRvIDk2LiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgOTYgLyAx
MjAgPT0gMC44LgorICAgICAgICBnX29iamVjdF9zZXQoZ3RrU2V0dGluZ3MsICJndGsteGZ0LWRw
aSIsIDk2ICogMTAyNCwgbnVsbHB0cik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAyMCk7CisgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMo
d2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTUp
OworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9t
b25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDE2KTsKKyAgICAgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTIpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgLy8gRGVmYXVsdCBjaGFyc2V0IGlzICJpc28tODg1OS0xIi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326773</attachid>
            <date>2017-11-13 11:27:22 -0800</date>
            <delta_ts>2017-11-14 08:49:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171113212721.patch</filename>
            <type>text/plain</type>
            <size>10026</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ2Y2E3MmI3ZGMxZjdj
M2Y2ZWYyY2RjYmVlY2VkY2I5MTRjNDczYy4uMGMwZWI0OTQ4OTU2NDczZGQ3YzMzZGQ4MWVmYzky
M2Y4MGMyZTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTEzICBHYWJy
aWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0
aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd0a1hmdERQSUNoYW5nZWRDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRT
Y3JlZW5EUElPYnNlcnZlckhhbmRsZXIpOgorCiAyMDE3LTExLTEyICBHYWJyaWVsIEl2YXNjdSAg
PGdpdmFzY3VAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZnVuY3Rpb25hbGl0eSB0
byBoYW5kbGUgZm9udCBzaXplcyBpbiBwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTE4OTFhNjEwOWFjZjY2
ZjIxYTA1ZmRhYjI4YWM5ODkwNzNhZTYzYS4uYWVjYTZjNTVhNDUzYTAzZjNhMTVkYzgwZTVkZmNh
YThlM2I1ODMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMS0xMyAgR2Ficmll
bCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQXV0b21hdGlj
YWxseSBhZGp1c3QgZm9udCBzaXplIHdoZW4gZ3RrLXhmdC1kcGkgY2hhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NEaXNwb3Nl
KToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0
X3NldHRpbmdzX2NsYXNzX2luaXQpOgorCiAyMDE3LTExLTEyICBHYWJyaWVsIEl2YXNjdSAgPGdp
dmFzY3VAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZnVuY3Rpb25hbGl0eSB0byBo
YW5kbGUgZm9udCBzaXplcyBpbiBwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oCmluZGV4IDljMjZkODgxOWQxNWZmNzAzNjZlZjFmNGQ1MTRjMDZmNTI2YmM4MDku
LjI0MjM3ZGFjMzE2Yjg5Y2Q2NGRkZDEzODRjZWJjMGI1YWNkNmNlZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtMjUsNiArMjUsMTAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpZiBVU0UoR0xJQikKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU1NjcmVlbjsKIE9CSkNfQ0xBU1Mg
TlNXaW5kb3c7CkBAIC02MCw2ICs2NCw3IEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdl
dCopOwogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogI2lmIFVTRShHTElCKQogZG91
YmxlIHNjcmVlbkRQSSgpOwordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rp
b248dm9pZCgpPiYmKTsKICNlbmRpZgogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
CmluZGV4IGM4ZDA0MWQ1YzkyNmFkMjEyNDc0NWNiMTIwZjkxZGZiMTVkOWVkYmEuLjNmMjgzNmM0
MmMyZjNmYjJjZmE4NDJjYTUxMzc4YTc2ZjY0OTBiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcApAQCAtNDAsNiArNDAsNyBAQAog
CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiw2ICsxMTMsMzIgQEAg
ZG91YmxlIHNjcmVlbkRQSSgpCiAgICAgcmV0dXJuIGNhY2hlZERwaTsKIH0KIAorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyOwor
CitzdGF0aWMgdm9pZCBndGtYZnREUElDaGFuZ2VkQ2FsbGJhY2soKQoreworICAgIGlmIChzY3Jl
ZW5EUElPYnNlcnZlckhhbmRsZXIpCisgICAgICAgICgqc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVy
KSgpOworfQorCit2b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxlcihGdW5jdGlvbjx2b2lk
KCk+JiYgaGFuZGxlcikKK3sKKyAgICBzdGF0aWMgR3RrU2V0dGluZ3MqIGd0a1NldHRpbmdzID0g
Z3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZ3Rr
WGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCA9IDA7CisKKyAgICBpZiAoIWhhbmRsZXIpIHsKKyAgICAg
ICAgaWYgKGd0a1NldHRpbmdzICYmIGd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpIHsKKyAgICAg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChndGtTZXR0aW5ncywgZ3RrWGZ0RHBp
Q2hhbmdlZEhhbmRsZXJJRCk7CisgICAgICAgICAgICBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklE
ID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2NyZWVuRFBJ
T2JzZXJ2ZXJIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKKyAgICBpZiAoZ3RrU2V0dGluZ3Mg
JiYgIWd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpCisgICAgICAgIGd0a1hmdERwaUNoYW5nZWRI
YW5kbGVySUQgPSBnX3NpZ25hbF9jb25uZWN0KGd0a1NldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0
LWRwaSIsIEdfQ0FMTEJBQ0soZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKSwgbnVsbHB0cik7Cit9
CisKIHN0YXRpYyBHZGtTY3JlZW4qIGdldFNjcmVlbihHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAg
ICByZXR1cm4gZ3RrX3dpZGdldF9oYXNfc2NyZWVuKHdpZGdldCkgPyBndGtfd2lkZ2V0X2dldF9z
Y3JlZW4od2lkZ2V0KSA6IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCmluZGV4IGZjZTY3OGMx
OTIxYzg2YTdkYzBhNWQzZTVhZGM3MWYwMTM0MjgyNTYuLmI0YjU5ZGRkM2Q3OWZiMjk2MjIyZDc1
ZmRjYjNlNmVlMTg4ODYwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dw
ZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3Bl
L1BsYXRmb3JtU2NyZWVuV1BFLmNwcApAQCAtNjAsNiArNjAsMTEgQEAgZG91YmxlIHNjcmVlbkRQ
SSgpCiAgICAgcmV0dXJuIDk2OwogfQogCit2b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxl
cihGdW5jdGlvbjx2b2lkKCk+JiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogRmxv
YXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3Bw
CmluZGV4IDRmZWRjYzNlNTFhNzUwYjFmNjdhYTQ0NjBkYWE5ZmMxNGUwNDk3MDYuLmNhMjkzNGRk
NDExZDUwYzU5YTk0ZGQxZGM4YWYzMTFjYzNjMWU2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTc5LDYgKzc5LDcg
QEAgc3RydWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZhdGUgewogICAgIENTdHJpbmcgdXNlckFnZW50
OwogICAgIGJvb2wgYWxsb3dNb2RhbERpYWxvZ3MgeyBmYWxzZSB9OwogICAgIGJvb2wgem9vbVRl
eHRPbmx5IHsgZmFsc2UgfTsKKyAgICBkb3VibGUgc2NyZWVuRHBpIHsgOTYgfTsKIH07CiAKIC8q
KgpAQCAtMTU4LDEyICsxNTksMzggQEAgZW51bSB7CiAjZW5kaWYKIH07CiAKK3N0YXRpYyB2b2lk
IHdlYktpdFNldHRpbmdzRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViQ29yZTo6
c2V0U2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyKG51bGxwdHIpOworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9zZXR0aW5nc19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisKIHN0
YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewog
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9zZXR0aW5nc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1
Y3RlZChvYmplY3QpOwogCi0gICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0gV0VCS0lUX1NFVFRJ
TkdTKG9iamVjdCktPnByaXYtPnByZWZlcmVuY2VzLmdldCgpOworICAgIFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworICAgIFdlYlByZWZlcmVuY2Vz
KiBwcmVmcyA9IHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKTsKICAgICBwcmVmcy0+
c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24odHJ1ZSk7CisKKyAgICBzZXR0aW5ncy0+
cHJpdi0+c2NyZWVuRHBpID0gV2ViQ29yZTo6c2NyZWVuRFBJKCk7CisgICAgV2ViQ29yZTo6c2V0
U2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyKFtzZXR0aW5nc10oKSB7CisgICAgICAgIGF1dG8gbmV3
U2NyZWVuRHBpID0gV2ViQ29yZTo6c2NyZWVuRFBJKCk7CisgICAgICAgIGlmIChuZXdTY3JlZW5E
cGkgPT0gc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRwaSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBhdXRvIHNjYWxpbmdGYWN0b3IgPSBuZXdTY3JlZW5EcGkgLyBzZXR0aW5ncy0+cHJp
di0+c2NyZWVuRHBpOworICAgICAgICBhdXRvIHByZXZGb250U2l6ZSA9IHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZvbnRTaXplKCk7CisgICAgICAgIGF1dG8gcHJldk1vbm9z
cGFjZUZvbnRTaXplID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rml4ZWRG
b250U2l6ZSgpOworCisgICAgICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVm
YXVsdEZvbnRTaXplKHN0ZDo6cm91bmQocHJldkZvbnRTaXplICogc2NhbGluZ0ZhY3RvcikpOwor
ICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250
LXNpemUiKTsKKworICAgICAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1
bHRGaXhlZEZvbnRTaXplKHN0ZDo6cm91bmQocHJldk1vbm9zcGFjZUZvbnRTaXplICogc2NhbGlu
Z0ZhY3RvcikpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZGVmYXVsdC1tb25vc3BhY2UtZm9udC1zaXplIik7CisKKyAgICAgICAgc2V0dGluZ3MtPnByaXYt
PnNjcmVlbkRwaSA9IG5ld1NjcmVlbkRwaTsKKyAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpAQCAtNTEyLDYgKzUzOSw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdz
Q2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1Moa2xhc3MpOwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJLaXRT
ZXR0aW5nc0NvbnN0cnVjdGVkOworICAgIGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYktpdFNl
dHRpbmdzRGlzcG9zZTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYktpdFNl
dHRpbmdzU2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJL
aXRTZXR0aW5nc0dldFByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYWZjM2IzNzg3NDE1NGMyM2QyN2IxMTFmNzc4MWUwMDYyMjZj
OWM5Zi4uYTY2NjUyMTZhMmRhODI5MmVmMGMyZjA3ODAxYTdmODkxYmE1YTFiZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTExLTEzICBHYWJyaWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBBdXRvbWF0aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRw
aSBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDI2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKwogMjAxNy0xMS0xMiAgR2Ficmll
bCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGZ1bmN0
aW9uYWxpdHkgdG8gaGFuZGxlIGZvbnQgc2l6ZXMgaW4gcG9pbnRzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDExNWI1M2M4YmEzN2NhNmNiMmI2NjVjNGU3OTBjM2Q5OWQ5NTBiOTAuLjA5ZWVj
Y2VmYzg1MWFlZjBjZTIyOWMxYzc3ZTUyYWVlZWQ5MDAyYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwCkBAIC0xNjgsNiArMTY4LDMxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhU
ZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBBdCA5NiBEUEksIDggcGl4ZWxzIGlzIDYgcG9p
bnRzIGFuZCAyNCBwaXhlbHMgaXMgMTggcG9pbnRzLgogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMoOCksID09LCA2KTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRzKDI0KSwgPT0sIDE4
KTsKKworICAgIC8vIFRlc3QgZm9udCBzaXplIG9uIERQSSBjaGFuZ2UuIFRoZSBmb250IHNpemUg
dmFsdWUgaW4gcGl4ZWxzIHNob3VsZCBzY2FsZQorICAgIC8vIGFjY29yZGluZ2x5LCB3aGlsZSB0
aGUgZm9udCBzaXplIHZhbHVlIGluIHBvaW50cyBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgorICAg
IGlmIChndGtTZXR0aW5ncykgeworICAgICAgICAvLyBBdCA5NiBEUEksIDIwIHBpeGVscyBpcyAx
NSBwb2ludHMuCisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X3NpemUo
c2V0dGluZ3MsIDIwKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3Nf
Zm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXpl
KHNldHRpbmdzKSksID09LCAxNSk7CisgICAgICAgIC8vIEF0IDk2IERQSSwgMTYgcGl4ZWxzIGlz
IDEyIHBvaW50cy4KKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFj
ZV9mb250X3NpemUoc2V0dGluZ3MsIDE2KTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJr
aXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTIpOworCisgICAgICAgIC8v
IFNldCBEUEkgdG8gMTIwLiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgMTIwIC8gOTYgPT0gMS4yNS4K
KyAgICAgICAgZ19vYmplY3Rfc2V0KGd0a1NldHRpbmdzLCAiZ3RrLXhmdC1kcGkiLCAxMjAgKiAx
MDI0LCBudWxscHRyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDI1KTsKKyAgICAgICAgZ19hc3Nl
cnRfY21wdWludCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRpbmdzKSksID09LCAxNSk7CisgICAgICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X21vbm9zcGFjZV9m
b250X3NpemUoc2V0dGluZ3MpLCA9PSwgMjApOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdl
YmtpdF9zZXR0aW5nc19mb250X3NpemVfdG9fcG9pbnRzKHdlYmtpdF9zZXR0aW5nc19nZXRfZGVm
YXVsdF9tb25vc3BhY2VfZm9udF9zaXplKHNldHRpbmdzKSksID09LCAxMik7CisKKyAgICAgICAg
Ly8gU2V0IERQSSBiYWNrIHRvIDk2LiBUaGUgc2NhbGluZyBmYWN0b3IgaXMgOTYgLyAxMjAgPT0g
MC44LgorICAgICAgICBnX29iamVjdF9zZXQoZ3RrU2V0dGluZ3MsICJndGsteGZ0LWRwaSIsIDk2
ICogMTAyNCwgbnVsbHB0cik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRp
bmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncyksID09LCAyMCk7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2ZvbnRfc2l6ZV90b19wb2ludHMod2Via2l0
X3NldHRpbmdzX2dldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTUpOworICAg
ICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9tb25vc3Bh
Y2VfZm9udF9zaXplKHNldHRpbmdzKSwgPT0sIDE2KTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfc2V0dGluZ3NfZm9udF9zaXplX3RvX3BvaW50cyh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncykpLCA9PSwgMTIpOworICAgIH0K
ICNlbmRpZgogCiAgICAgLy8gRGVmYXVsdCBjaGFyc2V0IGlzICJpc28tODg1OS0xIi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326881</attachid>
            <date>2017-11-14 08:49:19 -0800</date>
            <delta_ts>2017-11-15 03:20:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171114184917.patch</filename>
            <type>text/plain</type>
            <size>7072</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk4Mjg4MjMxYzE1YzRj
YTk2OGRmYTRlOTY1MmI0YTZkNDdkNTE5MC4uMjAwNjE2ZGEyYWQ0MjI5M2NlZjQyZjM5ODA1Nzc1
Y2M0MzZmZjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTExLTE0ICBHYWJy
aWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0
aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAg
ICBTb21lIGZvbGxvdy11cCBmaXhlcyBmb3IgdGhlIHByZXZpb3VzIHBhdGNoLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVl
bkRQSU9ic2VydmVySGFuZGxlcik6CisKIDIwMTctMTEtMTQgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDYWlyb10gUGVyZm9ybSBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUgbWV0aG9kIGNhbGxzIGZyb20gQ2Fpcm9PcGVyYXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDQ4YTBhMzcwNzQyODMwMGM4NGRhZDViOTcyMjg0OGQxMDg3M2YyZWQuLjcwMDY2YjQ3
N2I2NjdlZjQ2OWQyZDhiM2E3MTM2MTA2NTU5YmQyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTctMTEtMTQgIEdhYnJpZWwgSXZhc2N1ICA8Z2l2YXNjdUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEF1dG9tYXRpY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZSB3aGVuIGd0ay14ZnQt
ZHBpIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjY3MworCisgICAgICAgIFNvbWUgZm9sbG93LXVwIGZpeGVzIGZvciB0aGUgcHJldmlv
dXMgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAod2Vi
S2l0U2V0dGluZ3NEaXNwb3NlKToKKyAgICAgICAgKHdlYktpdFNldHRpbmdzQ29uc3RydWN0ZWQp
OgorCiAyMDE3LTExLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgR2l2ZSBhIFNlcnZpY2VXb3JrZXIgV2ViQ29udGVudFByb2Nlc3MgYSBkaWZmZXJl
bnQgZGlzcGxheSBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApp
bmRleCAyNDIzN2RhYzMxNmI4OWNkNjRkZGQxMzg0Y2ViYzBiNWFjZDZjZWQ0Li5mOTA5MTVlOWJm
ZDQzNTY2YTk2MGQ1ODZjMTA2MzIzMTFlZWFiYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU2NyZWVuLmgKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJv
bWUoV2lkZ2V0Kik7CiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAjaWYgVVNFKEdM
SUIpCiBkb3VibGUgc2NyZWVuRFBJKCk7Ci12b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFuZGxl
cihGdW5jdGlvbjx2b2lkKCk+JiYpOwordm9pZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIo
RnVuY3Rpb248dm9pZCgpPiYmLCB2b2lkKik7CiAjZW5kaWYKIAogRmxvYXRSZWN0IHNjcmVlblJl
Y3QoV2lkZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1TY3JlZW5HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
U2NyZWVuR3RrLmNwcAppbmRleCAzZjI4MzZjNDJjMmYzZmIyY2ZhODQyY2E1MTM3OGE3NmY2NDkw
YjFjLi5jZWE2YWZkYjlmNzQ4Y2NlNjhjN2NiMDZhNGRjNjQ5MmUzZGRiMmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMywzMCArMTEzLDMxIEBAIGRvdWJsZSBzY3JlZW5EUEko
KQogICAgIHJldHVybiBjYWNoZWREcGk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZ1bmN0
aW9uPHZvaWQoKT4+IHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcjsKK3N0YXRpYyBzdGQ6OnVub3Jk
ZXJlZF9tYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+IG1fc2NyZWVuRFBJT2JzZXJ2ZXJIYW5k
bGVyc01hcDsKIAogc3RhdGljIHZvaWQgZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKCkKIHsKLSAg
ICBpZiAoc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyKQotICAgICAgICAoKnNjcmVlbkRQSU9ic2Vy
dmVySGFuZGxlcikoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3NjcmVlbkRQSU9i
c2VydmVySGFuZGxlcnNNYXApCisgICAgICAgIHBhaXIuc2Vjb25kKCk7CiB9CiAKLXZvaWQgc2V0
U2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVyKQordm9p
ZCBzZXRTY3JlZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIs
IHZvaWQqIGNvbnRleHQpCiB7CiAgICAgc3RhdGljIEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncyA9
IGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGd0
a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSAwOwogCi0gICAgaWYgKCFoYW5kbGVyKSB7Ci0gICAg
ICAgIGlmIChndGtTZXR0aW5ncyAmJiBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7Ci0gICAg
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZ3RrU2V0dGluZ3MsIGd0a1hmdERw
aUNoYW5nZWRIYW5kbGVySUQpOwotICAgICAgICAgICAgZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJ
RCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOworICAgIGlmIChoYW5kbGVyKQorICAg
ICAgICBtX3NjcmVlbkRQSU9ic2VydmVySGFuZGxlcnNNYXBbY29udGV4dF0gPSBXVEZNb3ZlKGhh
bmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgbV9zY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFw
LmVyYXNlKGNvbnRleHQpOworCisgICAgaWYgKG1fc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyc01h
cC5zaXplKCkgPiAwKSB7CisgICAgICAgIGlmIChndGtTZXR0aW5ncyAmJiAhZ3RrWGZ0RHBpQ2hh
bmdlZEhhbmRsZXJJRCkKKyAgICAgICAgICAgIGd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSBn
X3NpZ25hbF9jb25uZWN0KGd0a1NldHRpbmdzLCAibm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FM
TEJBQ0soZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKSwgbnVsbHB0cik7CisgICAgfSBlbHNlIGlm
IChndGtTZXR0aW5ncyAmJiBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7CisgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChndGtTZXR0aW5ncywgZ3RrWGZ0RHBpQ2hhbmdlZEhh
bmRsZXJJRCk7CisgICAgICAgIGd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSAwOwogICAgIH0K
LQotICAgIHNjcmVlbkRQSU9ic2VydmVySGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7Ci0gICAg
aWYgKGd0a1NldHRpbmdzICYmICFndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKQotICAgICAgICBn
dGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEID0gZ19zaWduYWxfY29ubmVjdChndGtTZXR0aW5ncywg
Im5vdGlmeTo6Z3RrLXhmdC1kcGkiLCBHX0NBTExCQUNLKGd0a1hmdERQSUNoYW5nZWRDYWxsYmFj
ayksIG51bGxwdHIpOwogfQogCiBzdGF0aWMgR2RrU2NyZWVuKiBnZXRTY3JlZW4oR3RrV2lkZ2V0
KiB3aWRnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZv
cm1TY3JlZW5XUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2Ny
ZWVuV1BFLmNwcAppbmRleCBiNGI1OWRkZDNkNzlmYjI5NjIyMmQ3NWZkY2IzZTZlZTE4ODg2MDRh
Li5hMmQwNzliMGMxNTczOWNjNGU2ZjYxY2Y2OTMxZTE3MGNiMDBhNWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgZG91YmxlIHNjcmVlbkRQSSgpCiAgICAgcmV0dXJuIDk2OwogfQogCi12b2lkIHNl
dFNjcmVlbkRQSU9ic2VydmVySGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JiYpCit2b2lkIHNldFNj
cmVlbkRQSU9ic2VydmVySGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JiYsIHZvaWQqKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggY2EyOTM0ZGQ0MTFkNTBjNTlhOTRkZDFk
YzhhZjMxMWNjM2MxZTY3YS4uNWY0MGVhMzEwYzAzNGM5NjkwY2JmZmE4OGYyNjY1Y2FlNzVlOTk2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNl
dHRpbmdzLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGVudW0gewogCiBzdGF0aWMgdm9pZCB3ZWJL
aXRTZXR0aW5nc0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewotICAgIFdlYkNvcmU6OnNldFNj
cmVlbkRQSU9ic2VydmVySGFuZGxlcihudWxscHRyKTsKKyAgICBXZWJDb3JlOjpzZXRTY3JlZW5E
UElPYnNlcnZlckhhbmRsZXIobnVsbHB0ciwgb2JqZWN0KTsKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCkBAIC0x
ODAsMTcgKzE4MCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0NvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHNjYWxp
bmdGYWN0b3IgPSBuZXdTY3JlZW5EcGkgLyBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRHBpOwotICAg
ICAgICBhdXRvIHByZXZGb250U2l6ZSA9IHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVm
YXVsdEZvbnRTaXplKCk7Ci0gICAgICAgIGF1dG8gcHJldk1vbm9zcGFjZUZvbnRTaXplID0gc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rml4ZWRGb250U2l6ZSgpOwotCi0gICAg
ICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKHN0ZDo6
cm91bmQocHJldkZvbnRTaXplICogc2NhbGluZ0ZhY3RvcikpOwotICAgICAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUiKTsKLQotICAgICAg
ICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKHN0
ZDo6cm91bmQocHJldk1vbm9zcGFjZUZvbnRTaXplICogc2NhbGluZ0ZhY3RvcikpOwotICAgICAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1tb25vc3BhY2Ut
Zm9udC1zaXplIik7Ci0KKyAgICAgICAgYXV0byBmb250U2l6ZSA9IHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy0+ZGVmYXVsdEZvbnRTaXplKCk7CisgICAgICAgIGF1dG8gbW9ub3NwYWNlRm9u
dFNpemUgPSBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXpl
KCk7CiAgICAgICAgIHNldHRpbmdzLT5wcml2LT5zY3JlZW5EcGkgPSBuZXdTY3JlZW5EcGk7Ci0g
ICAgfSk7CisKKyAgICAgICAgZ19vYmplY3RfZnJlZXplX25vdGlmeShHX09CSkVDVChzZXR0aW5n
cykpOworICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfZm9udF9zaXplKHNldHRp
bmdzLCBzdGQ6OnJvdW5kKGZvbnRTaXplICogc2NhbGluZ0ZhY3RvcikpOworICAgICAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShzZXR0aW5ncywgc3Rk
Ojpyb3VuZChtb25vc3BhY2VGb250U2l6ZSAqIHNjYWxpbmdGYWN0b3IpKTsKKyAgICAgICAgZ19v
YmplY3RfdGhhd19ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpKTsKKyAgICB9LCBvYmplY3QpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNw
ZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326975</attachid>
            <date>2017-11-15 03:20:18 -0800</date>
            <delta_ts>2017-11-15 04:06:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142673-20171115132017.patch</filename>
            <type>text/plain</type>
            <size>7295</size>
            <attacher name="Gabriel Ivașcu">givascu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk4Mjg4MjMxYzE1YzRj
YTk2OGRmYTRlOTY1MmI0YTZkNDdkNTE5MC4uYTZhNGJhZmYzNjRmZWU3OTNkMzZiOWYyYTg3ZmJh
NWY3OGFjYjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTExLTE1ICBHYWJy
aWVsIEl2YXNjdSAgPGdpdmFzY3VAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBdXRvbWF0
aWNhbGx5IGFkanVzdCBmb250IHNpemUgd2hlbiBndGsteGZ0LWRwaSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzMKKworICAgICAg
ICBTb21lIGZvbGxvdy11cCBmaXhlcyBmb3IgdGhlIHByZXZpb3VzIHBhdGNoLgorCisgICAgICAg
IFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyc01hcCk6
CisgICAgICAgIChXZWJDb3JlOjpndGtYZnREUElDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6c2V0U2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U2NyZWVu
RFBJT2JzZXJ2ZXJIYW5kbGVyKToKKwogMjAxNy0xMS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NhaXJvXSBQZXJmb3JtIEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZSBtZXRob2QgY2FsbHMgZnJvbSBDYWlyb09wZXJhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDhhMGEzNzA3NDI4MzAwYzg0ZGFkNWI5NzIyODQ4ZDEwODczZjJlZC4uYmYwY2RhODQw
NTk4Mzc0ZDdlOTEwOGI0OTRmMTU1ZTY1ODg2OWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNy0xMS0xNSAgR2FicmllbCBJdmFzY3UgIDxnaXZhc2N1QGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS10gQXV0b21hdGljYWxseSBhZGp1c3QgZm9udCBzaXplIHdoZW4gZ3RrLXhmdC1k
cGkgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNjczCisKKyAgICAgICAgU29tZSBmb2xsb3ctdXAgZml4ZXMgZm9yIHRoZSBwcmV2aW91
cyBwYXRjaC4KKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAg
ICh3ZWJLaXRTZXR0aW5nc0Rpc3Bvc2UpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NDb25zdHJ1
Y3RlZCk6CisKIDIwMTctMTEtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBHaXZlIGEgU2VydmljZVdvcmtlciBXZWJDb250ZW50UHJvY2VzcyBhIGRp
ZmZlcmVudCBkaXNwbGF5IG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5oCmluZGV4IDI0MjM3ZGFjMzE2Yjg5Y2Q2NGRkZDEzODRjZWJjMGI1YWNkNmNlZDQuLmY5MDkx
NWU5YmZkNDM1NjZhOTYwZDU4NmMxMDYzMjMxMWVlYWJhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtNjQsNyArNjQsNyBAQCBib29sIHNjcmVlbklzTW9u
b2Nocm9tZShXaWRnZXQqKTsKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICNpZiBV
U0UoR0xJQikKIGRvdWJsZSBzY3JlZW5EUEkoKTsKLXZvaWQgc2V0U2NyZWVuRFBJT2JzZXJ2ZXJI
YW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7Cit2b2lkIHNldFNjcmVlbkRQSU9ic2VydmVySGFu
ZGxlcihGdW5jdGlvbjx2b2lkKCk+JiYsIHZvaWQqKTsKICNlbmRpZgogCiBGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdChXaWRnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1TY3JlZW5HdGsuY3BwCmluZGV4IDNmMjgzNmM0MmMyZjNmYjJjZmE4NDJjYTUxMzc4YTc2
ZjY0OTBiMWMuLjM5NWRmZTU0NmM0ZWFiNjkwYzI2MTNjYzM5N2U4NWFkZjgwZjMyZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcApA
QCAtNDAsNyArNDAsOCBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTEzLDMwICsxMTQsMzggQEAgZG91YmxlIHNjcmVlbkRQSSgpCiAgICAgcmV0dXJuIGNhY2hl
ZERwaTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gc2NyZWVu
RFBJT2JzZXJ2ZXJIYW5kbGVyOworc3RhdGljIFdURjo6SGFzaE1hcDx2b2lkKiwgRnVuY3Rpb248
dm9pZCgpPj4mIHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcnNNYXAoKQoreworICAgIHN0YXRpYyBX
VEY6Ok5ldmVyRGVzdHJveWVkPFdURjo6SGFzaE1hcDx2b2lkKiwgRnVuY3Rpb248dm9pZCgpPj4+
IGhhbmRsZXJzTWFwOworICAgIHJldHVybiBoYW5kbGVyc01hcDsKK30KIAogc3RhdGljIHZvaWQg
Z3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKCkKIHsKLSAgICBpZiAoc2NyZWVuRFBJT2JzZXJ2ZXJI
YW5kbGVyKQotICAgICAgICAoKnNjcmVlbkRQSU9ic2VydmVySGFuZGxlcikoKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGtleVZhbHVlUGFpciA6IHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcnNNYXAo
KSkKKyAgICAgICAga2V5VmFsdWVQYWlyLnZhbHVlKCk7CiB9CiAKLXZvaWQgc2V0U2NyZWVuRFBJ
T2JzZXJ2ZXJIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVyKQordm9pZCBzZXRTY3Jl
ZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIsIHZvaWQqIGNv
bnRleHQpCiB7CiAgICAgc3RhdGljIEd0a1NldHRpbmdzKiBndGtTZXR0aW5ncyA9IGd0a19zZXR0
aW5nc19nZXRfZGVmYXVsdCgpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGd0a1hmdERwaUNo
YW5nZWRIYW5kbGVySUQgPSAwOwogCi0gICAgaWYgKCFoYW5kbGVyKSB7Ci0gICAgICAgIGlmIChn
dGtTZXR0aW5ncyAmJiBndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7Ci0gICAgICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZ3RrU2V0dGluZ3MsIGd0a1hmdERwaUNoYW5nZWRI
YW5kbGVySUQpOwotICAgICAgICAgICAgZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCA9IDA7Ci0g
ICAgICAgIH0KKyAgICBpZiAoIWd0a1NldHRpbmdzKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
Ci0gICAgc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKLSAgICBp
ZiAoZ3RrU2V0dGluZ3MgJiYgIWd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQpCi0gICAgICAgIGd0
a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSBnX3NpZ25hbF9jb25uZWN0KGd0a1NldHRpbmdzLCAi
bm90aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNr
KSwgbnVsbHB0cik7CisgICAgaWYgKGhhbmRsZXIpCisgICAgICAgIHNjcmVlbkRQSU9ic2VydmVy
SGFuZGxlcnNNYXAoKS5zZXQoY29udGV4dCwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgZWxzZQor
ICAgICAgICBzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFwKCkucmVtb3ZlKGNvbnRleHQpOwor
CisgICAgaWYgKCFzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFwKCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmICghZ3RrWGZ0RHBpQ2hhbmdlZEhhbmRsZXJJRCkKKyAgICAgICAgICAgIGd0a1hm
dERwaUNoYW5nZWRIYW5kbGVySUQgPSBnX3NpZ25hbF9jb25uZWN0KGd0a1NldHRpbmdzLCAibm90
aWZ5OjpndGsteGZ0LWRwaSIsIEdfQ0FMTEJBQ0soZ3RrWGZ0RFBJQ2hhbmdlZENhbGxiYWNrKSwg
bnVsbHB0cik7CisgICAgfSBlbHNlIGlmIChndGtYZnREcGlDaGFuZ2VkSGFuZGxlcklEKSB7Cisg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChndGtTZXR0aW5ncywgZ3RrWGZ0RHBp
Q2hhbmdlZEhhbmRsZXJJRCk7CisgICAgICAgIGd0a1hmdERwaUNoYW5nZWRIYW5kbGVySUQgPSAw
OworICAgIH0KIH0KIAogc3RhdGljIEdka1NjcmVlbiogZ2V0U2NyZWVuKEd0a1dpZGdldCogd2lk
Z2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2Ny
ZWVuV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQ
RS5jcHAKaW5kZXggYjRiNTlkZGQzZDc5ZmIyOTYyMjJkNzVmZGNiM2U2ZWUxODg4NjA0YS4uYTJk
MDc5YjBjMTU3MzljYzRlNmY2MWNmNjkzMWUxNzBjYjAwYTVlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCkBAIC02MCw3ICs2MCw3
IEBAIGRvdWJsZSBzY3JlZW5EUEkoKQogICAgIHJldHVybiA5NjsKIH0KIAotdm9pZCBzZXRTY3Jl
ZW5EUElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmKQordm9pZCBzZXRTY3JlZW5E
UElPYnNlcnZlckhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmLCB2b2lkKikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGNhMjkzNGRkNDExZDUwYzU5YTk0ZGQxZGM4YWYz
MTFjYzNjMWU2N2EuLjVmNDBlYTMxMGMwMzRjOTY5MGNiZmZhODhmMjY2NWNhZTc1ZTk5NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5n
cy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBlbnVtIHsKIAogc3RhdGljIHZvaWQgd2ViS2l0U2V0
dGluZ3NEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXZWJDb3JlOjpzZXRTY3JlZW5E
UElPYnNlcnZlckhhbmRsZXIobnVsbHB0cik7CisgICAgV2ViQ29yZTo6c2V0U2NyZWVuRFBJT2Jz
ZXJ2ZXJIYW5kbGVyKG51bGxwdHIsIG9iamVjdCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIApAQCAtMTgwLDE3
ICsxODAsMTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBzY2FsaW5nRmFj
dG9yID0gbmV3U2NyZWVuRHBpIC8gc2V0dGluZ3MtPnByaXYtPnNjcmVlbkRwaTsKLSAgICAgICAg
YXV0byBwcmV2Rm9udFNpemUgPSBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRG
b250U2l6ZSgpOwotICAgICAgICBhdXRvIHByZXZNb25vc3BhY2VGb250U2l6ZSA9IHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKLQotICAgICAgICBz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNldERlZmF1bHRGb250U2l6ZShzdGQ6OnJvdW5k
KHByZXZGb250U2l6ZSAqIHNjYWxpbmdGYWN0b3IpKTsKLSAgICAgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHNldHRpbmdzKSwgImRlZmF1bHQtZm9udC1zaXplIik7Ci0KLSAgICAgICAgc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdGQ6OnJv
dW5kKHByZXZNb25vc3BhY2VGb250U2l6ZSAqIHNjYWxpbmdGYWN0b3IpKTsKLSAgICAgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQt
c2l6ZSIpOwotCisgICAgICAgIGF1dG8gZm9udFNpemUgPSBzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMtPmRlZmF1bHRGb250U2l6ZSgpOworICAgICAgICBhdXRvIG1vbm9zcGFjZUZvbnRTaXpl
ID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rml4ZWRGb250U2l6ZSgpOwog
ICAgICAgICBzZXR0aW5ncy0+cHJpdi0+c2NyZWVuRHBpID0gbmV3U2NyZWVuRHBpOwotICAgIH0p
OworCisgICAgICAgIGdfb2JqZWN0X2ZyZWV6ZV9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpKTsK
KyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShzZXR0aW5ncywg
c3RkOjpyb3VuZChmb250U2l6ZSAqIHNjYWxpbmdGYWN0b3IpKTsKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9kZWZhdWx0X21vbm9zcGFjZV9mb250X3NpemUoc2V0dGluZ3MsIHN0ZDo6cm91
bmQobW9ub3NwYWNlRm9udFNpemUgKiBzY2FsaW5nRmFjdG9yKSk7CisgICAgICAgIGdfb2JqZWN0
X3RoYXdfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSk7CisgICAgfSwgb2JqZWN0KTsKIH0KIAog
c3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>