Tag Archive | "Developer"

All the latest Android developer news and features you need to know about


Android Studio

December has been a relatively quiet month in the world of Android development, with fewer posts over at the Android Developers blog than usual, and many other sites taking a break for the holidays. Hey, devs need a break every now and then too!

That said, there have still been a few exciting announcements to cover, including the release of a new Android Game SDK, and a powerful code search tool. Consider this a case of quality-over-quantity, then. Read below for the full scoop.

News and announcements

Code Search with Cross References for the Android Open Source Project – Google announces what may prove an extremely useful tool for Android developers: a search engine for code. See more below.

Android Game SDK

From Google

Android Game SDK – Android Game SDK offers a selection of libraries direct from Google to enhance game development on the platform. The first library that will land as part of this new initiative is designed to help developers with frame pacing.

The Frame Pacing Library will use Android’s Choreographer API to synchronize with the display system. This helps ensure frames appear when they should, to avoid buffering and stuttering, and to keep audio in-pace.

Android 10 on Android TV – Pretty much this article is what it says on the tin. On December 10, Google brought Android API level 29 to Android TV. This will mean faster updates through Project Treble, more secure storage, and other goodies from the latest iteration of Android.

Another new TV-centric feature for developers is ADT-3. This is a dongle aimed at developers to test their apps on the platform. It will be made available soon, and you can be sure to find out about it here in the coming months.

Features and resources from around the web

Making an app with no programming experience: What are your options?This post explores how you might set about developing an app with no coding skills. It covers app builders, as well as numerous other options.

Code SearchCode Search is a new tool from Google that has the potential to be extremely useful. This is a search engine that focuses specifically on Android code, sorting through git repositories like github, gitweb, etc. What’s unique about this, is that you can actually search within the code itself for specific commands or keywords. In short, you can actually view the code before you decide if you might be interested in using it.

Android Code Search

We all know that programming is essentially a process of lifting bits of code and stitching them together like a Frankenstein’s monster (right?). This has potentially to streamline that process considerably!

Kotlin/Everywhere – it’s a wrap! At Google I/O, Google announced it would be increasingly placing the focus of Android development on Kotlin. Kotlin/Everywhere was a series of events discussing the language. This post includes links to various talks and resources for those that missed the live events.

Workplace for Kotlin code in IDEThis post shares a method for testing snippets of Kotlin code without deploying your entire app, via REPL.

Lost Crypt 2D sample project for Unity – Unity has introduced a host of new 2D features pertinent to Android developers over recent months. This new sample project serves as a useful demonstration of how best to use them.

Lost Crypt Android Developer News

From Unity

Speed up your Android dynamic features flow testing – Dynamic delivery has a lot of uses for devs and can enhance the user experience significantly. However, testing these features can be tricky. This post explains the solution, using the Gradle Play Publisher plugin.

Gesture Navigation: Insets – Insets help to improve gesture navigation by avoiding conflicts with existing UI features.

Migrating from Fingerprint Manager to BiometricPrompt – A handy guide (pun intended) to switching to the newish AndroidX Biometric Library.

And that’s it – see you next month!

Android Authority

Posted in Android NewsComments (0)

Become an Android app developer for just $23 with the Android M Developer Course!


androidDevelopers

Some of you will probably want to kill me for quoting Steve Jobs, but he was very right when he said “everybody in this country should learn how to program a computer, because it teaches you how to think”.  The advantages of learning to code are infinite. It will open doors you never knew existed, both personally and professionally.

Have you ever wanted to build your own Android application? In many cases the road to becoming a developer is a long, winding, expensive one. But things no longer have to be that way, especially when there are people like Rob Percival, who are willing to teach you for a very reasonable price.

Percival has created the Complete Android M Developer Course with Android Studio, a full online class for aspiring Android app makers. It’s probably not easy to fund such a project, so he has taken it to KickStarter, where you can get lifetime access for as low as $ 23. Keep in mind the course will be worth $ 199 when it hits the market, so this is really a steal. Not to mention, you can’t really put a price on learning to code.

