• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

コミットメタ情報

リビジョン4d674a08e80ff3bc1b6bc66d4f3c29c132bd8c44 (tree)
日時2011-01-22 10:52:08
作者azyobuzin <azyobuzin@user...>
コミッターazyobuzin

ログメッセージ

新着通知を実装

変更サマリ

  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Controls/StatusesListView.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/DirectMessagesTimelineTabPage.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/HomeTimelineTabPage.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/MentionsTabPage.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/TimelineTabPage.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Extensions.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.Designer.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.resx"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.Designer.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.resx"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/ITwirunrunMainForm.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Icons.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/Settings/Settings.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/StatusInfo.cs"
  • delete: "\202\302\202\242\202\351\202\361\202\351\202\361/\202\302\202\242\202\351\202\361\202\351\202\361.csproj"

差分

--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/StatusesListView.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/StatusesListView.cs"
@@ -8,6 +8,7 @@ namespace Azyobuzi.Twirunrun
88 {
99 public StatusesListView()
1010 {
11+ this.DoubleBuffered = true;
1112 this.View = View.Details;
1213 this.VirtualMode = true;
1314 this.HeaderStyle = ColumnHeaderStyle.None;
@@ -19,7 +20,7 @@ namespace Azyobuzi.Twirunrun
1920 this.OwnerDraw = true;
2021 this.DrawSubItem += this_DrawSubItem;
2122 }
22-
23+
2324 private IList<StatusInfo> statuses;
2425 public IList<StatusInfo> Statuses
2526 {
@@ -36,7 +37,8 @@ namespace Azyobuzi.Twirunrun
3637
3738 public void SetItemsCount(int count)
3839 {
39- this.Invoke((MethodInvoker)(() =>{
40+ this.Invoke((MethodInvoker)(() =>
41+ {
4042 VirtualListSize = count;
4143 this.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
4244 }));
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/DirectMessagesTimelineTabPage.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/DirectMessagesTimelineTabPage.cs"
@@ -15,7 +15,7 @@ namespace Azyobuzi.Twirunrun
1515 .Where(tweet => tweet.Type == StatusTypes.DirectMessage)
1616 .OrderBy(Settings.Instance.OrderType)
1717 .ToList();
18- if (e.NewItems.Count != 0)
18+ if (e.NewItems.Count != 0 && !first)
1919 {
2020 var newTweets = e.NewItems.OfType<StatusInfo>().Where(tweet => tweet.Type == StatusTypes.DirectMessage);
2121 if (newTweets.Any()) this.NotifyNewItems(newTweets.OrderByDescending(_ => _));
@@ -23,11 +23,12 @@ namespace Azyobuzi.Twirunrun
2323 };
2424 }
2525
26- public override void RefreshTimeline(int page, int count)
26+ private bool first;
27+
28+ public override void RefreshTimeline(int page, int count, bool first)
2729 {
2830 NotifyStarted();
29- RecentStatusesCollection.Instance.AddRange(
30- new[] { DirectMessageType.SentTo, DirectMessageType.SentBy }.SelectMany(type =>
31+ var newDMs = new[] { DirectMessageType.SentTo, DirectMessageType.SentBy }.SelectMany(type =>
3132 this.GetMainForm().TwitterContext.DirectMessage.Where(dm =>
3233 dm.Type == type &&
3334 dm.Page == page &&
@@ -35,7 +36,10 @@ namespace Azyobuzi.Twirunrun
3536 )
3637 ).Select(dm => new StatusInfo(dm))
3738 .Where(dm => !RecentStatusesCollection.Instance.AsParallel().Contains(dm))
38- );
39+ .ToArray();
40+ if (newDMs.Any())
41+ this.first = first;
42+ RecentStatusesCollection.Instance.AddRange(newDMs);
3943 NotifyCompleted();
4044 }
4145 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/HomeTimelineTabPage.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/HomeTimelineTabPage.cs"
@@ -16,25 +16,31 @@ namespace Azyobuzi.Twirunrun
1616 .OrderBy(Settings.Instance.OrderType)
1717 .ToList();
1818 //新着通知
19- if (e.NewItems.Count != 0)
19+ if (e.NewItems.Count != 0 && !first)
2020 {
21+ first = false;
2122 var newTweets = e.NewItems.OfType<StatusInfo>().Where(tweet => tweet.Type != StatusTypes.DirectMessage);
2223 if (newTweets.Any()) this.NotifyNewItems(newTweets.OrderByDescending(_ => _));
2324 }
2425 };
2526 }
2627
27- public override void RefreshTimeline(int page, int count)
28+ private bool first;
29+
30+ public override void RefreshTimeline(int page, int count, bool first)
2831 {
2932 NotifyStarted();
30- RecentStatusesCollection.Instance.AddRange(
31- this.GetMainForm().TwitterContext.Status.Where(tweet =>
33+ var newTweets = this.GetMainForm().TwitterContext.Status.Where(tweet =>
3234 tweet.Type == StatusType.Home &&
3335 tweet.Page == page &&
3436 tweet.Count == count
35- ).Select(tweet => new StatusInfo(tweet))
37+ )
38+ .Select(tweet => new StatusInfo(tweet))
3639 .Where(tweet => !RecentStatusesCollection.Instance.AsParallel().Contains(tweet))
37- );
40+ .ToArray();
41+ if (newTweets.Any())
42+ this.first = first;
43+ RecentStatusesCollection.Instance.AddRange(newTweets);
3844 NotifyCompleted();
3945 }
4046 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/MentionsTabPage.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/MentionsTabPage.cs"
@@ -24,7 +24,7 @@ namespace Azyobuzi.Twirunrun
2424 .OrderBy(Settings.Instance.OrderType)
2525 .ToList();
2626 //新着通知
27- if (e.NewItems.Count != 0)
27+ if (e.NewItems.Count != 0 && !first)
2828 {
2929 var newTweets = e.NewItems.OfType<StatusInfo>().Where(tweet => mentionCheckRegex.IsMatch(tweet.Text));
3030 if (newTweets.Any()) NotifyNewItems(newTweets.OrderByDescending(_ => _));
@@ -32,17 +32,22 @@ namespace Azyobuzi.Twirunrun
3232 };
3333 }
3434
35- public override void RefreshTimeline(int page, int count)
35+ private bool first;
36+
37+ public override void RefreshTimeline(int page, int count, bool first)
3638 {
3739 NotifyStarted();
38- RecentStatusesCollection.Instance.AddRange(
39- this.GetMainForm().TwitterContext.Status.Where(tweet =>
40+ var newTweets = this.GetMainForm().TwitterContext.Status.Where(tweet =>
4041 tweet.Type == StatusType.Mentions &&
4142 tweet.Page == page &&
4243 tweet.Count == count
43- ).Select(tweet => new StatusInfo(tweet))
44+ )
45+ .Select(tweet => new StatusInfo(tweet))
4446 .Where(tweet => !RecentStatusesCollection.Instance.AsParallel().Contains(tweet))
45- );
47+ .ToArray();
48+ if (newTweets.Any())
49+ this.first = first;
50+ RecentStatusesCollection.Instance.AddRange(newTweets);
4651 NotifyCompleted();
4752 }
4853 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/TimelineTabPage.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Controls/Tabs/TimelineTabPage.cs"
@@ -65,15 +65,15 @@ namespace Azyobuzi.Twirunrun
6565 });
6666 }
6767
68- public abstract void RefreshTimeline(int page, int count);
69- public virtual void RefreshTimeline()
68+ public abstract void RefreshTimeline(int page, int count, bool first);
69+ public virtual void RefreshTimeline(bool first)
7070 {
71- RefreshTimeline(1, TabSettings.GetHits);
71+ RefreshTimeline(1, TabSettings.GetHits, first);
7272 }
7373
7474 private void RefreshTimer_Tick(object sender, System.Timers.ElapsedEventArgs e)
7575 {
76- this.GetMainForm().RefreshTimelines(new TimelineTabPage[] { this });
76+ this.GetMainForm().RefreshTimelines(new TimelineTabPage[] { this }, false);
7777 }
7878
7979 private bool refreshing = false;
@@ -105,7 +105,11 @@ namespace Azyobuzi.Twirunrun
105105 /// </summary>
106106 protected void NotifyNewItems(IEnumerable<StatusInfo> newItems)
107107 {
108- //TODO
108+ this.Invoke((MethodInvoker)(() =>
109+ {
110+ if (TabSettings.NotifyNewTweet)
111+ NotifyForm.ShowItems(newItems, this.FindForm());
112+ }));
109113 }
110114 }
111115 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Extensions.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Extensions.cs"
@@ -265,6 +265,11 @@ namespace Azyobuzi.Twirunrun
265265 return HttpUtility.HtmlEncode(source);
266266 }
267267
268+ public static string HtmlDecode(this string source)
269+ {
270+ return HttpUtility.HtmlDecode(source);
271+ }
272+
268273 public static string HtmlAttributeEncode(this string source)
269274 {
270275 return HttpUtility.HtmlAttributeEncode(source);
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.Designer.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.Designer.cs"
@@ -28,19 +28,23 @@
2828 /// </summary>
2929 private void InitializeComponent()
3030 {
31+ this.components = new System.ComponentModel.Container();
3132 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
3233 this.menuStrip1 = new System.Windows.Forms.MenuStrip();
33- this.ファイルFToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
34- this.終了XToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
3534 this.postPanelSplitter = new System.Windows.Forms.Splitter();
3635 this.statusStrip1 = new System.Windows.Forms.StatusStrip();
3736 this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
3837 this.statusBrowserSplitter = new System.Windows.Forms.Splitter();
38+ this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
39+ this.fileMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
40+ this.終了XToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
41+ this.ファイルFToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
3942 this.timelineTabs = new Azyobuzi.Twirunrun.TwirunrunTabControl();
4043 this.statusBrowser1 = new Azyobuzi.Twirunrun.StatusBrowser();
4144 this.updateStatusPanel1 = new Azyobuzi.Twirunrun.UpdateStatusPanel();
4245 this.menuStrip1.SuspendLayout();
4346 this.statusStrip1.SuspendLayout();
47+ this.fileMenuStrip.SuspendLayout();
4448 this.SuspendLayout();
4549 //
4650 // menuStrip1
@@ -53,21 +57,6 @@
5357 this.menuStrip1.TabIndex = 0;
5458 this.menuStrip1.Text = "menuStrip1";
5559 //
56- // ファイルFToolStripMenuItem
57- //
58- this.ファイルFToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
59- this.終了XToolStripMenuItem});
60- this.ファイルFToolStripMenuItem.Name = "ファイルFToolStripMenuItem";
61- this.ファイルFToolStripMenuItem.Size = new System.Drawing.Size(85, 22);
62- this.ファイルFToolStripMenuItem.Text = "ファイル(&F)";
63- //
64- // 終了XToolStripMenuItem
65- //
66- this.終了XToolStripMenuItem.Name = "終了XToolStripMenuItem";
67- this.終了XToolStripMenuItem.Size = new System.Drawing.Size(118, 22);
68- this.終了XToolStripMenuItem.Text = "終了(&X)";
69- this.終了XToolStripMenuItem.Click += new System.EventHandler(this.終了XToolStripMenuItem_Click);
70- //
7160 // postPanelSplitter
7261 //
7362 this.postPanelSplitter.Dock = System.Windows.Forms.DockStyle.Top;
@@ -105,6 +94,35 @@
10594 this.statusBrowserSplitter.TabIndex = 4;
10695 this.statusBrowserSplitter.TabStop = false;
10796 //
97+ // notifyIcon1
98+ //
99+ this.notifyIcon1.ContextMenuStrip = this.fileMenuStrip;
100+ this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
101+ this.notifyIcon1.Text = "ついるんるん";
102+ this.notifyIcon1.Visible = true;
103+ //
104+ // fileMenuStrip
105+ //
106+ this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
107+ this.終了XToolStripMenuItem});
108+ this.fileMenuStrip.Name = "fileMenuStrip";
109+ this.fileMenuStrip.OwnerItem = this.ファイルFToolStripMenuItem;
110+ this.fileMenuStrip.Size = new System.Drawing.Size(153, 48);
111+ //
112+ // 終了XToolStripMenuItem
113+ //
114+ this.終了XToolStripMenuItem.Name = "終了XToolStripMenuItem";
115+ this.終了XToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
116+ this.終了XToolStripMenuItem.Text = "終了(&X)";
117+ this.終了XToolStripMenuItem.Click += new System.EventHandler(this.終了XToolStripMenuItem_Click);
118+ //
119+ // ファイルFToolStripMenuItem
120+ //
121+ this.ファイルFToolStripMenuItem.DropDown = this.fileMenuStrip;
122+ this.ファイルFToolStripMenuItem.Name = "ファイルFToolStripMenuItem";
123+ this.ファイルFToolStripMenuItem.Size = new System.Drawing.Size(85, 22);
124+ this.ファイルFToolStripMenuItem.Text = "ファイル(&F)";
125+ //
108126 // timelineTabs
109127 //
110128 this.timelineTabs.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -152,12 +170,14 @@
152170 this.MainMenuStrip = this.menuStrip1;
153171 this.Name = "MainForm";
154172 this.Text = "ついるんるん";
173+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
155174 this.Load += new System.EventHandler(this.Form1_Load);
156175 this.Shown += new System.EventHandler(this.MainForm_Shown);
157176 this.menuStrip1.ResumeLayout(false);
158177 this.menuStrip1.PerformLayout();
159178 this.statusStrip1.ResumeLayout(false);
160179 this.statusStrip1.PerformLayout();
180+ this.fileMenuStrip.ResumeLayout(false);
161181 this.ResumeLayout(false);
162182 this.PerformLayout();
163183
@@ -171,10 +191,12 @@
171191 private TwirunrunTabControl timelineTabs;
172192 private System.Windows.Forms.StatusStrip statusStrip1;
173193 private System.Windows.Forms.ToolStripStatusLabel statusLabel;
174- private System.Windows.Forms.ToolStripMenuItem ファイルFToolStripMenuItem;
175- private System.Windows.Forms.ToolStripMenuItem 終了XToolStripMenuItem;
176194 private StatusBrowser statusBrowser1;
177195 private System.Windows.Forms.Splitter statusBrowserSplitter;
196+ private System.Windows.Forms.NotifyIcon notifyIcon1;
197+ private System.Windows.Forms.ContextMenuStrip fileMenuStrip;
198+ private System.Windows.Forms.ToolStripMenuItem 終了XToolStripMenuItem;
199+ private System.Windows.Forms.ToolStripMenuItem ファイルFToolStripMenuItem;
178200
179201 }
180202 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.cs"
@@ -141,7 +141,7 @@ namespace Azyobuzi.Twirunrun
141141
142142 private void MainForm_Shown(object sender, EventArgs e)
143143 {
144- RefreshTimelines(GetTabPages());
144+ RefreshTimelines(GetTabPages(), true);
145145 }
146146
147147 public IEnumerable<TimelineTabPage> GetTabPages()
@@ -149,9 +149,9 @@ namespace Azyobuzi.Twirunrun
149149 return timelineTabs.TabPages.OfType<TimelineTabPage>();
150150 }
151151
152- public void RefreshTimelines(IEnumerable<TimelineTabPage> tabs)
152+ public void RefreshTimelines(IEnumerable<TimelineTabPage> tabs, bool first)
153153 {
154- var t = new Thread(() => tabs.AsParallel().ForAll(tab => tab.RefreshTimeline()));
154+ var t = new Thread(() => tabs.AsParallel().ForAll(tab => tab.RefreshTimeline(first)));
155155 t.IsBackground = true;
156156 t.Start();
157157 }
@@ -177,7 +177,7 @@ namespace Azyobuzi.Twirunrun
177177 lock (RecentStatusesCollection.Instance)
178178 RecentStatusesCollection.Instance.Add(new StatusInfo(status));
179179 StatusChange("投稿完了");
180- RefreshTimelines(GetTabPages().Where(tab => tab.TabSettings.PostGet));
180+ RefreshTimelines(GetTabPages().Where(tab => tab.TabSettings.PostGet), false);
181181 });
182182 t.IsBackground = true;
183183 t.Start(Tuple.Create(updateStatusPanel1.Text, updateStatusPanel1.ReplyToId));
@@ -185,7 +185,7 @@ namespace Azyobuzi.Twirunrun
185185 updateStatusPanel1.Clear();
186186 }
187187 else
188- RefreshTimelines(GetTabPages().Where(tab => tab.TabSettings.PostGet));
188+ RefreshTimelines(GetTabPages().Where(tab => tab.TabSettings.PostGet), false);
189189 }
190190
191191 public void StatusChange(string status)
@@ -212,5 +212,18 @@ namespace Azyobuzi.Twirunrun
212212 Process.Start(e.Url.ToString());
213213 }
214214 }
215+
216+ private bool closing = false;
217+
218+ public new void Close()
219+ {
220+ closing = true;
221+ base.Close();
222+ }
223+
224+ private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
225+ {
226+ e.Cancel = e.CloseReason != CloseReason.UserClosing && !closing;
227+ }
215228 }
216229 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.resx"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/MainForm.resx"
@@ -120,10 +120,322 @@
120120 <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
121121 <value>17, 17</value>
122122 </metadata>
123+ <metadata name="fileMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
124+ <value>382, 17</value>
125+ </metadata>
123126 <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
124127 <value>139, 17</value>
125128 </metadata>
129+ <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
130+ <value>263, 17</value>
131+ </metadata>
126132 <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
133+ <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
134+ <value>
135+ AAABAAgAICAQAAEABADoAgAAhgAAABAQEAABAAQAKAEAAG4DAAAgIAAAAQAIAKgIAACWBAAAEBAAAAEA
136+ CABoBQAAPg0AADAwAAABABgAqBwAAKYSAAAgIAAAAQAYAKgMAABOLwAAGBgAAAEAGABIBwAA9jsAABAQ
137+ AAABABgAaAMAAD5DAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA9ePFAPHP
138+ mwD853YA8stvAPrbRADxxUEA9csjAPbEAAC7r/8AhIP/AMakiQDutjUA77cLAPG4AADvtwYADQoAAIiI
139+ iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
140+ iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiImZmZmYiIiIiIiIiIiIiI
141+ mZmZmZmZiIiIiIiIiIiIiZn/////mYiIiIiIiIiIiZn///////+ZiIiIiIiIiZmf////////mZmIiIiI
142+ iJmf//////////mZmIiIiImZ////////////+Zmb3dupn/Xd/71P///////5Xeu83//93f/Nf///////
143+ /71J/////N3/7d////////+9L/////zd8d3f////////vS/////93SPd3////////70v////Hd1F3db/
144+ //////+9L////z3da93U////////vS/////NXd3V1v///////70v///w3S3df9f///////+9L///8d0r
145+ 3W/tD///////vS////Xd891PzS/////13e3t3U/+1/HdL91////////NX///////////////////vS//
146+ /////////////////70v//////////////////+9L///////////////////////////////////////
147+ ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
148+ AAAAAAP8AAAP/wAAH/8AAH//gAD//+ABjH/4B4x//D+Mf/x/iH/8f4B//H8AP/x/AD/8fwA//H4BP/x+
149+ AR/8fiEf4AYhH/x////8f////H////x///////////////////8oAAAAEAAAACAAAAABAAQAAAAAAIAA
150+ AAAAAAAAAAAAAAAAAAAAAAAAvLD+ALKm9QCimvYAhYT/APbfmQDSs4kA+d1iAOq9ZwD1zUAA9s4zAPLA
151+ FADzvwYA77ciAO+3AwDvuAoAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIhAAAAABM/
152+ //MyAAACP/////MxVSP//f////x1n479/////G//zW2f///8b//NnY////xv/9jav////G//1tbv///e
153+ rf+/3+////xv////////////////////////////AAD//wAA//8AAP//AAD//wAe//8Af///gO///+Ev
154+ ///nB///5wf//+cH///nB///w1f//+f//////////////ygAAAAgAAAAQAAAAAEACAAAAAAAAAQAAAAA
155+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//7YAAAAAAPLb2wAAAAAA8dnTAAAAAAAAAAAAAAAAAPHY
156+ 0wAAAAAA8NPDAAAAAADvz7YAAAAAAAAAAAAAAAAA782tAAAAAADw0acAAAAAAPztigAAAAAA78ihAAAA
157+ AADvxpsAAAAAAO/FmAAAAAAA8MyPAAAAAAAAAAAAAAAAAP/xigAAAAAA//CGAAAAAAD/74MAAAAAAAAA
158+ AAAAAAAA++V1AAAAAAD96nEAAAAAAP/nZgAAAAAAAAAAAAAAAAD43XwAAAAAAO/AhgAAAAAA78F3AAAA
159+ AAD33mAAAAAAAPneXQAAAAAA77pwAAAAAADvvmQAAAAAAAAAAAAAAAAA+99ZAAAAAAD73EgAAAAAAPXX
160+ TAAAAAAAAAAAAAAAAAD83kYAAAAAAPzcPwAAAAAA+9k4AAAAAAAAAAAAAAAAAO/KUQAAAAAA99RJAAAA
161+ AAD1zjwAAAAAAPPKRAAAAAAA78A4AAAAAADvvEcAAAAAAO+7PAAAAAAAAAAAAAAAAAD61jIAAAAAAPfO
162+ KgAAAAAA7700AAAAAAD4zyIAAAAAAPXLJQAAAAAA8cQhAAAAAAD6zwMAAAAAAAAAAAAAAAAA+csAAAAA
163+ AAD4ywAAAAAAAPfKAAAAAAAA98MAAAAAAADzwQAAAAAAAPXBAAAAAAAA9b0CAAAAAAAAAAAAAAAAALyw
164+ /wAAAAAAtqv/AAAAAACupf8AAAAAAAAAAAAAAAAAq6L/AAAAAACpof8AAAAAAJ+Z/wAAAAAAAAAAAAAA
165+ AACemP8AAAAAAJqV/wAAAAAAmZP/AAAAAACGhf8AAAAAAIWE/wAAAAAAgYH/AAAAAACAgP8AAAAAAAAA
166+ AAAAAAAAn5nYAAAAAACdjsoAAAAAAKqVnAAAAAAA77dgAAAAAADvt1kAAAAAAO+3VgAAAAAAvJ5zAAAA
167+ AAAAAAAAAAAAAO+3UgAAAAAA77dNAAAAAADvtzoAAAAAAO+3NAAAAAAA77csAAAAAADvtysAAAAAAN2w
168+ LAAAAAAAAAAAAAAAAADvtxAAAAAAAO+3DwAAAAAA77gMAAAAAAAAAAAAAAAAAO+3CwAAAAAA77kHAAAA
169+ AADvtwgAAAAAAAAAAAAAAAAA8LkEAAAAAADxuAMAAAAAAPK3AAAAAAAA87oAAAAAAADwuQAAAAAAAPG4
170+ AAAAAAAA8LcAAAAAAAAAAAAAAAAAAO+3GgAAAAAA77cTAAAAAADvtwcAAAAAAO+3AwAAAAAA77cCAAAA
171+ AADvuAEAAAAAAO+3AQAAAAAAAAAAAAAAAADvuiQAAAAAAO+3FQAAAAAA77gTAAAAAADmshQAAAAAAO+3
172+ AAAAAAAA4K8gAAAAAAAAAAAAg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OD
173+ g4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OD
174+ g4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OD
175+ g4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODhZOTk5OTk5OT
176+ i4ODg4ODg4ODg4ODg4ODg4ODg4ODhZ+fn5+fn5+fn5+fn4ODg4ODg4ODg4ODg4ODg4ODg42fn58AAAAA
177+ AAAAAJ+fh4WDg4ODg4ODg4ODg4ODg4ebn58AAAAAAAAAAAAAAACfmYODg4ODg4ODg4ODg4OXn5+fAAAA
178+ AAAAAAAAAAAAAJ+fn5WDg4ODg4ODg4ODj5+fAAAAAAAAAAAAAAAAAAAAAJ+fn52Fg4ODg4ODg52fnwAA
179+ AAAAAAAAAAAAAAAAAAAAAACfn5+lX/v7+7+vo58AALX7fwAA8/tFAAAAAAAAAAAAAAAAn1370/39+fsA
180+ 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
210+ BwcHBwcHBwcHBwcTIzMzMzMbDwcHBwcHBwcXNz8AAAAAPz8rCwcHBwcnPwAAAAAAAAAAPzsfV1svPwAA
211+ ANsAAAAAAAAA+/1fmwDjrwDrAAAAAAAAAMdrAAAA8/dz74sAAAAAAADHawAAAMPXn9eHAAAAAAAAx2sA
212+ AADnj++nswAAAAAAAMdrAAAA02/vT78AAAAAAO/Lo+8AAKsA3wDPAAAAAAAAx2sAAAAAAAAAAAAAAAAA
213+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAD//wAe//8Af///gO///+Ev
214+ ///nB///5wf//+cH///nB///w1f//+f//////////////ygAAAAwAAAAYAAAAAEAGAAAAAAAABsAAAAA
215+ AAAAAAAAAAAAAAAAAAC8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
216+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
217+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
218+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
219+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
220+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
221+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
222+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
223+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
224+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
225+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
226+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
227+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
228+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
229+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
230+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
231+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
232+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
233+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
234+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
235+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
236+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
237+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
238+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+zqf+lnf+lnf+lnf+lnf+lnf+lnf+lnf+lnf+lnf+lnf+l
239+ nf+lnf+lnf+6rv+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
240+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+1qv+im/+im/+Vkf+AgP+AgP+A
241+ gP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+gmf+im/+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
242+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
243+ sP+2q/+Xk/+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+AgP+A
244+ gP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
245+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+3q/+Xkv+AgP+AgP+AgP+AgP+AgP8AAAAAAAAAAAAAAAAAAAAA
246+ AAAAAAAAAAAAAAAAAAAAAACAgP+AgP+AgP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
247+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+5rf+alf+Wkf+AgP+AgP+AgP8A
248+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYk/+ZlP+8sP+8
249+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
250+ sP+Yk/+Wkf+AgP+AgP+AgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
251+ AAAAAAAAAAAAAAAAAACAgP+AgP+Yk/+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
252+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+Wkv+AgP+AgP+AgP+AgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
253+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP+AgP+Bgf+Tj/+ZlP+8sP+8sP+8
254+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+Vkf+AgP+AgP+AgP8AAAAA
255+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
256+ AAAAAACAgP+AgP+AgP+Cgv+ZlP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+8
257+ sP+8sP+UkP+AgP+AgP+AgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
258+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP+AgP+AgP+Cgv+Oi/+blf+8sP+8sP+8sP+8
259+ sP+8sP+8sP+8sP+8sP+8sP+8sP+8sP+Wkv+Oi/+Bgf+AgP+AgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
260+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
261+ AACAgP+AgP+AgP+Dgv+Lif+Lif+xn9jlum7ltTDltTDltTDltTDpvDCll8WLif+Cgf+AgP+AgP+AgP8A
262+ AAAAAAAAAADvt1vvtwDwuQD3wwAAAAAAAAAAAADvxWzvtwDvtwD30DYAAAAAAAAAAAAAAAAAAAAAAAAA
263+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP+AgP+AgP+AgP+jkb7lsjrvtwvvtwDvtwDvtwDv
264+ twDvuADjsRveriXoz2uPjOuAgP8AAAAAAAAAAAAAAADvtzjvtwDvtwD2xiP//7YAAAAAAADvv1jvtwDv
265+ twD1yiEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA
266+ gP+hk93nuWHvtwPvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwD73VIAAAAAAAAAAAAAAAAAAAAAAADvtwXv
267+ twDvtwD1xSH/9JQAAAAAAADvtz7vtwDvtwD0wwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
268+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz/vtwDvtwD0xxu6qJuHg+6Hg+6Hg+7RqEHvtwD7
269+ 3VIAAAAAAAAAAAAAAAAAAADvy5/vtwDvtwDvtwDywhf/52gAAAAAAADvtyPvtwDvtwDzvQAAAAAAAAAA
270+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDw
271+ twD42lq3t9yAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvwobvtwDvtwDvtwDyvw382zoA
272+ AAAAAADvtwDvtwDvtwDxtwD532UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
273+ AAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
274+ AAAAAADvt17vtwDvtwDvtwDwuwD5zgAAAADvzIrvtwDvtwDvtwDvtwD42FEAAAAAAAAAAAAAAAAAAAAA
275+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAA
276+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtzLvtwDvtwDvtwDwuAD2wwMAAADvxXLvtwDvtwDv
277+ twDvtwD30TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
278+ AAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtwDvtwDv
279+ twDvtwDvtwD1yTD26aTvvVjvtwDvtwDvtwDvtwD1yR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
280+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAA
281+ AAAAAAAAAAAAAAAAAADw2NDvtwDvtwDvtwDvtwDvtwDzxiX23X3vt0HvtwDvtwDvtwDvtwDyvAAAAAAA
282+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDx
283+ twD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvy6rvtwDvtwDvtwDvtwDvtwDxwhn1
284+ 013vtzvvtwDvtwDvtwDvtwDwtwD64WsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
285+ AAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
286+ AADvv3jvtwDvtwDvuQPvuRPvtwDvuwzxwyzvtxzvtwDvuQrvuQzvtwDvtwD52lEAAAAAAAAAAAAAAAAA
287+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAA
288+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtyjvtwDvuAD0xhLvwmPvtwDvtwDvtwDvtwDxtwDxwjLv
289+ xDnvtwDvtwD30jYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
290+ AAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtwDvtwDwuQH4
291+ 0izvzZzvtwDvtwDvtwDvtwDxuAD0xSvvwzHvtwDvtwD2yhcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
292+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAA
293+ AAAAAAAAAAAAAADw1s3vtwDvtwDwugf731jwyXDvtwDvtwDvtwDvtwDyvAD4xwAAAADvtxDvtwD0wgAA
294+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDx
295+ twD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvyqbvtwDvtwDxvAz/63YAAADvtxHvtwDv
296+ twDvtwDzwgn60xcAAADvuTfvtwDyuwD40TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
297+ AAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv
298+ vX3vtwDvtwDzvRD/+KAAAADvtzvvtwDvtwDvtwD0xx/94E0AAADvvkvvtwDxtwD64mwAAAAAAAAAAAAA
299+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAA
300+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvt1DvtwDvtwD1wAkAAAAAAADvu13vtwDvtwDvtwD1zDH/7HoA
301+ AADvxF3vtwDvtwD41kIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx1LXvtwDvtwDv
302+ twDvty/vtx3vtwDvtwDzxyv22FXvtwDvtwDvtwDvtwD40iwAAAAAAAAAAAAAAADvtxvvtwDvtwD4yQAA
303+ AAAAAADvxH3vtwDvtwDwtwD30UH/+aQAAADvvi/vtwDvtwD2yREAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
304+ AAAAAAAAAAAAAAAAAADx1LXvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwDvtwD40iwA
305+ AAAAAAAAAADvz7bvtwHvtwDvuAH71SEAAAAAAADwzpvvtwDvtwDwuQD3yh8AAAAAAADvtyHvtw3vtwD0
306+ wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtybvtwDw
307+ twD1zTj443AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
308+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
309+ AAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
310+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
311+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAA
312+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
313+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
314+ AAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
315+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
316+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDxtwD521wAAAAAAAAAAAAAAAAAAAAAAAAA
317+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
318+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvtz7vtwDx
319+ twD521wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
320+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
321+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
322+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
323+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
324+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
325+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
326+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
327+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
328+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
329+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
330+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
331+ AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
332+ //8AAAAAP/j//wAAAAH/////AAAAB/////8AAAAP/////wAAAD//////gAAAf//////AAAD///////AA
333+ AcOH////+AADwYf////+AA/Bh/////+AD4GH/////4H/gYP/////h/+BA/////+H/4ED/////4f/gAP/
334+ ////h/8AA/////+H/wAB/////4f/AAH/////h/8AAf////+H/wAB/////4f+ABH/////h/4IEP////+H
335+ /ggQ/////4f+GBD////wAB4YEP////AAHBgw/////wP/////////h/////////+H/////////4f/////
336+ ////h/////////+H//////////////////////////////////////////////////8oAAAAIAAAAEAA
337+ AAABABgAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAvLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
338+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
339+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
340+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
341+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
342+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
343+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
344+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
345+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
346+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
347+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
348+ vLD/vLD/vLD/tqv/npj/npj/npj/npj/npj/npj/npj/npj/q6L/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
349+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/tqv/gID/gID/gID/gID/gID/gID/
350+ gID/gID/gID/gID/gID/gID/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
351+ vLD/vLD/vLD/vLD/qaH/gID/gID/gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/gID/rqX/tqv/
352+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/rqX/hYT/gID/gID/AAAAAAAA
353+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/hoX/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
354+ vLD/vLD/vLD/vLD/vLD/mZP/gID/gID/gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
355+ AAAAAAAAgID/gID/gID/mpX/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/n5n/gID/gID/AAAA
356+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/gID/gID/gYH/tqv/
357+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/gYH/gID/gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
358+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/gID/gID/nY7K77s877cA77cA77cA3bAsvJ5zn5nY
359+ gID/AAAAAAAA77dN77cA9b0CAAAAAAAA77ok77cA+9xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
360+ AAAAAAAAAAAAgID/77xH77cA8LkE4K8g4K8g5rIU77cAAAAAAAAAAAAAAAAA77cC77cA8bgDAAAAAAAA
361+ 77cV77cA+MsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA+d5dgID/
362+ AAAAAAAAAAAAAAAAAAAAAAAAAAAA77gT77cA77gBAAAAAAAA77cD77cA87oAAAAAAAAAAAAAAAAAAAAA
363+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77cL
364+ 77cA77cAAAAA8NGn77cA77cA8LcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
365+ 77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77cA77cA77cA995g78F377cA77cA77cAAAAA
366+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAA
367+ AAAAAAAA8MyP77cA77cA77cA9ddM77dS77cA77cA77cA984qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
368+ AAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAAAAAA775k77cA77cB77cA8cQh77cs
369+ 77cA77cC77cA99RJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAA
370+ AAAAAAAAAAAAAAAAAAAAAAAA77cP77cA88pE77cA77cA77cA8rcA78pR77cA9cslAAAAAAAAAAAAAAAA
371+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAA8djT77cA77cA
372+ +N1877cA77cA77cA9cEAAAAA77cB88EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
373+ 77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAA78WY77cA8LcA//CG77cr77cA77cA+M8iAAAA77cI8bgA
374+ //+2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAA
375+ AAAA77dW77cA87oAAAAA77pw77cA77cA+99ZAAAA77gM77cA/epxAAAAAAAAAAAAAAAAAAAAAAAAAAAA
376+ AAAA78A477cA77cA77cD77cA77kH77cA77cA77cA+9k4AAAAAAAA77cD77cA98oAAAAA782t77cA77cA
377+ /O2KAAAA77cA77cA+s8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77ca77cA9c48AAAA
378+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
379+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
380+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
381+ 77c077cA++V1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
382+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cA++V1AAAAAAAAAAAAAAAAAAAA
383+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
384+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
385+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
386+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
387+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
388+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
389+ AAAAAAAAAAAAAAAAAAAAAAP8AAAP/wAAH/8AAH//gAD//+ABjH/4B4x//D+Mf/x/iH/8f4B//H8AP/x/
390+ AD/8fwA//H4BP/x+AR/8fiEf4AYhH/x////8f////H////x///////////////////8oAAAAGAAAADAA
391+ AAABABgAAAAAAMAGAAAAAAAAAAAAAAAAAAAAAAAAvLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
392+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
393+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
394+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
395+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
396+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
397+ vLD/vLD/tKn/saf/saf/saf/saf/saf/tKn/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/
398+ vLD/vLD/vLD/vLD/rqT/mpX/jIr/hoX/hoX/hoX/hoX/hoX/jIn/mpX/vLD/vLD/vLD/vLD/vLD/vLD/
399+ vLD/vLD/vLD/vLD/vLD/vLD/ua3/qaD/i4n/gID/gID/AAAAAAAAAAAAAAAAAAAAgID/gID/lZH/qqL/
400+ vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/vLD/sKb/lJD/g4L/gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA
401+ AAAAAAAAgID/h4X/nZf/t6v/u6//vLD/vLD/vLD/vLD/u6//sKb/jYr/gID/AAAAAAAAAAAAAAAAAAAA
402+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/gYH/j4z/opr9vqvTz7Kez7Kbw624opryioj8gID/AAAAAAAA
403+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgID/oJHL3rA87LYK5LEZ368l17Zc
404+ pJ3TAAAAAAAA77cU88UgAAAA77xS77kC9swcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2q1t77cM
405+ 4L9WnZLIup12AAAAAAAAAAAAAAAA77gM8sIVAAAA77gh77cA9tA1AAAAAAAAAAAAAAAAAAAAAAAAAAAA
406+ AAAAAAAA77dL8LcL9NxuAAAAAAAAAAAAAAAAAAAA77g077cH8bsC9c9Q770w77cA9s41AAAAAAAAAAAA
407+ AAAAAAAAAAAAAAAAAAAAAAAA77dL8LcL+eFsAAAAAAAAAAAAAAAAAAAA78FJ77cA77cA88tT77gl77cA
408+ 88IRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77dL8LcL+eFsAAAAAAAAAAAAAAAAAAAA771B77gG
409+ 77gJ8L8n77cS77kJ8b0PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77dL8LcL+eFsAAAAAAAAAAAA
410+ AAAAAAAA77gU8cMr778377cA8LgC8L4a8LsG+NEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77dL8LcL
411+ +eFsAAAAAAAAAAAAAAAAAAAA77oZ99JG88c877cA8sAH8sE677gS99M4AAAAAAAAAAAAAAAAAAAAAAAA
412+ AAAAAAAA77c777cK+N5kAAAAAAAAAAAAAAAAAAAA77gM+NVD88pZ77cB9Mkn9NWP77sk9tA4AAAAAAAA
413+ AAAAAAAAAAAAAAAAAAAA77cA77cQ77cD8sUj8L4U77cAAAAAAAAA779F8LsGAAAA78Zv77cC9cstAAAA
414+ 77gY88AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77c077cJ99pZAAAAAAAAAAAAAAAAAAAAAAAAAAAA
415+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA77dL8LcL+eFsAAAAAAAAAAAA
416+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8LcL
417+ +eFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
418+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
419+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
420+ AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAB8/wAB//8AB///gA///+AZ
421+ H//weR//8fAf//HwH//x8B//8fAP//HwD//x8A//4GRP//H////x////+f//////////////KAAAABAA
422+ AAAgAAAAAQAYAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAALyw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw
423+ /7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw
424+ /7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw
425+ /7yw/7yw/7yw/7yw/7yw/7yw/7yw/7yw/7mu/6ef/5iT/5iT/5iT/5iT/6yj/7qu/7yw/7yw/7yw/7yw
426+ /7yw/7yw/7yw/7Ko/42K/4CA/wAAAAAAAAAAAAAAAICA/4CA/52X/7qv/7yw/7yw/7yw/7yw/6Kb/4CA
427+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICA/4mH/7Ki2tezdtOygKOZ3ICA/wAAAAAAAAAAAO+3AwAA
428+ AAAAAAAAAAAAAAAAAAAAAAAAAOq1NNm1T7GYjfbPNwAAAO+/TPG9DQAAAO+3AQAAAAAAAAAAAAAAAAAA
429+ AAAAAAAAAO+3KPndYQAAAAAAAAAAAO+3IO+4APLMXu+3APfROAAAAAAAAAAAAAAAAAAAAAAAAO+3KPnd
430+ YQAAAAAAAAAAAO+8Le+3BPHCM++3BPbQPAAAAAAAAAAAAAAAAAAAAAAAAO+3KPndYQAAAAAAAAAAAO+4
431+ A/HFO++3APPBG/PBCwAAAAAAAAAAAAAAAAAAAAAAAO+3KPndYQAAAAAAAAAAAPC5BPTPa++3APjcevC6
432+ CAAAAAAAAAAAAAAAAAAAAO+3AO+3EPLCHe+3AAAAAAAAAPPCDAAAAPC4AAAAAO+3CQAAAAAAAAAAAAAA
433+ AAAAAAAAAO+3KPndYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
434+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
435+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAA//8AHv//AH///4Dv///hL///5wf//+cH
436+ ///nB///5wf//8NX///n//////////////8=
437+</value>
438+ </data>
127439 <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
128440 <value>
129441 AAABAAgAICAQAAEABADoAgAAhgAAABAQEAABAAQAKAEAAG4DAAAgIAAAAQAIAKgIAACWBAAAEBAAAAEA
--- /dev/null
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.Designer.cs"
@@ -0,0 +1,125 @@
1+namespace Azyobuzi.Twirunrun
2+{
3+ partial class NotifyForm
4+ {
5+ /// <summary>
6+ /// 必要なデザイナー変数です。
7+ /// </summary>
8+ private System.ComponentModel.IContainer components = null;
9+
10+ /// <summary>
11+ /// 使用中のリソースをすべてクリーンアップします。
12+ /// </summary>
13+ /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
14+ protected override void Dispose(bool disposing)
15+ {
16+ if (disposing && (components != null))
17+ {
18+ components.Dispose();
19+ }
20+ base.Dispose(disposing);
21+ }
22+
23+ #region Windows フォーム デザイナーで生成されたコード
24+
25+ /// <summary>
26+ /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
27+ /// コード エディターで変更しないでください。
28+ /// </summary>
29+ private void InitializeComponent()
30+ {
31+ this.components = new System.ComponentModel.Container();
32+ this.profileImg = new System.Windows.Forms.PictureBox();
33+ this.nameLabel = new System.Windows.Forms.Label();
34+ this.closeButton = new System.Windows.Forms.Button();
35+ this.contentBox = new System.Windows.Forms.TextBox();
36+ this.closeTimer = new System.Windows.Forms.Timer(this.components);
37+ ((System.ComponentModel.ISupportInitialize)(this.profileImg)).BeginInit();
38+ this.SuspendLayout();
39+ //
40+ // profileImg
41+ //
42+ this.profileImg.Location = new System.Drawing.Point(12, 12);
43+ this.profileImg.Name = "profileImg";
44+ this.profileImg.Size = new System.Drawing.Size(42, 42);
45+ this.profileImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
46+ this.profileImg.TabIndex = 0;
47+ this.profileImg.TabStop = false;
48+ //
49+ // nameLabel
50+ //
51+ this.nameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
52+ | System.Windows.Forms.AnchorStyles.Right)));
53+ this.nameLabel.AutoEllipsis = true;
54+ this.nameLabel.Location = new System.Drawing.Point(60, 12);
55+ this.nameLabel.Name = "nameLabel";
56+ this.nameLabel.Size = new System.Drawing.Size(163, 12);
57+ this.nameLabel.TabIndex = 1;
58+ this.nameLabel.Text = "[Name or screen name]";
59+ this.nameLabel.UseMnemonic = false;
60+ //
61+ // closeButton
62+ //
63+ this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
64+ this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
65+ this.closeButton.Location = new System.Drawing.Point(229, 12);
66+ this.closeButton.Name = "closeButton";
67+ this.closeButton.Size = new System.Drawing.Size(23, 23);
68+ this.closeButton.TabIndex = 2;
69+ this.closeButton.Text = "×";
70+ this.closeButton.UseVisualStyleBackColor = true;
71+ this.closeButton.Click += new System.EventHandler(this.closeTimer_Tick);
72+ //
73+ // contentBox
74+ //
75+ this.contentBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
76+ | System.Windows.Forms.AnchorStyles.Left)
77+ | System.Windows.Forms.AnchorStyles.Right)));
78+ this.contentBox.BackColor = System.Drawing.SystemColors.Info;
79+ this.contentBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
80+ this.contentBox.Location = new System.Drawing.Point(62, 41);
81+ this.contentBox.Multiline = true;
82+ this.contentBox.Name = "contentBox";
83+ this.contentBox.ReadOnly = true;
84+ this.contentBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
85+ this.contentBox.Size = new System.Drawing.Size(190, 72);
86+ this.contentBox.TabIndex = 3;
87+ //
88+ // closeTimer
89+ //
90+ this.closeTimer.Tick += new System.EventHandler(this.closeTimer_Tick);
91+ //
92+ // NotifyForm
93+ //
94+ this.AcceptButton = this.closeButton;
95+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
96+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
97+ this.BackColor = System.Drawing.SystemColors.Info;
98+ this.CancelButton = this.closeButton;
99+ this.ClientSize = new System.Drawing.Size(264, 125);
100+ this.Controls.Add(this.contentBox);
101+ this.Controls.Add(this.closeButton);
102+ this.Controls.Add(this.nameLabel);
103+ this.Controls.Add(this.profileImg);
104+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
105+ this.Name = "NotifyForm";
106+ this.ShowInTaskbar = false;
107+ this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
108+ this.Text = "ついるんるん 通知画面";
109+ this.TopMost = true;
110+ this.Load += new System.EventHandler(this.NotifyForm_Load);
111+ ((System.ComponentModel.ISupportInitialize)(this.profileImg)).EndInit();
112+ this.ResumeLayout(false);
113+ this.PerformLayout();
114+
115+ }
116+
117+ #endregion
118+
119+ private System.Windows.Forms.PictureBox profileImg;
120+ private System.Windows.Forms.Label nameLabel;
121+ private System.Windows.Forms.Button closeButton;
122+ private System.Windows.Forms.TextBox contentBox;
123+ private System.Windows.Forms.Timer closeTimer;
124+ }
125+}
\ No newline at end of file
--- /dev/null
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.cs"
@@ -0,0 +1,82 @@
1+using System;
2+using System.Collections.Generic;
3+using System.ComponentModel;
4+using System.Data;
5+using System.Drawing;
6+using System.Linq;
7+using System.Text;
8+using System.Windows.Forms;
9+using System.Threading;
10+
11+namespace Azyobuzi.Twirunrun
12+{
13+ public partial class NotifyForm : Form
14+ {
15+ private NotifyForm()
16+ {
17+ InitializeComponent();
18+ }
19+
20+ public static void ShowItems(IEnumerable<StatusInfo> items, Form owner)
21+ {
22+ Point lastLocation = Point.Empty;
23+ const int space = 5;
24+ items.Reverse().ForEach(item =>
25+ {
26+ var f = new NotifyForm();
27+ f.Owner = owner;
28+ f.SetText(item);
29+ if (lastLocation.IsEmpty)
30+ {
31+ var workingArea = Screen.GetWorkingArea(f);
32+ lastLocation = new Point(workingArea.Right - space - f.Width, workingArea.Bottom - space - f.Height);
33+ }
34+ else
35+ {
36+ lastLocation.Offset(0, -space - f.Height);
37+ if (lastLocation.Y < 0)
38+ {
39+ lastLocation.X -= space + f.Width;
40+ lastLocation.Y = Screen.GetWorkingArea(f).Bottom - space - f.Height;
41+ }
42+ }
43+ f.Location = lastLocation;
44+ f.Show();
45+ });
46+ }
47+
48+ private void SetText(StatusInfo item)
49+ {
50+ profileImg.Tag = item.ProfileImageUri;
51+ nameLabel.Text = Settings.Instance.NameType == NameTypes.Name ? item.User.Name : item.User.Identifier.ScreenName;
52+ contentBox.Text = item.Text;
53+ closeTimer.Interval = Settings.Instance.NotifyFormShowTime * 1000;
54+ }
55+
56+ private void closeTimer_Tick(object sender, EventArgs e)
57+ {
58+ closeTimer.Stop();
59+ this.Close();
60+ }
61+
62+ private void NotifyForm_Load(object sender, EventArgs e)
63+ {
64+ var img = Icons.GetItem(profileImg.Tag.ToString());
65+ if (img == null)
66+ {
67+ var t = new Thread(uri =>
68+ {
69+ var result = Icons.AddSync(uri.ToString());
70+ profileImg.Invoke((MethodInvoker)(() => profileImg.Image = result));
71+ });
72+ t.IsBackground = true;
73+ t.Start(profileImg.Tag);
74+ }
75+ else
76+ {
77+ profileImg.Image = img;
78+ }
79+ closeTimer.Start();
80+ }
81+ }
82+}
--- /dev/null
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Forms/NotifyForm.resx"
@@ -0,0 +1,123 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<root>
3+ <!--
4+ Microsoft ResX Schema
5+
6+ Version 2.0
7+
8+ The primary goals of this format is to allow a simple XML format
9+ that is mostly human readable. The generation and parsing of the
10+ various data types are done through the TypeConverter classes
11+ associated with the data types.
12+
13+ Example:
14+
15+ ... ado.net/XML headers & schema ...
16+ <resheader name="resmimetype">text/microsoft-resx</resheader>
17+ <resheader name="version">2.0</resheader>
18+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+ <value>[base64 mime encoded serialized .NET Framework object]</value>
24+ </data>
25+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+ <comment>This is a comment</comment>
28+ </data>
29+
30+ There are any number of "resheader" rows that contain simple
31+ name/value pairs.
32+
33+ Each data row contains a name, and value. The row also contains a
34+ type or mimetype. Type corresponds to a .NET class that support
35+ text/value conversion through the TypeConverter architecture.
36+ Classes that don't support this are serialized and stored with the
37+ mimetype set.
38+
39+ The mimetype is used for serialized objects, and tells the
40+ ResXResourceReader how to depersist the object. This is currently not
41+ extensible. For a given mimetype the value must be set accordingly:
42+
43+ Note - application/x-microsoft.net.object.binary.base64 is the format
44+ that the ResXResourceWriter will generate, however the reader can
45+ read any of the formats listed below.
46+
47+ mimetype: application/x-microsoft.net.object.binary.base64
48+ value : The object must be serialized with
49+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+ : and then encoded with base64 encoding.
51+
52+ mimetype: application/x-microsoft.net.object.soap.base64
53+ value : The object must be serialized with
54+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+ : and then encoded with base64 encoding.
56+
57+ mimetype: application/x-microsoft.net.object.bytearray.base64
58+ value : The object must be serialized into a byte array
59+ : using a System.ComponentModel.TypeConverter
60+ : and then encoded with base64 encoding.
61+ -->
62+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+ <xsd:element name="root" msdata:IsDataSet="true">
65+ <xsd:complexType>
66+ <xsd:choice maxOccurs="unbounded">
67+ <xsd:element name="metadata">
68+ <xsd:complexType>
69+ <xsd:sequence>
70+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
71+ </xsd:sequence>
72+ <xsd:attribute name="name" use="required" type="xsd:string" />
73+ <xsd:attribute name="type" type="xsd:string" />
74+ <xsd:attribute name="mimetype" type="xsd:string" />
75+ <xsd:attribute ref="xml:space" />
76+ </xsd:complexType>
77+ </xsd:element>
78+ <xsd:element name="assembly">
79+ <xsd:complexType>
80+ <xsd:attribute name="alias" type="xsd:string" />
81+ <xsd:attribute name="name" type="xsd:string" />
82+ </xsd:complexType>
83+ </xsd:element>
84+ <xsd:element name="data">
85+ <xsd:complexType>
86+ <xsd:sequence>
87+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+ </xsd:sequence>
90+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+ <xsd:attribute ref="xml:space" />
94+ </xsd:complexType>
95+ </xsd:element>
96+ <xsd:element name="resheader">
97+ <xsd:complexType>
98+ <xsd:sequence>
99+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+ </xsd:sequence>
101+ <xsd:attribute name="name" type="xsd:string" use="required" />
102+ </xsd:complexType>
103+ </xsd:element>
104+ </xsd:choice>
105+ </xsd:complexType>
106+ </xsd:element>
107+ </xsd:schema>
108+ <resheader name="resmimetype">
109+ <value>text/microsoft-resx</value>
110+ </resheader>
111+ <resheader name="version">
112+ <value>2.0</value>
113+ </resheader>
114+ <resheader name="reader">
115+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+ </resheader>
117+ <resheader name="writer">
118+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+ </resheader>
120+ <metadata name="closeTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
121+ <value>17, 17</value>
122+ </metadata>
123+</root>
\ No newline at end of file
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/ITwirunrunMainForm.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/ITwirunrunMainForm.cs"
@@ -1,4 +1,5 @@
11 using System.Collections.Generic;
2+using System.Windows.Forms;
23 using LinqToTwitter;
34
45 namespace Azyobuzi.Twirunrun
@@ -10,6 +11,6 @@ namespace Azyobuzi.Twirunrun
1011 UpdateStatusPanel UpdateStatusPanel { get; }
1112 void ShowDetailStatus(StatusInfo status);
1213 IEnumerable<TimelineTabPage> GetTabPages();
13- void RefreshTimelines(IEnumerable<TimelineTabPage> tabs);
14+ void RefreshTimelines(IEnumerable<TimelineTabPage> tabs, bool first);
1415 }
1516 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Icons.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Icons.cs"
@@ -30,6 +30,21 @@ namespace Azyobuzi.Twirunrun
3030 public readonly static object LockObj = new object();
3131
3232
33+ public static Image AddSync(string uri)
34+ {
35+ Image result;
36+ using (var wc = new WebClient())
37+ {
38+ result = wc.DownloadImage(uri);
39+ }
40+
41+ lock (LockObj)
42+ {
43+ Icons.Add(uri, result);
44+ }
45+
46+ return result;
47+ }
3348
3449 public static void AddAsync(string uri)
3550 {
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/Settings/Settings.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/Settings/Settings.cs"
@@ -613,6 +613,26 @@ namespace Azyobuzi.Twirunrun
613613 return tabs;
614614 }
615615 }
616+
617+ //
618+ //新着通知表示時間
619+ //
620+ private int notifyFormShowTime = 7;
621+ public int NotifyFormShowTime
622+ {
623+ set
624+ {
625+ if (notifyFormShowTime != value)
626+ {
627+ notifyFormShowTime = value;
628+ OnPropertyChanged("NotifyFormShowTime");
629+ }
630+ }
631+ get
632+ {
633+ return notifyFormShowTime;
634+ }
635+ }
616636 }
617637
618638 public class FormSettings : IEquatable<FormSettings>
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/StatusInfo.cs"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/StatusInfo.cs"
@@ -22,7 +22,7 @@ namespace Azyobuzi.Twirunrun
2222 Type = StatusTypes.Tweet;
2323 Id = Tweet.StatusID;
2424 User = Tweet.User;
25- Text = Tweet.Text;
25+ Text = Tweet.Text.HtmlDecode();
2626 CreatedAt = Tweet.CreatedAt.ToLocalTime();
2727 ReplyToStatusId = Tweet.InReplyToStatusID;
2828 Favorited = Tweet.Favorited;
@@ -34,7 +34,7 @@ namespace Azyobuzi.Twirunrun
3434 Type = StatusTypes.Retweet;
3535 Id = Tweet.StatusID;
3636 User = Tweet.Retweet.RetweetingUser;
37- Text = Tweet.Retweet.Text;
37+ Text = Tweet.Retweet.Text.HtmlDecode();
3838 CreatedAt = Tweet.Retweet.CreatedAt.ToLocalTime();
3939 ReplyToStatusId = Tweet.Retweet.InReplyToStatusID;
4040 Favorited = Tweet.Retweet.Favorited;
@@ -70,8 +70,8 @@ namespace Azyobuzi.Twirunrun
7070
7171 Id = DirectMessage.ID.ToString();
7272 User = DirectMessage.Sender;
73- Text = DirectMessage.SenderScreenName.Equals(Settings.Instance.MyScreenName, StringComparison.InvariantCultureIgnoreCase) ?
74- string.Format("@{0} {1}", DirectMessage.RecipientScreenName, DirectMessage.Text) : DirectMessage.Text;
73+ Text = (DirectMessage.SenderScreenName.Equals(Settings.Instance.MyScreenName, StringComparison.InvariantCultureIgnoreCase) ?
74+ string.Format("@{0} {1}", DirectMessage.RecipientScreenName, DirectMessage.Text) : DirectMessage.Text).HtmlDecode();
7575 CreatedAt = DirectMessage.CreatedAt.ToLocalTime();
7676 ProfileImageUri = DirectMessage.Sender.ProfileImageUrl;
7777 }
--- "a/\202\302\202\242\202\351\202\361\202\351\202\361/\202\302\202\242\202\351\202\361\202\351\202\361.csproj"
+++ "b/\202\302\202\242\202\351\202\361\202\351\202\361/\202\302\202\242\202\351\202\361\202\351\202\361.csproj"
@@ -114,6 +114,12 @@
114114 <Compile Include="Forms\InputForm.Designer.cs">
115115 <DependentUpon>InputForm.cs</DependentUpon>
116116 </Compile>
117+ <Compile Include="Forms\NotifyForm.cs">
118+ <SubType>Form</SubType>
119+ </Compile>
120+ <Compile Include="Forms\NotifyForm.Designer.cs">
121+ <DependentUpon>NotifyForm.cs</DependentUpon>
122+ </Compile>
117123 <Compile Include="Forms\SettingsForm.cs">
118124 <SubType>Form</SubType>
119125 </Compile>
@@ -174,6 +180,9 @@
174180 <EmbeddedResource Include="Forms\InputForm.resx">
175181 <DependentUpon>InputForm.cs</DependentUpon>
176182 </EmbeddedResource>
183+ <EmbeddedResource Include="Forms\NotifyForm.resx">
184+ <DependentUpon>NotifyForm.cs</DependentUpon>
185+ </EmbeddedResource>
177186 <EmbeddedResource Include="Forms\SettingsForm.resx">
178187 <DependentUpon>SettingsForm.cs</DependentUpon>
179188 </EmbeddedResource>