--- a/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryItem.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryItem.java
@@ -1,19 +1,17 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.home;
import android.content.Context;
import android.database.Cursor;
-import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import org.mozilla.gecko.R;
import org.mozilla.gecko.db.RemoteClient;
import org.mozilla.gecko.db.RemoteTab;
@@ -118,16 +116,12 @@ public abstract class CombinedHistoryIte
deviceTypeView.setImageResource(isCollapsed ? R.drawable.sync_desktop_inactive : R.drawable.sync_desktop);
} else {
deviceTypeView.setImageResource(isCollapsed ? R.drawable.sync_mobile_inactive : R.drawable.sync_mobile);
}
nameView.setTextColor(ContextCompat.getColor(context, isCollapsed ? R.color.tabs_tray_icon_grey : R.color.placeholder_active_grey));
if (client.tabs.size() > 0) {
deviceExpanded.setImageResource(isCollapsed ? R.drawable.home_group_collapsed : R.drawable.arrow_down);
- Drawable expandedDrawable = deviceExpanded.getDrawable();
- if (expandedDrawable != null) {
- DrawableCompat.setAutoMirrored(expandedDrawable, true);
- }
}
}
}
}
--- a/mobile/android/base/java/org/mozilla/gecko/home/TwoLinePageRow.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TwoLinePageRow.java
@@ -5,18 +5,16 @@
package org.mozilla.gecko.home;
import java.lang.ref.WeakReference;
import java.util.concurrent.Future;
import android.content.Context;
import android.database.Cursor;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.TextViewCompat;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -162,19 +160,16 @@ public class TwoLinePageRow extends Line
}
protected void setSwitchToTabIcon(int iconId) {
if (mSwitchToTabIconId == iconId) {
return;
}
mSwitchToTabIconId = iconId;
- if (mSwitchToTabIconId != 0) {
- DrawableCompat.setAutoMirrored(ActivityCompat.getDrawable(getContext(), mSwitchToTabIconId), true);
- }
TextViewCompat.setCompoundDrawablesRelativeWithIntrinsicBounds(mUrl, mSwitchToTabIconId, 0, 0, 0);
}
private void updateStatusIcon(boolean isBookmark, boolean isReaderItem) {
if (isReaderItem) {
mStatusIcon.setImageResource(R.drawable.status_icon_readercache);
} else if (isBookmark) {
mStatusIcon.setImageResource(R.drawable.star_blue);
--- a/mobile/android/base/java/org/mozilla/gecko/menu/MenuItemActionBar.java
+++ b/mobile/android/base/java/org/mozilla/gecko/menu/MenuItemActionBar.java
@@ -5,17 +5,16 @@
package org.mozilla.gecko.menu;
import org.mozilla.gecko.R;
import org.mozilla.gecko.util.ResourceDrawableUtils;
import org.mozilla.gecko.widget.themed.ThemedImageButton;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.util.AttributeSet;
public class MenuItemActionBar extends ThemedImageButton
implements GeckoMenuItem.Layout {
private static final String LOGTAG = "GeckoMenuItemActionBar";
public MenuItemActionBar(Context context) {
this(context, null);
@@ -42,20 +41,16 @@ public class MenuItemActionBar extends T
void setIcon(Drawable icon) {
if (icon == null) {
setVisibility(GONE);
} else {
setVisibility(VISIBLE);
setImageDrawable(icon);
}
- icon = getDrawable();
- if (icon != null) {
- DrawableCompat.setAutoMirrored(icon, true);
- }
}
void setIcon(int icon) {
setIcon((icon == 0) ? null : ResourceDrawableUtils.getDrawable(getContext(), icon));
}
void setTitle(CharSequence title) {
// set accessibility contentDescription here
--- a/mobile/android/base/java/org/mozilla/gecko/menu/MenuItemDefault.java
+++ b/mobile/android/base/java/org/mozilla/gecko/menu/MenuItemDefault.java
@@ -6,17 +6,16 @@ package org.mozilla.gecko.menu;
import org.mozilla.gecko.R;
import org.mozilla.gecko.util.ResourceDrawableUtils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.widget.TextViewCompat;
import android.util.AttributeSet;
import android.widget.TextView;
public class MenuItemDefault extends TextView
implements GeckoMenuItem.Layout {
private static final int[] STATE_MORE = new int[] { R.attr.state_more };
private static final int[] STATE_CHECKED = new int[] { android.R.attr.state_checkable, android.R.attr.state_checked };
@@ -48,18 +47,16 @@ public class MenuItemDefault extends Tex
setMinimumWidth(width);
setMinimumHeight(height);
int stateIconSize = res.getDimensionPixelSize(R.dimen.menu_item_state_icon);
Rect stateIconBounds = new Rect(0, 0, stateIconSize, stateIconSize);
mState = res.getDrawable(R.drawable.menu_item_state).mutate();
mState.setBounds(stateIconBounds);
- // Support RTL
- DrawableCompat.setAutoMirrored(mState, true);
if (sIconBounds == null) {
int iconSize = res.getDimensionPixelSize(R.dimen.menu_item_icon);
sIconBounds = new Rect(0, 0, iconSize, iconSize);
}
TextViewCompat.setCompoundDrawablesRelative(this, mIcon, null, mState, null);
}
@@ -113,19 +110,18 @@ public class MenuItemDefault extends Tex
void setTitle(CharSequence title) {
setText(title);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
- if (mIcon != null) {
+ if (mIcon != null)
mIcon.setAlpha(enabled ? 255 : 99);
- }
if (mState != null)
mState.setAlpha(enabled ? 255 : 99);
}
private void setCheckable(boolean checkable) {
if (mCheckable != checkable) {
mCheckable = checkable;
--- a/mobile/android/base/java/org/mozilla/gecko/preferences/AlignRightLinkPreference.java
+++ b/mobile/android/base/java/org/mozilla/gecko/preferences/AlignRightLinkPreference.java
@@ -3,32 +3,22 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.preferences;
import org.mozilla.gecko.R;
import android.content.Context;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageView;
class AlignRightLinkPreference extends LinkPreference {
public AlignRightLinkPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.preference_rightalign_icon);
}
public AlignRightLinkPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setLayoutResource(R.layout.preference_rightalign_icon);
}
-
- @Override
- protected void onBindView(View view) {
- super.onBindView(view);
- ImageView imageView = (ImageView) view.findViewById(R.id.menu_icon_more);
- DrawableCompat.setAutoMirrored(imageView.getDrawable(), true);
- }
}
--- a/mobile/android/base/java/org/mozilla/gecko/prompts/PromptListAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/prompts/PromptListAdapter.java
@@ -8,17 +8,16 @@ import org.mozilla.gecko.widget.GeckoAct
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.TextViewCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
import android.widget.TextView;
import android.widget.ListView;
@@ -80,20 +79,19 @@ public class PromptListAdapter extends A
}
}
@Override
public int getViewTypeCount() {
return VIEW_TYPE_COUNT;
}
- private Drawable getMoreDrawable(Context context) {
+ private Drawable getMoreDrawable(Resources res) {
if (mMoreDrawable == null) {
- mMoreDrawable = ContextCompat.getDrawable(context, R.drawable.menu_item_more);
- DrawableCompat.setAutoMirrored(mMoreDrawable, true);
+ mMoreDrawable = res.getDrawable(R.drawable.menu_item_more);
}
return mMoreDrawable;
}
private Drawable getBlankDrawable(Resources res) {
if (mBlankDrawable == null) {
mBlankDrawable = res.getDrawable(R.drawable.blank);
}
@@ -122,17 +120,17 @@ public class PromptListAdapter extends A
d = new BitmapDrawable(res, Bitmap.createScaledBitmap(bitmap, mIconSize, mIconSize, true));
} else if (item.inGroup) {
// We don't currently support "indenting" items with icons
d = getBlankDrawable(res);
}
Drawable moreDrawable = null;
if (item.isParent) {
- moreDrawable = getMoreDrawable(getContext());
+ moreDrawable = getMoreDrawable(res);
}
if (d != null || moreDrawable != null) {
TextViewCompat.setCompoundDrawablesRelativeWithIntrinsicBounds(t, d, null, moreDrawable, null);
}
}
private void maybeUpdateCheckedState(ListView list, int position, PromptListItem item, ViewHolder viewHolder) {
--- a/mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java
+++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java
@@ -5,17 +5,16 @@
package org.mozilla.gecko.tabs;
import org.mozilla.gecko.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ImageButton;
public class TabPanelBackButton extends ImageButton {
private int dividerWidth = 0;
@@ -29,18 +28,16 @@ public class TabPanelBackButton extends
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabPanelBackButton);
divider = a.getDrawable(R.styleable.TabPanelBackButton_rightDivider);
dividerPadding = (int) a.getDimension(R.styleable.TabPanelBackButton_dividerVerticalPadding, 0);
a.recycle();
if (divider != null) {
dividerWidth = divider.getIntrinsicWidth();
}
- // Support RTL
- DrawableCompat.setAutoMirrored(getDrawable(), true);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth() + dividerWidth, getMeasuredHeight());
}
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/BrowserToolbarPhoneBase.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/BrowserToolbarPhoneBase.java
@@ -16,17 +16,16 @@ import org.mozilla.gecko.animation.Prope
import org.mozilla.gecko.animation.ViewHelper;
import org.mozilla.gecko.widget.themed.ThemedImageView;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.ImageView;
/**
@@ -46,18 +45,16 @@ abstract class BrowserToolbarPhoneBase e
public BrowserToolbarPhoneBase(final Context context, final AttributeSet attrs) {
super(context, attrs);
final Resources res = context.getResources();
urlBarTranslatingEdge = (ImageView) findViewById(R.id.url_bar_translating_edge);
// This will clip the translating edge's image at 60% of its width
urlBarTranslatingEdge.getDrawable().setLevel(6000);
- // Support RTL
- DrawableCompat.setAutoMirrored(urlBarTranslatingEdge.getDrawable(), true);
editCancel = (ThemedImageView) findViewById(R.id.edit_cancel);
focusOrder.add(this);
focusOrder.addAll(urlDisplayLayout.getFocusOrder());
focusOrder.addAll(Arrays.asList(tabsButton, menuButton));
roundCornerShape = new Path();
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButton.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButton.java
@@ -12,17 +12,16 @@ import org.mozilla.gecko.widget.themed.T
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
/**
* A ImageButton with a custom drawn path and lightweight theme support. Note that {@link ShapedButtonFrameLayout}
* copies the lwt support so if you change it here, you should probably change it there.
*/
public class ShapedButton extends ThemedImageButton
@@ -39,20 +38,16 @@ public class ShapedButton extends Themed
final Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(ContextCompat.getColor(context, R.color.canvas_delegate_paint));
paint.setStrokeWidth(0.0f);
mCanvasDelegate = new CanvasDelegate(this, Mode.DST_IN, paint);
setWillNotDraw(false);
- Drawable drawable = getDrawable();
- if (drawable != null) {
- DrawableCompat.setAutoMirrored(drawable, true);
- }
}
@Override
@SuppressLint("MissingSuperCall") // Super gets called from defaultDraw().
// It is intentionally not called in the other case.
public void draw(Canvas canvas) {
if (mCanvasDelegate != null)
mCanvasDelegate.draw(canvas, mPath, getWidth(), getHeight());
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarProgressView.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarProgressView.java
@@ -12,34 +12,32 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mozilla.gecko.toolbar;
import android.support.v4.content.ContextCompat;
-import org.mozilla.gecko.AppConstants.Versions;
+
import org.mozilla.gecko.R;
import org.mozilla.gecko.widget.themed.ThemedImageView;
import org.mozilla.gecko.util.WeakReferenceHandler;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;
-import android.view.animation.Animation;
/**
* Progress view used for page loads.
*
* Because we're given limited information about the page load progress, the
* bar also includes incremental animation between each step to improve
* perceived performance.
*/
@@ -83,17 +81,16 @@ public class ToolbarProgressView extends
public void onLayout(boolean f, int l, int t, int r, int b) {
mBounds.setLayoutRtl(ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL);
mBounds.onLayout(f, l, t, r, b);
}
@Override
public void onDraw(Canvas canvas) {
final Drawable d = getDrawable();
- DrawableCompat.setAutoMirrored(d, true);
d.setBounds(mBounds.getBounds());
d.draw(canvas);
}
/**
* Immediately sets the progress bar to the given progress percentage.
*
* @param progressPercentage Percentage (0-100) to which progress bar should be set
new file mode 100644
index 0000000000000000000000000000000000000000..0747e81f8def2b72c6a2a37c544d4f73e1aa0aec
GIT binary patch
literal 268
zc$@(Y0rUQeP)<h;3K|Lk000e1NJLTq000jF000*V1^@s6)Ke9_0002fNkl<ZcmZP|
z7VO=-*KPm){g3zU+jnQro;{XCYXmBG1#0>M)chZcKLHIhBSxbmQ1LgoMg+c&SL5#8
zyKR6regP}S#INvav;a8|hsJ+EXUAgIxNFxg6QGSBaA^Dw)R>7&qXAICJGf#@oR3xG
z&Ye4TfRe9qX#~2a6qg@0fs!xr*jSCrsj5K9XLxLE#1)T9pp=8h#&(=h0yOm?9*w7A
z>L|9EVn0(J+LXsL<tdEvv`u-gqC7uSUXoyzVL-*-k;^ckm?_DnClKF;m7V~|v@+nr
SszF%*0000<MNUMnLSTYyFmv$$
new file mode 100644
index 0000000000000000000000000000000000000000..c519345a1fc5359b34b666dd470a5c6930607d56
GIT binary patch
literal 288
zc%17D@N?(olHy`uVBq!ia0vp^_8`o`1|-Ad1?~f>=bkQ(Ar*{oXD#GC6d>aIQMQ58
zKva~2C;NeC*TK+Dg0oB7R_O&C<TxNa{lUIpFSCozd#=knpE)c4A0JTns-nGj`8O`V
zX4P4~QT5x!xQ&bF?r>~q+TqM_vcEoXF~g+!DlbGGKGnW?E0dtWz{ugiz$DPXzyf4`
zVir)4E9mUqSUJ_x&a~mk_x;m7BjOlN&NtVK<9nd6UU%cMpg8M~Pv<^Sy?6EB^Vv6Y
z6yj{&wcSWw>ihE%r-xkO5kYsE!Xw++A9X1ASv=aibjOo)@4}P)(;iLAS4~%p;|mZd
j=L!g%6MY@%Ook7vPdrxi8_#h)3*vdY`njxgN@xNA(%W-}
new file mode 100644
index 0000000000000000000000000000000000000000..08ed24fc7e532a1f2c70592985e18e07962bc3f5
GIT binary patch
literal 289
zc%17D@N?(olHy`uVBq!ia0vp^_8`o`1|-Ad1?~f>7oIMTAr*{oXECxJb`W7@R+!Kd
zvqXKB#uOm=!cxqEq4AItUx0)D#tC)@!V^xqO}6j1Jm3>?aDBu?!($T3*Kh9?pX{O3
zac%Msr7&laweE$|3qEV)F<-fNM7KG-Q2V`KjhN}9qwN-tI+XihMEVE8_j6|)UApJT
z|4l!H&2x0^JFl*;DbhMW{k^MAM~&9UTjlJW0!CZ9*gPI-%2^ve`x`Ko|AUZkX_H_B
z1B(I!BZmV6(-sh;i22GqW}d0fOb=8Xv)<$85?)>*$+)QYgA7Z7%0FR+4wXZ0k9t7v
be8asX<O!!?aM@0vpBX$|{an^LB{Ts58@g^E
new file mode 100644
index 0000000000000000000000000000000000000000..29a831b043d7237fe9ba2dc8f4a5ce12022e90b3
GIT binary patch
literal 109
zc%17D@N?(olHy`uVBq!ia0vp^(jd&i1|)m0d<g|oCY~;iAr*|t3#27j7aurrLZdfN
zOj25U{=(U=3ROQMOtLPnaBb0*-db?wP$2iq=t@3q11^Sh2TU*iH#%bo)X(7Q>gTe~
HDWM4f5mzC8
new file mode 100644
index 0000000000000000000000000000000000000000..ef949625e11ae7e85087900e9c11352b789dac00
GIT binary patch
literal 451
zc$@*l0X+VRP)<h;3K|Lk000e1NJLTq000{R000{Z1^@s6jnwp20004sNkl<ZcmcfD
zCDau`6bJCZ=^eL%yC<w-6&g;#-Q61Q4s&*{B0bS733qpw`CRt--S<D|rj_3rA6IO)
zY}wKlNDd+EH(<FFLg?nQ3Xq=o5B;q#AbseW`<X+rRsVsXbx<S7`XXT-Vh$q7g_c-d
z3*Uvn<E&fP9$3$%fynY1QKvZLw26}>y@m1}fM+=C1d??*z+eBtxmkeof#i1z`X`_)
zH3xxtcI>_sFxCcp5O^}Oe#+6U`^~|GXcVBn&M{Mu$93vr0`hWXeFLaJDyq8i%dr-(
z9zTA(g9DN;IbJd?V7ch30oBzf7dO<Zw2Wl8L&RPIc~zV_<rcCY0Fvi<pq<Vtxwf!6
zXtmj18CZ|xfc^mKVzV<2P*3OFBZ=miK;HXyKzb?H?w_E{G=bvc1XiB|`U1eytXk9&
zNI4Bck`IA-q6u{N?Agx1ayt!*`(g+(!tgkekP5Lr^+W?Qzg;2A{Uk~HIO_n(u@)`5
t>%De$S>)efEn*=448%KuiA91`GXRLQcNg?>#AW~h002ovPDHLkV1fg!&^`bF
new file mode 100644
index 0000000000000000000000000000000000000000..b3481525afb3cabb5d5d7d5c672a72c6e5d7b71a
GIT binary patch
literal 351
zc$@)W0igbgP)<h;3K|Lk000e1NJLTq000{R000{Z1^@s6jnwp20003dNkl<ZcmciE
zfkp*U5C-5ARH~9Bi5{T02w-s&9J<z-bM8!b<^g(!1OiY`aDxaTq7Z=)k%$CBAV`2R
z$byyYHuLji7xS^KnJ`K=OPS6n!%X~<k&pE`SOthrGs*XF0p-F3j4{r&kOK(FS8iZk
z*9(Ar>jrKi&I9s|8<<j>&BWJkV6WHA0LrBsr~`Gd8(3A<R7O5`17nPnKz#Nmn2GlQ
z<rRqE#%V@*Z;=i#BY)`&^P&ucHPV(pgMI=JEKze9Qrg`}#QVB3#%b3tpap7<LI@M#
zKe96ztON0jJ%qRhB+uqhEM*l?p3I??(h86~nnV45vkWK?=1`2Z1jzU1&~_<{ndHtK
x(&)l;f%LkvggWj<d#K&a#3y<Y1M<PB&<{VERJ4^kHu?Yn002ovPDHLkV1g`yl-vLS
new file mode 100644
index 0000000000000000000000000000000000000000..160763d0b18a7fc60b653a466063be5eb8825c58
GIT binary patch
literal 468
zc$@*$0W1EAP)<h;3K|Lk000e1NJLTq000{R000{Z1^@s6jnwp20004-Nkl<ZcmZM{
z6+|T`%f}~Y90%ebv4CFdfFq(Hhy(a_Rr&~lAPIz=gvf&ufbyWbx3h27?F<P-kpL1(
zfK)^(B0?a2m4Jj4B~@`%)h;hO-bOXuFmUiQx3mAZ#;&-Zimv6Wg4m-BojK_JvlY^Y
zIHZi}1LR8&)M197MW-tR4}zhadMLw?x5XepJK~^+T*&ZN6h$o}P@-u}A=UDrY&n`_
z&M39upqKo=&d$j#1Jac1w;bqIrA%TF7@E(YhH8nivD`!{Ed`+ail$*HrwB;vIgo3*
zN>V!@qLfOu6_EFGq3oO-`1F@nhOZN}(=HikCk)B8LVhgx^JoO-+hM%e2*?L`cCUEh
zoAECIdD(C3Z#zkO2EcZGNp+eHfLSyNSAurZCr2Q3SF<dXD?n1gOiX!G{L5Uy>Ub#a
z0ckgm<7Qb<)2P22fpgsVVIT^Ep&>xJ4Q%P5o3Kq3EbD5&&&NP+9z|NW3xl>7kk12`
z^`IbK6Pmh}p;P(SRiKozoq%*wkJ+`te^sn?heA45hVOp*BK`o}&Rh!&qqNKb0000<
KMNUMnLSTYYXwo_W
new file mode 100644
index 0000000000000000000000000000000000000000..7a284903f3dba21f1c85e62e288b2ca2d48f5abd
GIT binary patch
literal 393
zc$@)=0e1e0P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ0003{Nkl<Zcmd7W
zMRw#s3;<AHWA-x#7-q&Wvs-0L?vldHc!FFkS%ohU#tAbg^?DTs={>D%cmHDWZX2=C
zRsqVKL74&MO7Bs^VYthX93&>7^gIftB#7QQhz67iZK*?OK>0pBH6)w5P-HU!c}o=v
zLP^zEQvv@o$Q!z93gf>3WnEcK$u~e=RfdW_8{}nW&ByNn<-aZz$Qy&asH^!x`@#^<
zUmNB7_Q}b|CVF|-2^2>|ynSU9plt!<efPp6r9-)PR*=VgD^CZ;)zY-*no9$Sc)|me
zK^-98_Q|H4>}z6VdjYx6ko4bA^7dsIK*{nRA`Eed8VnFO>%kz`X~I-$z_`<ho|*}5
z1jzd;Ffo)s4aP?)F(i9Rnu!Ylc~?oz#B+dTM+K%h;Ae(pQv=2gZ!H*i9is-5cwwal
n;{u4QPp|W2%n$gtcgr{gQ-=$IJPW?V00000NkvXXu0mjfz89n-
new file mode 100644
index 0000000000000000000000000000000000000000..78a33ffab48009630569e0e1588d5af71b8be4c2
GIT binary patch
literal 598
zc$@)N0;&CpP)<h;3K|Lk000e1NJLTq001Na001Qj1^@s6DqKrF0006VNkl<Zcmd6r
zHPqEW5QP_acXziA>2P=WJ((mkB(u0XR5-Lqf9P;%um*2%cXxN!w++r4Ec^cNoLkQw
zSylg;JSsQfB5RNM79c-^fET5urR7VV8REGf>5pFvh*!67-#)*xOddd9VhsFDfYB6X
z3zIz%FE@dIZHQMY8}#VWqYx0UGeMIZ(gWh37uPKYsJ9Ac-g`kbRK-ny-!Bcwdy<>s
zHxO`!jmlI6<U_*DJadDvn~EENs3s7f7AkW;#~;$xf|;-(5MNGe2K9B%3!AC9agbY?
z-8Z=zK9lL|+A3}Uxt)jnP-xRZGg~Tda)>*b0Tl*#drnSHNfkE`aKA*rS3+erwD<kO
zHq1Cc`mHoGuFnHK4Ez31ITZDB9IF4t4Dm2P{$PTpN+v!KPgW3UwiHwr@<ZjJzGE+_
zEMw@3y?}Dt6kyodLw=b%Oz}ZwaD3e!NI#W(Y^upy{<i@2CLq1^n_b@xqBcPKfpF=1
z;rQG|*}|M(fcmyjsaIy-uxJV!0r6E~_+Ep#qS_*xs1^{POJ>UK>Mn(u_A2E>Re<=I
zP^otwGALUBK)FQVebV0Hq7IcU%ryg$cS@!b8mVm2r%zNAkT=U48&6QSNJ~pA2*_(>
zQ#>P8Pv|6yW-E*2@sO8Erd$eLWfMSNX#KN6HWkfG@*OiVMZag!m>;gcs8<OeR`CJ>
k4>k{ggdUn!{>zu%CmfVBFC#VXr~m)}07*qoM6N<$f(>c|8UO$Q
new file mode 100644
index 0000000000000000000000000000000000000000..ac5166cd8261a19e9876cbd1e87058f62497030c
GIT binary patch
literal 544
zc$@(s0^j|KP)<h;3K|Lk000e1NJLTq001@s001@!1^@s6j74hQ0005!Nkl<Zcmdto
z1FT$85C-5|#i?!Ewr#ij-n(<|&g{E0wH3Rut=e`QTWwI=w#}TdC#d<)+WXyOM87*G
zBuQlwTjN+C65BlzTb{|}Dn<WuOirvev0ZXvA3wkN=lpB`B`QBZS3N+X;D~L1fI+}z
zGHLk$fr6Wy&DID3Ksd*G1QO?5t{sUzg~a7M>*iRWVB(ToXD9jy5*M?!C$R^RI1*{&
zyHuDs%C&TCcR*{)!e&nN79=i{q>V}R1|%*o(FP=X6%)r?mqaf^;{2Z^(F>3`-)Sb%
zbC5V9t45-y!EnL+$O%YX9LE)j?dY$-6^W%VcC5RJ^`H|w^tUfzdHX?}%i0|O0>UN0
zg+~Vi=gVq@0t#@Vs~};H?G9>+-HrU5Ivk8`X+*3Wuu!_SckkZCBO)qCqT5kW?b@X!
z!tTt3w3MHh@biIx`$D2yehKPd3YXO-cqq~Na3~U;1&4|`od$<;tSPa6K&vRSa40_p
zbYkz(QYu5N@4!+jodAa-wlO637AvI^9pOaZfTdL75Mq4|g(^sNfMb0LmQraSVtWDB
zP15#G^f?GB=+qvAL;2McIFt_}DhGuMaI6Q=P{Bq_DAd=s&N{Zu|0^n3%yVq(9NQgY
iJ4LK>{nAzRo8uD!$^54-=0<`50000<MNUMnLSTZUhWAYX
new file mode 100644
index 0000000000000000000000000000000000000000..0176a83f1d1efd1aa2c64f1b971d7a6de5d50fcf
GIT binary patch
literal 842
zc$@)B1GW5#P)<h;3K|Lk000e1NJLTq001@s001`#1^@s6M;W<z0009KNkl<Zcmds-
z1F#%T5XbL*wvD(Dm0k*QO0ko9y0<gCJ$Ks^+h#Gg?W7Q=5ZktG+nHcv>_ojgRb71V
z?tV3`|8z$_^kIyB8VS?kjw&rAuHk?;xx~XlV)MjA_w!&wf!jhzb>~^*fV0Y!alZ*9
zlqKEH9?Xm37Fd?`ZIGBg5r6|<1?3rFzd#V_*x`WVUJK+IULv1V7-L^^iPQ8C_F-2^
zCz7%N-*douKB07+jV24lIscUduJ8>d)w;B_w4X^rr2zaR05|!A(uNDm+xAa1)43JP
zEI{q@3#H>w$0JFosDn8Ks6z(sH;Qbs5F(byC7v)y6y5Lrdjd(QbURj%gF5FQ%56os
z?~9k<pf39Z!rK<O)hPFUOh~-$GxJ>+4yKZY;xZ0Gs#`vxF6kR43nd&?N4t~H%y&B7
ziRYuNrCJ%(sKZg)%}tdlK>&6!fZC~xHd!sj9W}_HMy*Xvjr~bhO9`pQ8$c~!%>9wB
zmI5{1FO&eBO1JNeMt=}e&G!f8fnCw5{Uh610cyDg%J!gAQ{CT$R4WajNSfuiH6I8>
zsWyiL%B!I}A{^B45J7ppX+%go6*e$!5#1$(5zKpj4q1$yHs~_wn*}(`>kGMqT|;nF
z7xZ&EW9+-9g`|V+%nGy`!)*I6-6wu5(`D<`D%nvD&ET+~_eeumSh`hoEiiC}p*m)X
z&$Z%~o<5qmWsxF9KBEn1V?_>l%|L8UB0q+;oOm()+~yk&)RYn>N_<Hg&isKCXHnH@
z-mw7la8M@=CMt7uU7-ypWiA2gh=E%!(n6NDTc*ow9MoQeY`L83fX_QAj`Kg4xXr*V
z*J!m)8cw${ddzB23O4HhB@L%ti%VQ)5OZ5OSO1cR)0+Z1^BKh4t~4n#hH<w;yX8J1
z+^j*^#+hJH#1BTJvHz&w+@}I?h{*;4X)sTXOSgyLsV8IXi-4^2VMjlbUhB9ZEnqf&
zL-pM=h%2+zU!}(NQdwZPOu6F<F4c|aq0~$RSwnA=M@XC@0MBrVyE(W`->1sH3p^+@
U!CA69j{pDw07*qoM6N<$f_tomF#rGn
new file mode 100644
index 0000000000000000000000000000000000000000..d06c370cb02cf09d2ff2bef7082206b37cc5ad46
GIT binary patch
literal 240
zc$@+701y9(P)<h;3K|Lk000e1NJLTq000yK0015c1^@s6ED}Cz0002DNkl<Zcmc%K
zg$=_n6a>%=+Ky1}0A<E`Lc3U)DcZB33}^TB8|j2U&uk~LUr`iYq$<nO<#}FDe)#|_
z0G)0Fycvbz=eY-7CCjp!2D`?E%-QS<=7(L$FdxiqpTVXiwqaIt!eD50Ym1?9Okz7*
z3`HXbL-q_dBv<obi=k*B!$Lre;>dXVA?s27w$Y>d)52d4cIcKy!!B4o+P8nC0#Wzh
qhyFZ#O%b42F1k8Wy<do}u>=5?Fq$o0LF=ag0000<MNUMnLSTYZ&tpXZ
new file mode 100644
index 0000000000000000000000000000000000000000..c5ed0e62f76dc0a9a06669ee603329656b8596ff
GIT binary patch
literal 365
zc%17D@N?(olHy`uVBq!ia0vp^At21b1|(&&1r9PWFq(L}IEGX(zP+R9!OSSpmKbZ)
zdG%iS+l2JJ9Kw9nd-~35t>NC3rT;p5>*1;`@BTE4vvl9tUfF)0JN~(xo~(Vjn&%`H
z&skpO-}%M2F1vQ^nM+$@-1U3ecdzqpZS!F;?%)EVVhOD?k-66w^SZNIz2Dfh!l8JD
z!};vlI$Bpw-xAXbS@B=+D;JOoSm@OH>$+p>t|c6zS|PR0cO6@QJq};EZJX4|Yg_ZW
zR@gq<cg?q+@d`u6<Vubewl9*`HgkP3U%|cLW^O~;cIH{J+$P(n-+D7;f%lA`#cz4f
z{Na4G=vq(4Z<%Gun?-$Q7^uquiA1}@EtQiJ4z>K`5>`7S$Re!fv%o*nr@q+Yi9zGN
zLpFy@<K-?#|0?A2Sy2f_uM=kk<Y(n?&0TBDwoC=&+e_+p3uf=z^5N(MU@$Uxy85}S
Ib4q9e0Gy$mhyVZp
new file mode 100644
index 0000000000000000000000000000000000000000..5f794f08caed9bc45a50d328e999406718f736a3
GIT binary patch
literal 357
zc$@)c0h<1aP)<h;3K|Lk000e1NJLTq002|~002}71^@s69BUB40003jNkl<ZcmeI&
zAxHyZ7{+mB#W=9o>}A=GeLV>i#;W-`_983`vL5Widfm9*m#1&=`VJqCeenCk(~lq5
zzV}L!BuSFgYERFbMXjr?Yd1vxhq<YpYCnJbuHBKzU_#AfLd|1B9fi3bFwb0Hn~}?4
z4qMR6VFC?f?rYZ+GnjpCP7x+dnC%A>CQQME33GffVXk1pgxOLsVZt1?t8Fi2UG26h
z%m#L-&0%J@ftlUwl$gsbCeVHM<AL@-v!E|Pv!JuuJJ2yfUFEc(ehp{mEutQ3>kHa)
z`qRif>ejIrRH#rDLw$n^6>7_<A5ft}g$flaRH#s)LWMf<`w!Gp?Ve&5^^sr>_2|Ad
zhk88!?}WO8IUOp@AS%oNYFF!PpS1@nk|arzBq`A^b8DOGV33Zj00000NkvXXu0mjf
D6HTBl
new file mode 100644
index 0000000000000000000000000000000000000000..d33bf87c3fae840ca46d1fba67b3a51cd462c03a
GIT binary patch
literal 123
zc%17D@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBoIG6|Ln;{GUO&jmV94QmaII(c
zt*qb>57D1(l@DqUbl2&ttX%a^!>4?`#+jKKXL_d|JaFIugCh|5I$M5PzQ=KrSzmMV
V>&2R;en8V0JYD@<);T3K0RY4&Dsun;
new file mode 100644
index 0000000000000000000000000000000000000000..5f073ca27982c9ebc954cc90abd21110687df17a
GIT binary patch
literal 584
zc$@)90=NB%P)<h;3K|Lk000e1NJLTq001Na001Qj1^@s6DqKrF0006HNkl<Zcmd6r
z1FYOl6vg*LZQFKOM73=<s%_hd>NcqPe><0TgF2{f+qUNg^-i!m+euEa{O!53SD`4J
ze?ou534-81Aen`%FOcO9uy&6d%=q!+{|6R>te?M^VVxQmARrxX0e&lz`QF0_qzQil
zvI3Ts)<thXhN!9iVh0q>nKLJuHz-8z0VE$If{|`tv0_Ckk4|Z8Kz$d{DUy9l5z~8v
z3KP|~fBnee(<1<o)t^&FDgx@m$WH0mAke)2oC-@RB)J*+vddKfDC!MrEn<FPJ?DVB
z0|4c`LD{>4q=zFykvs;_O5UJWty+~9NOn4M)r$nw>fWH1E?t@&NyGv520$ABrgC#(
z!(9KX8bwn8+{}Ha^gSYX_^vL=Fl7B?pNykE8IqofK=y)p`(lR-Nw<*iFLh+}dm+E!
za){(w$eA-d$*{gQL^Tq#t6^P$q+5VxTeM|=wKG&C&l3=<c*xpZ6G&b;fF6a3D#RSd
z<~5u69M0Ueb<InQ3nXtN!|3&ZxmfJO#N5VaUkA(uV@$r-!w_`>k`IpN|Aa9nhYx4E
zICC250RYGp`#Xcu#{~l{yKP(IAxtvZoo8h0;>DUW<}k=Q+6|)+1VK_C&P;Z~_!_AV
zN=LUdy3pIw!MSW8p6Pe{!8+tmFa~){TozVH68@zPMd=^sl^)MboUvHX8KM@^_}nj>
W+8S_|+*9EI0000<MNUMnLSTZ}#0i4{
new file mode 100644
index 0000000000000000000000000000000000000000..91256ed8e5d3d333656d89a04d9760135310311d
GIT binary patch
literal 347
zc$@)S0i^zkP)<h;3K|Lk000e1NJLTq001BW001ut1^@s6f-J}(0003ZNkl<ZcmeI0
zOG>~n7=-Ia58wrSgU?&&UXNmL)dTdENqYrBbgfp!s&~-IBG8?X*badPhC(3uhV(DZ
zKiOQPD2h#M?RDSxIiFXY+Q^m~0FDU0r+&P;uCtuqUJCv`flp1`ITN$O33>CtMNPDA
zdpL#vVFIouBycZRm@2qe{$KFd0JwV%H&O7qt`8#M4`o?yso)>RnByooHyQ%rBY=}&
zI4gHQSvYl?CLF*XH+l(yQ=d|J(==yk!nt^tNB5i}{L2_~o+iAisvR}_DHIOiLJpT0
z;JWV!1A<dfn$UlSs|o$jDBi?sVi4Sl1ouLL2~BUH><dTNnn_JikFGhDn(*zpEF<8W
tTWLfC;8Gt_>0>&5P^ph<)nT=M`~q~cPK?-kM4$iw002ovPDHLkV1iShl)eA}
new file mode 100644
index 0000000000000000000000000000000000000000..9ce76e97e7b07f77aebd7497cee25a0f74624cef
GIT binary patch
literal 808
zc$@(!1K0eCP)<h;3K|Lk000e1NJLTq001@s001`#1^@s6M;W<z0008-Nkl<Zcmds-
z1B_)!6o%hAy|%p@tfJju6=xl+&1h|nJ>i&btGe&uFc{mmZQE0CJkzQg)xDMcLGyiu
zQ|CW*QkP;FW3EaiWn^Y%UW2Snfpis+96-{^0P;@Eq4atn8HlWh&sK!oES6A3MMXCN
z%Ww-(n}DQa?7)yEGYwF$B&TJ|mRH6C$_5E!+1U^<D`2U#XE81TV^2fD(jx6^jL8Td
z4p_=uz^s5|XfE?jL4%c+mfi*|Q(fVZWIO=e5j0#r;;q0k!UJw*IrIIY2a*hXeq7;z
zb)hlxSopz&q|{^ORvMzGQ-O~wkff_K9Lst{d_D#jx3+MH)2&rRuLchXq(33+A;+s=
z7oxlwJRG8Y3aI;B;Ox%>^M`SOd();~jw^Q%n7<1iu8Qa-WZmR=<_-bLAHl;JqUWp;
z^$030!iO{R7?3V-hm%hBDhV2{tc>pg)+w%VfSMb;r!&UfVx6}~3TA@$bT+>P(mw8R
z(yvBO7omIuEaQN5iw(n<QxWTKSFp55hn19++<baA@T>hsB1Af&tW57bQGA)76fi3w
zos~AMuDM$*L{gMW8k7~FZcHW^=_(7hDQRHoGCGhJ#vi7JY{VFIBeG-y$@T<5b*?dg
zv|-ZbZI?^Nn0tY=+;jW23AgCOlIaQcZ;(XxOaN<v2h<@%{vlMTt9`bgeI<=hz6`dY
z3M`Qa)LsC7FG#4aUAtZfEb0NZtD5NbfPI$?OjH3ieQ%Nu_E@P6)yyvh31y8Sl8*GS
z|EmGu*^nOu$9W{QON`+sgM_lK);6$sK+P>DdMM!1n#}Mh&`h<z8)~3<07>R}tkhV$
zb%TV8qUaI(?CMdF860c}0U|zuEK5D0g6;XREA=3-uJG7?RY6yDeL4k@BtPh$Mq|vi
zuCJ95YquI*Z*abfWV-`Y`&3*85O;6jnfgDD-K9h8alJpsgQn(oqX9KQ?FZnmW8dr?
mku*k@MM$z4So&YePMag>I8`-MPF?c=0000<MNUMnLSTa65O7Wa