<?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>21129</bug_id>
          
          <creation_ts>2008-09-25 20:56:07 -0700</creation_ts>
          <short_desc>[ScrollView] Refactor obtaining the contents width and scroll offset to be cross-platform</short_desc>
          <delta_ts>2008-09-25 21:28:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92851</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 20:56:07 -0700</bug_when>
    <thetext>Refactoring of contents width and scroll offset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92852</commentid>
    <comment_count>1</comment_count>
      <attachid>23835</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 20:57:38 -0700</bug_when>
    <thetext>Created attachment 23835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92856</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 21:28:59 -0700</bug_when>
    <thetext>Fixed in r36925.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23835</attachid>
            <date>2008-09-25 20:57:38 -0700</date>
            <delta_ts>2008-09-25 21:06:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42039</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2OTIz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTggQEAKKzIwMDgtMDkt
MjUgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEyOQorCisgICAgICAgIFJlZmFjdG9yIGNv
bnRlbnRzIHNpemUgYW5kIHNjcm9sbCBvZmZzZXQgdG8gYmUgY3Jvc3MtcGxhdGZvcm0uICBSZWR1
Y2UgZnVydGhlciB0aGUgbnVtYmVyCisgICAgICAgIG9mIHBsYXRmb3JtLXNwZWNpZmljIG1ldGhv
ZHMgcmVxdWlyZWQgb2YgU2Nyb2xsVmlldyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudHNYKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRlbnRzWSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpzY3JvbGxMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVs
ZW1lbnQ6OnNldFNjcm9sbFRvcCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3
U3RhdGVUb0l0ZW0pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OnNjcm9sbFkpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG8p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29u
dGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtQ29udGVu
dHNTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Ny
b2xsWCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxZKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNvbnRlbnRzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6Y29udGVudHNIZWlnaHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQ
cml2YXRlOjphZGp1c3RtZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzZXRHdGtBZGp1c3RtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZXNp
emVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpjb250ZW50c1dpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNvbnRlbnRzSGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnN1cHByZXNzU2Ny
b2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsYmFyTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRWU2Nyb2xsYmFyTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJzTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRGcmFtZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZv
cm1Db250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQnkp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXaWRnZXQ6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpXaWRnZXQ6OmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cpOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1Njcm9sbFZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3Jv
bGxWaWV3UHJpdmF0ZTo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnJlc2l6ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEZy
YW1lR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6c2V0SFNjcm9sbGJhck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2V0VlNjcm9sbGJhck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0
U2Nyb2xsYmFyc01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OnZhbHVlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2V0
QWxsb3dzU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnJlc2l6ZUNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEZyYW1lR2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsT2Zmc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0
SFNjcm9sbGJhck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0VlNjcm9s
bGJhck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyc01v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6Cisg
ICAgICAgICogcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtQ29udGVudHNTaXplKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZUFic29sdXRlUmVwYWlu
dFJlY3QpOgorCiAyMDA4LTA5LTI1ICBEYXZpZCBTbWl0aCAgPGNhdGZpc2gubWFuQGdtYWlsLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IGRvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbnQgY29udGVudHNYKEFic3RyYWN0Vmlldyog
YWJzdHIKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYg
KCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFtZVZpZXctPmNv
bnRlbnRzWCgpOworICAgIHJldHVybiBmcmFtZVZpZXctPnNjcm9sbFgoKTsKIH0KIAogc3RhdGlj
IGludCBjb250ZW50c1koQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCkBAIC03MCw3ICs3MCw3
IEBAIHN0YXRpYyBpbnQgY29udGVudHNZKEFic3RyYWN0VmlldyogYWJzdHIKICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzWSgpOworICAgIHJl
dHVybiBmcmFtZVZpZXctPnNjcm9sbFkoKTsKIH0KIAogTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNl
UmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlld0FyZywKSW5k
ZXg6IGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxCb2R5
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM2OTAyKQorKysgaHRtbC9IVE1MQm9keUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNyArMjQ2LDcgQEAgaW50IEhUTUxCb2R5RWxlbWVudDo6
c2Nyb2xsTGVmdCgpIGNvbnN0CiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CiAgICAg
ZG9jLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBkb2MtPnZpZXcoKTsKLSAgICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRz
WCgpIDogMDsKKyAgICByZXR1cm4gdmlldyA/IHZpZXctPnNjcm9sbFgoKSA6IDA7CiB9CiAKIHZv
aWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBzY3JvbGxMZWZ0KQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCAKICAg
ICBpZiAoc3ZpZXcpIHsKICAgICAgICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVudCdzIGxheW91dAog
ICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKLSAgICAgICAgc3ZpZXctPnNldENvbnRlbnRzUG9zKHNjcm9sbExlZnQsIHN2aWV3LT5jb250
ZW50c1koKSk7CisgICAgICAgIHN2aWV3LT5zZXRDb250ZW50c1BvcyhzY3JvbGxMZWZ0LCBzdmll
dy0+c2Nyb2xsWSgpKTsKICAgICB9ICAgIAogfQogCkBAIC0yNjUsNyArMjY1LDcgQEAgaW50IEhU
TUxCb2R5RWxlbWVudDo6c2Nyb2xsVG9wKCkgY29uc3QKICAgICBEb2N1bWVudCogZG9jID0gZG9j
dW1lbnQoKTsKICAgICBkb2MtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogICAgIEZyYW1lVmlldyogdmlldyA9IGRvYy0+dmlldygpOwotICAgIHJldHVybiB2aWV3ID8g
dmlldy0+Y29udGVudHNZKCkgOiAwOworICAgIHJldHVybiB2aWV3ID8gdmlldy0+c2Nyb2xsWSgp
IDogMDsKIH0KIAogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbFRvcChpbnQgc2Nyb2xs
VG9wKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxU
b3AoaW50IHMKICAgICBpZiAoc3ZpZXcpIHsKICAgICAgICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVu
dCdzIGxheW91dAogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKLSAgICAgICAgc3ZpZXctPnNldENvbnRlbnRzUG9zKHN2aWV3LT5jb250
ZW50c1goKSwgc2Nyb2xsVG9wKTsKKyAgICAgICAgc3ZpZXctPnNldENvbnRlbnRzUG9zKHN2aWV3
LT5zY3JvbGxYKCksIHNjcm9sbFRvcCk7CiAgICAgfSAgICAgICAgCiB9CiAKSW5kZXg6IGxvYWRl
ci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTMzLDcgKzQxMzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzYXZlU2Nyb2xsUG9zaXRp
b25BbmRWCiAgICAgaWYgKCFpdGVtIHx8ICFtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgaXRlbS0+c2V0U2Nyb2xsUG9pbnQoSW50UG9pbnQobV9mcmFtZS0+
dmlldygpLT5jb250ZW50c1goKSwgbV9mcmFtZS0+dmlldygpLT5jb250ZW50c1koKSkpOworICAg
IGl0ZW0tPnNldFNjcm9sbFBvaW50KG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSk7
CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGdyZWF0IHRvIHdvcmsgb3V0IGEgd2F5IHRvIHB1
dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhyb3VnaCB0byB0aGUg
Y2xpZW50LgogICAgIG1fY2xpZW50LT5zYXZlVmlld1N0YXRlVG9JdGVtKGl0ZW0pOwogfQpJbmRl
eDogcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRE9NV2luZG93LmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBwYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxOCw3ICs2MTgsNyBAQCBpbnQgRE9NV2luZG93OjpzY3JvbGxYKCkgY29uc3QKICAgICBpZiAo
ZG9jKQogICAgICAgICBkb2MtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+Y29udGVudHNYKCkgLyBtX2Zy
YW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2aWV3
LT5zY3JvbGxYKCkgLyBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKIH0KIAogaW50IERPTVdp
bmRvdzo6c2Nyb2xsWSgpIGNvbnN0CkBAIC02MzUsNyArNjM1LDcgQEAgaW50IERPTVdpbmRvdzo6
c2Nyb2xsWSgpIGNvbnN0CiAgICAgaWYgKGRvYykKICAgICAgICAgZG9jLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHZpZXctPmNvbnRlbnRzWSgpIC8gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+c2Nyb2xsWSgpIC8gbV9mcmFtZS0+cGFnZVpvb21G
YWN0b3IoKSk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpjbG9zZWQoKSBjb25zdApJbmRleDogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBwYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5Nyw4ICs2OTcsOCBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJl
c3VsCiAgICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICBJbnRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQu
bG9jYWxQb2ludCgpLngoKSArIHZpZXctPmNvbnRlbnRzWCgpIC0gbi0+cmVuZGVyZXIoKS0+Ym9y
ZGVyTGVmdCgpIC0gbi0+cmVuZGVyZXIoKS0+cGFkZGluZ0xlZnQoKSwgCi0gICAgICAgICAgICBy
ZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPmNvbnRlbnRzWSgpIC0gbi0+cmVuZGVyZXIo
KS0+Ym9yZGVyVG9wKCkgLSBuLT5yZW5kZXJlcigpLT5wYWRkaW5nVG9wKCkpOworICAgICAgICBJ
bnRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9s
bFgoKSAtIG4tPnJlbmRlcmVyKCktPmJvcmRlckxlZnQoKSAtIG4tPnJlbmRlcmVyKCktPnBhZGRp
bmdMZWZ0KCksIAorICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5z
Y3JvbGxZKCkgLSBuLT5yZW5kZXJlcigpLT5ib3JkZXJUb3AoKSAtIG4tPnJlbmRlcmVyKCktPnBh
ZGRpbmdUb3AoKSk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3
aWRnZXRQb2ludCk7CiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+
aGl0VGVzdChIaXRUZXN0UmVxdWVzdCh0cnVlLCB0cnVlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7
CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CkluZGV4OiBwYWdlL0ZyYW1l
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAzNjkw
OSkKKysrIHBhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDQ4ICs1ODMs
NDggQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFJlY3QmIAogICAgICAgICB4
ZSA9IHggKyBjdXJXaWR0aCAtIGQtPm1fYm9yZGVyWDsKIAogICAgIC8vIGlzIHhwb3Mgb2YgdGFy
Z2V0IGxlZnQgb2YgdGhlIHZpZXcncyBib3JkZXI/Ci0gICAgaWYgKHggPCBjb250ZW50c1goKSAr
IGQtPm1fYm9yZGVyWCkKLSAgICAgICAgZGVsdGF4ID0geCAtIGNvbnRlbnRzWCgpIC0gZC0+bV9i
b3JkZXJYOworICAgIGlmICh4IDwgc2Nyb2xsWCgpICsgZC0+bV9ib3JkZXJYKQorICAgICAgICBk
ZWx0YXggPSB4IC0gc2Nyb2xsWCgpIC0gZC0+bV9ib3JkZXJYOwogICAgIC8vIGlzIHhwb3Mgb2Yg
dGFyZ2V0IHJpZ2h0IG9mIHRoZSB2aWV3J3MgcmlnaHQgYm9yZGVyPwotICAgIGVsc2UgaWYgKHhl
ICsgZC0+bV9ib3JkZXJYID4gY29udGVudHNYKCkgKyBjdXJXaWR0aCkKLSAgICAgICAgZGVsdGF4
ID0geGUgKyBkLT5tX2JvcmRlclggLSAoY29udGVudHNYKCkgKyBjdXJXaWR0aCk7CisgICAgZWxz
ZSBpZiAoeGUgKyBkLT5tX2JvcmRlclggPiBzY3JvbGxYKCkgKyBjdXJXaWR0aCkKKyAgICAgICAg
ZGVsdGF4ID0geGUgKyBkLT5tX2JvcmRlclggLSAoc2Nyb2xsWCgpICsgY3VyV2lkdGgpOwogICAg
IGVsc2UKICAgICAgICAgZGVsdGF4ID0gMDsKIAogICAgIC8vIGlzIHlwb3Mgb2YgdGFyZ2V0IGFi
b3ZlIHVwcGVyIGJvcmRlcj8KLSAgICBpZiAoeSA8IGNvbnRlbnRzWSgpICsgZC0+bV9ib3JkZXJZ
KQotICAgICAgICBkZWx0YXkgPSB5IC0gY29udGVudHNZKCkgLSBkLT5tX2JvcmRlclk7CisgICAg
aWYgKHkgPCBzY3JvbGxZKCkgKyBkLT5tX2JvcmRlclkpCisgICAgICAgIGRlbHRheSA9IHkgLSBz
Y3JvbGxZKCkgLSBkLT5tX2JvcmRlclk7CiAgICAgLy8gaXMgeXBvcyBvZiB0YXJnZXQgYmVsb3cg
bG93ZXIgYm9yZGVyPwotICAgIGVsc2UgaWYgKHllICsgZC0+bV9ib3JkZXJZID4gY29udGVudHNZ
KCkgKyBjdXJIZWlnaHQpCi0gICAgICAgIGRlbHRheSA9IHllICsgZC0+bV9ib3JkZXJZIC0gKGNv
bnRlbnRzWSgpICsgY3VySGVpZ2h0KTsKKyAgICBlbHNlIGlmICh5ZSArIGQtPm1fYm9yZGVyWSA+
IHNjcm9sbFkoKSArIGN1ckhlaWdodCkKKyAgICAgICAgZGVsdGF5ID0geWUgKyBkLT5tX2JvcmRl
clkgLSAoc2Nyb2xsWSgpICsgY3VySGVpZ2h0KTsKICAgICBlbHNlCiAgICAgICAgIGRlbHRheSA9
IDA7CiAKICAgICBpbnQgbWF4eCA9IGN1cldpZHRoIC0gZC0+bV9ib3JkZXJYOwogICAgIGludCBt
YXh5ID0gY3VySGVpZ2h0IC0gZC0+bV9ib3JkZXJZOwogCi0gICAgaW50IHNjcm9sbFggPSBkZWx0
YXggPiAwID8gKGRlbHRheCA+IG1heHggPyBtYXh4IDogZGVsdGF4KSA6IGRlbHRheCA9PSAwID8g
MCA6IChkZWx0YXggPiAtbWF4eCA/IGRlbHRheCA6IC1tYXh4KTsKLSAgICBpbnQgc2Nyb2xsWSA9
IGRlbHRheSA+IDAgPyAoZGVsdGF5ID4gbWF4eSA/IG1heHkgOiBkZWx0YXkpIDogZGVsdGF5ID09
IDAgPyAwIDogKGRlbHRheSA+IC1tYXh5ID8gZGVsdGF5IDogLW1heHkpOworICAgIGludCBuZXdT
Y3JvbGxYID0gZGVsdGF4ID4gMCA/IChkZWx0YXggPiBtYXh4ID8gbWF4eCA6IGRlbHRheCkgOiBk
ZWx0YXggPT0gMCA/IDAgOiAoZGVsdGF4ID4gLW1heHggPyBkZWx0YXggOiAtbWF4eCk7CisgICAg
aW50IG5ld1Njcm9sbFkgPSBkZWx0YXkgPiAwID8gKGRlbHRheSA+IG1heHkgPyBtYXh5IDogZGVs
dGF5KSA6IGRlbHRheSA9PSAwID8gMCA6IChkZWx0YXkgPiAtbWF4eSA/IGRlbHRheSA6IC1tYXh5
KTsKIAotICAgIGlmIChjb250ZW50c1goKSArIHNjcm9sbFggPCAwKQotICAgICAgICBzY3JvbGxY
ID0gLWNvbnRlbnRzWCgpOwotICAgIGVsc2UgaWYgKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVX
aWR0aCgpIC0gY29udGVudHNYKCkgPCBzY3JvbGxYKQotICAgICAgICBzY3JvbGxYID0gY29udGVu
dHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBjb250ZW50c1goKTsKLQotICAgIGlmIChjb250
ZW50c1koKSArIHNjcm9sbFkgPCAwKQotICAgICAgICBzY3JvbGxZID0gLWNvbnRlbnRzWSgpOwot
ICAgIGVsc2UgaWYgKGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBjb250ZW50
c1koKSA8IHNjcm9sbFkpCi0gICAgICAgIHNjcm9sbFkgPSBjb250ZW50c0hlaWdodCgpIC0gdmlz
aWJsZUhlaWdodCgpIC0gY29udGVudHNZKCk7CisgICAgaWYgKHNjcm9sbFgoKSArIG5ld1Njcm9s
bFggPCAwKQorICAgICAgICBuZXdTY3JvbGxYID0gLXNjcm9sbFgoKTsKKyAgICBlbHNlIGlmIChj
b250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAtIHNjcm9sbFgoKSA8IG5ld1Njcm9sbFgp
CisgICAgICAgIG5ld1Njcm9sbFggPSBjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAt
IHNjcm9sbFgoKTsKKworICAgIGlmIChzY3JvbGxZKCkgKyBuZXdTY3JvbGxZIDwgMCkKKyAgICAg
ICAgbmV3U2Nyb2xsWSA9IC1zY3JvbGxZKCk7CisgICAgZWxzZSBpZiAoY29udGVudHNIZWlnaHQo
KSAtIHZpc2libGVIZWlnaHQoKSAtIHNjcm9sbFkoKSA8IG5ld1Njcm9sbFkpCisgICAgICAgIG5l
d1Njcm9sbFkgPSBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpIC0gc2Nyb2xsWSgp
OwogCi0gICAgc2Nyb2xsQnkoc2Nyb2xsWCwgc2Nyb2xsWSk7CisgICAgc2Nyb2xsQnkobmV3U2Ny
b2xsWCwgbmV3U2Nyb2xsWSk7CiAKICAgICAvLyBnZW5lcmF0ZSBhYnMoc2Nyb2xsLikKLSAgICBp
ZiAoc2Nyb2xsWCA8IDApCi0gICAgICAgIHNjcm9sbFggPSAtc2Nyb2xsWDsKLSAgICBpZiAoc2Ny
b2xsWSA8IDApCi0gICAgICAgIHNjcm9sbFkgPSAtc2Nyb2xsWTsKKyAgICBpZiAobmV3U2Nyb2xs
WCA8IDApCisgICAgICAgIG5ld1Njcm9sbFggPSAtbmV3U2Nyb2xsWDsKKyAgICBpZiAobmV3U2Ny
b2xsWSA8IDApCisgICAgICAgIG5ld1Njcm9sbFkgPSAtbmV3U2Nyb2xsWTsKIAotICAgIHJldHVy
biBzY3JvbGxYICE9IG1heHggJiYgc2Nyb2xsWSAhPSBtYXh5OworICAgIHJldHVybiBuZXdTY3Jv
bGxYICE9IG1heHggJiYgbmV3U2Nyb2xsWSAhPSBtYXh5OwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQpAQCAtMTA1NCwxMyArMTA1NCw3
IEBAIEludFJlY3QgRnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdChib29sIGMKICAgICBBU1NFUlQo
bV9mcmFtZS0+dmlldygpID09IHRoaXMpOwogCiAgICAgLy8gU2V0IG91ciBjbGlwIHJlY3QgdG8g
YmUgb3VyIGNvbnRlbnRzLgotICAgIEludFJlY3QgY2xpcFJlY3Q7Ci0gICAgaWYgKGNsaXBUb0Nv
bnRlbnRzKQotICAgICAgICBjbGlwUmVjdCA9IHZpc2libGVDb250ZW50UmVjdCgpOwotICAgIGVs
c2UKLSAgICAgICAgY2xpcFJlY3QgPSBJbnRSZWN0KGNvbnRlbnRzWCgpLCBjb250ZW50c1koKSwg
d2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgIGNsaXBSZWN0ID0gY29udGVudHNUb1dpbmRvdyhjbGlw
UmVjdCk7Ci0KKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gY29udGVudHNUb1dpbmRvdyh2aXNpYmxl
Q29udGVudFJlY3QoIWNsaXBUb0NvbnRlbnRzKSk7CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2Zy
YW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGNsaXBSZWN0OwogCkluZGV4OiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMzY5MTQp
CisrKyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsOSArNzMs
MTYgQEAgSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoYgogewogICAgIGlm
IChwbGF0Zm9ybVdpZGdldCgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVu
dFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpOwotICAgIHJldHVybiBJbnRSZWN0KGNvbnRlbnRzWCgp
LCBjb250ZW50c1koKSwgCi0gICAgICAgICAgICAgICAgICAgbWF4KDAsIHdpZHRoKCkgLSAodmVy
dGljYWxTY3JvbGxiYXIoKSAmJiBpbmNsdWRlU2Nyb2xsYmFycyA/IHZlcnRpY2FsU2Nyb2xsYmFy
KCktPndpZHRoKCkgOiAwKSksIAotICAgICAgICAgICAgICAgICAgIG1heCgwLCBoZWlnaHQoKSAt
IChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgaW5jbHVkZVNjcm9sbGJhcnMgPyBob3Jpem9udGFs
U2Nyb2xsYmFyKCktPmhlaWdodCgpIDogMCkpKTsKKyAgICByZXR1cm4gSW50UmVjdChJbnRQb2lu
dChtX3Njcm9sbE9mZnNldC53aWR0aCgpLCBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSksCisgICAg
ICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgd2lkdGgoKSAtICh2ZXJ0aWNhbFNjcm9sbGJh
cigpICYmIGluY2x1ZGVTY3JvbGxiYXJzID8gdmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKSA6
IDApKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgaGVpZ2h0KCkgLSAoaG9y
aXpvbnRhbFNjcm9sbGJhcigpICYmIGluY2x1ZGVTY3JvbGxiYXJzID8gaG9yaXpvbnRhbFNjcm9s
bGJhcigpLT5oZWlnaHQoKSA6IDApKSkpOworfQorCitJbnRTaXplIFNjcm9sbFZpZXc6OmNvbnRl
bnRzU2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJl
dHVybiBwbGF0Zm9ybUNvbnRlbnRzU2l6ZSgpOworICAgIHJldHVybiBtX2NvbnRlbnRzU2l6ZTsK
IH0KIAogI2lmICFQTEFURk9STShNQUMpCkBAIC04OSw2ICs5NiwxMSBAQCBJbnRSZWN0IFNjcm9s
bFZpZXc6OnBsYXRmb3JtVmlzaWJsZUNvbnRlCiB7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0K
KworSW50U2l6ZSBTY3JvbGxWaWV3OjpwbGF0Zm9ybUNvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEludFNpemUoKTsKK30KICNlbmRpZgogCiB9CkluZGV4OiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAz
NjkwOSkKKysrIHBsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsOSBAQCB0eXBlZGVmIHN0cnVjdCBIUkdOX18qIEhSR047CiBjbGFzcyB3eFNjcm9sbFdpbkV2
ZW50OwogI2VuZGlmCiAKKy8vIERBTkdFUiBXSUxMIFJPQklOU09OISBUSElTIEZJTEUgSVMgVU5E
RVJHT0lORyBIRUFWWSBSRUZBQ1RPUklORy4KKy8vIEV2ZXJ5dGhpbmcgaXMgY2hhbmdpbmchCisv
LyBQb3J0IGF1dGhvcnMgc2hvdWxkIHdhaXQgdW50aWwgdGhpcyByZWZhY3RvcmluZyBpcyBjb21w
bGV0ZSBiZWZvcmUgYXR0ZW1wdGluZyB0byBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CkBAIC02OCwx
NSArNzEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldENhbkJsaXRP
blNjcm9sbChib29sKTsKICAgICAgICAgYm9vbCBjYW5CbGl0T25TY3JvbGwoKSBjb25zdCB7IHJl
dHVybiBtX2NhbkJsaXRPblNjcm9sbDsgfQogCisgICAgICAgIEludFJlY3QgdmlzaWJsZUNvbnRl
bnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0
aCgpOyB9CiAgICAgICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJs
ZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KLSAgICAgICAgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9IGZhbHNlKSBjb25zdDsKKyAgICAgICAgCisg
ICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQorICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2lu
dCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZl
bmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KKyAgICAgICAgaW50IHNjcm9sbFgoKSBj
b25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsgfQorICAgICAgICBpbnQgc2Nyb2xs
WSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CisgICAgICAgIAorICAg
ICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OworICAgICAgICBpbnQgY29udGVudHNX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndpZHRoKCk7IH0KKyAgICAgICAg
aW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkuaGVpZ2h0
KCk7IH0KIAotICAgICAgICBpbnQgY29udGVudHNXaWR0aCgpIGNvbnN0OwotICAgICAgICBpbnQg
Y29udGVudHNIZWlnaHQoKSBjb25zdDsKLSAgICAgICAgaW50IGNvbnRlbnRzWCgpIGNvbnN0Owot
ICAgICAgICBpbnQgY29udGVudHNZKCkgY29uc3Q7Ci0gICAgICAgIEludFNpemUgc2Nyb2xsT2Zm
c2V0KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3UmVjdXJzaXZlbHkoY29uc3QgSW50
UmVjdCYpOwogCkBAIC0xNTMsMTQgKzE2MCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgSGFzaFNldDxXaWRnZXQqPiBtX2NoaWxkcmVuOwogICAgICAgICBi
b29sIG1fY2FuQmxpdE9uU2Nyb2xsOwotICAgICAgICAKKyAgICAgICAgSW50U2l6ZSBtX3Njcm9s
bE9mZnNldDsgLy8gRklYTUU6IFdvdWxkIHJhdGhlciBzdG9yZSB0aGlzIGFzIGEgcG9zaXRpb24s
IGJ1dCB3ZSB3aWxsIHdhaXQgdG8gbWFrZSB0aGlzIGNoYW5nZSB1bnRpbCBtb3JlIGNvZGUgaXMg
c2hhcmVkLgorICAgICAgICBJbnRTaXplIG1fY29udGVudHNTaXplOworCiAgICAgICAgIHZvaWQg
aW5pdCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCop
OwogICAgICAgICB2b2lkIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CiAgICAgICAgIHZv
aWQgcGxhdGZvcm1TZXRDYW5CbGl0T25TY3JvbGwoKTsKICAgICAgICAgSW50UmVjdCBwbGF0Zm9y
bVZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKLSAgICAg
ICAgCisgICAgICAgIEludFNpemUgcGxhdGZvcm1Db250ZW50c1NpemUoKSBjb25zdDsKKwogI2lm
IFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogICAgIHB1YmxpYzoKICAgICAgICAg
TlNWaWV3KiBkb2N1bWVudFZpZXcoKSBjb25zdDsKQEAgLTE3Nyw2ICsxODcsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIFNjcm9sbFZpZXdQcml2YXRlOwogICAgICAgICBT
Y3JvbGxWaWV3UHJpdmF0ZSogbV9kYXRhOwogCisgICAgICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxW
aWV3UHJpdmF0ZTsgLy8gRklYTUU6IFRlbXBvcmFyeS4KKyAgICAgICAgCiAjaWYgIVBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKFdYKQogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKSW5kZXg6IHBsYXRmb3Jt
L2d0ay9TY3JvbGxWaWV3R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ndGsvU2Nyb2xs
Vmlld0d0ay5jcHAJKHJldmlzaW9uIDM2OTE3KQorKysgcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsOCArMTEwLDYgQEAgcHVibGljOgogICAgIFNj
cm9sbGJhck1vZGUgaFNjcm9sbGJhck1vZGU7CiAgICAgUmVmUHRyPFNjcm9sbFZpZXdTY3JvbGxi
YXI+IHZCYXI7CiAgICAgUmVmUHRyPFNjcm9sbFZpZXdTY3JvbGxiYXI+IGhCYXI7Ci0gICAgSW50
U2l6ZSBzY3JvbGxPZmZzZXQ7Ci0gICAgSW50U2l6ZSBjb250ZW50c1NpemU7CiAgICAgSW50U2l6
ZSB2aWV3UG9ydFNpemU7CiAgICAgYm9vbCBpblVwZGF0ZVNjcm9sbGJhcnM7CiAgICAgSGFzaFNl
dDxXaWRnZXQqPiBjaGlsZHJlbjsKQEAgLTIwOCwxNiArMjA2LDE2IEBAIHZvaWQgU2Nyb2xsVmll
dzo6U2Nyb2xsVmlld1ByaXZhdGU6OmFkanUKICAgICBTY3JvbGxWaWV3UHJpdmF0ZSogdGhhdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsVmlld1ByaXZhdGUqPihfdGhhdCk7CiAKICAgICAvLyBG
aWd1cmUgb3V0IGlmIHdlIHJlYWxseSBtb3ZlZC4KLSAgICBJbnRTaXplIG5ld09mZnNldCA9IHRo
YXQtPnNjcm9sbE9mZnNldDsKKyAgICBJbnRTaXplIG5ld09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0
OwogICAgIGlmIChhZGp1c3RtZW50ID09IHRoYXQtPmhvcml6b250YWxBZGp1c3RtZW50KQogICAg
ICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc3RhdGljX2Nhc3Q8aW50PihndGtfYWRqdXN0bWVudF9n
ZXRfdmFsdWUoYWRqdXN0bWVudCkpKTsKICAgICBlbHNlIGlmIChhZGp1c3RtZW50ID09IHRoYXQt
PnZlcnRpY2FsQWRqdXN0bWVudCkKICAgICAgICAgbmV3T2Zmc2V0LnNldEhlaWdodChzdGF0aWNf
Y2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50X2dldF92YWx1ZShhZGp1c3RtZW50KSkpOwogCi0gICAg
SW50U2l6ZSBzY3JvbGxEZWx0YSA9IG5ld09mZnNldCAtIHRoYXQtPnNjcm9sbE9mZnNldDsKKyAg
ICBJbnRTaXplIHNjcm9sbERlbHRhID0gbmV3T2Zmc2V0IC0gbV9zY3JvbGxPZmZzZXQ7CiAgICAg
aWYgKHNjcm9sbERlbHRhID09IEludFNpemUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHRoYXQt
PnNjcm9sbE9mZnNldCA9IG5ld09mZnNldDsKKyAgICBtX3Njcm9sbE9mZnNldCA9IG5ld09mZnNl
dDsKIAogICAgIGlmICh0aGF0LT5zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzAyLDcgKzMwMCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMo
R3RrQWQKICAgICAgICAgZ19vYmplY3RfcmVmKG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50KTsK
ICAgICB9CiAKLSAgICB1cGRhdGVTY3JvbGxiYXJzKG1fZGF0YS0+c2Nyb2xsT2Zmc2V0KTsKKyAg
ICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3
Ojp1cGRhdGVDb250ZW50cyhjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIG5vdykKQEAg
LTM0OCwxMSArMzQ2LDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3MoaW50IG5l
d1gKIHZvaWQgU2Nyb2xsVmlldzo6cmVzaXplQ29udGVudHMoaW50IHcsIGludCBoKQogewogICAg
IEludFNpemUgbmV3U2l6ZSh3LCBoKTsKLSAgICBpZiAobV9kYXRhLT5jb250ZW50c1NpemUgPT0g
bmV3U2l6ZSkKKyAgICBpZiAobV9jb250ZW50c1NpemUgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kYXRhLT5jb250ZW50c1NpemUgPSBuZXdTaXplOwotICAgIHVwZGF0ZVNj
cm9sbGJhcnMobV9kYXRhLT5zY3JvbGxPZmZzZXQpOworICAgIG1fY29udGVudHNTaXplID0gbmV3
U2l6ZTsKKyAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAogaW50IFNj
cm9sbFZpZXc6OmNvbnRlbnRzWCgpIGNvbnN0CkBAIC0zNjcsMjkgKzM2NSwyOSBAQCBpbnQgU2Ny
b2xsVmlldzo6Y29udGVudHNZKCkgY29uc3QKIAogaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzV2lk
dGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEtPmNvbnRlbnRzU2l6ZS53aWR0aCgpOwor
ICAgIHJldHVybiBtX2NvbnRlbnRzU2l6ZS53aWR0aCgpOwogfQogCiBpbnQgU2Nyb2xsVmlldzo6
Y29udGVudHNIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEtPmNvbnRlbnRzU2l6
ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gbV9jb250ZW50c1NpemUuaGVpZ2h0KCk7CiB9CiAKIElu
dFNpemUgU2Nyb2xsVmlldzo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9k
YXRhLT5zY3JvbGxPZmZzZXQ7CisgICAgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0OwogfQogCiBJbnRT
aXplIFNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGwoKSBjb25zdAogewotICAgIEludFNpemUgZGVs
dGEgPSAobV9kYXRhLT5jb250ZW50c1NpemUgLSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNp
YmxlSGVpZ2h0KCkpKSAtIHNjcm9sbE9mZnNldCgpOworICAgIEludFNpemUgZGVsdGEgPSAobV9j
b250ZW50c1NpemUgLSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNpYmxlSGVpZ2h0KCkpKSAt
IHNjcm9sbE9mZnNldCgpOwogICAgIGRlbHRhLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKICAgICBy
ZXR1cm4gZGVsdGE7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4LCBpbnQg
ZHkpCiB7Ci0gICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX2RhdGEtPnNjcm9sbE9mZnNldDsK
KyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIEludFNpemUg
bmV3U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0ICsgSW50U2l6ZShkeCwgZHkpLnNocnVua1Rv
KG1heGltdW1TY3JvbGwoKSk7CiAgICAgbmV3U2Nyb2xsT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1pl
cm8oKTsKIApAQCAtNDE4LDE0ICs0MTYsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzdXBwcmVzc1Nj
cm9sbGJhcnMoYm9vbAogewogICAgIG1fZGF0YS0+c2Nyb2xsYmFyc1N1cHByZXNzZWQgPSBzdXBw
cmVzc2VkOwogICAgIGlmIChyZXBhaW50T25TdXBwcmVzcykKLSAgICAgICAgdXBkYXRlU2Nyb2xs
YmFycyhtX2RhdGEtPnNjcm9sbE9mZnNldCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9z
Y3JvbGxPZmZzZXQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxiYXJNb2RlKFNj
cm9sbGJhck1vZGUgbmV3TW9kZSkKIHsKICAgICBpZiAobV9kYXRhLT5oU2Nyb2xsYmFyTW9kZSAh
PSBuZXdNb2RlKSB7CiAgICAgICAgIG1fZGF0YS0+aFNjcm9sbGJhck1vZGUgPSBuZXdNb2RlOwot
ICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fZGF0YS0+c2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAg
dXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiAgICAgfQogfQogCkBAIC00MzMsMTQg
KzQzMSwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxiYXJNb2RlKFNjcm9sCiB7CiAg
ICAgaWYgKG1fZGF0YS0+dlNjcm9sbGJhck1vZGUgIT0gbmV3TW9kZSkgewogICAgICAgICBtX2Rh
dGEtPnZTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyht
X2RhdGEtPnNjcm9sbE9mZnNldCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9zY3JvbGxP
ZmZzZXQpOwogICAgIH0KIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJzTW9kZShT
Y3JvbGxiYXJNb2RlIG5ld01vZGUpCiB7CiAgICAgbV9kYXRhLT5oU2Nyb2xsYmFyTW9kZSA9IG1f
ZGF0YS0+dlNjcm9sbGJhck1vZGUgPSBuZXdNb2RlOwotICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9k
YXRhLT5zY3JvbGxPZmZzZXQpOworICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9zY3JvbGxPZmZzZXQp
OwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1lR2VvbWV0cnkoY29uc3QgSW50UmVjdCYg
bmV3R2VvbWV0cnkpCkBAIC00NTIsNyArNDUwLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRGcmFt
ZUdlb21ldHJ5KGNvbnN0IAogICAgIGlmIChuZXdHZW9tZXRyeSA9PSBvbGRHZW9tZXRyeSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmIChuZXdHZW9tZXRyeS53aWR0aCgpICE9IG9sZEdlb21ldHJ5
LndpZHRoKCkgfHwgbmV3R2VvbWV0cnkuaGVpZ2h0KCkgIT0gb2xkR2VvbWV0cnkuaGVpZ2h0KCkp
IHsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX2RhdGEtPnNjcm9sbE9mZnNldCk7CisgICAg
ICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9zY3JvbGxPZmZzZXQpOwogICAgICAgICBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPih0aGlzKS0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICB9CiAKQEAgLTU3MCw3
ICs1NjgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAg
ICAgIG1fZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQtPnVwcGVyID0gY29udGVudHNXaWR0aCgp
OwogICAgICAgICBndGtfYWRqdXN0bWVudF9jaGFuZ2VkKG1fZGF0YS0+aG9yaXpvbnRhbEFkanVz
dG1lbnQpOwogCi0gICAgICAgIGlmIChtX2RhdGEtPnNjcm9sbE9mZnNldC53aWR0aCgpICE9IHNj
cm9sbC53aWR0aCgpKSB7CisgICAgICAgIGlmIChtX3Njcm9sbE9mZnNldC53aWR0aCgpICE9IHNj
cm9sbC53aWR0aCgpKSB7CiAgICAgICAgICAgICBtX2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50
LT52YWx1ZSA9IHNjcm9sbC53aWR0aCgpOwogICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFs
dWVfY2hhbmdlZChtX2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50KTsKICAgICAgICAgfQpAQCAt
NjA1LDcgKzYwMyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAK
ICAgICAgICAgbV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQtPnVwcGVyID0gY29udGVudHNIZWln
aHQoKTsKICAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChtX2RhdGEtPnZlcnRpY2FsQWRq
dXN0bWVudCk7CiAKLSAgICAgICAgaWYgKG1fZGF0YS0+c2Nyb2xsT2Zmc2V0LmhlaWdodCgpICE9
IHNjcm9sbC5oZWlnaHQoKSkgeworICAgICAgICBpZiAobV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkg
IT0gc2Nyb2xsLmhlaWdodCgpKSB7CiAgICAgICAgICAgICBtX2RhdGEtPnZlcnRpY2FsQWRqdXN0
bWVudC0+dmFsdWUgPSBzY3JvbGwuaGVpZ2h0KCk7CiAgICAgICAgICAgICBndGtfYWRqdXN0bWVu
dF92YWx1ZV9jaGFuZ2VkKG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50KTsKICAgICAgICAgfQpA
QCAtNjM5LDkgKzYzNyw5IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBlZGl0aW5nIGEgYm9keSB3aXRoIG92ZXJm
bG93OmhpZGRlbiBhbmQgc2Nyb2xsaW5nIHRvIHJldmVhbCBzZWxlY3Rpb24uCiAgICAgLy8gSXQg
Y2FuIGFsc28gaGFwcGVuIHdoZW4gbWF4aW1pemluZyBhIHdpbmRvdyB0aGF0IGhhcyBzY3JvbGxi
YXJzIChidXQgdGhlIG5ldyBtYXhpbWl6ZWQgcmVzdWx0CiAgICAgLy8gZG9lcyBub3QpLgotICAg
IEludFNpemUgc2Nyb2xsRGVsdGEgPSBzY3JvbGwgLSBtX2RhdGEtPnNjcm9sbE9mZnNldDsKKyAg
ICBJbnRTaXplIHNjcm9sbERlbHRhID0gc2Nyb2xsIC0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYg
KHNjcm9sbERlbHRhICE9IEludFNpemUoKSkgewotICAgICAgIG1fZGF0YS0+c2Nyb2xsT2Zmc2V0
ID0gc2Nyb2xsOworICAgICAgIG1fc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsOwogICAgICAgIG1fZGF0
YS0+c2Nyb2xsQmFja2luZ1N0b3JlKHNjcm9sbERlbHRhKTsKICAgICB9CiAKSW5kZXg6IHBsYXRm
b3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL21hYy9TY3Jv
bGxWaWV3TWFjLm1tCShyZXZpc2lvbiAzNjkwOSkKKysrIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNTEgKzEyMywxOCBAQCBJbnRSZWN0IFNjcm9s
bFZpZXc6OnBsYXRmb3JtVmlzaWJsZUNvbnRlCiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAot
aW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzV2lkdGgoKSBjb25zdAorSW50U2l6ZSBTY3JvbGxWaWV3
OjpwbGF0Zm9ybUNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogICAgIGlmIChOU1ZpZXcqIGRvY3VtZW50VmlldyA9IHRoaXMtPmRvY3VtZW50
VmlldygpKQotICAgICAgICByZXR1cm4gW2RvY3VtZW50VmlldyBib3VuZHNdLnNpemUud2lkdGg7
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50
IFNjcm9sbFZpZXc6OmNvbnRlbnRzSGVpZ2h0KCkgY29uc3QKLXsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgaWYgKE5TVmlldyogZG9jdW1lbnRWaWV3ID0gdGhpcy0+ZG9j
dW1lbnRWaWV3KCkpCi0gICAgICAgIHJldHVybiBbZG9jdW1lbnRWaWV3IGJvdW5kc10uc2l6ZS5o
ZWlnaHQ7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gMDsKLX0K
LQotaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzWCgpIGNvbnN0Ci17Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbc2Nyb2xsVmlldygpIGRvY3VtZW50VmlzaWJs
ZVJlY3RdLm9yaWdpbi54OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWludCBTY3JvbGxWaWV3Ojpjb250ZW50c1koKSBjb25zdAotewotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW3Njcm9sbFZpZXcoKSBkb2N1
bWVudFZpc2libGVSZWN0XS5vcmlnaW4ueTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiAwOwotfQotCi1JbnRTaXplIFNjcm9sbFZpZXc6OnNjcm9sbE9mZnNldCgp
IGNvbnN0Ci17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBJ
bnRQb2ludChbW3Njcm9sbFZpZXcoKSBjb250ZW50Vmlld10gdmlzaWJsZVJlY3RdLm9yaWdpbikg
LSBJbnRQb2ludCgpOworICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChbZG9jdW1lbnRW
aWV3IGJvdW5kc10pLnNpemUoKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAg
IHJldHVybiBJbnRTaXplKCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4
LCBpbnQgZHkpCiB7Ci0gICAgc2V0Q29udGVudHNQb3MoY29udGVudHNYKCkgKyBkeCwgY29udGVu
dHNZKCkgKyBkeSk7CisgICAgc2V0Q29udGVudHNQb3Moc2Nyb2xsWCgpICsgZHgsIHNjcm9sbFko
KSArIGR5KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNp
dmVseShjb25zdCBJbnRSZWN0JiByKQpJbmRleDogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiAzNjkwMikK
KysrIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCBJbnRQb2ludCBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpCiB7CiAgICAg
aWYgKCFwbGF0Zm9ybVdpZGdldCgpICYmIHBhcmVudCgpKSB7CiAgICAgICAgIEludFBvaW50IHJl
c3VsdCA9IHBhcmVudCgpLT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cocG9pbnQpOwotICAg
ICAgICByZXN1bHQubW92ZShwYXJlbnQoKS0+Y29udGVudHNYKCkgLSB4KCksIHBhcmVudCgpLT5j
b250ZW50c1koKSAtIHkoKSk7CisgICAgICAgIHJlc3VsdC5tb3ZlKHBhcmVudCgpLT5zY3JvbGxY
KCkgLSB4KCksIHBhcmVudCgpLT5zY3JvbGxZKCkgLSB5KCkpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKQEAgLTMxOSw3ICszMTksNyBAQCBJbnRSZWN0IFdpZGdldDo6Y29u
dmVydEZyb21Db250YWluaW5nV2luCiB7CiAgICAgaWYgKCFwbGF0Zm9ybVdpZGdldCgpICYmIHBh
cmVudCgpKSB7CiAgICAgICAgIEludFJlY3QgcmVzdWx0ID0gcGFyZW50KCktPmNvbnZlcnRGcm9t
Q29udGFpbmluZ1dpbmRvdyhyZWN0KTsKLSAgICAgICAgcmVzdWx0Lm1vdmUocGFyZW50KCktPmNv
bnRlbnRzWCgpIC0geCgpLCBwYXJlbnQoKS0+Y29udGVudHNZKCkgLSB5KCkpOworICAgICAgICBy
ZXN1bHQubW92ZShwYXJlbnQoKS0+c2Nyb2xsWCgpIC0geCgpLCBwYXJlbnQoKS0+c2Nyb2xsWSgp
IC0geSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC0zMzYsNyAr
MzM2LDcgQEAgSW50UmVjdCBXaWRnZXQ6OmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kbwogICAgICAg
ICBpZiAoIXBhcmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgIEludFJlY3Qg
cmVzdWx0ID0gcjsKLSAgICAgICAgcmVzdWx0Lm1vdmUocGFyZW50KCktPmNvbnRlbnRzWCgpIC0g
eCgpLCBwYXJlbnQoKS0+Y29udGVudHNZKCkgLSB5KCkpOworICAgICAgICByZXN1bHQubW92ZShw
YXJlbnQoKS0+c2Nyb2xsWCgpIC0geCgpLCBwYXJlbnQoKS0+c2Nyb2xsWSgpIC0geSgpKTsKICAg
ICAgICAgcmV0dXJuIHBhcmVudCgpLT5jb252ZXJ0VG9Db250YWluaW5nV2luZG93KHJlc3VsdCk7
CiAgICAgfQogICAgIApAQCAtMzUzLDcgKzM1Myw3IEBAIEludFBvaW50IFdpZGdldDo6Y29udmVy
dFRvQ29udGFpbmluZ1dpbmQKICAgICAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBwOwogICAgICAgICBJbnRQb2ludCByZXN1bHQgPSBwOwotICAgICAgICByZXN1bHQubW92
ZShwYXJlbnQoKS0+Y29udGVudHNYKCkgLSB4KCksIHBhcmVudCgpLT5jb250ZW50c1koKSAtIHko
KSk7CisgICAgICAgIHJlc3VsdC5tb3ZlKHBhcmVudCgpLT5zY3JvbGxYKCkgLSB4KCksIHBhcmVu
dCgpLT5zY3JvbGxZKCkgLSB5KCkpOwogICAgICAgICByZXR1cm4gcGFyZW50KCktPmNvbnZlcnRU
b0NvbnRhaW5pbmdXaW5kb3cocmVzdWx0KTsKICAgICB9CiAgICAgCkluZGV4OiBwbGF0Zm9ybS9x
dC9TY3JvbGxWaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3F0L1Njcm9sbFZpZXdR
dC5jcHAJKHJldmlzaW9uIDM2OTEzKQorKysgcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxC
YWNraW5nU3RvcmUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpOwogCiAgICAgU2Nyb2xsVmll
dyogbV92aWV3OwotICAgIEludFNpemUgbV9zY3JvbGxPZmZzZXQ7Ci0gICAgSW50U2l6ZSBtX2Nv
bnRlbnRzU2l6ZTsKICAgICBpbnQgIG1fcGxhdGZvcm1XaWRnZXRzOwogICAgIGJvb2wgbV9zY3Jv
bGxiYXJzU3VwcHJlc3NlZDsKICAgICBib29sIG1faW5VcGRhdGVTY3JvbGxiYXJzOwpAQCAtMTI5
LDE3ICsxMjcsMTcgQEAgdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2V0SAog
dm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJh
ciogYmFyKQogewogICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgcmVhbGx5IG1vdmVkLgotICAgIElu
dFNpemUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CisgICAgSW50U2l6ZSBuZXdPZmZzZXQg
PSBtX3ZpZXctPm1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChiYXIpIHsKICAgICAgICAgaWYgKGJh
ciA9PSBtX2hCYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoYmFyLT52YWx1ZSgp
KTsKICAgICAgICAgZWxzZSBpZiAoYmFyID09IG1fdkJhcikKICAgICAgICAgICAgIG5ld09mZnNl
dC5zZXRIZWlnaHQoYmFyLT52YWx1ZSgpKTsKICAgICB9Ci0gICAgSW50U2l6ZSBzY3JvbGxEZWx0
YSA9IG5ld09mZnNldCAtIG1fc2Nyb2xsT2Zmc2V0OworICAgIEludFNpemUgc2Nyb2xsRGVsdGEg
PSBuZXdPZmZzZXQgLSBtX3ZpZXctPm1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxEZWx0
YSA9PSBJbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Njcm9sbE9mZnNldCA9IG5l
d09mZnNldDsKKyAgICBtX3ZpZXctPm1fc2Nyb2xsT2Zmc2V0ID0gbmV3T2Zmc2V0OwogCiAgICAg
aWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzOCw5ICsy
MzYsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldENvbnRlbnRzUG9zKGludCBuZXdYCiB2b2lkIFNj
cm9sbFZpZXc6OnJlc2l6ZUNvbnRlbnRzKGludCB3LCBpbnQgaCkKIHsKICAgICBJbnRTaXplIG5l
d0NvbnRlbnRzU2l6ZSh3LCBoKTsKLSAgICBpZiAobV9kYXRhLT5tX2NvbnRlbnRzU2l6ZSAhPSBu
ZXdDb250ZW50c1NpemUpIHsKLSAgICAgICAgbV9kYXRhLT5tX2NvbnRlbnRzU2l6ZSA9IG5ld0Nv
bnRlbnRzU2l6ZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX2RhdGEtPm1fc2Nyb2xsT2Zm
c2V0KTsKKyAgICBpZiAobV9jb250ZW50c1NpemUgIT0gbmV3Q29udGVudHNTaXplKSB7CisgICAg
ICAgIG1fY29udGVudHNTaXplID0gbmV3Q29udGVudHNTaXplOworICAgICAgICB1cGRhdGVTY3Jv
bGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKICAgICB9CiB9CiAKQEAgLTI1Myw3ICsyNTEsNyBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1lR2VvbWV0cnkoY29uc3QgCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChuZXdHZW9tZXRyeS53aWR0aCgpICE9IG9sZEdlb21ldHJ5LndpZHRoKCkgfHwg
bmV3R2VvbWV0cnkuaGVpZ2h0KCkgIT0gb2xkR2VvbWV0cnkuaGVpZ2h0KCkpIHsKLSAgICAgICAg
dXBkYXRlU2Nyb2xsYmFycyhtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgdXBkYXRl
U2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiAgICAgICAgIHN0YXRpY19jYXN0PEZyYW1lVmll
dyo+KHRoaXMpLT5zZXROZWVkc0xheW91dCgpOwogICAgIH0KIApAQCAtMjY5LDI3ICsyNjcsNiBA
QCB2b2lkIFNjcm9sbFZpZXc6Omdlb21ldHJ5Q2hhbmdlZCgpIGNvbnN0CiAgICAgY29uc3RfY2Fz
dDxTY3JvbGxWaWV3ICo+KHRoaXMpLT5pbnZhbGlkYXRlU2Nyb2xsYmFycygpOwogfQogCi0KLWlu
dCBTY3JvbGxWaWV3Ojpjb250ZW50c1goKSBjb25zdAotewotICAgIHJldHVybiBzY3JvbGxPZmZz
ZXQoKS53aWR0aCgpOwotfQotCi1pbnQgU2Nyb2xsVmlldzo6Y29udGVudHNZKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCk7Ci19Ci0KLWludCBTY3JvbGxWaWV3
Ojpjb250ZW50c1dpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2NvbnRlbnRz
U2l6ZS53aWR0aCgpOwotfQotCi1pbnQgU2Nyb2xsVmlldzo6Y29udGVudHNIZWlnaHQoKSBjb25z
dAotewotICAgIHJldHVybiBtX2RhdGEtPm1fY29udGVudHNTaXplLmhlaWdodCgpOwotfQotCiBJ
bnRQb2ludCBTY3JvbGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5k
b3dQb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOwpAQCAtMzA5LDE5ICsyODYsMTkgQEAgYm9vbCBT
Y3JvbGxWaWV3Ojppc1Njcm9sbFZpZXdTY3JvbGxiYXIoYwogCiBJbnRTaXplIFNjcm9sbFZpZXc6
OnNjcm9sbE9mZnNldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS0+bV9zY3JvbGxPZmZz
ZXQ7CisgICAgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0OwogfQogCiBJbnRTaXplIFNjcm9sbFZpZXc6
Om1heGltdW1TY3JvbGwoKSBjb25zdAogewotICAgIEludFNpemUgZGVsdGEgPSAobV9kYXRhLT5t
X2NvbnRlbnRzU2l6ZSAtIEludFNpemUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSkp
IC0gc2Nyb2xsT2Zmc2V0KCk7CisgICAgSW50U2l6ZSBkZWx0YSA9IChtX2NvbnRlbnRzU2l6ZSAt
IEludFNpemUodmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSkpIC0gc2Nyb2xsT2Zmc2V0
KCk7CiAgICAgZGVsdGEuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVybiBkZWx0YTsK
IH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeSkKIHsKLSAgICBJ
bnRTaXplIHNjcm9sbE9mZnNldCA9IG1fZGF0YS0+bV9zY3JvbGxPZmZzZXQ7CisgICAgSW50U2l6
ZSBzY3JvbGxPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBJbnRTaXplIG5ld1Njcm9sbE9m
ZnNldCA9IHNjcm9sbE9mZnNldCArIEludFNpemUoZHgsIGR5KS5zaHJ1bmtUbyhtYXhpbXVtU2Ny
b2xsKCkpOwogICAgIG5ld1Njcm9sbE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAKQEAg
LTM5Niw3ICszNzMsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxiYXJNb2RlKFNjcm9s
CiB7CiAgICAgaWYgKG1fZGF0YS0+bV9oU2Nyb2xsYmFyTW9kZSAhPSBuZXdNb2RlKSB7CiAgICAg
ICAgIG1fZGF0YS0+bV9oU2Nyb2xsYmFyTW9kZSA9IG5ld01vZGU7Ci0gICAgICAgIHVwZGF0ZVNj
cm9sbGJhcnMobV9kYXRhLT5tX3Njcm9sbE9mZnNldCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJh
cnMobV9zY3JvbGxPZmZzZXQpOwogICAgIH0KIH0KIApAQCAtNDA0LDcgKzM4MSw3IEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2V0VlNjcm9sbGJhck1vZGUoU2Nyb2wKIHsKICAgICBpZiAobV9kYXRhLT5t
X3ZTY3JvbGxiYXJNb2RlICE9IG5ld01vZGUpIHsKICAgICAgICAgbV9kYXRhLT5tX3ZTY3JvbGxi
YXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX2RhdGEtPm1fc2Ny
b2xsT2Zmc2V0KTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiAg
ICAgfQogfQogCkBAIC00MTMsNyArMzkwLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxi
YXJzTW9kZShTY3JvbAogICAgIGlmIChtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUgIT0gbmV3TW9k
ZSB8fAogICAgICAgICBtX2RhdGEtPm1fdlNjcm9sbGJhck1vZGUgIT0gbmV3TW9kZSkgewogICAg
ICAgICBtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUgPSBtX2RhdGEtPm1fdlNjcm9sbGJhck1vZGUg
PSBuZXdNb2RlOwotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fZGF0YS0+bV9zY3JvbGxPZmZz
ZXQpOworICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKICAgICB9CiB9
CiAKQEAgLTU2MCw5ICs1MzcsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMo
Y29uc3QgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZWRpdGluZyBhIGJvZHkgd2l0aCBv
dmVyZmxvdzpoaWRkZW4gYW5kIHNjcm9sbGluZyB0byByZXZlYWwgc2VsZWN0aW9uLgogICAgIC8v
IEl0IGNhbiBhbHNvIGhhcHBlbiB3aGVuIG1heGltaXppbmcgYSB3aW5kb3cgdGhhdCBoYXMgc2Ny
b2xsYmFycyAoYnV0IHRoZSBuZXcgbWF4aW1pemVkIHJlc3VsdAogICAgIC8vIGRvZXMgbm90KS4K
LSAgICBJbnRTaXplIHNjcm9sbERlbHRhID0gc2Nyb2xsIC0gbV9kYXRhLT5tX3Njcm9sbE9mZnNl
dDsKKyAgICBJbnRTaXplIHNjcm9sbERlbHRhID0gc2Nyb2xsIC0gbV9zY3JvbGxPZmZzZXQ7CiAg
ICAgaWYgKHNjcm9sbERlbHRhICE9IEludFNpemUoKSkgewotICAgICAgIG1fZGF0YS0+bV9zY3Jv
bGxPZmZzZXQgPSBzY3JvbGw7CisgICAgICAgbV9zY3JvbGxPZmZzZXQgPSBzY3JvbGw7CiAgICAg
ICAgbV9kYXRhLT5zY3JvbGxCYWNraW5nU3RvcmUoc2Nyb2xsRGVsdGEpOwogICAgIH0KIApJbmRl
eDogcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L3dpbi9TY3JvbGxWaWV3V2luLmNwcAkocmV2aXNpb24gMzY5MTUpCisrKyBwbGF0Zm9ybS93aW4v
U2Nyb2xsVmlld1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDYgQEAgcHVibGlj
OgogICAgIGJvb2wgYWxsb3dzU2Nyb2xsaW5nKCkgY29uc3Q7CiAKICAgICBTY3JvbGxWaWV3KiBt
X3ZpZXc7Ci0gICAgSW50U2l6ZSBtX3Njcm9sbE9mZnNldDsKLSAgICBJbnRTaXplIG1fY29udGVu
dHNTaXplOwogICAgIGJvb2wgbV9zY3JvbGxiYXJzU3VwcHJlc3NlZDsKICAgICBib29sIG1faW5V
cGRhdGVTY3JvbGxiYXJzOwogICAgIGludCBtX3Njcm9sbGJhcnNBdm9pZGluZ1Jlc2l6ZXI7CkBA
IC0xMzYsMTcgKzEzNCwxNyBAQCB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpz
ZXRICiB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjp2YWx1ZUNoYW5nZWQoU2Ny
b2xsYmFyKiBiYXIpCiB7CiAgICAgLy8gRmlndXJlIG91dCBpZiB3ZSByZWFsbHkgbW92ZWQuCi0g
ICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKKyAgICBJbnRQb2ludCBuZXdP
ZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBpZiAoYmFyKSB7CiAgICAgICAgIGlmIChiYXIg
PT0gbV9oQmFyKQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKGJhci0+dmFsdWUoKSk7
CiAgICAgICAgIGVsc2UgaWYgKGJhciA9PSBtX3ZCYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQu
c2V0SGVpZ2h0KGJhci0+dmFsdWUoKSk7CiAgICAgfQotICAgIEludFNpemUgc2Nyb2xsRGVsdGEg
PSBuZXdPZmZzZXQgLSBtX3Njcm9sbE9mZnNldDsKKyAgICBJbnRTaXplIHNjcm9sbERlbHRhID0g
bmV3T2Zmc2V0IC0gbV92aWV3LT5tX3Njcm9sbE9mZnNldDsKICAgICBpZiAoc2Nyb2xsRGVsdGEg
PT0gSW50U2l6ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY3JvbGxPZmZzZXQgPSBuZXdP
ZmZzZXQ7CisgICAgbV92aWV3LT5tX3Njcm9sbE9mZnNldCA9IG5ld09mZnNldDsKIAogICAgIGlm
IChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICByZXR1cm47CkBAIC0yMDUsNyArMjAz
LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2V0QQogICAgIGVsc2Ug
aWYgKCFmbGFnKQogICAgICAgICBtX2hTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2Zm
OwogCi0gICAgbV92aWV3LT51cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKKyAgICBt
X3ZpZXctPnVwZGF0ZVNjcm9sbGJhcnMobV92aWV3LT5tX3Njcm9sbE9mZnNldCk7CiB9CiAKIGJv
b2wgU2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OmFsbG93c1Njcm9sbGluZygpIGNvbnN0
CkBAIC0yOTYsOSArMjk0LDkgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1BvcyhpbnQg
bmV3WAogdm9pZCBTY3JvbGxWaWV3OjpyZXNpemVDb250ZW50cyhpbnQgdywgaW50IGgpCiB7CiAg
ICAgSW50U2l6ZSBuZXdDb250ZW50c1NpemUodywgaCk7Ci0gICAgaWYgKG1fZGF0YS0+bV9jb250
ZW50c1NpemUgIT0gbmV3Q29udGVudHNTaXplKSB7Ci0gICAgICAgIG1fZGF0YS0+bV9jb250ZW50
c1NpemUgPSBuZXdDb250ZW50c1NpemU7Ci0gICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9kYXRh
LT5tX3Njcm9sbE9mZnNldCk7CisgICAgaWYgKG1fY29udGVudHNTaXplICE9IG5ld0NvbnRlbnRz
U2l6ZSkgeworICAgICAgICBtX2NvbnRlbnRzU2l6ZSA9IG5ld0NvbnRlbnRzU2l6ZTsKKyAgICAg
ICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiAgICAgfQogfQogCkBAIC0zMTEs
MzMgKzMwOSwxMyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1lR2VvbWV0cnkoY29uc3QgCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChuZXdHZW9tZXRyeS53aWR0aCgpICE9IG9sZEdlb21l
dHJ5LndpZHRoKCkgfHwgbmV3R2VvbWV0cnkuaGVpZ2h0KCkgIT0gb2xkR2VvbWV0cnkuaGVpZ2h0
KCkpIHsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0KTsK
KyAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiAgICAgICAgIHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KHRoaXMpLT5zZXROZWVkc0xheW91dCgpOwogICAgIH0KIAogICAg
IGdlb21ldHJ5Q2hhbmdlZCgpOwogfQogCi1pbnQgU2Nyb2xsVmlldzo6Y29udGVudHNYKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkud2lkdGgoKTsKLX0KLQotaW50IFNjcm9s
bFZpZXc6OmNvbnRlbnRzWSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE9mZnNldCgpLmhl
aWdodCgpOwotfQotCi1pbnQgU2Nyb2xsVmlldzo6Y29udGVudHNXaWR0aCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fZGF0YS0+bV9jb250ZW50c1NpemUud2lkdGgoKTsKLX0KLQotaW50IFNjcm9s
bFZpZXc6OmNvbnRlbnRzSGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2Nv
bnRlbnRzU2l6ZS5oZWlnaHQoKTsKLX0KLQogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9D
b250ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9p
bnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsK
QEAgLTM1NywxOSArMzM1LDE5IEBAIGJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xs
YmFyKGMKIAogSW50U2l6ZSBTY3JvbGxWaWV3OjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0OworICAgIHJldHVybiBtX3Njcm9sbE9mZnNl
dDsKIH0KIAogSW50U2l6ZSBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsKCkgY29uc3QKIHsKLSAg
ICBJbnRTaXplIGRlbHRhID0gKG1fZGF0YS0+bV9jb250ZW50c1NpemUgLSBJbnRTaXplKHZpc2li
bGVXaWR0aCgpLCB2aXNpYmxlSGVpZ2h0KCkpKSAtIHNjcm9sbE9mZnNldCgpOworICAgIEludFNp
emUgZGVsdGEgPSAobV9jb250ZW50c1NpemUgLSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNp
YmxlSGVpZ2h0KCkpKSAtIHNjcm9sbE9mZnNldCgpOwogICAgIGRlbHRhLmNsYW1wTmVnYXRpdmVU
b1plcm8oKTsKICAgICByZXR1cm4gZGVsdGE7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xs
QnkoaW50IGR4LCBpbnQgZHkpCiB7Ci0gICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX2RhdGEt
Pm1fc2Nyb2xsT2Zmc2V0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxPZmZz
ZXQ7CiAgICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQgKyBJbnRTaXpl
KGR4LCBkeSkuc2hydW5rVG8obWF4aW11bVNjcm9sbCgpKTsKICAgICBuZXdTY3JvbGxPZmZzZXQu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOwogCkBAIC00MzksNyArNDE3LDcgQEAgdm9pZCBTY3JvbGxW
aWV3OjpzZXRIU2Nyb2xsYmFyTW9kZShTY3JvbAogewogICAgIGlmIChtX2RhdGEtPm1faFNjcm9s
bGJhck1vZGUgIT0gbmV3TW9kZSkgewogICAgICAgICBtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUg
PSBuZXdNb2RlOwotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fZGF0YS0+bV9zY3JvbGxPZmZz
ZXQpOworICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKICAgICB9CiB9
CiAKQEAgLTQ0Nyw3ICs0MjUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxiYXJNb2Rl
KFNjcm9sCiB7CiAgICAgaWYgKG1fZGF0YS0+bV92U2Nyb2xsYmFyTW9kZSAhPSBuZXdNb2RlKSB7
CiAgICAgICAgIG1fZGF0YS0+bV92U2Nyb2xsYmFyTW9kZSA9IG5ld01vZGU7Ci0gICAgICAgIHVw
ZGF0ZVNjcm9sbGJhcnMobV9kYXRhLT5tX3Njcm9sbE9mZnNldCk7CisgICAgICAgIHVwZGF0ZVNj
cm9sbGJhcnMobV9zY3JvbGxPZmZzZXQpOwogICAgIH0KIH0KIApAQCAtNDU2LDcgKzQzNCw3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyc01vZGUoU2Nyb2wKICAgICBpZiAobV9kYXRh
LT5tX2hTY3JvbGxiYXJNb2RlICE9IG5ld01vZGUgfHwKICAgICAgICAgbV9kYXRhLT5tX3ZTY3Jv
bGxiYXJNb2RlICE9IG5ld01vZGUpIHsKICAgICAgICAgbV9kYXRhLT5tX2hTY3JvbGxiYXJNb2Rl
ID0gbV9kYXRhLT5tX3ZTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Ny
b2xsYmFycyhtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsYmFy
cyhtX3Njcm9sbE9mZnNldCk7CiAgICAgfQogfQogCkBAIC01NzQsOSArNTUyLDkgQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgIC8vIFRoaXMgY2FuIGhhcHBl
biB3aGVuIGVkaXRpbmcgYSBib2R5IHdpdGggb3ZlcmZsb3c6aGlkZGVuIGFuZCBzY3JvbGxpbmcg
dG8gcmV2ZWFsIHNlbGVjdGlvbi4KICAgICAvLyBJdCBjYW4gYWxzbyBoYXBwZW4gd2hlbiBtYXhp
bWl6aW5nIGEgd2luZG93IHRoYXQgaGFzIHNjcm9sbGJhcnMgKGJ1dCB0aGUgbmV3IG1heGltaXpl
ZCByZXN1bHQKICAgICAvLyBkb2VzIG5vdCkuCi0gICAgSW50U2l6ZSBzY3JvbGxEZWx0YSA9IHNj
cm9sbCAtIG1fZGF0YS0+bV9zY3JvbGxPZmZzZXQ7CisgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSA9
IHNjcm9sbCAtIG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxEZWx0YSAhPSBJbnRTaXpl
KCkpIHsKLSAgICAgICBtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsOworICAgICAgIG1f
c2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsOwogICAgICAgIG1fZGF0YS0+c2Nyb2xsQmFja2luZ1N0b3Jl
KHNjcm9sbERlbHRhKTsKICAgICB9CiAKSW5kZXg6IHBsYXRmb3JtL3d4L1Njcm9sbFZpZXdXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcAkocmV2aXNpb24g
MzY5MDkpCisrKyBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTksMTUgKzE1OSwyNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZSgpCiAgICAgICAgIHdp
bi0+VXBkYXRlKCk7CiB9CiAKKwogSW50UmVjdCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVZpc2libGVD
b250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBOZWVkIHRvIHN1cHBvcnQgaW5jbHVkZVNjcm9sbGJhcnMgb3B0aW9uLgogICAgIGludCB3aWR0
aDsKLSAgICBHZXRDbGllbnRTaXplKE5VTEwsICZ3aWR0aCk7CisgICAgcGxhdGZvcm1XaWRnZXQo
KS0+R2V0Q2xpZW50U2l6ZShOVUxMLCAmd2lkdGgpOwogICAgIGludCBoZWlnaHQ7Ci0gICAgR2V0
Q2xpZW50U2l6ZShOVUxMLCAmaGVpZ2h0KTsKKyAgICBwbGF0Zm9ybVdpZGdldCgpLT5HZXRDbGll
bnRTaXplKE5VTEwsICZoZWlnaHQpOworICAgIEFTU0VSVCh3aWR0aCA+PSAwICYmIGhlaWdodCA+
PSAwKTsKKyAgICByZXR1cm4gSW50UmVjdChtX2RhdGEtPnZpZXdTdGFydC54LCBtX2RhdGEtPnZp
ZXdTdGFydC55LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworSW50U2l6ZSBTY3JvbGxWaWV3OjpwbGF0
Zm9ybUNvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7CisgICAgaW50IHdpZHRoID0gMDsKKyAgICBpbnQg
aGVpZ2h0ID0gMDsKKyAgICBwbGF0Zm9ybVdpZGdldCgpLT5HZXRWaXJ0dWFsU2l6ZSgmd2lkdGgs
IE5VTEwpOworICAgIHBsYXRmb3JtV2lkZ2V0KCktPkdldFZpcnR1YWxTaXplKCZoZWlnaHQsIE5V
TEwpOwogICAgIEFTU0VSVCh3aWR0aCA+PSAwICYmIGhlaWdodCA+PSAwKTsKLSAgICByZXR1cm4g
SW50UmVjdChjb250ZW50c1goKSwgY29udGVudHNZKCksIHdpZHRoLCBoZWlnaHQpOworICAgIHJl
dHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldENv
bnRlbnRzUG9zKGludCBuZXdYLCBpbnQgbmV3WSkKQEAgLTIyNSwzOCArMjM2LDYgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpyZXNpemVDb250ZW50cyhpbnQgdyxpbgogICAgIH0KIH0KIAotaW50IFNjcm9s
bFZpZXc6OmNvbnRlbnRzWCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fZGF0YS0+dmlld1N0YXJ0
LnggPj0gMCk7Ci0gICAgcmV0dXJuIG1fZGF0YS0+dmlld1N0YXJ0Lng7Ci19Ci0KLWludCBTY3Jv
bGxWaWV3Ojpjb250ZW50c1koKSBjb25zdAotewotICAgIEFTU0VSVChtX2RhdGEtPnZpZXdTdGFy
dC55ID49IDApOwotICAgIHJldHVybiBtX2RhdGEtPnZpZXdTdGFydC55OwotfQotCi1pbnQgU2Ny
b2xsVmlldzo6Y29udGVudHNXaWR0aCgpIGNvbnN0Ci17Ci0gICAgaW50IHdpZHRoID0gMDsKLSAg
ICB3eFdpbmRvdyogd2luID0gcGxhdGZvcm1XaWRnZXQoKTsKLSAgICBpZiAod2luKQotICAgICAg
ICB3aW4tPkdldFZpcnR1YWxTaXplKCZ3aWR0aCwgTlVMTCk7Ci0gICAgQVNTRVJUKHdpZHRoID49
IDApOwotICAgIHJldHVybiB3aWR0aDsKLX0KLQotaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzSGVp
Z2h0KCkgY29uc3QKLXsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICB3eFdpbmRvdyogd2luID0g
cGxhdGZvcm1XaWRnZXQoKTsKLSAgICBpZiAod2luKQotICAgICAgICB3aW4tPkdldFZpcnR1YWxT
aXplKE5VTEwsICZoZWlnaHQpOwotICAgIEFTU0VSVChoZWlnaHQgPj0gMCk7Ci0gICAgcmV0dXJu
IGhlaWdodDsKLX0KLQogU2Nyb2xsYmFyKiBTY3JvbGxWaWV3Ojpob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMzY5
MDIpCisrKyByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQ3
LDggKzMxNDcsOCBAQCBib29sIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChjb25zdCBIaXRUCiAg
ICAgICAgIC8vIEhpdCB0ZXN0IGZsb2F0cy4KICAgICAgICAgaWYgKGhpdFRlc3RBY3Rpb24gPT0g
SGl0VGVzdEZsb2F0ICYmIG1fZmxvYXRpbmdPYmplY3RzKSB7CiAgICAgICAgICAgICBpZiAoaXNS
ZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzY3JvbGxlZFggKz0gc3RhdGljX2Nhc3Q8
UmVuZGVyVmlldyo+KHRoaXMpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNYKCk7Ci0gICAgICAgICAg
ICAgICAgc2Nyb2xsZWRZICs9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPih0aGlzKS0+ZnJhbWVW
aWV3KCktPmNvbnRlbnRzWSgpOworICAgICAgICAgICAgICAgIHNjcm9sbGVkWCArPSBzdGF0aWNf
Y2FzdDxSZW5kZXJWaWV3Kj4odGhpcyktPmZyYW1lVmlldygpLT5zY3JvbGxYKCk7CisgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRZICs9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPih0aGlzKS0+ZnJh
bWVWaWV3KCktPnNjcm9sbFkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgRmxvYXRpbmdPYmplY3QqIG87CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDM2OTA5
KQorKysgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkzLDgg
Kzg5Myw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY28KIAogICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0Q29udGVudHNQb3MoeE9mZnNldCwgeU9mZnNldCk7
CiAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBtX29iamVjdC0+ZG9jdW1lbnQoKS0+b3du
ZXJFbGVtZW50KCktPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAgICAg
ICAgbmV3UmVjdC5zZXRYKHJlY3QueCgpIC0gZnJhbWVWaWV3LT5jb250ZW50c1goKSArIGZyYW1l
Vmlldy0+eCgpKTsKLSAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFkocmVjdC55KCkgLSBmcmFt
ZVZpZXctPmNvbnRlbnRzWSgpICsgZnJhbWVWaWV3LT55KCkpOworICAgICAgICAgICAgICAgIG5l
d1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWCgpICsgZnJhbWVWaWV3LT54
KCkpOworICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WShyZWN0LnkoKSAtIGZyYW1lVmlldy0+
c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBJbnRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJl
Y3QodHJ1ZSk7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRvRXhwb3NlKHZp
ZXdSZWN0LCByZWN0LCBhbGlnblgsIGFsaWduWSk7CkBAIC0xOTQ2LDggKzE5NDYsOCBAQCB2b2lk
IFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uCiAgICAgICAgIFJlbmRlclZpZXcq
IHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CiAgICAgICAgIEFTU0VSVCh2aWV3KTsKICAgICAg
ICAgaWYgKHZpZXcgJiYgZml4ZWQgJiYgcm9vdExheWVyLT5yZW5kZXJlcigpID09IHZpZXcpIHsK
LSAgICAgICAgICAgIHggLT0gdmlldy0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzWCgpOwotICAgICAg
ICAgICAgeSAtPSB2aWV3LT5mcmFtZVZpZXcoKS0+Y29udGVudHNZKCk7CisgICAgICAgICAgICB4
IC09IHZpZXctPmZyYW1lVmlldygpLT5zY3JvbGxYKCk7CisgICAgICAgICAgICB5IC09IHZpZXct
PmZyYW1lVmlldygpLT5zY3JvbGxZKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChtX29iamVjdC0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKQEAgLTE5ODksNyArMTk4OSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0IFIKICAgICAgICAgUmVuZGVyVmll
dyogdmlldyA9IHJlbmRlcmVyKCktPnZpZXcoKTsKICAgICAgICAgQVNTRVJUKHZpZXcpOwogICAg
ICAgICBpZiAodmlldyAmJiBwYXJlbnQoKS0+Y2xpcFJlY3RzKCktPmZpeGVkKCkgJiYgcm9vdExh
eWVyLT5yZW5kZXJlcigpID09IHZpZXcpCi0gICAgICAgICAgICBiYWNrZ3JvdW5kUmVjdC5tb3Zl
KHZpZXctPmZyYW1lVmlldygpLT5jb250ZW50c1goKSwgdmlldy0+ZnJhbWVWaWV3KCktPmNvbnRl
bnRzWSgpKTsKKyAgICAgICAgICAgIGJhY2tncm91bmRSZWN0Lm1vdmUodmlldy0+ZnJhbWVWaWV3
KCktPnNjcm9sbFgoKSwgdmlldy0+ZnJhbWVWaWV3KCktPnNjcm9sbFkoKSk7CiAKICAgICAgICAg
YmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0KHBhaW50RGlydHlSZWN0KTsKICAgICB9IGVsc2UKSW5k
ZXg6IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAJKHJldmlzaW9uIDM2OTA5KQorKysgcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDggQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlv
dXQoKQogYm9vbCBSZW5kZXJWaWV3OjphYnNvbHV0ZVBvc2l0aW9uKGludCYgeFBvcywgaW50JiB5
UG9zLCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChmaXhlZCAmJiBtX2ZyYW1lVmlldykg
ewotICAgICAgICB4UG9zID0gbV9mcmFtZVZpZXctPmNvbnRlbnRzWCgpOwotICAgICAgICB5UG9z
ID0gbV9mcmFtZVZpZXctPmNvbnRlbnRzWSgpOworICAgICAgICB4UG9zID0gbV9mcmFtZVZpZXct
PnNjcm9sbFgoKTsKKyAgICAgICAgeVBvcyA9IG1fZnJhbWVWaWV3LT5zY3JvbGxZKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIHhQb3MgPSB5UG9zID0gMDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIy
Myw3ICsyMjMsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChmaXhlZCAmJiBtX2ZyYW1lVmlldykKLSAgICAgICAg
cmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5jb250ZW50c1goKSwgbV9mcmFtZVZpZXctPmNvbnRlbnRz
WSgpKTsKKyAgICAgICAgcmVjdC5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxYKCksIG1fZnJhbWVW
aWV3LT5zY3JvbGxZKCkpOwogICAgICAgICAKICAgICAvLyBBcHBseSBvdXIgdHJhbnNmb3JtIGlm
IHdlIGhhdmUgb25lIChiZWNhdXNlIG9mIGZ1bGwgcGFnZSB6b29taW5nKS4KICAgICBpZiAobV9s
YXllciAmJiBtX2xheWVyLT50cmFuc2Zvcm0oKSkK
</data>
<flag name="review"
          id="10730"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>