While the course will be focused mainly on Android M, this is not something that will keep you limited to Google’s upcoming mobile OS version. You will learn how to code in Java and run through the whole procedure for building, publishing and making money out of Android applications. By the way, Rob Percival is no rookie. He has also created courses for web, iOS and Apple Watch development (though you should probably stick with developing for Android!), so you know you will be in good hands. And you can also get access to those courses if you pledge more cash.

So, are you in? You can make your pledge at the Complete Android M Developer Course with Android Studio KickStarter page (what a name!) and sign up to become a literate Android developer now. The campaign has 29 days to go and the goal has already been met. The final product will be released in October, but some of you will have beta access as soon as the campaign ends. The course is said to last at least 25 hours, which should expand over 6 weeks. You can take your sweet time on it, if need be, though.

I am seriously considering signing up, to be frank. It’s a hell of a price and this really seems to be for anyone. The idea is that you would learn as you make apps, so it will be a much more hands-on and friendly approach at learning the craft. Are you thinking of joining the developer party?

Android Authority

Posted in Android NewsComments (0)

Developer MohammadAG gets Android Wear to work with iPhones, sort of


android wear ios muhammadag

Google has hinted that it could eventually make Android Wear work with iPhones, but as the wearables platform is getting close to its first birthday, we’re yet to see an official integration. The good news is, if you really want to use your Android Wear smartwatch with an iOS device, an unofficial solution may be coming.

Android developer Mohammad Abu-Garbeyyeh, widely known on XDA as MohammadAG, found a way to push notifications from iOS to AW. MohammadAG, who is known for his work developing Xposed Framework modules, used a feature called Apple Notification Center Service (ANSC) that was first introduced on iOS7. This is the same feature that allows Pebble to receive notifications from iPhones via Bluetooth. Because it’s built into the operating system, making use of ANSC doesn’t require a special app – notifications from any app can be pushed automatically to a connected smartwatch.

To enable the feature, MohammadAG created an .apk that needs to run on the smartwatch, and the developer said he’s considering open-sourcing it. You will still need an Android device to set up the smartwatch and get apps on it, but the good news is you can use any iOS7 or higher Apple device, no jailbreak required.

Now, the Android Wear experience is more than just notifications and MohammadAG admits that this ANSC-based implementation is limited. But if you just want simple notifications, this could do. We’ll keep an eye on this little project and let you know when, if ever, becomes available.

Android Authority

Posted in Android NewsComments (0)


Related Sites

Powered by WP Robot

PHVsPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8xPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5sb2NhbGNsaWNrcGFydG5lcnMuY29tL2FmZmlsaWF0ZV9hZC9hZmZpbGlhdGVfYmFubmVyXzEyNXgxMjUucG5nPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMjwvc3Ryb25nPiAtIGh0dHA6Ly9tb2JpbGViYW5uZXJjcmVhdG9yLmNvbS9iYW5uZXJzLzEyNXgxMjUuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvMTI1eDEyNWMuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvMTI1eDEyNWQuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfbXB1X2Fkc2Vuc2U8L3N0cm9uZz4gLSA8c2NyaXB0IGFzeW5jIHNyYz1cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzXCI+PC9zY3JpcHQ+DQo8IS0tIGFuZHJvaWQtem9vbmUgMzAweDI1MCAtLT4NCjxpbnMgY2xhc3M9XCJhZHNieWdvb2dsZVwiDQogICAgIHN0eWxlPVwiZGlzcGxheTpibG9ja1wiDQogICAgIGRhdGEtYWQtY2xpZW50PVwiY2EtcHViLTcwODYxMzIwNjU4MDEyNTJcIg0KICAgICBkYXRhLWFkLXNsb3Q9XCI2MTk2ODExMjk4XCINCiAgICAgZGF0YS1hZC1mb3JtYXQ9XCJhdXRvXCINCiAgICAgZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmU9XCJ0cnVlXCI+PC9pbnM+DQo8c2NyaXB0Pg0KICAgICAoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOw0KPC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfbXB1X2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX21wdV9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvMzAweDI1MGEuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfbXB1X3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9hZHNlbnNlPC9zdHJvbmc+IC0gPHNjcmlwdCBhc3luYyBzcmM9XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qc1wiPjwvc2NyaXB0Pg0KPCEtLSBhbmRyb2lkLXpvb25lIDQ2OHg2MCAtLT4NCjxpbnMgY2xhc3M9XCJhZHNieWdvb2dsZVwiDQogICAgIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NDY4cHg7aGVpZ2h0OjYwcHhcIg0KICAgICBkYXRhLWFkLWNsaWVudD1cImNhLXB1Yi03MDg2MTMyMDY1ODAxMjUyXCINCiAgICAgZGF0YS1hZC1zbG90PVwiMzQwNjk5NjQyMlwiPjwvaW5zPg0KPHNjcmlwdD4NCiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsNCjwvc2NyaXB0PjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9kaXNhYmxlPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfaW1hZ2U8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzLzQ2OHg2MGEuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8xPC9zdHJvbmc+IC0gaHR0cDovL3NpdGlvbmV0LmxvY2FsY2xpay5ob3AuY2xpY2tiYW5rLm5ldDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3NpdGlvbmV0Lm1vYmliYW5uZXIuaG9wLmNsaWNrYmFuay5uZXQ8L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF80PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRzX3JvdGF0ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGdyZWVuLmNzczwvbGk+PGxpPjxzdHJvbmc+d29vX2FyY2hpdmVfZXhjZXJwdDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19hdXRob3I8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fYXV0b19pbWc8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2Jsb2dfZXhjZXJwdDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXJvdXNlbF9oZWlnaHQ8L3N0cm9uZz4gLSAyOTI8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fY3NzPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY3VzdG9tX2Zhdmljb248L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fdXBsb2FkX3RyYWNraW5nPC9zdHJvbmc+IC0gYTowOnt9PC9saT48bGk+PHN0cm9uZz53b29fZXhjbHVkZTwvc3Ryb25nPiAtIGE6Mzp7aTowO2k6MzA7aToyO2k6NTc7aTo0O2k6NTE7fTwvbGk+PGxpPjxzdHJvbmc+d29vX2V4Y2x1ZGVfdmlkZW88L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlYXRfZW50cmllczwvc3Ryb25nPiAtIDM8L2xpPjxsaT48c3Ryb25nPndvb19mZWF0dXJlZF9jYXRlZ29yeTwvc3Ryb25nPiAtIEFuZHJvaWQ8L2xpPjxsaT48c3Ryb25nPndvb19mZWVkYnVybmVyX2lkPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl91cmw8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19mcmFtZXdvcmtfdmVyc2lvbjwvc3Ryb25nPiAtIDUuNS4zPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gNTc8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29faW1hZ2Vfc2luZ2xlPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19sb2dvPC9zdHJvbmc+IC0gaHR0cDovL2FuZHJvaWQtem9vbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEzLzA1L2xvZ29fYW5kcm9pZF96b29uZTMucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFudWFsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL3N1cHBvcnQvdGhlbWUtZG9jdW1lbnRhdGlvbi9nYXpldHRlLWVkaXRpb24vPC9saT48bGk+PHN0cm9uZz53b29fb3B0aW9uczwvc3Ryb25nPiAtIGE6NTI6e3M6MTg6Indvb19hbHRfc3R5bGVzaGVldCI7czo5OiJncmVlbi5jc3MiO3M6ODoid29vX2xvZ28iO3M6NzU6Imh0dHA6Ly9hbmRyb2lkLXpvb25lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxMy8wNS9sb2dvX2FuZHJvaWRfem9vbmUzLnBuZyI7czoxMzoid29vX3RleHR0aXRsZSI7czo1OiJmYWxzZSI7czoxODoid29vX2N1c3RvbV9mYXZpY29uIjtzOjA6IiI7czoyMDoid29vX2dvb2dsZV9hbmFseXRpY3MiO3M6MDoiIjtzOjE4OiJ3b29fZmVlZGJ1cm5lcl91cmwiO3M6MDoiIjtzOjE3OiJ3b29fZmVlZGJ1cm5lcl9pZCI7czowOiIiO3M6MTQ6Indvb19jdXN0b21fY3NzIjtzOjA6IiI7czoxNzoid29vX3Nob3dfY2Fyb3VzZWwiO3M6NDoidHJ1ZSI7czoyMToid29vX2ZlYXR1cmVkX2NhdGVnb3J5IjtzOjc6IkFuZHJvaWQiO3M6MTY6Indvb19mZWF0X2VudHJpZXMiO3M6MToiMyI7czoyNzoid29vX3NsaWRlcl9tYWdhemluZV9leGNsdWRlIjtzOjQ6InRydWUiO3M6MTY6Indvb19zbGlkZXJfc2ZhZGUiO3M6NToiZmFsc2UiO3M6MTY6Indvb19zbGlkZXJfY2ZhZGUiO3M6NToiZmFsc2UiO3M6MTY6Indvb19zbGlkZXJfc3BlZWQiO3M6MzoiMC42IjtzOjE4OiJ3b29fc2xpZGVyX3RpbWVvdXQiO3M6MToiNiI7czoyNDoid29vX3NsaWRlcl9jb250ZW50X3NwZWVkIjtzOjM6IjAuNiI7czoxOToid29vX2Nhcm91c2VsX2hlaWdodCI7czozOiIyOTIiO3M6ODoid29vX2hvbWUiO3M6NToiZmFsc2UiO3M6MTY6Indvb19ibG9nX2V4Y2VycHQiO3M6NDoidHJ1ZSI7czoxOToid29vX2FyY2hpdmVfZXhjZXJwdCI7czo0OiJ0cnVlIjtzOjEwOiJ3b29fYXV0aG9yIjtzOjQ6InRydWUiO3M6MTQ6Indvb19zaG93X3ZpZGVvIjtzOjQ6InRydWUiO3M6MTc6Indvb19leGNsdWRlX3ZpZGVvIjtzOjU6ImZhbHNlIjtzOjE4OiJ3b29fdmlkZW9fY2F0ZWdvcnkiO3M6NjoiVmlkZW9zIjtzOjE4OiJ3b29fd3B0aHVtYl9ub3RpY2UiO3M6MDoiIjtzOjIyOiJ3b29fcG9zdF9pbWFnZV9zdXBwb3J0IjtzOjQ6InRydWUiO3M6MTQ6Indvb19waXNfcmVzaXplIjtzOjQ6InRydWUiO3M6MTc6Indvb19waXNfaGFyZF9jcm9wIjtzOjQ6InRydWUiO3M6MTA6Indvb19yZXNpemUiO3M6NDoidHJ1ZSI7czoxMjoid29vX2F1dG9faW1nIjtzOjU6ImZhbHNlIjtzOjIwOiJ3b29faG9tZV90aHVtYl93aWR0aCI7czozOiIxMDAiO3M6MjE6Indvb19ob21lX3RodW1iX2hlaWdodCI7czoyOiI1NyI7czoxNToid29vX3RodW1iX3dpZHRoIjtzOjM6IjEwMCI7czoxNjoid29vX3RodW1iX2hlaWdodCI7czoyOiI1NyI7czoxNjoid29vX2ltYWdlX3NpbmdsZSI7czo1OiJmYWxzZSI7czoxNjoid29vX3NpbmdsZV93aWR0aCI7czozOiIyNTAiO3M6MTc6Indvb19zaW5nbGVfaGVpZ2h0IjtzOjM6IjE4MCI7czoxMzoid29vX3Jzc190aHVtYiI7czo1OiJmYWxzZSI7czoxODoid29vX2FkX3RvcF9kaXNhYmxlIjtzOjU6ImZhbHNlIjtzOjE4OiJ3b29fYWRfdG9wX2Fkc2Vuc2UiO3M6MzEzOiI8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9ICJjYS1wdWItMTM5NjAzNTE3OTk0ODI2OSI7DQovKiA0Njh4NjBhbmRyb2lkem9vbmUgKi8NCmdvb2dsZV9hZF9zbG90ID0gIjE5MzU4MDg2NzciOw0KZ29vZ2xlX2FkX3dpZHRoID0gNDY4Ow0KZ29vZ2xlX2FkX2hlaWdodCA9IDYwOw0KLy8tLT4NCjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiDQpzcmM9Imh0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanMiPg0KPC9zY3JpcHQ+IjtzOjE2OiJ3b29fYWRfdG9wX2ltYWdlIjtzOjQwOiJodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzLzQ2OHg2MGEuanBnIjtzOjE0OiJ3b29fYWRfdG9wX3VybCI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjE0OiJ3b29fYWRzX3JvdGF0ZSI7czo0OiJ0cnVlIjtzOjE0OiJ3b29fYWRfaW1hZ2VfMSI7czo0MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy8xMjV4MTI1YS5qcGciO3M6MTI6Indvb19hZF91cmxfMSI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjE0OiJ3b29fYWRfaW1hZ2VfMiI7czo0MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy8xMjV4MTI1Yi5qcGciO3M6MTI6Indvb19hZF91cmxfMiI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjE0OiJ3b29fYWRfaW1hZ2VfMyI7czo0MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy8xMjV4MTI1Yy5qcGciO3M6MTI6Indvb19hZF91cmxfMyI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjE0OiJ3b29fYWRfaW1hZ2VfNCI7czo0MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy8xMjV4MTI1ZC5qcGciO3M6MTI6Indvb19hZF91cmxfNCI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjt9PC9saT48bGk+PHN0cm9uZz53b29fcGlzX2hhcmRfY3JvcDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19waXNfcmVzaXplPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Bvc3RfaW1hZ2Vfc3VwcG9ydDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19yZXNpemU8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fcnNzX3RodW1iPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb19zaG93X2Nhcm91c2VsPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3dfdmlkZW88L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2luZ2xlX2hlaWdodDwvc3Ryb25nPiAtIDE4MDwvbGk+PGxpPjxzdHJvbmc+d29vX3NpbmdsZV93aWR0aDwvc3Ryb25nPiAtIDI1MDwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9jZmFkZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fc2xpZGVyX2NvbnRlbnRfc3BlZWQ8L3N0cm9uZz4gLSAwLjY8L2xpPjxsaT48c3Ryb25nPndvb19zbGlkZXJfbWFnYXppbmVfZXhjbHVkZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zbGlkZXJfc2ZhZGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9zcGVlZDwvc3Ryb25nPiAtIDAuNjwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl90aW1lb3V0PC9zdHJvbmc+IC0gNjwvbGk+PGxpPjxzdHJvbmc+d29vX3RhYnM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3RleHR0aXRsZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fdGhlbWVuYW1lPC9zdHJvbmc+IC0gR2F6ZXR0ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDU3PC9saT48bGk+PHN0cm9uZz53b29fdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAxMDA8L2xpPjxsaT48c3Ryb25nPndvb192aWRlb19jYXRlZ29yeTwvc3Ryb25nPiAtIFZpZGVvczwvbGk+PGxpPjxzdHJvbmc+d29vX3dwdGh1bWJfbm90aWNlPC9zdHJvbmc+IC0gPC9saT48L3VsPg==