<?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>111246</bug_id>
          
          <creation_ts>2013-03-02 00:15:25 -0800</creation_ts>
          <short_desc>PDFPlugin: Hook up Services</short_desc>
          <delta_ts>2013-03-04 14:00:39 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>845755</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-02 00:15:25 -0800</bug_when>
    <thetext>OS X Services, that is.

&lt;rdar://problem/13062672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845764</commentid>
    <comment_count>1</comment_count>
      <attachid>191099</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-02 00:40:11 -0800</bug_when>
    <thetext>Created attachment 191099
preliminary patch

Missing a changelog and support for services that consume rich text data (e.g. New Email with Selection). Not sure how to best implement that yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845882</commentid>
    <comment_count>2</comment_count>
      <attachid>191119</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-02 16:47:39 -0800</bug_when>
    <thetext>Created attachment 191119
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845883</commentid>
    <comment_count>3</comment_count>
      <attachid>191120</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-02 17:00:11 -0800</bug_when>
    <thetext>Created attachment 191120
delete some duplicated code now that we can use pluginViewForFrame in WebPageMac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845892</commentid>
    <comment_count>4</comment_count>
      <attachid>191120</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-02 18:24:04 -0800</bug_when>
    <thetext>Comment on attachment 191120
delete some duplicated code now that we can use pluginViewForFrame in WebPageMac

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

r=me assuming that you tested how this affects Flash.

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:270
&gt; +    virtual String getStringSelection() const = 0;

This function name doesn&apos;t look grammatically correct to me. Perhaps &quot;get string for selection&quot; or &quot;get selection string&quot; would be better?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp:190
&gt; -    EditorState state = m_page-&gt;editorState();
&gt; -
&gt; -    m_page-&gt;send(Messages::WebPageProxy::EditorStateChanged(state));
&gt; +    m_page-&gt;didChangeSelection();

Should the rest of the function go to Page now? I think that it&apos;s best to not have much logic in WebEditorClient.cpp.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:566
&gt; +        if (pluginView-&gt;getStringSelection() != emptyString()) {

Using a special value for in-band error reporting doesn&apos;t seem to cause any issues here, but it would be nicer to not overload String semantics. If doing it differently is much harder, perhaps null could be the special value, not empty?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:662
&gt; +        if (selection != emptyString()) {
&gt; +            stringValue = selection;

What is the danger in returning the empty string? Please add a comment to the code, because it looks surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845895</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-02 18:31:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 191120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191120&amp;action=review
&gt; 
&gt; r=me assuming that you tested how this affects Flash.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:270
&gt; &gt; +    virtual String getStringSelection() const = 0;
&gt; 
&gt; This function name doesn&apos;t look grammatically correct to me. Perhaps &quot;get string for selection&quot; or &quot;get selection string&quot; would be better?

I thought the same thing, but this is the name that Pasteboard and WebPage already use...

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp:190
&gt; &gt; -    EditorState state = m_page-&gt;editorState();
&gt; &gt; -
&gt; &gt; -    m_page-&gt;send(Messages::WebPageProxy::EditorStateChanged(state));
&gt; &gt; +    m_page-&gt;didChangeSelection();
&gt; 
&gt; Should the rest of the function go to Page now? I think that it&apos;s best to not have much logic in WebEditorClient.cpp.

Don&apos;t see why not.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:566
&gt; &gt; +        if (pluginView-&gt;getStringSelection() != emptyString()) {
&gt; 
&gt; Using a special value for in-band error reporting doesn&apos;t seem to cause any issues here, but it would be nicer to not overload String semantics. If doing it differently is much harder, perhaps null could be the special value, not empty?

Probably a good plan.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:662
&gt; &gt; +        if (selection != emptyString()) {
&gt; &gt; +            stringValue = selection;
&gt; 
&gt; What is the danger in returning the empty string? Please add a comment to the code, because it looks surprising.

No danger, I was just trying to keep the behavior precisely the same in the case where the plugin doesn&apos;t support getStringSelection() (i.e. all non-PDFPlugin plugins).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846167</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-03 23:14:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp:190
&gt; &gt; &gt; -    EditorState state = m_page-&gt;editorState();
&gt; &gt; &gt; -
&gt; &gt; &gt; -    m_page-&gt;send(Messages::WebPageProxy::EditorStateChanged(state));
&gt; &gt; &gt; +    m_page-&gt;didChangeSelection();
&gt; &gt; 
&gt; &gt; Should the rest of the function go to Page now? I think that it&apos;s best to not have much logic in WebEditorClient.cpp.
&gt; 
&gt; Don&apos;t see why not.

To clarify, you just meant the call to updateGlobalSelection (and the implementation of updateGlobalSelection), right? Not the InjectedBundleEditorClient notification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846188</commentid>
    <comment_count>7</comment_count>
      <attachid>191165</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-04 00:10:09 -0800</bug_when>
    <thetext>Created attachment 191165
patch

Still some things to discuss with Alexey, but I renamed getStringSelection -&gt; getSelectionString (seems more important to have a good name here than match the rest of the code) and switched to using a null string for the &quot;there is no selection&quot; case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846557</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-04 09:18:18 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Should the rest of the function go to Page now? I think that it&apos;s best to not have much logic in WebEditorClient.cpp.

&gt; To clarify, you just meant the call to updateGlobalSelection (and the implementation of updateGlobalSelection), right? Not the InjectedBundleEditorClient notification.

Honestly, I did not look at what else the function did, so this was truly a question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846830</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-04 13:57:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/144670</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191099</attachid>
            <date>2013-03-02 00:40:11 -0800</date>
            <delta_ts>2013-03-02 16:47:39 -0800</delta_ts>
            <desc>preliminary patch</desc>
            <filename>pdf-services.diff</filename>
            <type>text/plain</type>
            <size>11086</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZjU0ZjkxYi4uMTVhMmVlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKQEAgLTI1Miw2ICsyNTIsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5n
IGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7IH0KKwogICAgIHZvaWQgdXBkYXRlTlBOUHJpdmF0ZU1vZGUoKTsKIAogI2lmIFBMVUdJTl9B
UkNISVRFQ1RVUkUoV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRleCBi
YWU4YzQ0Li4zZjZiM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAt
MzgsNiArMzgsNyBAQAogLSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJv
bGxlciAqKXBkZkxheWVyQ29udHJvbGxlciBjbGlja2VkTGlua1dpdGhVUkw6KE5TVVJMICopdXJs
OwogLSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJvbGxlciAqKXBkZkxh
eWVyQ29udHJvbGxlciBkaWRDaGFuZ2VDb250ZW50U2NhbGVGYWN0b3I6KENHRmxvYXQpc2NhbGVG
YWN0b3I7CiAtICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICop
cGRmTGF5ZXJDb250cm9sbGVyIGRpZENoYW5nZURpc3BsYXlNb2RlOihpbnQpbW9kZTsKKy0gKHZv
aWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZMYXllckNvbnRy
b2xsZXIgZGlkQ2hhbmdlU2VsZWN0aW9uOihQREZTZWxlY3Rpb24gKilzZWxlY3Rpb247CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKaW5kZXggYmQ0OTM5Yy4uZmFiYjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC03Miw2ICs3Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5vdGlmeUNvbnRlbnRTY2FsZUZhY3RvckNoYW5nZWQoQ0dGbG9hdCBzY2Fs
ZUZhY3Rvcik7CiAgICAgdm9pZCBub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KTsKIAorICAg
IHZvaWQgbm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKik7CisKICAgICB2b2lk
IGNsaWNrZWRMaW5rKE5TVVJMICopOwogICAgIHZvaWQgc2F2ZVRvUERGKCk7CiAgICAgdm9pZCBv
cGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCk7CkBAIC0xMDksNiArMTExLDcgQEAgcHJpdmF0ZToK
ICAgICBQREZTZWxlY3Rpb24gKm5leHRNYXRjaEZvclN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdl
dCwgQk9PTCBzZWFyY2hGb3J3YXJkLCBCT09MIGNhc2VTZW5zaXRpdmUsIEJPT0wgd3JhcFNlYXJj
aCwgUERGU2VsZWN0aW9uICppbml0aWFsU2VsZWN0aW9uLCBCT09MIHN0YXJ0SW5TZWxlY3Rpb24p
OwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
Z2V0U3RyaW5nU2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAyZjU5YWY5Li4zNzY1ZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQpAQCAtMTkyLDYgKzE5MiwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0
eWxlID0KICAgICBfcGRmUGx1Z2luLT5ub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQobW9kZSk7CiB9
CiAKKy0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZM
YXllckNvbnRyb2xsZXIgZGlkQ2hhbmdlU2VsZWN0aW9uOihQREZTZWxlY3Rpb24gKilzZWxlY3Rp
b24KK3sKKyAgICBfcGRmUGx1Z2luLT5ub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbik7
Cit9CisKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05NTksNiArOTY0LDE2IEBAIHZv
aWQgUERGUGx1Z2luOjpmb2N1c1ByZXZpb3VzQW5ub3RhdGlvbigpCiAgICAgW21fcGRmTGF5ZXJD
b250cm9sbGVyLmdldCgpIGFjdGl2YXRlTmV4dEFubm90YXRpb246dHJ1ZV07CiB9CiAKK3ZvaWQg
UERGUGx1Z2luOjpub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKFBERlNlbGVjdGlvbiAqKQoreworICAg
IHdlYkZyYW1lKCktPnBhZ2UoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uKCk7Cit9CisKK1N0cmluZyBQ
REZQbHVnaW46OmdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9w
ZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgY3VycmVudFNlbGVjdGlvbl0gc3RyaW5nXTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxl
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBs
ZVBERlBsdWdpbi5oCmluZGV4IDExMGU4YTYuLjUyNmUwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaApAQCAt
MTgwLDYgKzE4MCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVzb3VyY2VE
YXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIHZpcnR1YWwgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKwogICAgIFdlYkNvcmU6OkludFNpemUgbV9z
Y3JvbGxPZmZzZXQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmgKaW5kZXggYTViOTYwZi4uNDMzNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjY3LDYgKzI2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIAorICAgIHZpcnR1YWwgU3RyaW5nIGdldFN0cmlu
Z1NlbGVjdGlvbigpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFBsdWdpbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4
IDU5ZmM3MGMuLmJjYmY3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMzYsNiArMTM2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiAvKiBieXRlcyAq
LywgdW5zaWduZWQmIC8qIGxlbmd0aCAqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0U3RyaW5nU2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorCiAgICAgZmxvYXQgY29udGVudHNTY2FsZUZhY3Rvcigp
OwogICAgIGJvb2wgbmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdDsKICAgICBib29sIHVwZGF0ZUJh
Y2tpbmdTdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGQ5YzIwMDUuLjkzMjkwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTc1MywxNCArNzUzLDI4
IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiAK
IHVuc2lnbmVkIFBsdWdpblZpZXc6OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
CiB7CisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICByZXR1cm4gbV9wbHVnaW4tPmNvdW50RmluZE1hdGNoZXModGFyZ2V0
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1fcGx1Z2luLT5m
aW5kU3RyaW5nKHRhcmdldCwgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CiB9CiAKK1N0cmluZyBQ
bHVnaW5WaWV3OjpnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9pc0lu
aXRpYWxpemVkIHx8ICFtX3BsdWdpbikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICByZXR1cm4gbV9wbHVnaW4tPmdldFN0cmluZ1NlbGVjdGlvbigpOworfQorCiBQYXNzT3du
UHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50KiBldmVu
dCkgY29uc3QKIHsKICAgICBXZWJFdmVudDo6VHlwZSB0eXBlID0gV2ViRXZlbnQ6Ok5vVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDM4NmRhODYuLjE1OWE5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaApAQCAtOTcsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpOwogCisgICAgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0OworCiAgICAgYm9v
bCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCiAgICAgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29u
c3QgdW5zaWduZWQgY2hhciomIGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCBmMzA5YWFjLi4wN2ZiNWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC0xODcsOSArMTg3LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvclN0YXRlIHN0YXRlID0gbV9wYWdlLT5lZGl0b3JTdGF0
ZSgpOwotCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0
YXRlQ2hhbmdlZChzdGF0ZSkpOworICAgIG1fcGFnZS0+ZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CiAK
ICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIHVwZGF0ZUdsb2JhbFNlbGVj
dGlvbihmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggYzRjMWQ0OC4uZDQ2NmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTYxLDYgKzU2MSwxNSBAQCBFZGl0b3JTdGF0
ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgQVNTRVJUKGZyYW1lKTsKIAogICAg
IEVkaXRvclN0YXRlIHJlc3VsdDsKKworICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0g
Zm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZShmcmFtZSkpIHsKKyAgICAgICAgaWYgKHBsdWdpblZp
ZXctPmdldFN0cmluZ1NlbGVjdGlvbigpICE9IGVtcHR5U3RyaW5nKCkpIHsKKyAgICAgICAgICAg
IHJlc3VsdC5zZWxlY3Rpb25Jc05vbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdC5zZWxl
Y3Rpb25Jc1JhbmdlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKyAgICB9CisKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5nZSA9IGZyYW1lLT5zZWxl
Y3Rpb24oKS0+aXNSYW5nZSgpOwogICAgIHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSA9IGZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNDb250ZW50RWRpdGFibGUoKTsKQEAgLTY5Myw3ICs3MDIsNyBAQCBQ
YXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKCkK
ICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHZlY3Rvcik7CiB9CiAKLXN0YXRpYyBQ
bHVnaW5WaWV3KiBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK1BsdWdp
blZpZXcqIFdlYlBhZ2U6OmZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC03MDcsNyArNzE2LDcgQEAgc3RhdGljIFBsdWdpblZpZXcqIGZvY3Vz
ZWRQbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBwbHVnaW5WaWV3
OwogfQogCi1zdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFt
ZSkKK1BsdWdpblZpZXcqIFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUp
CiB7CiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTM3NjYsNiArMzc3NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNl
bENvbXBvc2l0aW9uKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVj
dGlvbigpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNo
YW5nZWQoZWRpdG9yU3RhdGUoKSkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnNldE1haW5GcmFtZUlu
Vmlld1NvdXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogewogICAgIG1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKS0+c2V0SW5WaWV3U291cmNlTW9kZShpblZpZXdTb3VyY2VNb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk2ZDU2MTAu
LjQ2MmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNDMwLDYgKzQzMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CisKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
Y29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CkBAIC03ODgsNiArNzkwLDkgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAorICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBm
b2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CisgICAgc3RhdGljIFBs
dWdpblZpZXcqIHBsdWdpblZpZXdGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOworCiAgICAgT3du
UHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZy
YW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9y
d2FyZExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KaW5kZXggNjAyZGU5Yi4uOTVjMTIzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNjU1LDcg
KzY1NSwxNiBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZQogdm9pZCBXZWJQYWdlOjpnZXRTdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyYgc3RyaW5nVmFsdWUpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQorCisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFBsdWdpblZpZXcqIHBs
dWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkgeworICAgICAgICBz
dHJpbmdWYWx1ZSA9IHBsdWdpblZpZXctPmdldFN0cmluZ1NlbGVjdGlvbigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLT5zdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191119</attachid>
            <date>2013-03-02 16:47:39 -0800</date>
            <delta_ts>2013-03-02 17:00:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>pdf-services.diff</filename>
            <type>text/plain</type>
            <size>18121</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2M2MzYzMwLi5hZWQzNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTMtMDMtMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBIb29rIHVwIFNlcnZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEzMDYyNjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgdGhlIEFwcGxpY2F0aW9uLT5TZXJ2aWNlcyBtZW51IHdvcmsgd2hlbiB0aGUg
Zm9jdXNlZCBzZWxlY3Rpb24gaXMgYSBQREZQbHVnaW4uCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpFZGl0b3JTdGF0ZSk6
CisgICAgICAgIChFZGl0b3JTdGF0ZSk6CisgICAgICAgIEFkZCBpc0luUGx1Z2luIHByb3BlcnR5
IHRvIEVkaXRvclN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgdmFsaWRSZXF1ZXN0b3JGb3JTZW5kVHlwZTpyZXR1cm5UeXBl
Ol0pOgorICAgICAgICBJZiB0aGUgc2VsZWN0aW9uIGlzIGN1cnJlbnRseSBpbiBhIFBsdWdpbiwg
d2Ugb25seSBjdXJyZW50bHkgaGF2ZSB0aGUgYWJpbGl0eQorICAgICAgICB0byByZXRyaWV2ZSB0
aGUgc2VsZWN0aW9uIGFzIGEgcGxhaW4tdGV4dCBzdHJpbmcsIHNvIHJlc3RyaWN0IHNlbmRUeXBl
IHRvIE5TU3RyaW5nUGJvYXJkVHlwZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIEFkZCBnZXRTdHJp
bmdTZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVy
Q29udHJvbGxlckRldGFpbHMuaDoKKyAgICAgICAgQWRkIHBkZkxheWVyQ29udHJvbGxlcjpkaWRD
aGFuZ2VTZWxlY3Rpb246IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgIChQREZQbHVnaW4pOgorICAgICAgICBB
ZGQgZ2V0U3RyaW5nU2VsZWN0aW9uIGFuZCBub3RpZnlTZWxlY3Rpb25DaGFuZ2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICgtW1dL
UERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgcGRmTGF5ZXJDb250cm9sbGVyOmRpZENoYW5nZVNl
bGVjdGlvbjpdKToKKyAgICAgICAgRm9yd2FyZCBzZWxlY3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlv
bnMgdG8gb3VyIFBERlBsdWdpbi4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om5vdGlm
eVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICBGb3J3YXJkIHNlbGVjdGlvbiBjaGFuZ2Ugbm90
aWZpY2F0aW9ucyB0byBvdXIgV2ViUGFnZS4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmdldFN0cmluZ1NlbGVjdGlvbik6CisgICAgICAgIFJldHJpZXZlIFBERkxheWVyQ29udHJvbGxl
cidzIHNlbGVjdGlvbiBhcyBhIHBsYWluIHRleHQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmNvdW50RmluZE1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpmaW5kU3RyaW5nKToKKyAgICAgICAgRHJpdmUtYnlzLCBjaGVjayBmb3IgZXhpc3RhbmNlIGFu
ZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGx1Z2luIGJlZm9yZSB1c2luZyBpdC4KKworICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpnZXRTdHJpbmdTZWxlY3Rpb24pOiBBZGRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgVXNlIGRpZENoYW5nZVNlbGVjdGlvbiBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhl
IEVkaXRvclN0YXRlQ2hhbmdlZCBtZXNzYWdlIGRpcmVjdGx5LgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0
b3JTdGF0ZSk6CisgICAgICAgIElmIGEgcGx1Z2luIGlzIGZvY3VzZWQgYW5kIGhhcyBhIHNlbGVj
dGlvbiwgcmV0dXJuIGEgRWRpdG9yU3RhdGUgdGhhdCByZWZsZWN0cyB0aGF0LgorICAgICAgICBT
aW5jZSBQREZzIGFyZW4ndCBlZGl0YWJsZSAod2hlbiBlZGl0aW5nIGFubm90YXRpb25zLCB0aGUg
cGx1Z2luIGRvZXNuJ3QgaGF2ZSBmb2N1cyksCisgICAgICAgIEknbSBub3QgYWRkaW5nIHN1cHBv
cnQgZm9yIHRoZSBlZGl0aW5nLXJlbGF0ZWQgcHJvcGVydGllcyB3aGVuIGEgcGx1Z2luIGhhcyBm
b2N1cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkUGx1Z2luVmlld0ZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKToKKyAg
ICAgICAgTWFrZSB0aGVzZSBjbGFzcyBtZXRob2RzIGluc3RlYWQgb2Ygc3RhdGljIGZ1bmN0aW9u
cyBzbyB3ZSBjYW4gdXNlIHRoZW0gZnJvbQorICAgICAgICBXZWJQYWdlTWFjIHRvbywgaW5zdGVh
ZCBvZiBkdXBsaWNhdGluZyBjb2RlIHRoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbik6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgQWRkIGRpZENoYW5nZVNlbGVjdGlvbiBhbmQgW2ZvY3Vz
ZWRdUGx1Z2luVmlld0ZvckZyYW1lLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgRGVmZXIgdG8gdGhlIGZvY3VzZWQgcGx1Z2lu
IChpZiBpdCBleGlzdHMpIHdoZW4gcmV0cmlldmluZyB0aGUgcGxhaW4tdGV4dCBzZWxlY3Rpb24u
CisKIDIwMTMtMDItMjggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAg
ICAgICAgIFtXSzJdIFJlZmFjdG9yaW5nIDogRml4IGluZGVudGF0aW9uIGFuZCBicmFjZXMgaW4g
V2ViSW5zcGVjdG9yQ2xpZW50Lmh8Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNw
cAppbmRleCA1NTBjYzg3Li40MGE0Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOwogICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CiAgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGlzSW5QbHVnaW47
CiAgICAgZW5jb2RlciA8PCBoYXNDb21wb3NpdGlvbjsKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAt
NzYsNiArNzcsOSBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNJblBsdWdpbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbXBvc2l0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCmluZGV4IGZhNjg3YmQuLmY5YmJhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgICwgaXND
b250ZW50RWRpdGFibGUoZmFsc2UpCiAgICAgICAgICwgaXNDb250ZW50UmljaGx5RWRpdGFibGUo
ZmFsc2UpCiAgICAgICAgICwgaXNJblBhc3N3b3JkRmllbGQoZmFsc2UpCisgICAgICAgICwgaXNJ
blBsdWdpbihmYWxzZSkKICAgICAgICAgLCBoYXNDb21wb3NpdGlvbihmYWxzZSkKICNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgLCBjdXJzb3JQb3NpdGlvbigwKQpAQCAtNTcsNiArNTgsNyBAQCBz
dHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGU7CiAgICAgYm9v
bCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkOwor
ICAgIGJvb2wgaXNJblBsdWdpbjsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uOwogI2lmIFBMQVRG
T1JNKFFUKQogICAgIC8vIFRoZSBhbmNob3IsIGN1cnNvciByZXByZXNlbnQgZWl0aGVyIHRoZSBz
ZWxlY3Rpb24gb3IgY29tcG9zaXRpb24sIGRlcGVuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVkNTQ4YzYuLjE5N2U4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTYwMCwxMyArNjAwLDIyIEBA
IFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogCiAtIChpZCl2YWxpZFJlcXVlc3RvckZv
clNlbmRUeXBlOihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5TU3RyaW5nICopcmV0
dXJuVHlwZQogewotICAgIEJPT0wgaXNWYWxpZFNlbmRUeXBlID0gIXNlbmRUeXBlIHx8IChbUGFz
dGVib2FyZFR5cGVzOjpmb3JTZWxlY3Rpb24oKSBjb250YWluc09iamVjdDpzZW5kVHlwZV0gJiYg
IV9kYXRhLT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc05vbmUpOworICAgIEVkaXRv
clN0YXRlIGVkaXRvclN0YXRlID0gX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIEJP
T0wgaXNWYWxpZFNlbmRUeXBlID0gTk87CisKKyAgICBpZiAoc2VuZFR5cGUgJiYgIWVkaXRvclN0
YXRlLnNlbGVjdGlvbklzTm9uZSkgeworICAgICAgICBpZiAoZWRpdG9yU3RhdGUuaXNJblBsdWdp
bikKKyAgICAgICAgICAgIGlzVmFsaWRTZW5kVHlwZSA9IFtzZW5kVHlwZSBpc0VxdWFsVG9TdHJp
bmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNWYWxp
ZFNlbmRUeXBlID0gW1Bhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkgY29udGFpbnNPYmpl
Y3Q6c2VuZFR5cGVdOworICAgIH0KKwogICAgIEJPT0wgaXNWYWxpZFJldHVyblR5cGUgPSBOTzsK
ICAgICBpZiAoIXJldHVyblR5cGUpCiAgICAgICAgIGlzVmFsaWRSZXR1cm5UeXBlID0gWUVTOwot
ICAgIGVsc2UgaWYgKFtQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKSBjb250YWluc09iamVj
dDpyZXR1cm5UeXBlXSAmJiBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRp
dGFibGUpIHsKKyAgICBlbHNlIGlmIChbUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkgY29u
dGFpbnNPYmplY3Q6cmV0dXJuVHlwZV0gJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUp
IHsKICAgICAgICAgLy8gV2UgY2FuIGluc2VydCBzdHJpbmdzIGluIGFueSBlZGl0YWJsZSBjb250
ZXh0LiAgV2UgY2FuIGluc2VydCBvdGhlciB0eXBlcywgbGlrZSBpbWFnZXMsIG9ubHkgaW4gcmlj
aCBlZGl0IGNvbnRleHRzLgotICAgICAgICBpc1ZhbGlkUmV0dXJuVHlwZSA9IF9kYXRhLT5fcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlwZSBp
c0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgaXNWYWxpZFJldHVy
blR5cGUgPSBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKICAgICB9CiAgICAgaWYgKGlz
VmFsaWRTZW5kVHlwZSAmJiBpc1ZhbGlkUmV0dXJuVHlwZSkKICAgICAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGY1NGY5MWIuLjE1YTJlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCkBAIC0yNTIsNiArMjUyLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eVN0cmlu
ZygpOyB9CisKICAgICB2b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKaW5kZXgg
YmFlOGM0NC4uM2Y2YjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRy
b2xsZXIgKilwZGZMYXllckNvbnRyb2xsZXIgY2xpY2tlZExpbmtXaXRoVVJMOihOU1VSTCAqKXVy
bDsKIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZM
YXllckNvbnRyb2xsZXIgZGlkQ2hhbmdlQ29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KXNjYWxl
RmFjdG9yOwogLSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJvbGxlciAq
KXBkZkxheWVyQ29udHJvbGxlciBkaWRDaGFuZ2VEaXNwbGF5TW9kZTooaW50KW1vZGU7CistICh2
b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5ZXJDb250
cm9sbGVyIGRpZENoYW5nZVNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0aW9uOwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCmluZGV4IGJkNDkzOWMuLmZhYmIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNzIsNiArNzIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBub3RpZnlDb250ZW50U2NhbGVGYWN0b3JDaGFuZ2VkKENHRmxvYXQgc2Nh
bGVGYWN0b3IpOwogICAgIHZvaWQgbm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCk7CiAKKyAg
ICB2b2lkIG5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoUERGU2VsZWN0aW9uICopOworCiAgICAgdm9p
ZCBjbGlja2VkTGluayhOU1VSTCAqKTsKICAgICB2b2lkIHNhdmVUb1BERigpOwogICAgIHZvaWQg
b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpOwpAQCAtMTA5LDYgKzExMSw3IEBAIHByaXZhdGU6
CiAgICAgUERGU2VsZWN0aW9uICpuZXh0TWF0Y2hGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEJPT0wgc2VhcmNoRm9yd2FyZCwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIHdyYXBTZWFy
Y2gsIFBERlNlbGVjdGlvbiAqaW5pdGlhbFNlbGVjdGlvbiwgQk9PTCBzdGFydEluU2VsZWN0aW9u
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5n
IGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJs
ZUFyZWEgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMmY1OWFmOS4uMzc2NWU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTE5Miw2ICsxOTIsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25T
dHlsZSA9CiAgICAgX3BkZlBsdWdpbi0+bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKG1vZGUpOwog
fQogCistICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRm
TGF5ZXJDb250cm9sbGVyIGRpZENoYW5nZVNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0
aW9uCit7CisgICAgX3BkZlBsdWdpbi0+bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb24p
OworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTU5LDYgKzk2NCwxNiBAQCB2
b2lkIFBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKQogICAgIFttX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKSBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOnRydWVdOwogfQogCit2b2lk
IFBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKikKK3sKKyAg
ICB3ZWJGcmFtZSgpLT5wYWdlKCktPmRpZENoYW5nZVNlbGVjdGlvbigpOworfQorCitTdHJpbmcg
UERGUGx1Z2luOjpnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbW21f
cGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGN1cnJlbnRTZWxlY3Rpb25dIHN0cmluZ107Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBs
ZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4uaAppbmRleCAxMTBlOGE2Li41MjZlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKQEAg
LTE4MCw2ICsxODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGdldFJlc291cmNl
RGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgYnl0ZXMsIHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2Nyb2xsT2Zmc2V0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCmluZGV4IGE1Yjk2MGYuLjQzMzQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI2Nyw2ICsyNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJp
bmdTZWxlY3Rpb24oKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbHVnaW4oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRl
eCA1OWZjNzBjLi5iY2JmNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTM2LDYgKzEzNiw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgLyogYnl0ZXMg
Ki8sIHVuc2lnbmVkJiAvKiBsZW5ndGggKi8pIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKwogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3Io
KTsKICAgICBib29sIG5lZWRzQmFja2luZ1N0b3JlKCkgY29uc3Q7CiAgICAgYm9vbCB1cGRhdGVC
YWNraW5nU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCBkOWMyMDA1Li5hM2U2YjQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzUzLDE0ICs3NTMs
MjggQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogc2Nyb2xsVmlldykK
IAogdW5zaWduZWQgUGx1Z2luVmlldzo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgcmV0dXJuIG1fcGx1Z2luLT5jb3VudEZpbmRNYXRjaGVzKHRhcmdldCwg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6ZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9w
bHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBtX3BsdWdpbi0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogfQogCitTdHJpbmcgUGx1
Z2luVmlldzo6Z2V0U3RyaW5nU2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgcmV0dXJuIG1fcGx1Z2luLT5nZXRTdHJpbmdTZWxlY3Rpb24oKTsKK30KKwogUGFzc093blB0
cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCogZXZlbnQp
IGNvbnN0CiB7CiAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9IFdlYkV2ZW50OjpOb1R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAz
ODZkYTg2Li4xNTlhOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNv
dW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KTsKIAorICAgIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdDsKKwogICAgIGJvb2wg
c2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAogICAgIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0
IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggZjMwOWFhYy4uMDdmYjViMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMTg3LDkgKzE4Nyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBFZGl0b3JTdGF0ZSBzdGF0ZSA9IG1fcGFnZS0+ZWRpdG9yU3RhdGUo
KTsKLQotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0
ZUNoYW5nZWQoc3RhdGUpKTsKKyAgICBtX3BhZ2UtPmRpZENoYW5nZVNlbGVjdGlvbigpOwogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rp
b24oZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGM0YzFkNDguLjE1YmY2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU2MSw2ICs1NjEsMTYgQEAgRWRpdG9yU3RhdGUg
V2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBF
ZGl0b3JTdGF0ZSByZXN1bHQ7CisKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZv
Y3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmIChwbHVnaW5WaWV3
LT5nZXRTdHJpbmdTZWxlY3Rpb24oKSAhPSBlbXB0eVN0cmluZygpKSB7CisgICAgICAgICAgICBy
ZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQuc2VsZWN0
aW9uSXNSYW5nZSA9IHRydWU7CisgICAgICAgICAgICByZXN1bHQuaXNJblBsdWdpbiA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCiAgICAgcmVz
dWx0LnNlbGVjdGlvbklzTm9uZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCk7CiAgICAg
cmVzdWx0LnNlbGVjdGlvbklzUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKTsK
ICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29u
dGVudEVkaXRhYmxlKCk7CkBAIC02OTMsNyArNzAzLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gV2ViUGFnZTo6dHJhY2tlZFJlcGFpbnRSZWN0cygpCiAgICAgcmV0dXJuIEltbXV0YWJs
ZUFycmF5OjphZG9wdCh2ZWN0b3IpOwogfQogCi1zdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBs
dWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCitQbHVnaW5WaWV3KiBXZWJQYWdlOjpmb2N1
c2VkUGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzA3
LDcgKzcxNyw3IEBAIHN0YXRpYyBQbHVnaW5WaWV3KiBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcGx1Z2luVmlldzsKIH0KIAotc3RhdGljIFBsdWdp
blZpZXcqIHBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCitQbHVnaW5WaWV3KiBXZWJQ
YWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0z
NzY2LDYgKzM3NzYsMTEgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkp
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRNYWluRnJhbWVJblZpZXdTb3VyY2VNb2RlKGJvb2wg
aW5WaWV3U291cmNlTW9kZSkKIHsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNldElu
Vmlld1NvdXJjZU1vZGUoaW5WaWV3U291cmNlTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5NmQ1NjEwLi40NjJmYjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQzMCw2ICs0MzAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogI2VuZGlmCiAKKyAgICB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbigpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5k
b3dUb2tlbik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpOwpAQCAtNzg4LDYgKzc5MCw5IEBAIHByaXZhdGU6CiAKICAgICBzdGF0
aWMgYm9vbCBwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAKKyAgICBzdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBsdWdpblZpZXdGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZSopOworICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKKwogICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBt
X3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDYwMmRlOWIuLjhkMWI0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTY1NSw3ICs2NTUsMTkgQEAgdm9pZCBXZWJQ
YWdlOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgYm9vbCYgcmUKIHZvaWQgV2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChTdHJpbmcmIHN0cmluZ1ZhbHVlKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgZnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkKKworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gZm9jdXNlZFBs
dWdpblZpZXdGb3JGcmFtZShmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNlbGVjdGlvbiA9IHBs
dWdpblZpZXctPmdldFN0cmluZ1NlbGVjdGlvbigpOworICAgICAgICBpZiAoc2VsZWN0aW9uICE9
IGVtcHR5U3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gc2VsZWN0aW9uOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZyYW1lLT5z
ZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0cmluZ1ZhbHVl
ID0gZnJhbWUtPmVkaXRvcigpLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191120</attachid>
            <date>2013-03-02 17:00:11 -0800</date>
            <delta_ts>2013-03-04 14:00:39 -0800</delta_ts>
            <desc>delete some duplicated code now that we can use pluginViewForFrame in WebPageMac</desc>
            <filename>pdf-services.diff</filename>
            <type>text/plain</type>
            <size>18654</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2M2MzYzMwLi5hZWQzNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTMtMDMtMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBIb29rIHVwIFNlcnZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEzMDYyNjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgdGhlIEFwcGxpY2F0aW9uLT5TZXJ2aWNlcyBtZW51IHdvcmsgd2hlbiB0aGUg
Zm9jdXNlZCBzZWxlY3Rpb24gaXMgYSBQREZQbHVnaW4uCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpFZGl0b3JTdGF0ZSk6
CisgICAgICAgIChFZGl0b3JTdGF0ZSk6CisgICAgICAgIEFkZCBpc0luUGx1Z2luIHByb3BlcnR5
IHRvIEVkaXRvclN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgdmFsaWRSZXF1ZXN0b3JGb3JTZW5kVHlwZTpyZXR1cm5UeXBl
Ol0pOgorICAgICAgICBJZiB0aGUgc2VsZWN0aW9uIGlzIGN1cnJlbnRseSBpbiBhIFBsdWdpbiwg
d2Ugb25seSBjdXJyZW50bHkgaGF2ZSB0aGUgYWJpbGl0eQorICAgICAgICB0byByZXRyaWV2ZSB0
aGUgc2VsZWN0aW9uIGFzIGEgcGxhaW4tdGV4dCBzdHJpbmcsIHNvIHJlc3RyaWN0IHNlbmRUeXBl
IHRvIE5TU3RyaW5nUGJvYXJkVHlwZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIEFkZCBnZXRTdHJp
bmdTZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVy
Q29udHJvbGxlckRldGFpbHMuaDoKKyAgICAgICAgQWRkIHBkZkxheWVyQ29udHJvbGxlcjpkaWRD
aGFuZ2VTZWxlY3Rpb246IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgIChQREZQbHVnaW4pOgorICAgICAgICBB
ZGQgZ2V0U3RyaW5nU2VsZWN0aW9uIGFuZCBub3RpZnlTZWxlY3Rpb25DaGFuZ2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICgtW1dL
UERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgcGRmTGF5ZXJDb250cm9sbGVyOmRpZENoYW5nZVNl
bGVjdGlvbjpdKToKKyAgICAgICAgRm9yd2FyZCBzZWxlY3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlv
bnMgdG8gb3VyIFBERlBsdWdpbi4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om5vdGlm
eVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICBGb3J3YXJkIHNlbGVjdGlvbiBjaGFuZ2Ugbm90
aWZpY2F0aW9ucyB0byBvdXIgV2ViUGFnZS4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmdldFN0cmluZ1NlbGVjdGlvbik6CisgICAgICAgIFJldHJpZXZlIFBERkxheWVyQ29udHJvbGxl
cidzIHNlbGVjdGlvbiBhcyBhIHBsYWluIHRleHQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmNvdW50RmluZE1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpmaW5kU3RyaW5nKToKKyAgICAgICAgRHJpdmUtYnlzLCBjaGVjayBmb3IgZXhpc3RhbmNlIGFu
ZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGx1Z2luIGJlZm9yZSB1c2luZyBpdC4KKworICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpnZXRTdHJpbmdTZWxlY3Rpb24pOiBBZGRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgVXNlIGRpZENoYW5nZVNlbGVjdGlvbiBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhl
IEVkaXRvclN0YXRlQ2hhbmdlZCBtZXNzYWdlIGRpcmVjdGx5LgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0
b3JTdGF0ZSk6CisgICAgICAgIElmIGEgcGx1Z2luIGlzIGZvY3VzZWQgYW5kIGhhcyBhIHNlbGVj
dGlvbiwgcmV0dXJuIGEgRWRpdG9yU3RhdGUgdGhhdCByZWZsZWN0cyB0aGF0LgorICAgICAgICBT
aW5jZSBQREZzIGFyZW4ndCBlZGl0YWJsZSAod2hlbiBlZGl0aW5nIGFubm90YXRpb25zLCB0aGUg
cGx1Z2luIGRvZXNuJ3QgaGF2ZSBmb2N1cyksCisgICAgICAgIEknbSBub3QgYWRkaW5nIHN1cHBv
cnQgZm9yIHRoZSBlZGl0aW5nLXJlbGF0ZWQgcHJvcGVydGllcyB3aGVuIGEgcGx1Z2luIGhhcyBm
b2N1cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkUGx1Z2luVmlld0ZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKToKKyAg
ICAgICAgTWFrZSB0aGVzZSBjbGFzcyBtZXRob2RzIGluc3RlYWQgb2Ygc3RhdGljIGZ1bmN0aW9u
cyBzbyB3ZSBjYW4gdXNlIHRoZW0gZnJvbQorICAgICAgICBXZWJQYWdlTWFjIHRvbywgaW5zdGVh
ZCBvZiBkdXBsaWNhdGluZyBjb2RlIHRoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbik6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgQWRkIGRpZENoYW5nZVNlbGVjdGlvbiBhbmQgW2ZvY3Vz
ZWRdUGx1Z2luVmlld0ZvckZyYW1lLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgRGVmZXIgdG8gdGhlIGZvY3VzZWQgcGx1Z2lu
IChpZiBpdCBleGlzdHMpIHdoZW4gcmV0cmlldmluZyB0aGUgcGxhaW4tdGV4dCBzZWxlY3Rpb24u
CisKIDIwMTMtMDItMjggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAg
ICAgICAgIFtXSzJdIFJlZmFjdG9yaW5nIDogRml4IGluZGVudGF0aW9uIGFuZCBicmFjZXMgaW4g
V2ViSW5zcGVjdG9yQ2xpZW50Lmh8Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNw
cAppbmRleCA1NTBjYzg3Li40MGE0Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOwogICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CiAgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGlzSW5QbHVnaW47
CiAgICAgZW5jb2RlciA8PCBoYXNDb21wb3NpdGlvbjsKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAt
NzYsNiArNzcsOSBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNJblBsdWdpbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbXBvc2l0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCmluZGV4IGZhNjg3YmQuLmY5YmJhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgICwgaXND
b250ZW50RWRpdGFibGUoZmFsc2UpCiAgICAgICAgICwgaXNDb250ZW50UmljaGx5RWRpdGFibGUo
ZmFsc2UpCiAgICAgICAgICwgaXNJblBhc3N3b3JkRmllbGQoZmFsc2UpCisgICAgICAgICwgaXNJ
blBsdWdpbihmYWxzZSkKICAgICAgICAgLCBoYXNDb21wb3NpdGlvbihmYWxzZSkKICNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgLCBjdXJzb3JQb3NpdGlvbigwKQpAQCAtNTcsNiArNTgsNyBAQCBz
dHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGU7CiAgICAgYm9v
bCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkOwor
ICAgIGJvb2wgaXNJblBsdWdpbjsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uOwogI2lmIFBMQVRG
T1JNKFFUKQogICAgIC8vIFRoZSBhbmNob3IsIGN1cnNvciByZXByZXNlbnQgZWl0aGVyIHRoZSBz
ZWxlY3Rpb24gb3IgY29tcG9zaXRpb24sIGRlcGVuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVkNTQ4YzYuLjE5N2U4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTYwMCwxMyArNjAwLDIyIEBA
IFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogCiAtIChpZCl2YWxpZFJlcXVlc3RvckZv
clNlbmRUeXBlOihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5TU3RyaW5nICopcmV0
dXJuVHlwZQogewotICAgIEJPT0wgaXNWYWxpZFNlbmRUeXBlID0gIXNlbmRUeXBlIHx8IChbUGFz
dGVib2FyZFR5cGVzOjpmb3JTZWxlY3Rpb24oKSBjb250YWluc09iamVjdDpzZW5kVHlwZV0gJiYg
IV9kYXRhLT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc05vbmUpOworICAgIEVkaXRv
clN0YXRlIGVkaXRvclN0YXRlID0gX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIEJP
T0wgaXNWYWxpZFNlbmRUeXBlID0gTk87CisKKyAgICBpZiAoc2VuZFR5cGUgJiYgIWVkaXRvclN0
YXRlLnNlbGVjdGlvbklzTm9uZSkgeworICAgICAgICBpZiAoZWRpdG9yU3RhdGUuaXNJblBsdWdp
bikKKyAgICAgICAgICAgIGlzVmFsaWRTZW5kVHlwZSA9IFtzZW5kVHlwZSBpc0VxdWFsVG9TdHJp
bmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNWYWxp
ZFNlbmRUeXBlID0gW1Bhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkgY29udGFpbnNPYmpl
Y3Q6c2VuZFR5cGVdOworICAgIH0KKwogICAgIEJPT0wgaXNWYWxpZFJldHVyblR5cGUgPSBOTzsK
ICAgICBpZiAoIXJldHVyblR5cGUpCiAgICAgICAgIGlzVmFsaWRSZXR1cm5UeXBlID0gWUVTOwot
ICAgIGVsc2UgaWYgKFtQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKSBjb250YWluc09iamVj
dDpyZXR1cm5UeXBlXSAmJiBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRp
dGFibGUpIHsKKyAgICBlbHNlIGlmIChbUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkgY29u
dGFpbnNPYmplY3Q6cmV0dXJuVHlwZV0gJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUp
IHsKICAgICAgICAgLy8gV2UgY2FuIGluc2VydCBzdHJpbmdzIGluIGFueSBlZGl0YWJsZSBjb250
ZXh0LiAgV2UgY2FuIGluc2VydCBvdGhlciB0eXBlcywgbGlrZSBpbWFnZXMsIG9ubHkgaW4gcmlj
aCBlZGl0IGNvbnRleHRzLgotICAgICAgICBpc1ZhbGlkUmV0dXJuVHlwZSA9IF9kYXRhLT5fcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlwZSBp
c0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgaXNWYWxpZFJldHVy
blR5cGUgPSBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKICAgICB9CiAgICAgaWYgKGlz
VmFsaWRTZW5kVHlwZSAmJiBpc1ZhbGlkUmV0dXJuVHlwZSkKICAgICAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGY1NGY5MWIuLjE1YTJlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCkBAIC0yNTIsNiArMjUyLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eVN0cmlu
ZygpOyB9CisKICAgICB2b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKICNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKaW5kZXgg
YmFlOGM0NC4uM2Y2YjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRy
b2xsZXIgKilwZGZMYXllckNvbnRyb2xsZXIgY2xpY2tlZExpbmtXaXRoVVJMOihOU1VSTCAqKXVy
bDsKIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZM
YXllckNvbnRyb2xsZXIgZGlkQ2hhbmdlQ29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KXNjYWxl
RmFjdG9yOwogLSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJvbGxlciAq
KXBkZkxheWVyQ29udHJvbGxlciBkaWRDaGFuZ2VEaXNwbGF5TW9kZTooaW50KW1vZGU7CistICh2
b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5ZXJDb250
cm9sbGVyIGRpZENoYW5nZVNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0aW9uOwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCmluZGV4IGJkNDkzOWMuLmZhYmIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNzIsNiArNzIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBub3RpZnlDb250ZW50U2NhbGVGYWN0b3JDaGFuZ2VkKENHRmxvYXQgc2Nh
bGVGYWN0b3IpOwogICAgIHZvaWQgbm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCk7CiAKKyAg
ICB2b2lkIG5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoUERGU2VsZWN0aW9uICopOworCiAgICAgdm9p
ZCBjbGlja2VkTGluayhOU1VSTCAqKTsKICAgICB2b2lkIHNhdmVUb1BERigpOwogICAgIHZvaWQg
b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpOwpAQCAtMTA5LDYgKzExMSw3IEBAIHByaXZhdGU6
CiAgICAgUERGU2VsZWN0aW9uICpuZXh0TWF0Y2hGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEJPT0wgc2VhcmNoRm9yd2FyZCwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIHdyYXBTZWFy
Y2gsIFBERlNlbGVjdGlvbiAqaW5pdGlhbFNlbGVjdGlvbiwgQk9PTCBzdGFydEluU2VsZWN0aW9u
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5n
IGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJs
ZUFyZWEgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMmY1OWFmOS4uMzc2NWU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTE5Miw2ICsxOTIsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25T
dHlsZSA9CiAgICAgX3BkZlBsdWdpbi0+bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKG1vZGUpOwog
fQogCistICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRm
TGF5ZXJDb250cm9sbGVyIGRpZENoYW5nZVNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0
aW9uCit7CisgICAgX3BkZlBsdWdpbi0+bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb24p
OworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTU5LDYgKzk2NCwxNiBAQCB2
b2lkIFBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKQogICAgIFttX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKSBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOnRydWVdOwogfQogCit2b2lk
IFBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKikKK3sKKyAg
ICB3ZWJGcmFtZSgpLT5wYWdlKCktPmRpZENoYW5nZVNlbGVjdGlvbigpOworfQorCitTdHJpbmcg
UERGUGx1Z2luOjpnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbW21f
cGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGN1cnJlbnRTZWxlY3Rpb25dIHN0cmluZ107Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBs
ZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4uaAppbmRleCAxMTBlOGE2Li41MjZlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKQEAg
LTE4MCw2ICsxODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGdldFJlc291cmNl
RGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgYnl0ZXMsIHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2Nyb2xsT2Zmc2V0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCmluZGV4IGE1Yjk2MGYuLjQzMzQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI2Nyw2ICsyNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRTdHJp
bmdTZWxlY3Rpb24oKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBQbHVnaW4oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRl
eCA1OWZjNzBjLi5iY2JmNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTM2LDYgKzEzNiw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgLyogYnl0ZXMg
Ki8sIHVuc2lnbmVkJiAvKiBsZW5ndGggKi8pIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKwogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3Io
KTsKICAgICBib29sIG5lZWRzQmFja2luZ1N0b3JlKCkgY29uc3Q7CiAgICAgYm9vbCB1cGRhdGVC
YWNraW5nU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCBkOWMyMDA1Li5hM2U2YjQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzUzLDE0ICs3NTMs
MjggQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogc2Nyb2xsVmlldykK
IAogdW5zaWduZWQgUGx1Z2luVmlldzo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgcmV0dXJuIG1fcGx1Z2luLT5jb3VudEZpbmRNYXRjaGVzKHRhcmdldCwg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6ZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9w
bHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBtX3BsdWdpbi0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogfQogCitTdHJpbmcgUGx1
Z2luVmlldzo6Z2V0U3RyaW5nU2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgcmV0dXJuIG1fcGx1Z2luLT5nZXRTdHJpbmdTZWxlY3Rpb24oKTsKK30KKwogUGFzc093blB0
cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCogZXZlbnQp
IGNvbnN0CiB7CiAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9IFdlYkV2ZW50OjpOb1R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAz
ODZkYTg2Li4xNTlhOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNv
dW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KTsKIAorICAgIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24oKSBjb25zdDsKKwogICAgIGJvb2wg
c2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAogICAgIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0
IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggZjMwOWFhYy4uMDdmYjViMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMTg3LDkgKzE4Nyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBFZGl0b3JTdGF0ZSBzdGF0ZSA9IG1fcGFnZS0+ZWRpdG9yU3RhdGUo
KTsKLQotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0
ZUNoYW5nZWQoc3RhdGUpKTsKKyAgICBtX3BhZ2UtPmRpZENoYW5nZVNlbGVjdGlvbigpOwogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rp
b24oZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGM0YzFkNDguLjE1YmY2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU2MSw2ICs1NjEsMTYgQEAgRWRpdG9yU3RhdGUg
V2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBF
ZGl0b3JTdGF0ZSByZXN1bHQ7CisKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZv
Y3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmIChwbHVnaW5WaWV3
LT5nZXRTdHJpbmdTZWxlY3Rpb24oKSAhPSBlbXB0eVN0cmluZygpKSB7CisgICAgICAgICAgICBy
ZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQuc2VsZWN0
aW9uSXNSYW5nZSA9IHRydWU7CisgICAgICAgICAgICByZXN1bHQuaXNJblBsdWdpbiA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCiAgICAgcmVz
dWx0LnNlbGVjdGlvbklzTm9uZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCk7CiAgICAg
cmVzdWx0LnNlbGVjdGlvbklzUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKTsK
ICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29u
dGVudEVkaXRhYmxlKCk7CkBAIC02OTMsNyArNzAzLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gV2ViUGFnZTo6dHJhY2tlZFJlcGFpbnRSZWN0cygpCiAgICAgcmV0dXJuIEltbXV0YWJs
ZUFycmF5OjphZG9wdCh2ZWN0b3IpOwogfQogCi1zdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBs
dWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCitQbHVnaW5WaWV3KiBXZWJQYWdlOjpmb2N1
c2VkUGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzA3
LDcgKzcxNyw3IEBAIHN0YXRpYyBQbHVnaW5WaWV3KiBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcGx1Z2luVmlldzsKIH0KIAotc3RhdGljIFBsdWdp
blZpZXcqIHBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCitQbHVnaW5WaWV3KiBXZWJQ
YWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0z
NzY2LDYgKzM3NzYsMTEgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkp
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRNYWluRnJhbWVJblZpZXdTb3VyY2VNb2RlKGJvb2wg
aW5WaWV3U291cmNlTW9kZSkKIHsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNldElu
Vmlld1NvdXJjZU1vZGUoaW5WaWV3U291cmNlTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5NmQ1NjEwLi40NjJmYjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQzMCw2ICs0MzAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogI2VuZGlmCiAKKyAgICB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbigpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5k
b3dUb2tlbik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpOwpAQCAtNzg4LDYgKzc5MCw5IEBAIHByaXZhdGU6CiAKICAgICBzdGF0
aWMgYm9vbCBwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAKKyAgICBzdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBsdWdpblZpZXdGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZSopOworICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKKwogICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBt
X3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDYwMmRlOWIuLmEyYjJmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTQ3MiwxMCArNDcyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
ZmxvYXRQb2ludCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkgewotICAgICAgICBQbHVnaW5E
b2N1bWVudCogcGx1Z2luRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxQbHVnaW5Eb2N1bWVudCo+KGZy
YW1lLT5kb2N1bWVudCgpKTsKLSAgICAgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0YXRp
Y19jYXN0PFBsdWdpblZpZXcqPihwbHVnaW5Eb2N1bWVudC0+cGx1Z2luV2lkZ2V0KCkpOwotCisg
ICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUp
KSB7CiAgICAgICAgIGlmIChwbHVnaW5WaWV3LT5wZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oZmxvYXRQb2ludCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjU1LDcg
KzY1MiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZQogdm9pZCBXZWJQYWdlOjpnZXRTdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyYgc3RyaW5nVmFsdWUpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQorCisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFBsdWdpblZpZXcqIHBs
dWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkgeworICAgICAgICBT
dHJpbmcgc2VsZWN0aW9uID0gcGx1Z2luVmlldy0+Z2V0U3RyaW5nU2VsZWN0aW9uKCk7CisgICAg
ICAgIGlmIChzZWxlY3Rpb24gIT0gZW1wdHlTdHJpbmcoKSkgeworICAgICAgICAgICAgc3RyaW5n
VmFsdWUgPSBzZWxlY3Rpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc3RyaW5nVmFsdWUgPSBmcmFtZS0+ZWRpdG9yKCktPnN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191165</attachid>
            <date>2013-03-04 00:10:09 -0800</date>
            <delta_ts>2013-03-04 00:10:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>pdf-services.diff</filename>
            <type>text/plain</type>
            <size>18619</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2M2MzYzMwLi5hZWQzNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTMtMDMtMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBIb29rIHVwIFNlcnZpY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEzMDYyNjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgdGhlIEFwcGxpY2F0aW9uLT5TZXJ2aWNlcyBtZW51IHdvcmsgd2hlbiB0aGUg
Zm9jdXNlZCBzZWxlY3Rpb24gaXMgYSBQREZQbHVnaW4uCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpFZGl0b3JTdGF0ZSk6
CisgICAgICAgIChFZGl0b3JTdGF0ZSk6CisgICAgICAgIEFkZCBpc0luUGx1Z2luIHByb3BlcnR5
IHRvIEVkaXRvclN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgdmFsaWRSZXF1ZXN0b3JGb3JTZW5kVHlwZTpyZXR1cm5UeXBl
Ol0pOgorICAgICAgICBJZiB0aGUgc2VsZWN0aW9uIGlzIGN1cnJlbnRseSBpbiBhIFBsdWdpbiwg
d2Ugb25seSBjdXJyZW50bHkgaGF2ZSB0aGUgYWJpbGl0eQorICAgICAgICB0byByZXRyaWV2ZSB0
aGUgc2VsZWN0aW9uIGFzIGEgcGxhaW4tdGV4dCBzdHJpbmcsIHNvIHJlc3RyaWN0IHNlbmRUeXBl
IHRvIE5TU3RyaW5nUGJvYXJkVHlwZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIEFkZCBnZXRTdHJp
bmdTZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVy
Q29udHJvbGxlckRldGFpbHMuaDoKKyAgICAgICAgQWRkIHBkZkxheWVyQ29udHJvbGxlcjpkaWRD
aGFuZ2VTZWxlY3Rpb246IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgIChQREZQbHVnaW4pOgorICAgICAgICBB
ZGQgZ2V0U3RyaW5nU2VsZWN0aW9uIGFuZCBub3RpZnlTZWxlY3Rpb25DaGFuZ2VkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICgtW1dL
UERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgcGRmTGF5ZXJDb250cm9sbGVyOmRpZENoYW5nZVNl
bGVjdGlvbjpdKToKKyAgICAgICAgRm9yd2FyZCBzZWxlY3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlv
bnMgdG8gb3VyIFBERlBsdWdpbi4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om5vdGlm
eVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICBGb3J3YXJkIHNlbGVjdGlvbiBjaGFuZ2Ugbm90
aWZpY2F0aW9ucyB0byBvdXIgV2ViUGFnZS4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmdldFN0cmluZ1NlbGVjdGlvbik6CisgICAgICAgIFJldHJpZXZlIFBERkxheWVyQ29udHJvbGxl
cidzIHNlbGVjdGlvbiBhcyBhIHBsYWluIHRleHQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmNvdW50RmluZE1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpmaW5kU3RyaW5nKToKKyAgICAgICAgRHJpdmUtYnlzLCBjaGVjayBmb3IgZXhpc3RhbmNlIGFu
ZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGx1Z2luIGJlZm9yZSB1c2luZyBpdC4KKworICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpnZXRTdHJpbmdTZWxlY3Rpb24pOiBBZGRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgVXNlIGRpZENoYW5nZVNlbGVjdGlvbiBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhl
IEVkaXRvclN0YXRlQ2hhbmdlZCBtZXNzYWdlIGRpcmVjdGx5LgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0
b3JTdGF0ZSk6CisgICAgICAgIElmIGEgcGx1Z2luIGlzIGZvY3VzZWQgYW5kIGhhcyBhIHNlbGVj
dGlvbiwgcmV0dXJuIGEgRWRpdG9yU3RhdGUgdGhhdCByZWZsZWN0cyB0aGF0LgorICAgICAgICBT
aW5jZSBQREZzIGFyZW4ndCBlZGl0YWJsZSAod2hlbiBlZGl0aW5nIGFubm90YXRpb25zLCB0aGUg
cGx1Z2luIGRvZXNuJ3QgaGF2ZSBmb2N1cyksCisgICAgICAgIEknbSBub3QgYWRkaW5nIHN1cHBv
cnQgZm9yIHRoZSBlZGl0aW5nLXJlbGF0ZWQgcHJvcGVydGllcyB3aGVuIGEgcGx1Z2luIGhhcyBm
b2N1cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkUGx1Z2luVmlld0ZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKToKKyAg
ICAgICAgTWFrZSB0aGVzZSBjbGFzcyBtZXRob2RzIGluc3RlYWQgb2Ygc3RhdGljIGZ1bmN0aW9u
cyBzbyB3ZSBjYW4gdXNlIHRoZW0gZnJvbQorICAgICAgICBXZWJQYWdlTWFjIHRvbywgaW5zdGVh
ZCBvZiBkdXBsaWNhdGluZyBjb2RlIHRoZXJlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbik6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgQWRkIGRpZENoYW5nZVNlbGVjdGlvbiBhbmQgW2ZvY3Vz
ZWRdUGx1Z2luVmlld0ZvckZyYW1lLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgRGVmZXIgdG8gdGhlIGZvY3VzZWQgcGx1Z2lu
IChpZiBpdCBleGlzdHMpIHdoZW4gcmV0cmlldmluZyB0aGUgcGxhaW4tdGV4dCBzZWxlY3Rpb24u
CisKIDIwMTMtMDItMjggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAg
ICAgICAgIFtXSzJdIFJlZmFjdG9yaW5nIDogRml4IGluZGVudGF0aW9uIGFuZCBicmFjZXMgaW4g
V2ViSW5zcGVjdG9yQ2xpZW50Lmh8Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNw
cAppbmRleCA1NTBjYzg3Li40MGE0Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzQ29udGVu
dEVkaXRhYmxlOwogICAgIGVuY29kZXIgPDwgaXNDb250ZW50UmljaGx5RWRpdGFibGU7CiAgICAg
ZW5jb2RlciA8PCBpc0luUGFzc3dvcmRGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGlzSW5QbHVnaW47
CiAgICAgZW5jb2RlciA8PCBoYXNDb21wb3NpdGlvbjsKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAt
NzYsNiArNzcsOSBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNJblBsdWdpbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbXBvc2l0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCmluZGV4IGZhNjg3YmQuLmY5YmJhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgICwgaXND
b250ZW50RWRpdGFibGUoZmFsc2UpCiAgICAgICAgICwgaXNDb250ZW50UmljaGx5RWRpdGFibGUo
ZmFsc2UpCiAgICAgICAgICwgaXNJblBhc3N3b3JkRmllbGQoZmFsc2UpCisgICAgICAgICwgaXNJ
blBsdWdpbihmYWxzZSkKICAgICAgICAgLCBoYXNDb21wb3NpdGlvbihmYWxzZSkKICNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgLCBjdXJzb3JQb3NpdGlvbigwKQpAQCAtNTcsNiArNTgsNyBAQCBz
dHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGU7CiAgICAgYm9v
bCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkOwor
ICAgIGJvb2wgaXNJblBsdWdpbjsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uOwogI2lmIFBMQVRG
T1JNKFFUKQogICAgIC8vIFRoZSBhbmNob3IsIGN1cnNvciByZXByZXNlbnQgZWl0aGVyIHRoZSBz
ZWxlY3Rpb24gb3IgY29tcG9zaXRpb24sIGRlcGVuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVkNTQ4YzYuLjE5N2U4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTYwMCwxMyArNjAwLDIyIEBA
IFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogCiAtIChpZCl2YWxpZFJlcXVlc3RvckZv
clNlbmRUeXBlOihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5TU3RyaW5nICopcmV0
dXJuVHlwZQogewotICAgIEJPT0wgaXNWYWxpZFNlbmRUeXBlID0gIXNlbmRUeXBlIHx8IChbUGFz
dGVib2FyZFR5cGVzOjpmb3JTZWxlY3Rpb24oKSBjb250YWluc09iamVjdDpzZW5kVHlwZV0gJiYg
IV9kYXRhLT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc05vbmUpOworICAgIEVkaXRv
clN0YXRlIGVkaXRvclN0YXRlID0gX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIEJP
T0wgaXNWYWxpZFNlbmRUeXBlID0gTk87CisKKyAgICBpZiAoc2VuZFR5cGUgJiYgIWVkaXRvclN0
YXRlLnNlbGVjdGlvbklzTm9uZSkgeworICAgICAgICBpZiAoZWRpdG9yU3RhdGUuaXNJblBsdWdp
bikKKyAgICAgICAgICAgIGlzVmFsaWRTZW5kVHlwZSA9IFtzZW5kVHlwZSBpc0VxdWFsVG9TdHJp
bmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNWYWxp
ZFNlbmRUeXBlID0gW1Bhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkgY29udGFpbnNPYmpl
Y3Q6c2VuZFR5cGVdOworICAgIH0KKwogICAgIEJPT0wgaXNWYWxpZFJldHVyblR5cGUgPSBOTzsK
ICAgICBpZiAoIXJldHVyblR5cGUpCiAgICAgICAgIGlzVmFsaWRSZXR1cm5UeXBlID0gWUVTOwot
ICAgIGVsc2UgaWYgKFtQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKSBjb250YWluc09iamVj
dDpyZXR1cm5UeXBlXSAmJiBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRp
dGFibGUpIHsKKyAgICBlbHNlIGlmIChbUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkgY29u
dGFpbnNPYmplY3Q6cmV0dXJuVHlwZV0gJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUp
IHsKICAgICAgICAgLy8gV2UgY2FuIGluc2VydCBzdHJpbmdzIGluIGFueSBlZGl0YWJsZSBjb250
ZXh0LiAgV2UgY2FuIGluc2VydCBvdGhlciB0eXBlcywgbGlrZSBpbWFnZXMsIG9ubHkgaW4gcmlj
aCBlZGl0IGNvbnRleHRzLgotICAgICAgICBpc1ZhbGlkUmV0dXJuVHlwZSA9IF9kYXRhLT5fcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlwZSBp
c0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKKyAgICAgICAgaXNWYWxpZFJldHVy
blR5cGUgPSBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSB8fCBbcmV0dXJuVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXTsKICAgICB9CiAgICAgaWYgKGlz
VmFsaWRTZW5kVHlwZSAmJiBpc1ZhbGlkUmV0dXJuVHlwZSkKICAgICAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGY1NGY5MWIuLjU3ZDQ4NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCkBAIC0yNTIsNiArMjUyLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsg
fQorCiAgICAgdm9pZCB1cGRhdGVOUE5Qcml2YXRlTW9kZSgpOwogCiAjaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCmluZGV4IGJhZThj
NDQuLjNmNmIzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCkBAIC0zOCw2
ICszOCw3IEBACiAtICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVy
ICopcGRmTGF5ZXJDb250cm9sbGVyIGNsaWNrZWRMaW5rV2l0aFVSTDooTlNVUkwgKil1cmw7CiAt
ICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5ZXJD
b250cm9sbGVyIGRpZENoYW5nZUNvbnRlbnRTY2FsZUZhY3RvcjooQ0dGbG9hdClzY2FsZUZhY3Rv
cjsKIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZM
YXllckNvbnRyb2xsZXIgZGlkQ2hhbmdlRGlzcGxheU1vZGU6KGludCltb2RlOworLSAodm9pZClw
ZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJvbGxlciAqKXBkZkxheWVyQ29udHJvbGxl
ciBkaWRDaGFuZ2VTZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKXNlbGVjdGlvbjsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAppbmRleCBiZDQ5MzljLi43MWFkZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgbm90aWZ5Q29udGVudFNjYWxlRmFjdG9yQ2hhbmdlZChDR0Zsb2F0IHNjYWxlRmFj
dG9yKTsKICAgICB2b2lkIG5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpOwogCisgICAgdm9p
ZCBub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKFBERlNlbGVjdGlvbiAqKTsKKwogICAgIHZvaWQgY2xp
Y2tlZExpbmsoTlNVUkwgKik7CiAgICAgdm9pZCBzYXZlVG9QREYoKTsKICAgICB2b2lkIG9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb24oKTsKQEAgLTEwOSw2ICsxMTEsNyBAQCBwcml2YXRlOgogICAg
IFBERlNlbGVjdGlvbiAqbmV4dE1hdGNoRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBC
T09MIHNlYXJjaEZvcndhcmQsIEJPT0wgY2FzZVNlbnNpdGl2ZSwgQk9PTCB3cmFwU2VhcmNoLCBQ
REZTZWxlY3Rpb24gKmluaXRpYWxTZWxlY3Rpb24sIEJPT0wgc3RhcnRJblNlbGVjdGlvbik7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRT
ZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVh
IGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDJmNTlhZjkuLmU1NjEwZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CkBAIC0xOTIsNiArMTkyLDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUg
PQogICAgIF9wZGZQbHVnaW4tPm5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChtb2RlKTsKIH0KIAor
LSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJvbGxlciAqKXBkZkxheWVy
Q29udHJvbGxlciBkaWRDaGFuZ2VTZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKXNlbGVjdGlvbgor
eworICAgIF9wZGZQbHVnaW4tPm5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uKTsKK30K
KwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk1OSw2ICs5NjQsMTYgQEAgdm9pZCBQ
REZQbHVnaW46OmZvY3VzUHJldmlvdXNBbm5vdGF0aW9uKCkKICAgICBbbV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCkgYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjp0cnVlXTsKIH0KIAordm9pZCBQREZQ
bHVnaW46Om5vdGlmeVNlbGVjdGlvbkNoYW5nZWQoUERGU2VsZWN0aW9uICopCit7CisgICAgd2Vi
RnJhbWUoKS0+cGFnZSgpLT5kaWRDaGFuZ2VTZWxlY3Rpb24oKTsKK30KKworU3RyaW5nIFBERlBs
dWdpbjo6Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW1ttX3BkZkxh
eWVyQ29udHJvbGxlci5nZXQoKSBjdXJyZW50U2VsZWN0aW9uXSBzdHJpbmddOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERG
UGx1Z2luLmgKaW5kZXggMTEwZThhNi4uNzZiMjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xODAs
NiArMTgwLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSZXNvdXJjZURhdGEo
Y29uc3QgdW5zaWduZWQgY2hhciomIGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KKwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zY3JvbGxPZmZz
ZXQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKaW5kZXggYTViOTYwZi4uM2M2OWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaApAQCAtMjY3LDYgKzI2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpID0gMDsKIAorICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmlu
ZygpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFBsdWdpbigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDU5ZmM3MGMu
LmUzYWZiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oCkBAIC0xMzYsNiArMTM2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiAvKiBieXRlcyAqLywgdW5zaWdu
ZWQmIC8qIGxlbmd0aCAqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVh
bCBTdHJpbmcgZ2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKwogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKICAgICBib29sIG5l
ZWRzQmFja2luZ1N0b3JlKCkgY29uc3Q7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBkOWMyMDA1Li4wNjdmYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03NTMsMTQgKzc1MywyOCBAQCB2b2lkIFBsdWdp
blZpZXc6OnNldFBhcmVudChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogCiB1bnNpZ25lZCBQbHVn
aW5WaWV3Ojpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIGlmICgh
bV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBy
ZXR1cm4gbV9wbHVnaW4tPmNvdW50RmluZE1hdGNoZXModGFyZ2V0LCBvcHRpb25zLCBtYXhNYXRj
aENvdW50KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQogeworICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1fcGx1Z2luLT5maW5kU3RyaW5nKHRhcmdldCwg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CiB9CiAKK1N0cmluZyBQbHVnaW5WaWV3OjpnZXRTZWxl
Y3Rpb25TdHJpbmcoKSBjb25zdAoreworICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3Bs
dWdpbikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fcGx1Z2luLT5n
ZXRTZWxlY3Rpb25TdHJpbmcoKTsKK30KKwogUGFzc093blB0cjxXZWJFdmVudD4gUGx1Z2luVmll
dzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCogZXZlbnQpIGNvbnN0CiB7CiAgICAgV2ViRXZl
bnQ6OlR5cGUgdHlwZSA9IFdlYkV2ZW50OjpOb1R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAzODZkYTg2Li45OTQxOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTk3
LDYgKzk3LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KTsKICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6
OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKIAorICAgIFN0cmluZyBnZXRT
ZWxlY3Rpb25TdHJpbmcoKSBjb25zdDsKKwogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmco
KTsKIAogICAgIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRl
cywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
ZjMwOWFhYy4uMDdmYjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTg3LDkgKzE4
Nyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBFZGl0
b3JTdGF0ZSBzdGF0ZSA9IG1fcGFnZS0+ZWRpdG9yU3RhdGUoKTsKLQotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpKTsKKyAg
ICBtX3BhZ2UtPmRpZENoYW5nZVNlbGVjdGlvbigpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShRVCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rpb24oZnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM0YzFkNDguLmRl
MjE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTU2MSw2ICs1NjEsMTYgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUo
KSBjb25zdAogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBFZGl0b3JTdGF0ZSByZXN1bHQ7CisK
KyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJh
bWUoZnJhbWUpKSB7CisgICAgICAgIGlmICghcGx1Z2luVmlldy0+Z2V0U2VsZWN0aW9uU3RyaW5n
KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5zZWxlY3Rpb25Jc05vbmUgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJlc3VsdC5pc0luUGx1Z2luID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gZnJhbWUt
PnNlbGVjdGlvbigpLT5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5nZSA9IGZy
YW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgIHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJs
ZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50RWRpdGFibGUoKTsKQEAgLTY5Myw3ICs3
MDMsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlOjp0cmFja2VkUmVwYWlu
dFJlY3RzKCkKICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHZlY3Rvcik7CiB9CiAK
LXN0YXRpYyBQbHVnaW5WaWV3KiBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFt
ZSkKK1BsdWdpblZpZXcqIFdlYlBhZ2U6OmZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUq
IGZyYW1lKQogewogICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03MDcsNyArNzE3LDcgQEAgc3RhdGljIFBsdWdpblZp
ZXcqIGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBw
bHVnaW5WaWV3OwogfQogCi1zdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKK1BsdWdpblZpZXcqIFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShGcmFt
ZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTM3NjYsNiArMzc3NiwxMSBAQCB2b2lkIFdlYlBh
Z2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6OmRpZENo
YW5nZVNlbGVjdGlvbigpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnNldE1h
aW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogewogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2V0SW5WaWV3U291cmNlTW9kZShpblZpZXdTb3VyY2VN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDk2ZDU2MTAuLjQ2MmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtNDMwLDYgKzQzMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbENv
bXBvc2l0aW9uKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbnMoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CkBAIC03ODgsNiAr
NzkwLDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ2FuSGFuZGxlUmVx
dWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAorICAgIHN0YXRpYyBQbHVn
aW5WaWV3KiBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CisgICAg
c3RhdGljIFBsdWdpblZpZXcqIHBsdWdpblZpZXdGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwor
CiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+
IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4g
bV9iYWNrRm9yd2FyZExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjAyZGU5Yi4uNDQyNWE4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpA
QCAtNDcyLDEwICs0NzIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
QXRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpKSB7Ci0gICAgICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0
YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpOwotICAgICAgICBQ
bHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbkRv
Y3VtZW50LT5wbHVnaW5XaWRnZXQoKSk7Ci0KKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmll
dyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAgaWYgKHBsdWdpblZpZXct
PnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihmbG9hdFBvaW50KSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC02NTUsNyArNjUyLDE5IEBAIHZvaWQgV2ViUGFnZTo6cmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGJv
b2wmIHJlCiB2b2lkIFdlYlBhZ2U6OmdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoU3Ry
aW5nJiBzdHJpbmdWYWx1ZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8IGZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCisKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3
Rm9yRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIFN0cmluZyBzZWxlY3Rpb24gPSBwbHVnaW5WaWV3
LT5nZXRTZWxlY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24uaXNOdWxsKCkp
IHsKKyAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gc2VsZWN0aW9uOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNO
b25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRv
cigpLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>