[{"content":"A catch-all of what I read and watch for tech watch: blogs, YouTube channels, one-off videos, news sites. Not all serious, some of it is just fun.\nHow to read the table:\nClick a column header to sort (title, type, category, date added). Use the search box and the type/category filters to narrow the list. Tous les typesBlogChaîne YouTubeSite Toutes les catégoriesProgrammationTech et businessTech et internet Trier : ajouts récents d'abord Trier : titre (A→Z) Trier : type (A→Z) Trier : catégorie (A→Z) 5 ressource(s) affichée(s)\nTitre Type Catégorie Ajouté ▼ Description Ars Technica Site Tech et internet sept. 2026 Actualité tech généraliste, sérieuse et bien sourcée depuis 1998. MIT Technology Review Site Tech et internet sept. 2026 Le magazine du MIT sur les technologies émergentes, IA en tête. Rustlings Site Programmation sept. 2026 Les exercices officiels pour apprendre Rust en pratiquant, corrigés directement par le compilateur. ThePrimeagen Chaîne YouTube Programmation sept. 2026 Développeur ex-Netflix, Rust et Vim, très technique et volontiers auto-dérisoire. Pour la légèreté autant que pour le contenu. Where\u0026#39;s Your Ed At Blog Tech et business sept. 2026 Ed Zitron démonte le discours de la Silicon Valley et la bulle IA avec une plume très acide. ","permalink":"https://gaetangrond.me/en/recommandations/","summary":"\u003cp\u003eA catch-all of what I read and watch for tech watch: blogs, YouTube channels, one-off videos, news sites. Not all serious, some of it is just fun.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to read the table:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eClick a column header to sort (title, type, category, date added).\u003c/li\u003e\n\u003cli\u003eUse the search box and the type/category filters to narrow the list.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"livres\" id=\"recos\"\u003e\n  \u003cdiv class=\"livres-controls\"\u003e\n    \u003cinput type=\"search\" id=\"recos-q\" placeholder=\"Rechercher un titre, une description…\" aria-label=\"Rechercher une recommandation\"\u003e\n    \u003cselect id=\"recos-type\" aria-label=\"Filtrer par type\"\u003e\n      \u003coption value=\"\"\u003eTous les types\u003c/option\u003e\u003coption value=\"Blog\"\u003eBlog\u003c/option\u003e\u003coption value=\"Chaîne YouTube\"\u003eChaîne YouTube\u003c/option\u003e\u003coption value=\"Site\"\u003eSite\u003c/option\u003e\u003c/select\u003e\n    \u003cselect id=\"recos-cat\" aria-label=\"Filtrer par catégorie\"\u003e\n      \u003coption value=\"\"\u003eToutes les catégories\u003c/option\u003e\u003coption value=\"Programmation\"\u003eProgrammation\u003c/option\u003e\u003coption value=\"Tech et business\"\u003eTech et business\u003c/option\u003e\u003coption value=\"Tech et internet\"\u003eTech et internet\u003c/option\u003e\u003c/select\u003e\n    \u003cselect id=\"recos-sort\" aria-label=\"Trier\"\u003e\n      \u003coption value=\"ajout-desc\"\u003eTrier : ajouts récents d'abord\u003c/option\u003e\n      \u003coption value=\"titre\"\u003eTrier : titre (A→Z)\u003c/option\u003e\n      \u003coption value=\"type\"\u003eTrier : type (A→Z)\u003c/option\u003e\n      \u003coption value=\"categorie\"\u003eTrier : catégorie (A→Z)\u003c/option\u003e\n    \u003c/select\u003e\n  \u003c/div\u003e\n  \u003cp class=\"livres-count\"\u003e\u003cspan id=\"recos-n\"\u003e5\u003c/span\u003e ressource(s) affichée(s)\u003c/p\u003e","title":"My recommendations 🔖"},{"content":"Here is the list of books I have read and recommend. It works as a reminder for me as much as a reading suggestion for you.\nNot all of them are about programming — far from it. There is history, psychology, geopolitics and a fair amount of tech. Books are in both French and English.\nHow to read the table:\nClick a column header to sort (title, author, category, rating, date added). The most recent additions come first by default. Use the search box and the category filter to narrow the list. ⭐️ means I really liked it, ⭐️⭐️ means it is a favourite. 🔈 means I listened to the audiobook. The Added column shows when the book entered this list, which is a good approximation of when I read it. Books dated August 2023 are the initial batch: I had read them earlier, without knowing exactly when. Toutes les catégoriesBiographieClassiques et littératureDéveloppement personnelÉconomieÉlectroniqueGéopolitiqueGuerreHistoireIA et futurMarketing et businessMédiasPhilosophieProgrammationPsychologieSociétéTech et internet Trier : ajouts récents d'abord Trier : titre (A→Z) Trier : auteur (A→Z) Trier : catégorie (A→Z) Trier : mieux notés d'abord 85 livre(s) affiché(s)\nTitre Auteur Catégorie Avis Ajouté ▼ Description 21 leçons pour le XXIe siècle Yuval Noah Harari Société ⭐️⭐️ 🔈 sept. 2026 Après Sapiens et Homo Deus, Harari confronte ses grandes thèses au présent : travail, nationalisme, religion, terrorisme, désinformation. Moins de recul historique, plus de prise de position. Empire of AI: Dreams and Nightmares in Sam Altman\u0026#39;s OpenAI Karen Hao IA et futur ⭐️ août 2026 Enquête au long cours sur OpenAI : gouvernance, coût humain de l\u0026#39;annotation des données, coût écologique. Le contre-récit de la Silicon Valley. Enshittification: Why Everything Suddenly Got Worse and What to Do About It Cory Doctorow Tech et internet ⭐️ août 2026 La théorie de l\u0026#39;emmerdification : les plateformes soignent d\u0026#39;abord les utilisateurs, puis les entreprises, puis se servent elles-mêmes. Le meilleur cadre de lecture du web actuel. The Reverse Centaur\u0026#39;s Guide to Life After AI Cory Doctorow IA et futur ⭐️ août 2026 Le « reverse centaur » : l\u0026#39;humain mis au service de la machine plutôt que l\u0026#39;inverse. Doctorow s\u0026#39;attaque à l\u0026#39;IA comme instrument de dégradation du travail. Les guerres des mers: La Marine française au cœur des nouveaux enjeux du monde Nicolas Vaujour (Amiral) Guerre févr. 2026 Le chef d\u0026#39;état-major de la Marine sur les nouveaux enjeux maritimes : câbles, détroits, dissuasion. Nexus : Une brève histoire des réseaux d\u0026#39;information, de l\u0026#39;âge de pierre à l\u0026#39;IA Yuval Noah Harari IA et futur ⭐️⭐️ 🔈 févr. 2026 Harari relit l\u0026#39;histoire par les réseaux d\u0026#39;information : de l\u0026#39;écriture à l\u0026#39;IA, l\u0026#39;information ne cherche pas la vérité mais la connexion. The Rust Programming Language, 2nd Edition Steve Klabnik, Carol Nichols, Chris Krycho et la communauté Rust Programmation ⭐️ nov. 2025 Le livre officiel de Rust, gratuit en ligne. La référence pour comprendre l\u0026#39;ownership et le borrow checker sans y laisser sa santé mentale. Les morts ont la parole : Philippe Boxho, médecin légiste, fait parler les cadavres Philippe Boxho Société nov. 2024 Un médecin légiste raconte ses affaires. Fascinant, souvent drôle, jamais complaisant. Maman s\u0026#39;en va-t-en guerre : Ma vie de grand reporter Dorothée Olliéric Géopolitique ⭐️ nov. 2024 Trente ans de reportages de guerre par une grand reporter de France Télévisions. Médecin du RAID: Vivre en état d’urgence Matthieu Langlois Société nov. 2024 Le médecin-chef du RAID raconte ses interventions, dont le Bataclan. Sobre et marquant. Task Force Baguette. Deux soldats français sur le front Ukrainien Adam K Guerre ⭐️ nov. 2024 Deux volontaires français dans la guerre en Ukraine, vue depuis les tranchées. Tueurs à gages. Enquête sur le nouveau phénomène des shooters Jean-Michel Décugis Société ⭐️ nov. 2024 Enquête sur les jeunes tueurs à gages recrutés en ligne par le narcotrafic. Effective Python Brett Slatkin Programmation sept. 2024 90 conseils courts et concrets pour écrire du Python plus propre. Parfait en lecture par petits bouts. Fluent Python: Clear, Concise, and Effective Programming Luciano Ramalho Programmation ⭐️ sept. 2024 Le Python vraiment idiomatique : modèle de données, descripteurs, concurrence. À lire quand on sait déjà écrire du Python. Grokking Algorithms Aditya Bhargava Programmation ⭐️ sept. 2024 Les algorithmes expliqués par le dessin. Le livre à conseiller à qui trouve le sujet intimidant. Grokking Data Structures Marcello La Rocca Programmation sept. 2024 Introduction visuelle et progressive aux structures de données, sans le formalisme d\u0026#39;un cours d\u0026#39;algo classique. Python Crash Course Eric Matthes Programmation sept. 2024 Un très bon premier livre de Python : les bases, puis trois projets complets pour ancrer le tout. The Wide Wide Sea: Imperial Ambition, First Contact and the Fateful Final Voyage of Captain James Cook Hampton Sides Histoire ⭐️ sept. 2024 Le dernier voyage de James Cook, entre exploration, ambition impériale et rencontre des mondes. Growth Hacker Marketing Ryan Holiday Marketing et business ⭐️ 🔈 juin 2024 Court manifeste : le marketing commence dans le produit, pas dans le budget publicitaire. Hooked: How to Build Habit-Forming Products Nir Eyal Marketing et business 🔈 juin 2024 Le modèle Hook pour créer des produits qui rendent accro. À lire aussi avec un œil critique. Launch Jeff Walker Marketing et business 🔈 juin 2024 Une méthode très concrète de lancement produit par séquences d\u0026#39;emails. Daté, mais efficace. The Lean Startup Eric Ries Marketing et business ⭐️⭐️ 🔈 juin 2024 MVP, boucle build-measure-learn, pivot : le vocabulaire de base de la création de produit. Aventures au coeur de la mémoire Joshua Foer Psychologie ⭐️ mai 2024 La traduction française de Moonwalking with Einstein, sur les techniques de mémorisation. Moonwalking with Einstein: The Art and Science of Remembering Everything Joshua Foer Développement personnel ⭐️ mai 2024 Un journaliste devient champion de mémoire en un an. Enquête et récit à la fois. Deep Work: Rules for Focused Success in a Distracted World Cal Newport Développement personnel ⭐️ avril 2024 Défense de la concentration profonde et méthodes pour la protéger dans un monde d\u0026#39;interruptions. Burn Book: A Tech Love Story Kara Swisher Tech et internet avril 2024 Trente ans de Silicon Valley vus de l\u0026#39;intérieur par une journaliste qui a vu les fondateurs changer. Hypermedia Systems Carson Gross (créateur de Htmx), Adam Stepinski, Deniz Aksimsek Programmation ⭐️ mars 2024 Par le créateur de Htmx : plaidoyer argumenté pour l\u0026#39;hypermédia contre le tout-SPA. Gratuit en ligne. Countdown to Zero Day: Stuxnet and the Launch of the World\u0026#39;s First Digital Weapon Kim Zetter Tech et internet 🔈 janv. 2024 L\u0026#39;histoire complète de Stuxnet, la première cyberarme à provoquer des dégâts physiques. Napoléon: L\u0026#39;ombre de la Révolution Bart Van Loo Histoire ⭐️ déc. 2023 Napoléon replacé dans la Révolution qui l\u0026#39;a produit, par l\u0026#39;auteur des Téméraires. Pour Napoléon Thierry Lentz Histoire 🔈 déc. 2023 Réponse argumentée de Thierry Lentz aux procès faits à Napoléon. La France sous nos yeux. Economie, paysages, nouveaux modes de vie Jérôme Fourquet et Jean-Laurent Cassely Société ⭐️ 🔈 nov. 2023 Une radiographie de la France réelle : zones commerciales, mobilités, nouveaux modes de vie. La grande histoire du monde François Reynaert Histoire ⭐️⭐️ 🔈 nov. 2023 Une histoire mondiale décentrée de l\u0026#39;Europe, très accessible. Nos ancêtres les Gaulois et autres fadaises François Reynaert Histoire ⭐️ 🔈 nov. 2023 Démolition en règle des mythes du roman national français. Stick Action Spéciale: Un opérateur du 1er RPIMa raconte Alexandre Alex Guerre ⭐️ nov. 2023 Le récit d\u0026#39;un opérateur des forces spéciales, de la sélection aux missions. D\u0026#39;une guerre à l\u0026#39;autre: De la Côte d\u0026#39;Ivoire à l\u0026#39;Afghanistan avec le 2e RIMa Yohann Douady Guerre oct. 2023 Le quotidien d\u0026#39;un marsouin, de la Côte d\u0026#39;Ivoire à la vallée d\u0026#39;Uzbin. Born a Crime: Stories from a South African Childhood Trevor Noah Biographie ⭐️ sept. 2023 L\u0026#39;enfance de Trevor Noah sous l\u0026#39;apartheid, drôle et brutal à la fois. Sa mère est le vrai personnage principal. This Is How They Tell Me the World Ends: The Cyberweapons Arms Race Nicole Perlroth Tech et internet ⭐️ août 2023 Enquête sur le marché des failles zero-day et la course aux cyberarmes entre États. Make: Electronics: Learning Through Discovery Charles Platt Électronique août 2023 On apprend l\u0026#39;électronique en cramant des composants. Pédagogie par l\u0026#39;expérience, vraiment efficace. 1984 George Orwell Classiques et littérature ⭐️ août 2023 La dystopie de référence sur la surveillance et la langue comme instrument de pouvoir. Toujours d\u0026#39;actualité. 21 Lessons for the 21st Century Yuval Noah Harari IA et futur août 2023 Harari passe en revue les grands sujets du siècle : travail, IA, immigration, vérité, sens. Black Ops: The Life of a CIA Shadow Warrior (English Edition) Ric Prado Histoire août 2023 Vingt-cinq ans d\u0026#39;opérations clandestines racontés par un officier paramilitaire de la CIA. Brave New World Aldous Huxley Classiques et littérature août 2023 La dystopie du plaisir et du conditionnement, souvent plus proche de notre époque que celle d\u0026#39;Orwell. Cabin Fever: The Harrowing Journey of a Cruise Ship at the Dawn of a Pandemic (English Edition) Michael Smith Histoire août 2023 Un paquebot piégé aux premiers jours du Covid : huis clos et gestion de crise en pleine mer. Django for APIs: Build web APIs with Python and Django William S. Vincent Programmation août 2023 Construire des APIs REST avec Django REST Framework, pas à pas, avec l\u0026#39;authentification et le déploiement. Fahrenheit 451 Ray Bradbury Classiques et littérature août 2023 Une société qui brûle les livres non par tyrannie, mais parce que plus personne ne veut les lire. First They Killed My Father: A Daughter of Cambodia Remembers (English Edition) Loung Ung Histoire août 2023 Le génocide khmer rouge vu par une enfant de cinq ans. Un témoignage qui ne s\u0026#39;oublie pas. Homo Deus: A Brief History of Tomorrow Yuval Noah Harari IA et futur ⭐️⭐️ août 2023 Après Sapiens : ce que devient l\u0026#39;humanité quand les algorithmes nous connaissent mieux que nous-mêmes. JavaScript from Beginner to Professional: Learn JavaScript quickly by building fun, interactive, and dynamic web apps, games, and pages Laurence Lars Svekis, Maaike van Putten, Rob Percival Programmation août 2023 Parcours JavaScript complet par la pratique, du DOM aux petits jeux interactifs. Making sense : Conversations on Consciousness, Morality and the Future of Humanity Sam Harris Philosophie août 2023 Les meilleures conversations du podcast de Sam Harris : conscience, morale, avenir de l\u0026#39;humanité. The art of peace Morihei Ueshiba Philosophie août 2023 Les préceptes du fondateur de l\u0026#39;aïkido. Court, aphoristique, à relire par petites doses. The Hacker Playbook 3: Practical Guide To Penetration Testing (English Edition) Peter Kim Programmation août 2023 Manuel de pentest orienté red team : reconnaissance, exploitation, post-exploitation, très pratique. The Iliad Homer Classiques et littérature août 2023 La colère d\u0026#39;Achille sous les murs de Troie. Rude, mais fondateur. The Odyssey Homer Classiques et littérature août 2023 Le retour d\u0026#39;Ulysse. Le récit d\u0026#39;aventure qui structure toute la littérature occidentale. Atomic Habits James Clear Développement personnel ⭐️ août 2023 Les habitudes se construisent par le système, pas par la motivation. Le plus actionnable du genre. Black flags: The rise of ISIS Joby Warrick Géopolitique août 2023 Comment Daech est né des ruines de l\u0026#39;Irak. Prix Pulitzer, très documenté. Chef de guerre Louis Saillans Guerre ⭐️ août 2023 Un officier commando marine raconte ses opérations au Sahel. Direct, sans esbroufe. Clean Code Robert C. Martin Programmation août 2023 Le livre qui a imposé le vocabulaire du code propre. Discutable par endroits, mais incontournable culturellement. Destruction massive: Géopolitique de la faim Jean Ziegler Économie août 2023 Ziegler démonte les mécanismes économiques et politiques de la faim dans le monde. Militant et documenté. Effective Altruism: How Can We Best Help Others? Peter Singer Philosophie août 2023 Peter Singer défend l\u0026#39;idée de donner efficacement, en mesurant l\u0026#39;impact réel de son altruisme. Ghost in the Wires Kevin Mitnick Tech et internet août 2023 Les cavales de Kevin Mitnick : social engineering, FBI aux trousses, l\u0026#39;âge d\u0026#39;or du hacking. Hyperconnexion Michael Stora Médias août 2023 Un psychanalyste sur notre rapport aux écrans et aux réseaux sociaux. Influence: The Psychology of Persuasion Robert B. Cialdini Psychologie ⭐️ août 2023 Les six leviers de la persuasion. Utile pour convaincre, encore plus pour repérer quand on vous manipule. Killers of the Flower Moon: The Osage Murders and the Birth of the FBI David Grann Histoire août 2023 Les meurtres des Osage pour leur pétrole et la naissance du FBI. Enquête glaçante. L\u0026#39;Univers, les Dieux, les Hommes. Récits grecs des origines Jean-Pierre Vernant Histoire août 2023 Vernant raconte les mythes grecs comme on les racontait : à l\u0026#39;oral, simplement, magnifiquement. La face cachée d\u0026#39;internet : hackers, dark net... Rayna Stamboliyska Tech et internet août 2023 Panorama accessible du dark net, des hackers et de la cybercriminalité. La langue des médias : Destruction du langage et fabrication du consentement Ingrid Riocreux Médias ⭐️ août 2023 Comment le vocabulaire journalistique fabrique du consentement, exemples à l\u0026#39;appui. Les Marchands de nouvelles : Essai sur les pulsions totalitaires des médias Ingrid Riocreux Médias ⭐️ août 2023 Analyse critique du discours médiatique et de ses réflexes de conformité. Les vertus de l\u0026#39;échec Charles Pépin Psychologie ⭐️ août 2023 Ce que l\u0026#39;échec construit, lu à travers les philosophes. Court et bien écrit. Non ce n\u0026#39;était pas mieux avant Johan Norberg Économie ⭐️ août 2023 Les données contre la nostalgie : pauvreté, santé, violence, tout s\u0026#39;est amélioré. Salutaire. Outlive: The Science and Art of Longevity Peter Attia Développement personnel août 2023 La médecine de la longévité selon Attia : prévention, exercice, métabolisme, sommeil. Permanent Record Edward Snowden Tech et internet ⭐️⭐️ août 2023 L\u0026#39;autobiographie de Snowden : pourquoi et comment il a révélé la surveillance de masse de la NSA. Psychologie de la connerie Jean-François Marmion Psychologie août 2023 Des chercheurs prennent la bêtise au sérieux. Drôle et étonnamment sérieux. Python testing with pytest Brian Okken Programmation août 2023 Tout pytest : fixtures, paramétrage, plugins. De quoi arrêter de subir ses tests. Quand est-ce qu\u0026#39;on biaise ? Thomas C. Durand Psychologie août 2023 Une visite guidée des biais cognitifs, sur le ton de la vulgarisation zététique. Sapiens: A Brief History of Humankind Yuval Noah Harari Histoire août 2023 L\u0026#39;histoire de l\u0026#39;humanité par les fictions collectives : argent, religions, États. Le livre qui a lancé Harari. So you\u0026#39;ve been publicly shamed Jon Ronson Tech et internet août 2023 Ce que devient la honte publique à l\u0026#39;ère des réseaux sociaux, à travers des cas concrets de vies détruites. Syrie, une guerre pour rien Frédéric Pichon Géopolitique août 2023 Lecture à contre-courant du conflit syrien et des choix diplomatiques français. The daily stoic: 366 meditations on wisdom, perseverance, and the art of living Ryan Holiday Développement personnel ⭐️⭐️ août 2023 Une page de stoïcisme par jour, tirée d\u0026#39;Épictète, Sénèque et Marc Aurèle. The Lost City of Z: A Tale of Deadly Obsession in the Amazon David Grann Histoire ⭐️ août 2023 L\u0026#39;obsession de Percy Fawcett pour une cité perdue en Amazonie, et l\u0026#39;enquête de l\u0026#39;auteur sur sa disparition. The Pragmatic Programmer Andrew Hunt et David Thomas Programmation ⭐️⭐️ 🔈 août 2023 Les habitudes de l\u0026#39;artisan du logiciel : DRY, découplage, automatisation. Un classique qui a bien vieilli. The righteous mind Jonathan Haidt Psychologie août 2023 Pourquoi les gens moraux se déchirent en politique : les fondements moraux selon Haidt. The Wager: A Tale of Shipwreck, Mutiny and Murder David Grann Histoire ⭐️ août 2023 Naufrage, mutinerie et procès au XVIIIe siècle. Grann raconte l\u0026#39;histoire vraie mieux qu\u0026#39;un roman. Thinking, Fast and Slow Daniel Kahneman Psychologie août 2023 Système 1 et système 2 : la synthèse de Kahneman sur nos biais cognitifs. Dense, mais fondateur. Total bullshit: Au cœur de la post-vérité Sebastian Dieguez Médias août 2023 Le bullshit comme objet scientifique : ni mensonge ni vérité, simple indifférence au vrai. Two Scoops of Django Daniel Roy Greenfeld et Audrey Roy Greenfeld Programmation ⭐️ août 2023 Les bonnes pratiques Django accumulées en production : structure de projet, settings, modèles, sécurité. ","permalink":"https://gaetangrond.me/en/books/","summary":"\u003cp\u003eHere is the list of books I have read and recommend. It works as a reminder for me as much as a reading suggestion for you.\u003c/p\u003e\n\u003cp\u003eNot all of them are about programming — far from it. There is history, psychology, geopolitics and a fair amount of tech. Books are in both French and English.\u003c/p\u003e","title":"Books I Recommend 📚"},{"content":"After 6+ years working on a large-scale SaaS application, I\u0026rsquo;ve learned what works, what doesn\u0026rsquo;t, and what patterns truly stand the test of time in Django development. This isn\u0026rsquo;t theoretical advice—these are battle-tested practices from building real applications that serve real users.\nThe Service Layer vs Repository Debate Service Layer: A Clear Winner The service layer pattern makes complete sense for Django applications. Here\u0026rsquo;s why:\nCentralized Business Logic: When creating an organization, you need to add an owner, send a welcome email, and handle permissions. This logic gets reused across your API, Django admin, class-based views, and Celery tasks. The service layer provides a single source of truth.\nLocality of Behavior: Keep business logic, permission checks, and side effects in the same place. This makes your code more predictable and easier to debug.\nClean Architecture Flow:\nRequest → View/Controller → Service → Manager/QuerySet → Database Here\u0026rsquo;s a practical example:\n# services/organization.py from django.db import transaction from django.core.exceptions import PermissionDenied class OrganizationService: @transaction.atomic def create_organization(self, user, name, **kwargs): if not user.can_create_organization(): raise PermissionDenied(\u0026#34;User cannot create organizations\u0026#34;) org = Organization.objects.create(name=name, **kwargs) org.add_owner(user) self.send_welcome_email(user, org) return org Repository Pattern: Skip It The repository pattern adds unnecessary abstraction in Django:\nDjango\u0026rsquo;s Active Record pattern + custom managers already handle data access elegantly 99% of Django projects don\u0026rsquo;t need this level of decoupling Only consider it if you\u0026rsquo;re planning to migrate away from Django\u0026rsquo;s ORM entirely Database Access: Managers Are Your Friends Custom managers are the Django way to handle data access logic:\nclass OrganizationManager(models.Manager): def for_user(self, user): return self.filter(members=user) def is_active(self): return self.filter(active=True) def with_member_count(self): return self.annotate(member_count=Count(\u0026#39;members\u0026#39;)) Naming Conventions for Manager Methods:\nfor_user(), for_company() - filtering by context is_active(), has_email() - boolean conditions exclude_deleted(), not_expired() - exclusions with_total_orders() - annotations create_for_user() - creation methods Keep managers focused on data access—no side effects, no email sending, no business logic.\nPerformance: Database First Before implementing Redis caching, optimize your database access:\nN+1 Queries: The most common Django performance killer. Use prefetch_related() and select_related() religiously.\nEssential Optimizations:\nPagination for large datasets Database-level counting instead of Python iteration @cached_property for expensive computations GZip middleware for response compression # Bad users = User.objects.all() for user in users: print(user.organization.name) # N+1 query # Good users = User.objects.select_related(\u0026#39;organization\u0026#39;) for user in users: print(user.organization.name) # Single query Django Signals: Just Don\u0026rsquo;t Django\u0026rsquo;s documentation warns against signals multiple times for good reason:\nHidden side effects make debugging nightmarish Difficult to trace why something isn\u0026rsquo;t working Race conditions and ordering issues Better alternatives:\nOverride save() for model-specific logic Use service layers for business logic Keep side effects explicit and traceable Views: Keep Them Thin Views should be lightweight controllers:\nclass OrganizationCreateView(CreateView): def form_valid(self, form): try: org = OrganizationService().create_organization( user=self.request.user, **form.cleaned_data ) messages.success(self.request, \u0026#34;Organization created successfully\u0026#34;) return redirect(\u0026#39;org:detail\u0026#39;, org.pk) except PermissionDenied as e: messages.error(self.request, str(e)) return self.form_invalid(form) Class-Based Views: They shine when you have repeated patterns (CRUD + filtering + HTMX partials), but avoid mixin hell. The Django team introduced a security vulnerability in 2016 due to CBV complexity—keep it simple.\nProject Structure That Scales Core App Philosophy Create a core app as your single source of truth:\n# core/models.py class BaseModel(models.Model): created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) class Meta: abstract = True # core/exceptions.py class BusinessLogicError(Exception): pass # core/messages.py class Messages(StrEnum): PERMISSION_DENIED = \u0026#34;You don\u0026#39;t have permission for this action\u0026#34; ORGANIZATION_CREATED = \u0026#34;Organization created successfully\u0026#34; Utils vs Helpers utils.py: Generic functions, framework-agnostic\nText formatting, slugification, date conversion helpers.py: Django-specific shortcuts\nForm error handling, template utilities Modular Apps One app = one business domain. Avoid catch-all apps like common or utils.\nData Transfer: DTOs Over Models Don\u0026rsquo;t always return Django models from services—they carry heavy baggage:\nAll database fields Attached managers Django metadata Lazy-loaded relations State tracking for dirty checking Consider lightweight DTOs or serialized data for better performance and explicit contracts.\nModern Django Development Docker: Non-Negotiable # Your docker-compose up should start everything # Include .env.example and clear README # Zero friction for new developers API Versioning From Day One # urls.py urlpatterns = [ path(\u0026#39;api/v1/\u0026#39;, include(\u0026#39;api.v1.urls\u0026#39;)), ] HTMX: The Pragmatic Choice HTMX covers 90% of interactive web app needs:\n14KB footprint Leverages Django\u0026rsquo;s strengths (templates, routing, permissions) Forces you to think in reusable partials No need for separate API + SPA unless you have a dedicated frontend team Transactions and Atomicity Use @transaction.atomic granularly, not globally:\n@transaction.atomic def create_user_with_profile(self, email, **profile_data): user = User.objects.create_user(email=email) Profile.objects.create(user=user, **profile_data) return user Development Workflow Improvements Management Commands Over Endpoints Automate with Django commands rather than exposing endpoints:\n# management/commands/send_reports.py class Command(BaseCommand): def handle(self, *args, **options): ReportService().send_weekly_reports() Perfect for cron jobs, backend tasks, and Celery integration.\nInternationalization from Day One Enable i18n immediately—refactoring later is painful:\n# settings.py USE_I18N = True LANGUAGES = [(\u0026#39;en\u0026#39;, \u0026#39;English\u0026#39;), (\u0026#39;fr\u0026#39;, \u0026#39;French\u0026#39;)] Celery Over Django Async For background tasks, Celery provides better decoupling and reliability than Django\u0026rsquo;s async features:\n@shared_task def send_welcome_email(user_id): user = User.objects.get(id=user_id) # Send email logic Architecture in Layers ┌─────────────────────────────────────────────┐ │ PRESENTATION LAYER │ │ CBV │ DRF ViewSets │ HTMX Views │ └─────────────────┬───────────────────────────┘ │ ┌─────────────────▼───────────────────────────┐ │ SERVICE LAYER │ │ Centralized Business Logic │ └─────────────────┬───────────────────────────┘ │ ┌─────────────────▼───────────────────────────┐ │ DATA LAYER │ │ Models │ Managers │ QuerySets │ └─────────────────────────────────────────────┘ Anti-Patterns to Avoid Static method abuse: If you\u0026rsquo;re writing lots of @staticmethod, you\u0026rsquo;re probably writing Java in Python Mixin hell: Prefer clear inheritance over multiple cryptic mixins Fat models: Some logic belongs in models, but prefer services for complex business rules Global transactions: Use @transaction.atomic precisely where needed Final Thoughts These practices come from real experience scaling Django applications. Not every pattern fits every project, but these guidelines have consistently delivered maintainable, performant applications.\nThe key is finding the right balance between Django\u0026rsquo;s \u0026ldquo;batteries included\u0026rdquo; philosophy and clean architecture principles. When in doubt, choose explicitness over magic, and always prioritize maintainability over clever abstractions.\nRemember: good architecture isn\u0026rsquo;t about following every pattern perfectly—it\u0026rsquo;s about making code that future you (and your teammates) can understand and modify with confidence.\n","permalink":"https://gaetangrond.me/posts/django/16-tips-django/","summary":"A pragmatic guide to Django architecture patterns, based on real-world experience building and scaling a large SaaS application over 6 years.","title":"Django Best Practices: Lessons from 6 Years Building a Large-Scale SaaS"},{"content":"I\u0026rsquo;m Gaëtan Grond, co-founder and lead developer of Front Desk, a French SaaS for hospitality professionals. I live in Bordeaux.\nBackground I spent seven years in hospitality before writing my first line of code: barman, then receptionist and senior receptionist at Accor, in Paris and in the UK.\nIn 2019 I went back to studying alongside work, and graduated from OpenClassrooms in 2021 (application developer, Python track). Front Desk comes out of that double background: I know the problem from behind the reception desk, not from a market study.\nSince then I have also worked on Python/Django projects at CGI (for Airbus and Veolia), and I am currently a backend Python/Django engineer at Fieldbox, alongside Front Desk.\nFront Desk Front Desk centralises communication and coordination for hotel teams: logbook, maintenance tickets, documents, inventory, multi-property management. Launched in 2021, it is used by hundreds of properties, including groups such as Accor, Hilton and Best Western — and, over time, by gyms, campsites and local councils facing the same information-sharing problems.\nI handle everything technical: architecture, backend, frontend, mobile apps, AWS infrastructure, security (audits and penetration testing) and the product roadmap. My co-founder handles growth and customer relationships.\nWhat I\u0026rsquo;m working on A full rewrite of the platform. After seven years of Django, I\u0026rsquo;m migrating everything to Rust (Axum) on the backend and Svelte/TypeScript on the frontend, with the infrastructure rebuilt on AWS Paris. The mobile apps stay on Flutter.\nEarly results are clear: response times down sharply, and far fewer bugs in production.\nI wrote two detailed articles about it — they\u0026rsquo;re the ones I\u0026rsquo;m happiest with (both in French):\nMigrer un codebase Django de 7 ans vers Rust (1/2) Migrer Django vers Rust : les données, l\u0026rsquo;architecture et les agents (2/2) On the product side, Front Desk now exposes a public API and an MCP server, so the platform can be connected to assistants like Claude.\nWhat I write about Backend development (Rust, Python, Django), application security, and field notes from building a SaaS. A few articles people keep coming back to:\nWhy I Chose HTMX Over React and VueJS — with a 2026 update on why I changed my mind. Django Best Practices: Lessons from 6 Years Building a Large-Scale SaaS Three Years of AI Assisted Programming I also keep a list of books I recommend, updated since 2023.\nMy stack Backend — Rust (Axum), Python, Django, Django REST Framework, FastAPI Frontend — Svelte, TypeScript, HTMX Mobile — Flutter (iOS and Android) Infra — AWS, PostgreSQL, Redis, Celery, observability and monitoring\nAvailability I\u0026rsquo;m not available for a new position or freelance work.\nGet in touch Job offer, partnership, a question about entrepreneurship, just want to say hi, or spotted a typo: email me at gaetangrond.me.aroma530@passfwd.com.\nI don\u0026rsquo;t use social media, apart from LinkedIn. My code is on GitHub, and articles are available via RSS.\n","permalink":"https://gaetangrond.me/en/about/","summary":"\u003cp\u003eI\u0026rsquo;m \u003cstrong\u003eGaëtan Grond\u003c/strong\u003e, co-founder and lead developer of \u003ca href=\"https://www.front-desk.fr/\"\u003eFront Desk\u003c/a\u003e, a French SaaS for hospitality professionals. I live in Bordeaux.\u003c/p\u003e\n\u003ch2 id=\"background\"\u003eBackground\u003c/h2\u003e\n\u003cp\u003eI spent \u003cstrong\u003eseven years in hospitality\u003c/strong\u003e before writing my first line of code: barman, then receptionist and senior receptionist at Accor, in Paris and in the UK.\u003c/p\u003e\n\u003cp\u003eIn 2019 I went back to studying alongside work, and graduated from OpenClassrooms in 2021 (application developer, Python track). Front Desk comes out of that double background: I know the problem from behind the reception desk, not from a market study.\u003c/p\u003e","title":"About"},{"content":"For the past two years, I have been self-hosting most of my personal projects and daily tools on a small but powerful ThinkCentre M710 Tiny. Here’s my two-year feedback.\nWhy Did I Start Self-Hosting? I could spend hours justifying my decision by arguing that we rely too much on big corporations that take our data for free. But, simply put, I wanted more control over my digital life, the ability to run only the services I truly need, and to avoid spending my entire budget on server costs.\nSelf-hosting is also a great way to gain hands-on experience. Working with any Linux-based system, deploying and managing services, monitoring, and maintaining them is incredibly valuable. Not only does it help with personal projects, but it\u0026rsquo;s also a great skill to have overall.\nThe Hardware Setup I could have bought a Raspberry Pi and called it a day. While I owned one before and appreciated it for what it is, it simply isn’t suitable for self-hosting due to its hardware limitations.\nDuring my research, I repeatedly came across a specific type of PC—tiny/mini PCs. These machines are widely used in businesses due to their longevity, low power consumption, and compact size. One key requirement for this type of computer is the ability to run 24/7, as they often handle critical business operations such as invoicing and order management.\nThe most recommended option, and the one I chose, was the Lenovo ThinkCentre M710 Tiny.\nCost Breakdown Here’s what I purchased for my home server setup:\nSecond-hand Lenovo ThinkCentre M710 Tiny (Intel i5-7400T, 8GB RAM, 256GB SSD) – 155€ Seagate 4TB HDD – 104€ UGreen 3.5\u0026rsquo;\u0026rsquo; Enclosure for HDD – 34€ Extra 8GB RAM (repurposed from an old PC) – 0€ Price wasn’t the ultimate deciding factor, but running a server with multiple services can quickly become expensive. However, for less than 300€, I now have a server with 4TB+ of storage, 16GB of RAM, and an Intel Quad-Core i5.\nPower Consumption The server averages 7 watts, so even at peak usage (10W), it costs around 19€ per year in electricity here in France—not bad at all!\nComparing with a VPS Let’s compare this with the cost of a similar setup using a popular VPS provider like DigitalOcean.\nThe closest VPS to my configuration would cost $1152 per year (not even including storage\u0026hellip;). In comparison, my M710 Tiny costs a one-time 300€ plus 20€ per year, with only occasional HDD replacements. The cost savings are significant.\nThe Software Setup What Can You Do with a Home Server? Absolutely anything—and more! Since I now have a dedicated and powerful machine, my first step was to install CasaOS, an open-source personal cloud system built around the Docker ecosystem.\nCasaOS CasaOS serves as your personal cloud OS, handling most of the tedious self-hosting tasks for you. It helps manage storage, install ready-to-use apps, browse and share files across your network—all while remaining lightweight and unobtrusive.\nCasaOS is built around Docker, meaning every app you install is essentially a Docker container with preconfigured settings. I use it extensively. Let’s take a look.\nApps I Use and Why PostgreSQL – Used for my Docker applications and testing projects. It’s great to have a database server ready to spin up a DB in seconds. Plex – My personal Netflix. I host all my (very legal) shows and movies and share them with friends and family. Joplin – A note-taking app I use on my phone and computer. More of a thought dump than an organized system, but it works. Vaultwarden – A self-hosted password manager, serving as a backup for my most important passwords. Nginx Proxy Manager – A UI tool built around Nginx that simplifies working with a reverse proxy. Calibre – My personal library of DRM-free eBooks, ensuring I always have access to my books if Amazon ever goes rogue. Syncthing – A powerful file synchronization tool I use to sync my desktop with my server. Portainer – A Docker management UI for when I want more control than CasaOS offers. Ghost – The very blog you’re reading right now. Simple and fast enough for my needs. Nextcloud – A free Dropbox alternative. Not the fastest, but I use it daily, and it has a mobile app. Umami – A self-hosted analytics platform for personal and professional projects. Grafana – A monitoring and visualization tool to track my databases, servers, etc. These are just a few of the apps I use. Having my own server means I can easily spin up containers, experiment with new ideas, and launch small projects at little to no cost.\nLessons Learned \u0026amp; Future Plans Lessons Learned After two years of self-hosting, here are some key takeaways:\nRegular backups are crucial: I follow the basic concept of the 3-2-1 backup strategy using tools like RSync and RClone. Once it is set up, you don’t have to think about it anymore. Security first: SSL certificates, two-factor authentication for all public web services, Cloudflare for DDoS mitigation and extra security, and using separate networks for different purposes. It will go down: It is inevitable. That’s why I host only non-critical services. Whether it\u0026rsquo;s your internet provider, a power outage, or a misconfiguration, as long as everything is automated, it should return to normal within a few minutes. Keep it fun: Let’s be realistic—I could host fewer services for more convenience using a VPS provider, but where’s the fun in that? Need more RAM? Just open up the server and add more. Need extra storage? Spend 100€, and you\u0026rsquo;re set! Future Plans Adding a NAS to have a dedicated server just for cloud storage and backup. Experimenting with Coolify, an open-source \u0026amp; self-hostable alternative to Heroku, Netlify, and Vercel. In two years, the server has almost never gone down. The first few weeks are usually the most time-consuming since you’re still learning about your machine’s capabilities, what you can install, and how everything integrates. I made mistakes that broke most of my services for a few days, but that was part of the learning process. Now, after 10 months of stability, it\u0026rsquo;s just a server that runs in the background—I hardly even think about it anymore.\n","permalink":"https://gaetangrond.me/posts/dev/my-self-hosting-journey/","summary":"\u003cp\u003eFor the past two years, I have been self-hosting most of my personal projects and daily tools on a small but powerful ThinkCentre M710 Tiny. Here’s my two-year feedback.\u003c/p\u003e\n\u003ch2 id=\"why-did-i-start-self-hosting\"\u003eWhy Did I Start Self-Hosting?\u003c/h2\u003e\n\u003cp\u003eI could spend hours justifying my decision by arguing that we rely too much on big corporations that take our data for free. But, simply put, I wanted more control over my digital life, the ability to run only the services I truly need, and to avoid spending my entire budget on server costs.\u003c/p\u003e","title":"My Self Hosting Journey"},{"content":"Flutter Has a Package Problem It\u0026rsquo;s true that abandoned projects in open source software (OSS) are common. NPM is infamous for the number of abandoned packages, which is mainly due to the lack of internal utility libraries, where for instance Python internal libraries shine. However, maintaining a Flutter package is more challenging since you need to account for at least two platforms for mobile (iOS/Android), and increasingly, web and desktop applications if you are brave enough.\nEach platform has different requirements. Android frequently updates its SDK and how Gradle handles configurations, which has caused many open source packages to become incompatible, creating headaches for Flutter developers.\nFlutter itself bears some responsibility. While it\u0026rsquo;s understandable for a newer framework, the number of debugging issues and deprecated features that arise with every update is discouraging, particularly for open source maintainers. The hours I spent manually updating my projects are staggering.\nAs the most recent example of this trend, four days ago, the Flutter core team announced the discontinuation of six popular packages. Among these, two were heavily used in my project: flutter_markdown and flutter_adaptive_scaffold.\nBut that\u0026rsquo;s not the only issue. Recently, the package I used for my main form editor is no longer maintained, the package for displaying badge icons on iOS is discontinued, and the utilities for image and file picking are incompatible and haven\u0026rsquo;t been updated in 15 months.\nMost frustratingly, flutter_adaptive_scaffold was actually recommended by the Flutter team as the solution for creating adaptive designs. Now it\u0026rsquo;s being abandoned, leaving developers who followed their guidance in a difficult position.\nFlutter\u0026rsquo;s Dependency on Third-Party Packages Flutter is cross-platform and platform-agnostic, meaning developers shouldn\u0026rsquo;t need to write Java or Kotlin code. This is attractive since many of us use Flutter for this exact purpose: a single language for all major platforms. However, it comes at the cost of heavy reliance on third-party packages.\nNearly all advanced features such as notifications, advanced editors, camera and media functionality, and local storage rely heavily on third-party packages – packages that are, for some of them, slowly being deprecated.\nAs a Django developer (Django mentioned 🐍) I rely on third-party packages and while a lot of them are fairly complicated to develop myself, I can understand most of the code and fix it myself, if one utility package is no longer updated I can create my own in a small amount of time, this is sadly not possible with Flutter since I would need to create specific code for iOS and Android.\nWhat can we do ? If one of the packages you are using is not updated anymore you can, if the changes are minor, patch it yourself, let\u0026rsquo;s see how :\nFork the project Upgrade to the latest major requirements with flutter upgrade \u0026amp;\u0026amp; flutter pub upgrade --major-versions Migrate to the latest Android SDK and XCode requirements, you can import the project in Android Studio and Xcode for easier patching Remove the package from your pubspec.yaml and change it as follows dependencies: your_package: git: url: https://github.com/your_username/your_package.git ref: main # branch What\u0026rsquo;s Next for Flutter? This is somewhat a rant article: I remain undecided about Flutter and its direction. The web platform is still far from being production-ready, too many packages are being deprecated, UI jank and various issues persist, and the lack of stability between updates is concerning.\nI still appreciate Flutter for what it is: an accessible, near-native performance cross-platform framework. However, the developer experience has been challenging. Let\u0026rsquo;s see what 2025 brings for Flutter.\n","permalink":"https://gaetangrond.me/posts/flutter/flutter-the-dying-package-ecosystem/","summary":"\u003ch2 id=\"flutter-has-a-package-problem\"\u003eFlutter Has a Package Problem\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/flutter/flutter/issues/162960?ref=blog.gaetangrond.me\"\u003e\u003cimg loading=\"lazy\" src=\"https://blog.gaetangrond.me/content/images/2025/02/image-3.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s true that abandoned projects in open source software (OSS) are common. NPM is infamous for the number of abandoned packages, which is mainly due to the lack of internal utility libraries, where for instance Python internal libraries shine. However, maintaining a Flutter package is more challenging since you need to account for at least two platforms for mobile (iOS/Android), and increasingly, web and desktop applications if you are brave enough.\u003c/p\u003e","title":"Flutter the Dying Package Ecosystem"},{"content":"It has been almost 4 years since I launched my SaaS business in Django, while fancier Python frameworks have been released since then, Django still remains king of the Python web framework. Thanks to an ever-growing ecosystem of packages and their outstanding stability.\nOnly the most useful and stable packages have made the cut, links to the official package source are included in the title itself.\nDatabase Management django-extensions A great tool to interact with the database. I mainly use it for the shell_plus which imports all models automatically and has nice perks on top of the regular shell provided by Django. There are many more utilities to discover yourself.\ndjango-model-utils I use it primarily for the mixins and model extensions. One example is the TimeStampedModel which automatically adds modified and created fields to your model and it just works. Again, there\u0026rsquo;s a lot more to explore.\ndjango-cachalot Caching is an important topic in web applications, especially when you hit a certain level of maturity and your database requests are already optimized to the fullest. Django cachalot caches your ORM queries and automatically invalidates them. You only need to provide your caching backend - I personally use a managed database on DigitalOcean, but this can get very pricey, so make sure to profile your app before going the caching way.\ndjango-filter Chances are your users are going to need to filter your data to their specific needs, this is usually done using URL parameters. It\u0026rsquo;s such a common feature yet a pain to implement. Django Filter works with both API and Class/Function based views. I\u0026rsquo;m using it for both and in my opinion should have been added to Django itself.\nSecurity \u0026amp; Authentication django-allauth (MFA) Django allauth has come a long way. It\u0026rsquo;s still the recommended package for registration, account management and authentication but it now integrates even more features such as MFA, security keys, magic links and even headless support for single-page and mobile applications. Unless you have specific needs, just don\u0026rsquo;t reinvent the wheel and use Django allauth for your auth needs.\ndjango-hijack What happens when a client tells you something\u0026rsquo;s not working but you have no way to assist? Here comes Django Hijack - it allows you to impersonate users without sharing their password. It has saved me countless hours of debugging.\nBackground Tasks \u0026amp; Asynchronous Processing django-celery-beat Wouldn\u0026rsquo;t it be cool to manage CRON tasks from your Django Admin interface? Well, it does that but using Celery queue. I use it for cleaning up old data, running server routines and much more, all from the django admin interface. Since I use an isolated worker and Redis, it saves precious resources and database hits.\nStorage \u0026amp; File Management django-cleanup Did you know that media files aren\u0026rsquo;t automatically deleted when a model is updated or removed? I didn\u0026rsquo;t, but trust me, you\u0026rsquo;ll know when your storage reaches its limit with thousands of unused images. Django cleanup automatically deletes files for FileField, ImageField and subclasses when a model is saved or deleted.\nFrontend \u0026amp; User Interface Enhancements django-crispy-forms Because there\u0026rsquo;s still a lot of people working with forms in Django and SPA isn\u0026rsquo;t the only option. But let\u0026rsquo;s be real - unless you\u0026rsquo;re doing some CSS magic, your forms most likely look horrible. Crispy forms makes sure you\u0026rsquo;re not embarrassing yourself in front of users.\ncrispy-bootstrap5 A template pack for those who aren\u0026rsquo;t stuck in 2016 and want to make their forms look nicer with Bootstrap 5.\ndjango-htmx By now you should know that I love HTMX. Django is one of the main contributors to HTMX\u0026rsquo;s success, fully embraced by the community. This package provides tools to make HTMX easier to use - one example is checking whether a request is an instance of HtmxDetails.\nAPI Development djangorestframework Is FastAPI the new boss of APIs? I\u0026rsquo;ve used FastAPI both personally and with clients (Airbus, Veolia) and while I really like its simplicity and Pydantic models, it\u0026rsquo;s still just so cumbersome to use. Following Django\u0026rsquo;s \u0026ldquo;batteries included\u0026rdquo; philosophy, DRF is still to my knowledge the most mature and feature-full API framework. It has a learning curve, but if you already know Django well and class-based views, DRF is a breeze to use.\nPS: Django Ninja is getting some traction - I\u0026rsquo;ll probably write an article about it soon.\ndj-rest-auth While Django allauth now provides some API endpoints to handle authentication, dj-rest-auth provides authentication endpoints for Django Rest Framework out of the box. Not only does it have login and logout, but the whole forgot password flow too.\nDevelopment \u0026amp; Debugging django-debug-toolbar Are you even a Django developer if you\u0026rsquo;re not using Django Debug Toolbar? Did you know that DDT also works with DRF when using the API UI?\nDid you know that your bottleneck in your web app is most likely an N+1 query because you haven\u0026rsquo;t used select_related? Well, now with Django Debug Toolbar you know.\ndjango-browser-reload Adam Johnson is a Django framework contributor and author of several books that I can\u0026rsquo;t recommend enough, with one focusing on Developer Experience (DX). Naturally, Adam developed a package to automatically reload your browser when a change is detected in your Django project. Star it, use it, and thank Adam for all those precious weeks you saved from CTRL + R-ing your browser the last 5 years.\nThis list of packages has been used extensively in a production web app that is used by major hotel companies.\n2025 will be all about in-depth content on tech, Django, cybersecurity, and more. Sign up to stay updated—your support is truly appreciated!\n","permalink":"https://gaetangrond.me/posts/django/django-packages-i-have-used-and-loved-in-2024/","summary":"\u003cp\u003eIt has been almost 4 years since I launched my SaaS business in Django, while fancier Python frameworks have been released since then, Django still remains king of the Python web framework. Thanks to an ever-growing ecosystem of packages and their outstanding stability.\u003c/p\u003e\n\u003cp\u003eOnly the most useful and stable packages have made the cut, links to the official package source are included in the title itself.\u003c/p\u003e","title":"Django Packages I Have Used and Loved in 2024"},{"content":"In 2021, I was one of the many beta testers of GitHub Copilot. Back then, AI programming tools weren’t widely used, Stack Overflow was still a go-to resource, and solving coding challenges relied mostly on pure brainpower. Fast forward to 2024, and programming has evolved into something entirely different. Let’s talk about it.\nThe Good When I started using GitHub Copilot in 2021, something changed immediately. Within weeks, most of the code snippets I needed were being generated by Copilot. Not only did it save me a massive amount of time, but the quality of the code was often better than what I would have written on my own.\nBefore GitHub Copilot, getting stuck on a problem typically went like this:\nSpend an hour trying to solve it yourself. Read the documentation and online forums. Post a question on Stack Overflow and hope it doesn’t get closed. Test the answers (and repeat if they didn’t work). With AI, the solution was available in seconds and already implemented in your code. It quickly builds confidence with me, you feel ready to tackle projects knowing your “Copilot” is ready to assist no matter the complexity and the language.\nAI, when used correctly, also acts as a fantastic mentor. GitHub Copilot and ChatGPT can explain code line by line, share why their approach is better, and provide additional context you might never have considered. It’s like having Wikipedia and Google combined but specifically for programming. I’ve learned countless new concepts this way, which I later researched further and applied to my own projects.\nFurthermore, a lot of AI tools are free and open source which removes the socio-economic barrier to learning programming, like the internet did for information. This democratization of programming is a huge win that can help anyone, regardless of their background, learn to code.\nLearning Flutter with AI A few years ago, I began learning Flutter for my startup. My goal wasn’t just to learn but to launch a mobile app that my customers could use, which would boost sales. At the time, I knew almost nothing about Flutter, so I followed my usual approach: take a Udemy course, watch YouTube tutorials, and start building.\nFlutter, with its widget-based system, is very verbose. While I understood programming paradigms and knew what I wanted to do in Python, translating those ideas into Dart (Flutter’s programming language) was challenging. Thankfully, GitHub Copilot introduced its chat feature around this time.\nThis feature was like a “rubber ducky” on steroids. For those unfamiliar, the “rubber duck debugging” method involves explaining your code line by line to a rubber duck (or any inanimate object) to help you solve problems. With Copilot’s chat, I would clearly explain what I wanted to achieve, and 90% of the time, the AI would give me the correct answer.\nThis was refreshing. The ability to start learning and building on a new platform (in this case, mobile development) with minimal prior knowledge was exciting. For a solo developer trying to launch a business, AI tools felt like the ultimate enabler. Like Google and Wikipedia before them, AI programming tools empower anyone with curiosity and determination to learn and build just about anything.\nThe Reality of Modern Programming Programming professionally for five years has taught me that much of the code we write follows similar structures and solves the same kinds of problems. How many of us have written functions to handle dates, parse JSON, validate user input, or manage file uploads? This kind of repetitive work is rarely exciting.\nThat’s why I use every linter, formatter, and pre-commit hook available—because formatting code should be automated. Human developers should focus on designing the code, not formatting it. In this way, AI tools like GitHub Copilot feel like an extension of these utilities, solving repetitive coding challenges not because they’re exceptionally smart, but because most software shares a lot of structural similarities.\nOf course, these smaller scripts live within a more unique and robust codebase. AI tools, like code quality and linting utilities, save time and mental energy, allowing us to focus more on architecture and design instead of boilerplate programming.\nIn a sense, using frameworks like Django or Laravel already delegates significant responsibility to a third party. For over 20 years, most websites have shared common features: accounts, forms, databases, and so on. While frameworks handle much of this for us, we still feel ownership because we’re actively coding within the framework’s structure.\nThe Bad Last week, I caught up with one of my earliest programming friends. Back in 2018, we built a Django web project together, a kind of social network for hotel professionals. At the time, AI programming tools didn’t exist in the developer community. I remember spending half a day debugging a single issue. It was frustrating and time-consuming, but when it finally worked, the satisfaction was immense. That dopamine rush of overcoming a tough problem was something I have not felt so much lately.\nIf you rely heavily on AI, becoming more of a “prompt engineer” than a software engineer, that sense of accomplishment happens far less often. What did you really achieve if all you did was write the right prompt? Sure, you’re building faster, and the results may even be better, but is it as fun or rewarding? Aren\u0026rsquo;t you becoming the puppet of the AI, rather than the master of your craft?\nThere’s also the issue of AI hallucinations. AI often produces code with total confidence, but when it’s wrong, it can cost you significant time to debug. While I don’t expect programming—or AI—to ever be perfect, the lack of transparency in how AI generates its answers can be problematic. It doesn’t ask your permission; it just autocompletes everything, leaving you to figure out what’s correct and what’s not.\nAI tools also don’t create anything original, they’re trained on public codebases and the internet. If a bad coding pattern is widely used, chances are the AI will suggest it too. Without proper foundational knowledge, you might implement solutions you don’t fully understand. Over time, this dependency on AI can erode critical thinking skills, leaving developers at a disadvantage when the AI fails.\nLastly, while AI can be a helpful teacher, it’s up to you to actively engage with the explanations and take the time to reflect on the answers. This works well for personal projects or when you want to deepen your knowledge. But in a work environment, under tight deadlines, where your boss demands ten new features a week, the temptation to let AI handle everything can be overwhelming.\nThe shrinking attention span of many developers is another concern. When you solve problems manually—or with the occasional help of AI or colleagues—you’re more likely to remember the solution the next time. But if you rely entirely on AI prompts, will you retain that knowledge?\nWhat’s Next? On YouTube, LinkedIn, and TikTok, a lot of so-called AI “influencers” like to claim that programming is dead. They boast about AI building SaaS products in hours and question the need for human programmers.\nThe truth is, programming isn’t just about writing code—it’s much more than that. Most of our time is spent brainstorming ideas, creating design patterns, and connecting all the moving parts. This includes client feedback, server infrastructure, integrating front-end and back-end systems, and much more. AI can assist with some of these tasks, but it’s far from replacing the human touch needed to make it all work together.\nThat said, I do believe AI is fundamentally changing how programmers work. Over time, I expect scripting tasks to become almost entirely automated. Like “script kiddies” in hacking, those who rely solely on AI without deeper understanding won’t last long, AI can already do those tasks faster and cheaper. And while it’s possible to build a product with minimal knowledge using AI, how will it help you navigate the myriad of other responsibilities a software engineer handles daily?\nFinally, AI seems to have hit a plateau in programming capabilities. While improvements continue, the mythical AI tool that can entirely replace programmers has yet to materialize, unless, of course, someone’s trying to sell you a training course.\nPersonally, I think AI can be an excellent teacher, granted an intrusive one that sometimes takes the fun out of the learning process. It’s a mixed bag of pros and cons. While it has made me a better programmer, I can’t help but wonder: For how long?\n","permalink":"https://gaetangrond.me/posts/dev/three-years-of-ai-assisted-programming-the-good-the-bad-and-whats-next/","summary":"\u003cp\u003eIn 2021, I was one of the many beta testers of GitHub Copilot. Back then, AI programming tools weren’t widely used, Stack Overflow was still a go-to resource, and solving coding challenges relied mostly on pure brainpower. Fast forward to 2024, and programming has evolved into something entirely different. Let’s talk about it.\u003c/p\u003e","title":"Three Years of AI Assisted Programming : The Good, The Bad, and What's Next"},{"content":"After working with Django for more than 4 years both professionally and personally, I have learned a lot of tips and tricks that I wish I knew when I started. In this article I will share some of the most important ones that I have learned over the years.\nSince Django documentation is very good, I will not share many code snippets, but rather explain the concepts and provide links to the official documentation. All of these tips and tricks came from my own experience, the Django documentation, and Two Scoops of Django book.\nAutomate with Management Commands If you use python manage.py runserver or python manage.py migrate, you’re already working with Django’s management commands! They’re a fantastic way to automate routine tasks, making them ideal for various actions, like sending emails, updating databases, or running scripts. Creating custom management commands lets you add commands tailored to your project’s unique needs.\nSome common custom management commands I use include:\nCleaning up old database entries that are no longer needed Sending automated reminders or daily reports Generating and sending monthly performance reports to the marketing team Custom commands can be scheduled with UNIX cron jobs or Windows Task Scheduler to run at specific times. For even more complex requirements, consider using Celery to manage periodic tasks asynchronously, allowing for retries and advanced scheduling options.\n➡️ Writing custom django-admin commands\nOrganize URLs by App Namespaces For large projects with multiple apps, organizing URLs by namespaces keeps things clean and reduces the risk of route conflicts. In Django, namespaces group related URLs, making it easier to navigate and reference them across templates and views.\nFor example, if you have blog and shop apps, adding an app_name in each app’s urls.py file lets you refer to each URL unambiguously:\n# blog/urls.py app_name = \u0026#39;blog\u0026#39; urlpatterns = [ path(\u0026#39;post/\u0026lt;int:pk\u0026gt;/\u0026#39;, views.post_detail, name=\u0026#39;post_detail\u0026#39;), ] # shop/urls.py app_name = \u0026#39;shop\u0026#39; urlpatterns = [ path(\u0026#39;product/\u0026lt;int:pk\u0026gt;/\u0026#39;, views.product_detail, name=\u0026#39;product_detail\u0026#39;), ] Using these namespaces in templates becomes straightforward and clear, avoiding conflicts with similarly named routes:\n\u0026lt;a href=\u0026#34;{% url \u0026#39;blog:post_detail\u0026#39; pk=post.pk %}\u0026#34;\u0026gt;Read more\u0026lt;/a\u0026gt; This structure not only improves readability but also allows you to reuse route names across different apps, making it easier to manage your growing codebase.\n➡️ URL namespaces and included URLconfs\nCookiecutter for Clean Scaffolding When I first started learning Django, I was overwhelmed by the amount of boilerplate code that I had to write for every new project and to be frank a lot of Django projects share the same structure, with Cookiecutter, you can generate a fully structured project template, complete with best practices and optimized settings, in seconds.\nThe Django Cookiecutter template, maintained by the Two Scoops of Django authors, is particularly helpful, as it includes everything you need for a modern Django project: optimized settings for security, testing, and deployment.\nBeginners can use it to learn best practices, while advanced users can customize it with tools like Celery for task management, Docker for containerization, and other services.\nExploring the generated code is also a valuable learning experience, as it includes documentation references to explain each choice, providing further insight into Django’s architecture.\n➡️ Django Cookiecutter\nKeep the Frontend Lean with Vanilla HTML, Template Tags, and HTMX Many developers lean toward single-page applications (SPAs) for dynamic interactivity, but Django’s templating engine is powerful enough to keep the frontend lean and efficient. Django’s templates, combined with template tags and filters, allow for extensive customization and interact seamlessly with Django’s routing system.\nWhen you need just a bit of interactivity, HTMX can add dynamic, SPA-like features to your HTML without requiring a heavy JavaScript framework. HTMX lets you load content or submit forms asynchronously with ease, so you get smooth, modern functionality without compromising simplicity or loading times.\nI go into more detail about the benefits of HTMX in comparison with frameworks like React and Vue here.\nSet Up Sentry for Free Error Tracking Logging goes beyond just tracking errors—it provides insight into how users interact with your application and helps identify performance bottlenecks. For production environments, I recommend using Sentry, which tracks errors with detailed stack traces, request data, and user insights, helping you troubleshoot more effectively.\nSetting up Sentry is easy. After configuring it, Sentry will notify you via email whenever an error occurs and log the details in the Sentry dashboard. Here’s a basic setup:\nimport sentry_sdk sentry_sdk.init( dsn=\u0026#34;https://**************.ingest.de.sentry.io/*****\u0026#34;, traces_sample_rate=1.0, profiles_sample_rate=1.0, ) While the free plan is limited, it\u0026rsquo;s more than enough to understand the requests that are failing in a nice format and get notified when something goes wrong.\nI have been using Sentry for 5 years and most of the time the free plan was enough for my needs, if you need advanced features like performance monitoring or release tracking, there are paid plans with more options.\n➡️ Sentry for Django\nThink Twice with Class-Based Views When I was introduced to class based views, I was amazed by the amount of code that I could save by using them, it was shorter, cleaner and more readable. However, as I started to work on more complex projects, I realized that class-based views can be a double-edged sword, This is a really hot topic in the Django community.\nClass-based views (CBVs) are great for reducing code duplication and making CRUD operations more readable. However, for unique or highly customized behavior, CBVs can become unwieldy, especially when you’re dealing with deeply nested inheritance or unexpected “magic” behavior.\nFor simpler projects, CBVs can improve development, especially for lists, detail views, or forms. However, for more complex use cases, consider using function-based views (FBVs) instead. FBVs allow for more straightforward logic without the overhead of inheritance, and they can often be easier to debug.\nIn practice:\nUse CBVs when you need to follow a reusable, standardized pattern (CRUD). Use FBVs for views requiring specific, tailored functionality. ➡️ Django Class-based views\nUse Django Caching for a Performance Boost Django’s built-in caching can reduce load times by serving content directly from cache rather than querying the database each time.\nCaching should be done after you have optimized your database queries and views, however you can still benefit from caching even if you have a small website, one package that I really like using is django-cachalot.\nDjango Cachalot caches Django ORM queries, so repeated queries for the same data are served from the cache instead of the database. It supports automatic invalidation—when data is updated in the database, the relevant cache entries are also updated, so you don’t have to worry about stale data.\nFor this to work you will need to install a cache backend such as Redis, with Digital Ocean you can have a decent Redis instance for $15 a month which is more than enough for most websites.\n➡️ Django Cachalot | Django’s cache framework\nUse Django Shell Plus for Quick Debugging and Testing What if I told you there’s a better way to interact with your database than using the Django admin panel or scattering print statements in your views?\nDjango comes with a built-in shell that lets you interact with your project directly from the command line. You can use it to test models, run queries, or debug code without having to start the server or print debug messages in views.\nHowever, the default Django shell has its limitations, and this is where Django Shell Plus comes in.\nThe django-extensions package includes a variety of tools for Django development, and one of the most powerful is shell_plus. Shell Plus is an enhanced version of Django’s default shell command, automatically loading all your project’s models and settings. It even supports IPython and Jupyter Notebooks, giving you a richer interactive experience.\nFor developers who regularly work with Django’s ORM and want a more efficient way to interact with the database, shell_plus is a game-changer.\n➡️ Django Shell | Django Extensions\n","permalink":"https://gaetangrond.me/posts/django/8-django-tips-and-tricks-learned-over-the-years/","summary":"\u003cp\u003eAfter working with Django for more than 4 years both professionally and personally, I have learned a lot of tips and tricks that I wish I knew when I started. In this article I will share some of the most important ones that I have learned over the years.\u003c/p\u003e\n\u003cp\u003eSince Django documentation is very good, I will not share many code snippets, but rather explain the concepts and provide links to the official documentation.\nAll of these tips and tricks came from my own experience, the Django documentation, and Two Scoops of Django book.\u003c/p\u003e","title":"8 Django Tips and Tricks Learned Over the Years"},{"content":"Web Security is a significant concern for me. Over the past few years, I’ve been learning about ethical hacking and the broader field of web and server security and one topic that has always intrigued me is session hijacking.\nWhile many security threats, such as weak passwords, SQL injections, and cross-site scripting (XSS), have been mitigated and are relatively easy to fix, session hijacking remains a persistent threat. Its ease of exploitation and potential damage make it a serious risk to web applications.\nIn this article, I’ll explain what session hijacking is, how it works, and how you can protect your web applications from this threat.\nWhat is a Session? To understand session hijacking, we first need to define what a session is. A session is a period where a user interacts with a web application. During this time, the user is authenticated and authorized to access certain resources. The session state is maintained by a session ID, a unique identifier generated by the server and sent to the client, usually stored in a cookie.\nFor example, in a Django application, the session ID is stored in a cookie named sessionid and looks like this: 1a2b3c4d5e6f7g8h9i0j. When the user sends a request, the session ID is included in the request headers, and the server uses this ID to identify the user and retrieve their session data. In Django, this can be done with the request.user object, which returns the currently authenticated user.\nWithout a session ID, the server wouldn’t be able to track the user across requests, requiring the user to log in again for every action.\nWhat is Session Hijacking? Now that we know what a session is, let’s define session hijacking. It is the act of taking over a user’s session by stealing their session ID. This can be achieved in several ways:\nPacket Sniffing: An attacker intercepts network traffic and captures the session ID if the connection is unencrypted. Cross-Site Scripting (XSS): An attacker injects malicious code into a web page that steals the session ID from the user’s browser, often using JavaScript to send the ID to the attacker’s server. Session Prediction: The attacker guesses the session ID by generating many possible IDs and trying them until they find the correct one. These are just a few examples of how session IDs can be stolen. More sophisticated attacks exist, but the goal is always the same: take control of the user’s session and impersonate them without their knowledge.\nWhy is Session Hijacking a Big Deal? Session hijacking is particularly dangerous because it’s relatively easy to execute and can have severe consequences, session hijacking doesn’t require complex brute-force attacks or sophisticated social engineering skills. Even with strong passwords and multi-factor authentication (MFA), an attacker can still take over a session and impersonate the user with minimal effort.\nThe problem is more prevalent than you might think. In 2022, SpyCloud reported over 20 billion records exposed in data breaches. While brute force attempts to guess a password would require bypassing rate-limiting, MFA, and other security measures, session hijacking sidesteps this, as the attacker is already authenticated.\nTest It Yourself To demonstrate how easy it is to hijack a session, try the following:\nGo to a website where you’re logged in. Open your browser’s developer tools and navigate to the \u0026ldquo;Application\u0026rdquo; tab. Locate the cookie containing the session ID and copy it. Open an incognito window and visit the same website. Paste the session ID into the cookie storage and refresh the page. You’ll now be logged in as the user whose session ID you copied, showing how simple it is to hijack a session even with MFA enabled. In a real attack scenario, an attacker would use more sophisticated methods to steal session IDs, but the principle remains the same.\nSession Hijacking Renders Other Security Measures Useless In recent years, several security measures have been introduced to protect against various attacks, but session hijacking can bypass many of them:\nHTTPS (TLS/SSL Encryption) Purpose: Encrypts communication between the user’s browser and the server, preventing interception of sensitive information like session tokens. Limitations: While HTTPS protects data in transit, it can’t prevent session hijacking if the session token is stolen through other means such as XSS. Multi-Factor Authentication (MFA) Purpose: Adds an extra layer of security beyond passwords, making it harder for attackers to gain access to accounts. Limitations: MFA protects against unauthorized account access, but it can’t stop session hijacking once a session is established. SameSite Cookies Purpose: Prevents session cookies from being sent with cross-site requests, reducing the risk of CSRF and XSS attacks. Limitations: SameSite doesn’t stop an attacker who has already obtained the session cookie. Session Timeout and Inactivity Logout Purpose: Logs users out after a period of inactivity or at the end of a session, minimizing the window for hijacking. Limitations: If an attacker captures the session token before the timeout, they can still hijack the session. Content Security Policy (CSP) Purpose: Restricts inline scripts and mitigates XSS attacks. Limitations: CSP helps protect against script injection but won’t stop an attacker who has already stolen the session token. How to Protect Against Session Hijacking Although it’s difficult to completely prevent session hijacking, you can take steps as a developer to reduce the risk:\nUse HTTPS Everywhere: Ensure your entire application is served over HTTPS to encrypt communication and protect against packet sniffing. Implement Secure Cookies: Use the Secure and HttpOnly flags on session cookies to prevent them from being accessed by JavaScript or transmitted over insecure connections. Non-Predictable Session IDs: Use a cryptographically secure random number generator for session IDs, leveraging your framework’s session management tools. Implement Session Timeouts: Set reasonable session timeouts and log users out after inactivity or re-authenticate them periodically. Sanitize User Input: Prevent XSS attacks by validating and sanitizing user input—one of the most common ways attackers steal session IDs. Conclusion Session hijacking is a serious threat to web applications, especially since measures like strong passwords and MFA aren’t enough to protect against it. As a developer, following best practices and implementing the security features provided by modern frameworks can help mitigate the risk. As a user, understanding how session hijacking works will help you take steps to protect your sessions and data.\n","permalink":"https://gaetangrond.me/posts/security/why-session-hijacking-remains-a-persistent-web-threat/","summary":"\u003cp\u003eWeb Security is a significant concern for me. Over the past few years, I’ve been learning about ethical hacking and the broader field of web and server security and one topic that has always intrigued me is session hijacking.\u003c/p\u003e\n\u003cp\u003eWhile many security threats, such as weak passwords, SQL injections, and cross-site scripting (XSS), have been mitigated and are relatively easy to fix, session hijacking remains a persistent threat. Its ease of exploitation and potential damage make it a serious risk to web applications.\u003c/p\u003e","title":"Why Session Hijacking Remains a Persistent Web Threat"},{"content":"I have been travelling for twelve years, from the UK to Australia and across most of South East Asia.\nI mostly shoot landscape and street photography.\nAustralia 🇦🇺 Indonesia 🇮🇩 Thailand 🇹🇭 Cambodia 🇰🇭 Vietnam 🇻🇳 Spain 🇪🇸 Laos 🇱🇦 Greece 🇬🇷 France 🇫🇷 Malaysia 🇲🇾 United Kingdom 🇬🇧 Using my photos Feel free to use my photos for non-commercial purposes. Credit isn\u0026rsquo;t required, but I always appreciate hearing where they end up.\n","permalink":"https://gaetangrond.me/en/photos/","summary":"\u003cp\u003eI have been travelling for twelve years, from the UK to Australia and across most of South East Asia.\u003c/p\u003e\n\u003cp\u003eI mostly shoot landscape and street photography.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"australia-\"\u003eAustralia 🇦🇺\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\t\n\t\t\u003cscript src=\"/shortcode-gallery/jquery-3.7.1.min.js\"\u003e\u003c/script\u003e\n\t\n\n\t\n\t\t\u003cscript src=\"/shortcode-gallery/lazy/jquery.lazy.min.js\"\u003e\u003c/script\u003e\n\t\n\n\t\u003cscript src=\"/shortcode-gallery/swipebox/js/jquery.swipebox.min.js\"\u003e\u003c/script\u003e\n\t\u003clink rel=\"stylesheet\" href=\"/shortcode-gallery/swipebox/css/swipebox.min.css\"\u003e\n\n\t\u003cscript src=\"/shortcode-gallery/justified_gallery/jquery.justifiedGallery.min.js\"\u003e\u003c/script\u003e\n\t\u003clink rel=\"stylesheet\" href=\"/shortcode-gallery/justified_gallery/justifiedGallery.min.css\"/\u003e\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-0-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-0\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/exploring-australia_22515966004_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/11.0 1/250sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"325\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABEAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AL9vp9lcAlHfg4O6Jl/mKimtLGOaOLyriUydDHCWH4\u0026#43;n41qjwxBFHtbVZEAxguflP61kXebK4McGovME6NGSAf1rv\u0026#43;sVOkvwPGnCnFe9D8UQQxxvceVNoupQJnHnNbsV7\u0026#43;g\u0026#43;n506aHTUl8sxXY/2jauBnGcdKaupapG4K3Ux3dFLEk1Muuasx2i6yegVmwT/ACrP6zXX2kXCGGqbU2WfEv8AyEX\u0026#43;o/lWbb/65vpWl4l/5CL/AFH8qzbf/XN9K5qnwMuP\u0026#43;8r1GW/b/eNZ9/8Afi/66CtC37f7xrPv/vxf9dBWPU9Sl/DP/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/exploring-australia_22515966004_o_hu_b78a6ceb2ce981b7.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/edge-of-the-earth_32633295825_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/9.0 1/100sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"361\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABMAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APQrOa1lXPmJ/wB9Cq17e2cJI81PzFcPp1y7HJc4\u0026#43;tQ3N5hmwSxBrpVGXNa5d4WvY3tQ8UaZZSbJ5trEZACk8fgKx7jxvpHO2R2/4Aa4vVblpblzMBnopBrKkQg57HoaHJxZD5XsjvNMjWaYpIMrleM4qnqDMLuZAcKrkAVe0f8A4\u0026#43;T9VrP1H/j\u0026#43;n/3zWsfjYpfAcpcOzyFmOT61LgNCMjOBUEv3z9asD/U/hWEdbgz/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/edge-of-the-earth_32633295825_o_hu_31c58a69c9c99599.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/23437102036_f564b7f13f_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/8.0 1/400sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"224\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAAwAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AL1mniOe1SSW1nVHH8FwoYDj\u0026#43;Ftv\u0026#43;Sfapd11pjC5cz4Q5Mdzb5Un/fXIH51xEXi/WGjkaSZZWVQQXBIB3DnGcdOOlbC6xe3lpGZ5A\u0026#43;75sY4BpcrBTR6Bp3iGwvbUTxTIwAy4yAU9Qasy3kRiJQBVIzkk8/iK4OwhtlgDfZYSSMklck1dzGVA8iEADgbOlZtGqlpqf//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/23437102036_f564b7f13f_o_hu_7ca25cb775cdcd69.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/22927870103_72c37d38d8_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.0 1/60sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"474\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APXpNQsoolmku4Ejbo7SAA/jWZc\u0026#43;MNBtQudQik3E48v5unU8dhXAac2mFDFHZxMqjAV1zx\u0026#43;NY8dol34r1A2zLBHHGAPKHAwoyPzrijiuZtW2Or2Hmdfq/wATA11Ja6RZ\u0026#43;dGvIuGJAbHXAxXKf8JjqX/Pov61qTXEo09YpHDybMMwQLu9\u0026#43;KwNp/55muZ1ud3ZXI46Idd35tbYrC21m48wdcVoeHYYdN0\u0026#43;a7lBPnLtQN3yRyfzrjluiZf3hBjP6H3rWh1ZWtfs8jBkUkJsORj\u0026#43;nStXTtCyKjJGxqOtW8CggDB6isr\u0026#43;1If7361hapctICoz061nfah/ck/76op4eNjN1Xc//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/22927870103_72c37d38d8_o_hu_ac0eb6ba46a82800.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/22818798350_528bff21f4_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/10.0 1/100sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"343\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABIAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AK0LXbhGisllXA3Fcnk9P5f5xWl50UUYV7SLzj1UTgAdfUVY1jWT4dtYfJiZPJYJGFCnA2nD4/Tt0Fc1Jq2jXL/aZdOluZZBubaMfOWJJ69Mk8dKUcVUa0ZcsNBPVHaW2ix3lms7QGEEZwxBH1BHaq154WZQSq1raTo2n6lpsM0s8kh6sFYAKx5I6deat6nYqLH7NbXlwm3JGZDz\u0026#43;PWtY4/pJGLwWvus4zWoo59dtFmjWRdnRxkdTWjo1pbGVM28R4P8Aqhqv/Ifs/8Arn/U1q6L/rU/3TXl/ZPVe50GSihVJUegqvcMdp5PU1YbtVa4\u0026#43;6fqamWwQ3P/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/22818798350_528bff21f4_o_hu_1ecc5ab942b0030f.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/22517533723_77da65dfed_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/8.0 25sec  ISO 3200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"422\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABcAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APKlhp3kjHSrunpBduY5ZJUkxkLFAZPz5GKknitIoEj3SG4cblYA7WU9MDFZuolodKpNq5mmIGq8gC5ANSLK7ht2AAO3rUTjC/Mf/rVV9TOysXzNDayboXfcOjDKnFRpqDpLJIGZmcYy3NV5vvfgKiHeoUU1qaym09Dq/D3ijT9D064i/siC4vJ87p5hvBU4\u0026#43;Xb2HX8x6Vy12yPO7IuxSchc5C0fxfhTJvvmiMEpXRi9j//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/22517533723_77da65dfed_o_hu_fa1ab0d8b82f1379.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Australia/0.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/1.8 1/500sec  ISO 800\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"546\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAB0AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOm0rxHdfZJZTZrbvM/mHceMkZz\u0026#43;P1yMUj\u0026#43;KLyeBZPlhiJAE7Jw55PHP3QAOfespfDJNusV7q0cyxj5CrEPGD1I7c\u0026#43;hGK0jomnyWMUP2hxboqoiD5gOMfr/Wm7BqQXPiPU7K5QGY3CuyBNqkbmPGPTHII5AJ4rEn8aapoDz/AGiaK7mmJL\u0026#43;YzEKecBcYAA\u0026#43;nWtE2Nra69OouBKqvgRtnI4HHXpwDxiofEfh7TWWXUUuljTYG\u0026#43;cEqoI3cfn3NUrdSXe2hzwhurW9DTymdz8yHeMcdvyrpNI8Rs7JBc232YyLhTnGPTA79q4q2125kQIw3bRkbjnGKrTXUqX0d0WLPEAwz07EDFXy33I50tjqIdjXctzqUiwS7TlclXLKMHA756/Q1D4r1eYWNulq8RWeLY4bkFRxxnoCQT9MVzfiXVrqbVWZXKHIbg8dO3p1qNfMv7qPzpSQI4wAeR90U1HqxOXRH/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Australia/0_hu_f05400e6b895f5b8.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-0\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"indonesia-\"\u003eIndonesia 🇮🇩\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-1-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-1\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/indonesia.jpeg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/11.0 1/125sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"315\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABEAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APW1igHKopz6CqFzrGm2itJLLEqJnccZI/CvLp59FiV4573U5BE2Ns1xIQT74bFUp4bu8higs2sYrY/MAinH1Jx\u0026#43;uc13LCNvWVvkN1EldK56PP4u0ZyhZN8cg\u0026#43;SSP5vzHas4X\u0026#43;k6terbQQqGLYJkbGfwxXlt6ZNEug88By\u0026#43;drpJw34HpT7XxRLaTx3ljetb3EZCtvj3Kw9xg/nXesNGEfclqcbrc8rTjoWpv\u0026#43;P6b6n\u0026#43;VR2H/AB5wf7q/zFSTf8f031P8qjsP\u0026#43;POD/dX\u0026#43;YreW6COzIfFf3R/vj\u0026#43;VYcv8Aro/oP51ueK/uj/fH8qw5f9dH9B/OnEzluz//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/indonesia_hu_9fc8df118b0de7d8.jpeg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/indonesia_34796603215_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.0 1/4000sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"535\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAHQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AIfA/ijVRr0Nld3nnWk2Rvmbc0ZwcDd7kd/WvVfOtYpo7d5UWaUExxlgC2OuB3rgD4asNPhSVbJy7nA8oFmZsE/41pWkKx3OmM1rcySbmAM8jAxZ4IHPHBJ49BXXNaXuebQmpz5VGyO1aJCMiq0yru7CuRuI7prmQ213fPCWOz98wx7cnt0rD1Aagk\u0026#43;BPeY/66N/jW0MPfVSOKpmKjJxlTasdy5G\u0026#43;1GMjzD/AOgNXHeKPEms2viG40zRpI0SDTnupnMRdkIDEY57/KOneut\u0026#43;z3xkiKtDhGJwQfQjsfc1iaj4d1FbnVL7TpLY3moIqMZ8hVQLjaOvXv8A0xXnxrRW7PZ9i1rY1tEKzaLazvI0pnjEpc9ywyf51FfRxNIN2PxFcffaD4yvYPIuNRSKPaBsimKJj0wFyfxNWdG8Jtpdu6Lc3TM5y3lybRVKvFPSWpjVwvMtUf/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/indonesia_34796603215_o_hu_d735153150990d43.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0653%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/14.0 1/15sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AJbXSI5AGRFI74NbMWkpaQtM67kVSSB1FcRY\u0026#43;MraELlzx6EVDa\u0026#43;OzbaXcRGb97JqHmeYpCuU8wHr34yPpXHGVXZnqVYUfii0dBN4y0uCXyDp16XA\u0026#43;UbByfQc/rWJq/i5ri3KWWmzQyf3pMcD6VrS\u0026#43;N/CJLs9qHdxtaQRKzY4749q56\u0026#43;1vw08ss9nFdLPIMGRlLf\u0026#43;hA/pVqt/dZg6F/tL70ZNs1sdu6KPg9SoqWDUba20\u0026#43;5k8iNm\u0026#43;07V\u0026#43;UdNwqhD92oH/AOQbJ/19H\u0026#43;dLkT3LVWUVp2OgbxjawMY0sYDlSNwQcH6YrIu/Ek8zOsflJGfu7V2kVjS/6w1Ea0VCmuhjLF1pacx//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0653%202_hu_5d39565ca554e633.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0443%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/16.0 5/2sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"515\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABsAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMSwu54EZmUlojh9p5xng/0rsvDmuWsGn7bsAiSTa2BnacAjH45/OvOUvbcq86sQ6gkoeM1o6DfPLArPt/4\u0026#43;hkDp2ryadFSleSNUjs/FGotbDzBNFN/AVGcKMZGc98GuBu7p7yJXE5Zw33WP51b8YX0sVxIyn5fNyR6jaBWHFLZQst9cqccCNOQGY56kduD\u0026#43;ldsaFOGsVqDkEOk3t4u0wz4/3CK6rwx4fEP/AB\u0026#43;RhESTeqFwCxwBz7VqWrEJxx1PSpo55GiLEgnPXApU5pdBMwfGenwT3B/fxrGzAk7vu59a46QxSJ5YfPlMdhHTA4GKv\u0026#43;MppTrc8BkYxMEcrngnGM/pXJyOykAMcAYFdK1VyWz/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0443%202_hu_fde5d307f8bc573f.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0401%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.5 1/320sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMPQJJJruGUTbZI5t6Z4UD3H5V6tqL6gmlySPHHe\u0026#43;ZEWMcY8rysDPXnP06/WvKNEkge4Rp4CbaNS7OAdxY4A/XH0Ga7CfVdO/tCC489WRVZJCTvLOOAepyQM9ea4efkvc3jTckrFSxvkdRNNC9vcBC37xJW81iCASc8fXgVJ/at36Qf\u0026#43;Pf8AxVJqPiOyurGS3hKX7cBA6gg5OOTjI61h4m/6AFl/30P/AImpjVVtdDb6tJ7aljTrTT9X1K7iMH2a2jJleTcST8xP4fK2Pz9K6A\u0026#43;H7EoNN06ImS7kaXe0gwmCCTwPpXGWV7cWcE97bkxssRcEqMMQMgY/AVseD/E2tayNQub6fzfIh2QqEVTubJOAB/siumMUzHmsia9\u0026#43;H02mCa90\u0026#43;5WQ58x4Gyqqo5IB7jPPQH5RWZ5Gp/8APGH/AL7k/wAK6nU9ami0i5lWKdCEALvHgAnA5P4/rXGf27e/8/IqnFLoTeXc/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0401%202_hu_b971177e5313a3fc.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0278%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.0 1/30sec  ISO 3200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"460\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APPba2aU5Wp720NvbjA\u0026#43;aQ7QfTitHRhu8oqFKyMFwRTrmCXU9VmWFX22qHYFXgsOp/z6VU6ijFsiFKU5JHMmHYF3EAHODTdr/wB5fzFaeoQOsMDsgVpG3YXOMHP6cVneTN/cb8qyjK6uaODTOi0fy3ljBnEaxxErgbi7Z44/z0rotDRrCK43QqkwtiX\u0026#43;XDHIPJ78Zrk7bVIbcL5ECo4OdxPU44/LkVpT65c3800r3RPmRlSqj\u0026#43;HHTPFclWM5PyOylKMUWI762gtpUv7JpBKTsdGOUGcYxn8ai8qP\u0026#43;9df99msnV9dN8AscCxJGVAAbOcZ5/EkflWZ/aV1/wA9Zf8Avs1oqT3XUzlVS0etj//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0278%202_hu_73200bee9ad69410.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0179%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.5 1/400sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"414\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOo0K5NpZwgWyCJV3HdlWDfhx3rVj8RiWTy4oSF/vua8wt/Fy6rfSXDwMba2U7ERdz5HGW9jxWtbeIIrPTY7u6gmSOVSYw/3nOew9PrimpR3Zm41FZR2OsYymWRpW81ZTk7ua57VLCJW8uERg4JwDgn3NUI/F0N9KzLcRWkEI4aUFixPA7j3rlpPEz2Hi\u0026#43;eObybiCVgvnQg9CAcgZOev/wBetY1rbGE6HMmpFC0sI7fDRttcZIbbyM470XsV1Ixme5LBiifMcnkHGfarUXT86S6/49R/12h/ka4E2eitjLmW5slY7kkKhozv5A6jgd6LeILf296UjV48OqxrtHHPNT6n92b/AK6n\u0026#43;tNj\u0026#43;7F/1z/pTvoDXQ//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0179%202_hu_ffe03de44410cd7b.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0137%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.2 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"397\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMKa7uZoNoeRSnCKWPQcdvYfpWlZaxqVrEUjvJF4yAkhzjqQMY9awpElmiUbiGj\u0026#43;ZMZI\u0026#43;n6VLFfxrsYI6sU27tucNz71zRq3XmDVjU\u0026#43;3XTLtuDcJuYYLNzn1OKj1LUdSu4vs5v55ItuMM2MjjHTqfrVIXBmB\u0026#43;d9zDJyOnH6VVm\u0026#43;VmZZWYlcHMmAffGKft2tCHFPoXNOjSQFXBK7VPBIIzgYz/iDVfVIUtLoW0Y\u0026#43;XIwe\u0026#43;eeataZ1P\u0026#43;4n/AKEKg17/AJCw\u0026#43;o/ma5FpNm7\u0026#43;FFXzvszPHHGm4DJZlBz\u0026#43;FSElmEK/LuHzEAc/1/Wq9x/x8y/7o/rVhf8Aj6T6f4VqopxTZEm1J2P/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0137%202_hu_23749e9c68707758.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/IMG_0074%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/1250sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"383\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOui1\u0026#43;yZVKwTOMdwAasjXraONmaykAUEg5XNc5qviNrDS/8AWwyXG4LGc5K/5/Cuft/Ht7IRazsvlltsoRcsQfvZOD61lJVlLWf4EQjBq9j0KfxTa29uzS2xCqCx6ZwKqXXilWtt9vaKSwDLvbaeeeePSqFxqemCzJVmuJI1O1hLtLe2eKTSryE2C2NxZQmSH5cyMHLqf4s459PwocKtvj/Aq8b7HLXkhexy2D0NU7UiOQbVUZ5PHWrVz/x4H6CqsH\u0026#43;sFa1PiCHwmrN/x4yN1LZJz/L6VNays0kznGVbauOwqGb/AJB7/wC6afZ9bj/rof5CqEf/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/IMG_0074%202_hu_354cce7735ba9cc5.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/34634092702_503cd1b55c_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/11.0 1/100sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"384\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANvSdG0LV7OKW3kw75BRn\u0026#43;ZSOox7Vbk8EafJcNHYzOrKB5gZgcZ9sf1rzW7iurOUy29usoxtZY5CCSOQcAg5x6e9bPh2J302TUBq2pQYLB/IwPLwO\u0026#43;etd9PFTqLmjPXsea8NR2dNW8jvoPCWiadF5l2TJgZLNnA/KlS40aMBrRLeOFThmaNmJ\u0026#43;mOlcLfX95bW3nxeL7\u0026#43;W2zlsor7h3HXP6VkW11DfTfabfxBM97C26NZlCrIfoMY/WqUatT4pM0/c0vggv68yja3TvNHLtRTOCWVRhQR3A7GpINVvNOlzbTFBub5e3GT0qpY9LT6N/WkuPvf8Cf\u0026#43;RrxIvlldEx\u0026#43;I69baDUdNtr24iUs8o3RgYQn\u0026#43;9jsfpXn2pW0cGq3kEeQkTvt56YNejaf/AMi5af8AXcfyrz7V/wDkO6j/AL7/AM69\u0026#43;GsR7M//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/34634092702_503cd1b55c_o_hu_21d8b775ab0305e2.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Indonesia/33953615864_5fe2336194_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.8 1/1600sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"458\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AO5t5YLrezGMeWdjBRjB64OK5qPxW8WqQyTaeq6fK5jDbyZE7biOmM\u0026#43;\u0026#43;cGuuv7mHT7CS5FuJCnOwDBavP9QudbvNUjv7K0itNmciZkYFTjsDnPU9vwpOp0TNYUrptpnUX/iaxt4YZrZTNHK21jGQSvufyqt/wllj/wA85f8AvmptL8OaXfWouZIl84MysVYtG3qQpJAzVz/hEtK/54Q/9\u0026#43;hQpGbi07Gb8QNTFloSpEW813XYykgqeQMY/GuFtW1K1shLcXEj3uC7RyknYGxsTnuevtx711Os2mr3WzWr22ylqTst4/mfIHBPy9MgN3rCuPD\u0026#43;rX6I8ZuPtsh8yQyQFUGR0B7ngULlasaXlF3TOg8A6TqkF2\u0026#43;qXDzpbXUGXjkkDBpM/wAIBPAAxzzXdZ/2T\u0026#43;VcLp2p\u0026#43;JNHtI7H\u0026#43;zPPigQKD5bg\u0026#43;57j1qz/AMJXrn/QCb8n/wDiatwb2M\u0026#43;ZdT//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Indonesia/33953615864_5fe2336194_o_hu_a09a02a407ffce92.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-1\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"thailand-\"\u003eThailand 🇹🇭\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-2-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-2\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/thailand-city-life_34140599365_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.2 1/1250sec  ISO 1000\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"397\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOV8R6fGyT3dtb/Zo2bJiE28BRgZBxyCT69\u0026#43;lc5Au64i3oFfIzkY4\u0026#43;ldzcaNqv7y2uIJ44nTDFlL5AJIUEcZ5/Ss5tPTTFhMeltc3kMgP7yT7wAzgqBjHXvn61cexiyh4miUa9dI2eS4BUZ289axzIz2ihYiVjbHmhRkA5wCfXn9K73RtGi8af2hqTLJZX0ZLRxoB5bqwIPB56gjr3rmLvQNQsJFtSGeNn2gHKk9OoPT0pKydmXK7V0e6rDvG6Vg4IBC4wBTZrC2nyHhTcf4wo3D8xU6f6tfoKd/GKZRSj0W0iuBPFvjmCFC6tjcvoRUd3pkF1bPbs0iKwxlGwa1B1P0qBqVkPY//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/thailand-city-life_34140599365_o_hu_8cfe089fe992b0c0.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/people-of-thailand_34039011152_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.5 1/4000sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"377\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOFuWlSVVdDGy4IAGKjstPn1WWUpJFGFG5mlfaK17rSIraIm5uowu0giKMnB9a2fC3ifRdBuEWNCYRDtkZgdzvkEty2AOOgAqk7GNlc4iW0kjhMuVZFbYSM8E9Ov0qON2Tketd34y8Wadr1kIIol\u0026#43;XOwdSTjg8N6\u0026#43;oPH1riVhd4ioQ7xyeKq4rO\u0026#43;h6ymjWk\u0026#43;2WffM57yNux16ZrJv9IsJdaSBrWLAiZy3lruYgcZ45HNdLb/AOpT6/41j3f/ACMY/wCvd/5CuFNnoNKyK0GiaXu3CxgBUHog54zWqLO2hsRNFBGjeUeFQAcNj\u0026#43;tQW/Vv90/\u0026#43;g1df/kFD/rk//odRdtam0UlPQ//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/people-of-thailand_34039011152_o_hu_ba5f01718c989612.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1703%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.8 1/1600sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ALXhq0ttYubBLyKAuygM8Y5ZgOoyTyMdsV6Tf2yJYRwKCEUquPYDj\u0026#43;QrzXwLeJLq1rZiJNkM0u1UOQAQe1dxq2svHJKoCtHEQw2jJxisE0k7nRJOVkjPvrVZUm\u0026#43;Uc\u0026#43;3tWL/Zif8APMf98D/4mr95rsDWiyW0kbNK2GjkbbsGOpOMdvzOKzP7Uk/v2f8A38WudrXQ0V0rM43w1qyeHLgpd3EcJkQFGDZUZBJyR711l9danLZyNHZkbiMCRsh8Dg5Hbp3/AJV554fv1tlfzVWQltwyox/nrXQ6j4ia406aBXYb4yoI4xxW84PmMoVIuO5WspL691W0F3dDylkWbyRlBgYOAMAE5x3rtftFn/zzn/7\u0026#43;L/jXjttfXZulIumikzy/RvfnFaf2y/8A\u0026#43;gzJ/wB9/wD1qipQcnuCqK3U/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1703%202_hu_9bcf1c52920d6c0f.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1675%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/60sec  ISO 320\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"469\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABkAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APS50ad3gkmDb8q0RG3I759frWZqazW0YiMX7s5XKgBEB4y2Og79D3rTjn0xrCP7QfM8zOHlTDMT1AJ5riPE\u0026#43;padbsltbT3UnlArIA5VSDnggdcZpSX8o0/5hupW08MbsBMiQkBQZABhiCMEfXge1c68GqRb3g3TjJzEqMec9Ae\u0026#43;PU4xWjb6\u0026#43;txLbMHbzI1O3zgXUZ9e5PPXPbFJqFtLYXMd2F8x92CbeMeVGeO68D8q5p01H3xJRvfqaVzdX2rW6vqdwbf7ZC0gicnYGzwMduAP8eayJfDdgtuDqF\u0026#43;yy7uf3mM\u0026#43;wBzj\u0026#43;daHi3/kYT/uiuftP\u0026#43;Rni/67f\u0026#43;zCppVVOcotbO25nTryqzlHawraVoUdyS1zeSv12JnnHXJIArVWd2sWOl6Q0oQ4DTsWIPXoTzWn4r/491\u0026#43;lR\u0026#43;E/\u0026#43;Xz8K7HCzcTSKurs/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1675%202_hu_22a17c2099fa97d4.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1639%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/8.0 1/400sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"360\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABMAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AL9zrtjoFwlncCTzJl/ePE\u0026#43;DGp6Z9avXCx6bbf2i13iNU3xlTksD02\u0026#43;vWuO8eaYINbedJxItygmx1IOSCB\u0026#43;X9Kz7SW3ltxHfX918o2RqORGccDB7V6csXUV7dTwlldG0U\u0026#43;h3MfiifxBDJFbTlFhALRlQhx6\u0026#43;/wCdZlw0hLEyMSx5OeTWP4KmRvESWz423COhOe2Nwx/3yK6y\u0026#43;0tFd1il6diQSK7sJiKfJaWhw4zBV3Pnp3a9SmIo5NRZXjVgB0Iq/c2NoYSfssOf\u0026#43;uYqnH/yEn\u0026#43;n9a07j/j3rx5HswejMq2s7b7Wy/Z4gMHkIAfz61m3ttFbNIIF2bvvYJ5rYtf\u0026#43;P5voazNU\u0026#43;\u0026#43;1dWHXU5MRJ\u0026#43;z3P/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1639%202_hu_84e2ce983510e203.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1134%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/8.0 1/800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"525\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABwAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AO5lh9qoXFrn8atXWoRSQyqkwRkYfMARkYHP554qrLqdtPJmNtiQsVBdxlj06Z\u0026#43;ortVdI894dyMa5RDdC3GN5Ut\u0026#43;XaqM1s6kjFSzXCSTzQOQpIMiyKec5Ax\u0026#43;tX9GvNO1BIoLm4Y3GWVgq4yQcda0p4m91Iwq4LZxY6UrdO6KSEALA7s/N2B9\u0026#43;Kg1\u0026#43;7WwnWaANL55xhMDPTmq2qS\u0026#43;VCohjSHfAWPljHNYFoW1KaxhuZHZZLkREg4bb161597HqtXOgTTLiwtory\u0026#43;mS2UlhskwzyAkHtUCNpF9qv2i2a5iIG3YkJVQefm4PvXoq28Qt1hKB0ChcOM5Hv61yOq2dtb6vmGGOPAGAFGBx29KylUknoN00kf/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1134%202_hu_c5014c40091d84cb.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1100%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/7.1 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"346\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABIAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AJtU8cQWl29rZwq2wshkc8bh0I9q1J/FltD4TbVI/La5jARonOPnOOcDqOc1yDX2kwvK9vp1vMjcKzxhUXIwcDqeverekWEd5MLu4s7dYhwieUq59DjH5Vz1MwqU4upPbsWssko80tF\u0026#43;J0Phjxjb60kov0gtWjAIcP8AK\u0026#43;SeMGtiXU9JAz9riI9jmuSe3WISpZSyWjq5BWPlX4yDtPqPpzWbLqet2sPmRtDewA8si4YfUdqmjm7lp189P\u0026#43;AZfUebaSILaGJtRO6NDiReqj1NXrqR1uZMOw6dD7Cqlp/yET/10H/oRqzd/wDHzJ\u0026#43;H8hXmS13MU3yhMzfb35P3UPX3qsWKavKEJUGNSQOMk9TVib/j/f8A3E/nVaT/AJDL/wDXJP6VlbV\u0026#43;n\u0026#43;Ra2P/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1100%202_hu_1e843b6e88372d7e.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_1046%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/7.1 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AKOn6hIHDE/KOue1bT6yXZCpglRAQY5PvY9fWsywtWQkzbYQFY7lwRkDI4/CtOLVAluxS0V8oFwW5IBILcDjn8qxxE5KyiaYWnGScpETXllOuY0RZT1QPnA9awb2XBK8AVrhmutUhk\u0026#43;W2iYIkjiQEH5gTnIGOMj8aW60myvnjkgk8sDmVSef/rVdGo5aPczr0lF3WxziazDbTs7zzPI3GURRn6Fun4CnJrFiGMQt76BsbcLNnIz3G0Z5rnrn/Xx/hV1/\u0026#43;QsfrUcqNFN7Gu2pwKu5ZLlXPGZbdWHbg8ilcxw7Lu3xcwOAJU5UxtjHYj8Kzrz7v/Av6Vatf\u0026#43;QXef70dQ1YtO7P/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_1046%202_hu_dd48681026db6d39.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_0950%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.5 1/60sec  ISO 1250\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"428\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAFwMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMiz1WSNofKtY3tnbdIQjKy/N0yD/jVnVvG\u0026#43;jwy/Z7XTFuGVcF5HYru\u0026#43;nepLO1so9OeUZVmhLDazbSceo471w15YSwXEZ25D4YYHbOM/pWatfUuSfRGy\u0026#43;pT310N0e4QghEAyFB/px6d6k8yX/n2/8cH\u0026#43;FQX0MVuwd02OeCemf85qp58X95vzqdBLQ7xbeB9BRnEqRurKd53Fe3Ga4mZoESJoWkaIqq5kXB6t\u0026#43;lasF8X0a4hkZlZdzKeT2zx6c\u0026#43;9ZVxYO1jbusgAVeSSMtzxgD2NPld0ac65Wu9ifVbtZba3ZkOdvOe\u0026#43;e9Zfnp/zzFJNM5gjjeQHy\u0026#43;Ouag8z/AGx\u0026#43;VU0ZXP/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_0950%202_hu_5f74eea70e50e13.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_0868%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/4000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMQ6J5d1iG2ki2kq6MMgMOuD3rag047Ap\u0026#43;X1rs7fTnvdOFvLEwdW3KTwcn61autLhfSFWCEeZAe4G8jvnHWujnWx5zoSeqOUVJ44Ut44VnZmA\u0026#43;Z9vGeuf8K1rHSGhiSaa2eV9gKpK/8AqxgHGKo6jcHTowPKzK33dw\u0026#43;UfWjQPE13qs17BcKIzDjYuc4HQ8/Xmuadde05EdlLDP2XOyC28SSaZHJLNcw3QkwkYjO0sxIHTPbP6VHqnxBGl3LAWchiLt5cnmA\u0026#43;YASuR7bl681yU/8Aq7P/AK\u0026#43;l/mKq\u0026#43;KP\u0026#43;PHTP\u0026#43;uE3/pQ9TLU3gkjWvfHomQvIgu5CvCyx/KvHv161if8ACWawF\u0026#43;1wzbUhKoV3AKSQf4eM5x6fzrEk70L/AMgyb/rsn/oLVEacdy5Tb0P/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_0868%202_hu_b3f8ac29e19c5481.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_0854%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.0 1/60sec  ISO 1600\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"423\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABcAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOUs7eabdcSuWwDtJ6jAPGPypfnjL2ark7wyKDyTj/69S27zb5VjViI24Gfl49R\u0026#43;Bp9vPHLctOMIykAjHT8OvQH1rNuyuy0ruyKSRmWb7K6kMGO9T1Bx1/SrNxbyW6ieKQpkAk5xuBA4x\u0026#43;dWbqaGC6E0WJTnbjuew469KiuXmRojOrASHOM/KPpQpcyugceV2ZBDqyXt0YUSOFHj2tvUkcA88fWtTTpLWCLMl4ruQdwEZIGB1GVrlNM/4/f\u0026#43;An\u0026#43;Va9t91v8Adb\u0026#43;VU1oSnqaFxO07sPPjjA\u0026#43;4SmM\u0026#43;5wKzb3WjFOtq0UTpHHsUxqV\u0026#43;h5qxL1H0FYGo/wDIQ/KmkrCbdz//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_0854%202_hu_2d41786dc37ca63e.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/IMG_0850%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.0 1/1600sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANPSzd2hEUtrIfMHDE1salrqeH9MhJtiu6UKy7gWIwcnP1xXml5d329LmXUZcs21d7kleN3GPx/OnXl\u0026#43;8t2Ipb8NFGMBn5xgfoeg/Cp5tbCUep32heJRrD3Ubx\u0026#43;W8LDCk5OCAf5mpNbeGW1IwCFXk55NeY2\u0026#43;s\u0026#43;XfrqGCnlSbJETA3qOhxxn3HpWpqniqbyjFp8yTqV3PO8eMZ6ALntmnew\u0026#43;W\u0026#43;xVtYzK6ut5FBLDIWQBg3OfX6A1Y1SPzZEke6jmlwMKAMgcY/wA\u0026#43;9Y9h/wAfUv1/xq9P/wAhJP8AcH81rjbftjrsvYFBrN0k86OZRI7ZKse5P602/s76OQxkMhZMbR83fOeKsy/62L6j\u0026#43;daeo/8AIUX/AK5f0Ndr3OKN7XP/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/IMG_0850%202_hu_3ceb23458592df3e.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/GPTempDownload%2055.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\ttitle=\"DCIM\\100GOPRO\\GOPR0885.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"HERO10 Black\u003cbr/\u003e271/100mm f/2.5 1/950sec  ISO 249\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APPLWNGILAVv2FhJcD9zaPLgdVQmpJ7bwto9w9s013fyR8ExOoXOOecev\u0026#43;TUc3iqWExDTbSHT2jYMHhyXbHYknp37/Wu2niOZXhFvzeiOGphEpfvZ28lqx9xGFJiK7GX5WXofoRUN3eS/YhbMAyqu1SeqjOcD8aZcand3zpLevI8/IWTGS3s3\u0026#43;Pb8sMuvmVtnYZIPYflW8Z3XvLU4qkOWXuO6Oagmw2Sa0I7hN\u0026#43;7bkgfKe2ayo\u0026#43;1W4\u0026#43;g\u0026#43;tZRk7HZUimzRSSCJlVwS\u0026#43;7nDcg\u0026#43;lE\u0026#43;pxM\u0026#43;UDgjjk4zVRv8AkIH/AK6/1qtL98/75/nUyk0TCCe5/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/GPTempDownload%2055_hu_7b3e57c6b5cb99e9.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\talt=\"DCIM\\100GOPRO\\GOPR0885.JPG\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/GOPR1936%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\ttitle=\"DCIM\\100GOPRO\\GOPR1936.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"HERO10 Black\u003cbr/\u003e271/100mm f/2.5 1/3000sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"395\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOTjubHy1Nwj27N2xuA9Pf8AStjS7CwvCFhv4mYfOUyQxHsDjNZhgt5woeIsR0bOSKr6o0GmSQygSvK/RshcAd\u0026#43;O9b08RVn7rOKEcPKWh6B582mwmO1sRK4HJYg7e3QcH9aqeZdXb79QjYJg7hxwOc4GOvT/AOvWTp017cWCXS6jcxpIC3lMd2Ruz6/4VpXOr3TMcLEAehVOn61POotpLXudMmr6yduxyVpcRxljLCZcDgbyuD\u0026#43;FaD2cN1rNjpt4oltrtUlIXKsrNkdeScelZEf8Vbw/5GzRP\u0026#43;uEP8zXn1pNVIpef4I5cuSbl8vzJXtRaW1zDG2I7ZiI1A7bsYrIE7h3BLHC5HOOa3r37mpf7x/9GGudP33/AN3\u0026#43;tRg5ylz3fX9Ea5jFRqxt2P/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/GOPR1936%202_hu_b984e7c579f92080.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\talt=\"DCIM\\100GOPRO\\GOPR1936.JPG\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/33923138971_8fec779315_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.2 1/25sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"493\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ALB0uK5jgaeOFHkWNgbaM9CcnPHzBunqM5rm7jw1fr4mu2sSkQVMuJSwDEDBIyozlskYrtr/AFNP7L85DNBEgjYGJju\u0026#43;8MqMe2R688VBa3Ltc/a3e7WRVDSRnLrIo5wqscggdRVzcrO3yMo\u0026#43;wbSs/M47xRpV0mjpc3EsqBDHGFMeAzbeeM8dD\u0026#43;dch9jH99h\u0026#43;FeieP9QP9hWo2oqtOrFQ3zLlWwCMex\u0026#43;lcEL22wMnn/c/\u0026#43;tQnfW1hNy0Tdz02K1tL1haX81zDNeBS4VlYr027iRkdQetT2s0CFdM1CF55RCPJLsUB\u0026#43;XDA\u0026#43;vIz07017GKTxXBHLewFXmDEHbkBQpCeo5GMdiD61HNomq2/ihLiWQzWqhkDMB\u0026#43;7yOvr/wDWqcRKVtzTCRgrXW\u0026#43;5zU/hyDUZHtIZJrQxIJI4zyhB4PGfUfrVMeHLuMbPt0g28ccV0/l3NnrsknlxmNU8tgB8uOo6cYz/AJ5rQXeyhhIgBGcbulc6qyirG06cZybsf//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/33923138971_8fec779315_o_hu_e6f6a24c217adee4.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/33784080465_671ea58871_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/9.0 1/30sec  ISO 2000\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"462\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABkAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOW07Rdkha\u0026#43;tJ7sQsAluIyjvn1IPT86l8QTfY7syTaVHC0L\u0026#43;UIldvk28EBgf1HUmvRNagsdJmtW1BIJww5EoVQ2FwPb0rD8R3eg6xpaCVhalWO2Xblc8DAI69B2rnjV5pWZ0OnaOjOQ07TLTWrRls7G5WdCZXUvncvscc4/EnP0qzf6bey2Uv2i3u5rgcxSrHKVx/dwRj8a7nw4tpC8YtXSSGOMOmOc4H9TitWfUJ0uWuhbyyXBiEZhj3HjOfYAjnk/hVRq813YVSjyaXMf4hXsEDWM0oLbg3l7QMhgQe/sa5/xZpj2NtA0paRngMhDEny9zdOfTpV/4l/8AHvpX/XST\u0026#43;Qqb4g/8eSfQfzeuiPwxfe5zS\u0026#43;Ka7WMXwF4rfSAYblHks4z8u08qT1wO9eryXKXFoJoX3pIm5SB1BFeC6d/x4v8ARv5ivWPCn/ICt/8ArjH/AOg0VoKNNSQUJylNxfQ//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/33784080465_671ea58871_o_hu_df7ec766773e7365.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/32941128274_811810ff1c_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.2 1/3200sec  ISO 1000\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"488\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APSRqWlahp88dvf204eNkIjlDYyMc4rzq/sIbG80\u0026#43;NlRYmJFxvUDdlvfkYGPzqS8s9D02SZtHB2LaEOQx\u0026#43;917\u0026#43;1N886haRSSkqkcW7fIcEEAEgc9TzXmTxdm1Y9WlhE48ze51beKdL8PaZptqEaZJDsJiZcRLnqeffp9atnxf4eBI/tO34/6aL/jXlvi0Rzael1FtR4WI\u0026#43;U/w5xj8DXICS4YZ8mQ577DXZQqKrDm2OOvS9jPlOlt9TudYsbzYo86ZBnHCqAu0n8u1dfbWW\u0026#43;3G5iYEJAQAENnt7duv9a8o0jUntGIzwRj6iu1s/GRg0oxyGPIjZw6cDd7iuLF4WT96B3YTExtyy6FLxPcw2tk9ssZ\u0026#43;0TTbpl7KqnP45P8q5v\u0026#43;15R0dwO3FPvNS0/UIVeY3AueSzMA4Ld\u0026#43;cggVl5jzxJ\u0026#43;hrvoUvZQ5Tz69b2k\u0026#43;Y//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/32941128274_811810ff1c_o_hu_44f2a4f33ae513dc.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/32941126274_401420e3a9_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.5 1/2500sec  ISO 1000\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"294\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOOsNIK2D304\u0026#43;SNdxGecfSux0\u0026#43;3sYtFhvvITbI2AxXPcj\u0026#43;lc5perWxi8qa9uIkOTgYx1z6V0Ud9aS2EccOrXBKtkIwTA569Kc6t9NjOlRcdVq/68yVLKw1K/FpHGsnyFyVTb/U5rB1bw79muAsCvtDhW3Djk464/rW7aXNwjIo1G5TYCEyyNjPXHFU9Tvb2a0mC3U8gSXcwbbg7cHPTrj0qI1bPf\u0026#43;vuOmdDR3X9fef/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/32941126274_401420e3a9_o_hu_7fc0756ecb8db017.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/0%20%283%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.0 1/125sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"386\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAFQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOx06fw/c2KRwobgKMfurV5M856hTxkA1Qex8PX1\u0026#43;LSGyldoIz5qrCSw5GMqBn8xUWpXEfh3QFn1K\u0026#43;uWkVBEI1k25YcDhADjr/8AXrI0HV9FtvFdrJLa3dvJexbI2iJB3HGM4OTnp35Ncyg\u0026#43;xvTilBtvYgv/AAxpQnKPPJCAxK\u0026#43;bbsrEH1yvNVf\u0026#43;EX0f/n\u0026#43;/8h//AFq9EvNbt7aQRnXmhIHKXVuNw/Rf61X/AOEitv8AoZLb/vwP8aNFoQtC5rek6dL4dvIGtInXDSqdoYqxXBbnv1rzi6ljv7uwls41na3u4y6gYZFJGe3y4Pf2FdSniIXMT20jEK6FeDzg8VyVvq8Wn6g032KQBkaM7v8Ae6ke4AqlL3dd0dSvB2WzO51LXmSbJYfMTw4Bx9Kp/wDCRH1i/wC\u0026#43;BXEzawvnOwZiGOQCc4\u0026#43;maZ/bK/5x/hWfKw5oH//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/0%20%283%29_hu_4eec09b35f7c4c10.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Thailand/0%20%281%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/2.8 1/4000sec  ISO 220\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"382\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOB1G3aHUp0QnBbcoHoef61reHvD0\u0026#43;q6hLbfY5p9sAdZI3EYjdlBUsSOntWlZ\u0026#43;FbjVZxcXMrwqVVThdpwFC\u0026#43;p6gVsy29ppq7ba\u0026#43;fMRCkJPt3YI6gfU1z4zFexheOrehpQouo7Mx9c0e7e5tNLvIJRdbT5ZkkUtLwMjf0PTr16D6cvNpbwwwOJMGZNx3KRjgk/XgV2fiO8eWK0SwuFvTEWZovMLSx7RywbOQD7f3a4e7uriZY1kBHlghSRzj0zWuEqyrUlUatcitBQnypnXy3krwhzjJ44zwK5nWZna6Ck5A7Hn/PWt9/\u0026#43;PUfU1zusf8AH5\u0026#43;P\u0026#43;FXH4jVpexv5hBO8d7FJHtQqdnyjGRjHNQXjFup/jb\u0026#43;dOj/4\u0026#43;U/66/0pl13/AN9v51utjlfxH//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Thailand/0%20%281%29_hu_ce7ba1d1e573ecc5.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-2\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"cambodia-\"\u003eCambodia 🇰🇭\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-3-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-3\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1584%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/6.3 1/800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"484\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABoAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOqFujfMPyqrqHkWtpJcT4WOMZJxmqNx4v0izMQeWSRZYhIrRrkYJwP6/lWV4u1qO5VdPtJY5UPzSleTkE8fpXo8ySueJGlKUkmi7NapPEs0XKuoZSO4NZVxAyHDLirXhvXAuhXAuAv\u0026#43;gAYwOSvYfnxUkl9FrEZkglD7QCy/3cjNdlCvsmcOKwnLeUVseb/bPtKRgv8AcG1QRnA5wK0YJlEmTKM47DrxzWKqhdpAAJQ5xU1sT8gz/Aa8S72PpeVG9C4WyndG2iVSHUN1Aw2D\u0026#43;lV4rqWC5mgtchLlAjYxnGM8c\u0026#43;xotAP7HkOOdvX69apxki5iIJBEL4P50lKS2ZbjF6NH/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1584%202_hu_e5521a7f92bda33a.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1573%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/6.3 1/320sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AK8NoZGVVGSx4qGKSKW5uIgOISfm9gQCfzNbPhjVrW60NBshR7ddkkpG4HaByeeprEk0vyZNRjhLKGXClAQSCAwzn14HHevRq5jLnThseJRymPJJVN29H/XcuLp\u0026#43;8sGwm1Qxz6HpVEwpKu\u0026#43;Jg6\u0026#43;orSlcadpVxPfPDM4WOHBcjfjjk4Pcn8KgtRbW0tzZpDIWliW4jOeFBAHGOvPFFPM5c7c1oVUyeKppU373dnJ6W97FcXa2kgR1hOGLL8uGAJ\u0026#43;bjHBOPpXUapqa6fqIKRPOLu9URq54VRhRxk8jrXL6f/x96h/17S/\u0026#43;htWz4i/5CWl/9fY/9DryXue8thusXFxrNnqNla2rtc2UseG3bt24HsemMfpVZb\u0026#43;9OqaPGwiRWhSJ/wCMnLFTnB55HHPHWtXw/wD8h7xB/vRf\u0026#43;gvWEv8AyG9I\u0026#43;sf/AKNNERSP/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1573%202_hu_399ba55aefc690b1.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1518%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AIdE8H32rWrLBaKp27POPC9eue/pxWuvh2a33RW6w3O3KyeRIdwx1HIA/WtG38VTq7\u0026#43;VCbe0iA8kI3yso9sfWnaRqrmZ5baBobWVRIpkUgsDnAxn26iuNqmk7nZ\u0026#43;9bVupmmxk8pC26JlcEhkIP0x\u0026#43;dZ\u0026#43;q6WJXcJH5hCkZC8YPOK9DvTHcaat5JbkFY8NznC//W6/hXmWs63cRuyxwi32EgSSE5b/AICO31pcrT02DmTWu5o22jSwareXl3byR20Ds4SMAtISxO1P9nH/AOqrg1C81q3hFvZGO3QiLMfRV4xk9fxrcv8A/Vyf7v8A7KazPB3/ACAZ/wDrr/StILm0ZE24tNG/fzQweHLkONqLEY0HTqMCuEltYHXdBarKxOWlkHGfX0/Kuv8AEf8AyLM3/XWOubt/\u0026#43;QcPpWkUrXMql72P/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1518%202_hu_e4c5c0d606bbe416.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1485%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.5 1/4000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"472\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABkAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APSrO2AAIFXYvLkiWSIgqwyCK82m1C68g3TajdO0A4IlAAbHGeMCmaN4kmutPS6a6kjbzGZg7AgNzk8j3NYvGQa5tbCVFpHeTXAuLK9/cuvlb4/nH3sDqPas3V7lIx5UksUWQcBiAcD61wDao665cwpdytbzozyOW43YPtzyKm1TSJbydWY3qlAACXUjH15/xrSOMjCzsEsNOasLbqDbSRt5lu0nWO4mDDbxzgZ9/wBKu6AkX2dUjiTCLjcIhjr6nP8ATvWNd/8AHn\u0026#43;C/wBK2fDP/IOb/frju1G56aiuaxJPp93DIJ7YQeYgx84JJHpk9O9WWmZYg0igPjkbs1NJ9wVSuO30FZ3NbWP/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1485%202_hu_61465a9adf9357b6.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1482%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.5 1/3200sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AO8t2tp7VyhVvJlCNhejAjIq5dQxOuEiwa831XW9U020nK6rue6k3iNAB5a5yxGSeewFaCebrLrewatO4kQKRgccd8Hr1/GmsSlFVbOzJWGnJWSOkn09WXOBzWRe6bEFYsRgdcnpVKPUdU/tO50trqRowobcq4ZAQenGTzjn3rLutM8955RJeNvOWw5PTvj15qpZsqdlZmU8ufVHN6tfx3jIr2TWnlOY95T5WJIOMAY/n1rqPAc0kWmXQkO0efuRSfugqv8AWuV1z/j0P/X7/wDEV0/hX/jzm\u0026#43;o/9BFc1ZtU\u0026#43;Xoj06Uryt31N6e3guZvOLyRzEY3xyFTj8OtYWoi5sLlnjuHdWOcsACfYkVuD7wrJ8Qf6ofSvOk76HXKK5bn/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1482%202_hu_29dc2efeabbbf8ab.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Cambodia/IMG_1406%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/2500sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"386\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APWVjz0p/le\u0026#43;K8pTVPEVmebTUWUN91OvB\u0026#43;v0/Wn3Op6n5LTNBeiR0bIbJKj0Iz3/AMnpXF9dl0j\u0026#43;I/ZM9IbUNORHZr\u0026#43;NQh2tlsYPpUMmp6Y1r5qXCy5XIXOCecdD78V5i980ceWsrk725aSBvlwTg9Pr6/zqhPqSoikOVa3IPlEEM4Iz1A6Zxx1qI4ys3ZRB0z1kHOB71RfTYZWkIeSJixO6Ntp/T61eXqv\u0026#43;8aavWT6n\u0026#43;ldTbT0LUU1qjHTRzFCwiv7iMHqAEOefdTWDf6Y63ytNc\u0026#43;eNh4eCMfqqg12H/LI/571z2p/8fS/7hrkvozVRVz//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Cambodia/IMG_1406%202_hu_b69cecc1adfbf7d.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-3\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"vietnam-\"\u003eVietnam 🇻🇳\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-4-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-4\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/mother.jpeg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.5 1/160sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"445\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOgntY51HmRq\u0026#43;ORuGa5W9gns7S61O6uo/NYyRCEhQI0AbbgjknOPz\u0026#43;ldW96DqUVoke4Mm52z93sB\u0026#43;Jz\u0026#43;VRGwtJL1bhrVZcxEnziCEPHrkZ4/SsLvdHRFLaR49cqkWiwIvLvIWfA6Y6fzrN/AV6F4i8Mmz1KSS0uI7ZGVWETjBPHPt1zWN9gu/wDn6t/0/wAK641VbQ5ZQlfVHcXPn/bIotPhM00yhGx/CoYHJ9AATWnpMDQJJBKs4kOM5bgE5HUY6bTVHTdTXSdGutRmGSoO0vxuI/8ArnFT\u0026#43;EtVu7\u0026#43;0lvrwxlpFLhUXDE5I559hj2rkUNEzu5nysyPENhe30zNDeeXsUR4A3DCjFYP9hap/0ED/AN8V209ok/PzA\u0026#43;xqv/Zi/wDPST86pStsYNJ7n//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/mother_hu_20947bc789e7d2a4.jpeg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/IMG_0761%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/3200sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"334\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABIAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOrsPH2h/aZN0sybnwssg\u0026#43;Vh2PHI/EVrxeI9MluTbx6pAZWJO0MMfn0rzaHwLdCaFyyrJHwSCCPqRn9BVofDm4lui8usR88gKjc/iTXPGqy3BnoEWu2FxOIIdTtpZWOFQOMk1wfjjVIdXv4bRbkTW8CFiYjnLk4x6HAH8\u0026#43;akPgKdG/dagrnOdw4I\u0026#43;n/66x9T8NPp0oa6nlCBeCiL\u0026#43;nzdfwqKlZtWtYI02mdrY8rGTyQB/M1bX/WD6VUsPuR/h/M1bX/WD6GoOgdk\u0026#43;Y/J46Vy/jMkQw44z1rp/wDlo/0rmPGn\u0026#43;ph\u0026#43;tS9gP//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/IMG_0761%202_hu_184b4392bd492156.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/IMG_0703%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.5 1/1000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"303\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOLtNc1mzbzYL2WMtxwBj\u0026#43;VOn1TVr2US3GoXUrqMAtKxx9KzIXmQ8PgEVctlW4DF5lRgrN8uSSQM4Pt71DuZ2ZFIGkdjK7M/8RYk/rUDKMcgYFSykWz5E0bMeoTnH4/4VXkndm5kD46HmjUep//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/IMG_0703%202_hu_461012424776aa2e.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/IMG_0686%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/60sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"528\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAHAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APN7OIS6VMm1t/luVwOvWoxZyqxkMLSJkfOF6Ht/Ktjw\u0026#43;6qY/LCoApOcZGPxrq/Ek0UHw/t3MaCa4UcxH1zj6kHg\u0026#43;nNTJ2sjSEbps878QRqmoypGcnzFP6UlldadBG6XELu28kEKDx\u0026#43;P407UIp7g3V0cEQhd3YgnIHFZLOQR9KaIaOp0ESrawCO2llEku4\u0026#43;Wu75RkYwOe5/Ote9ubV9GWZo7jZ50mLfP3mAxkLjjr\u0026#43;lczoMmpA/6JHI4jO4KI94z9MVtQ\u0026#43;HdY1KaSW502TfO\u0026#43;5nkYKc/XqK5ppc12zqhL3EkYuoXnmWDIqSLPO26Y/w46gfhmsNwwbDAg\u0026#43;hrsb7w2YnWc3VvbPGQT\u0026#43;83nP6VzGppi\u0026#43;f/AEjzzxl81rCUXojCae7P/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/IMG_0686%202_hu_b4712779d6aebe28.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/IMG_0680%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.2 1/50sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"463\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABkAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APNVhheNG8yHAwSCVGeBxUM0a/bR5BPl\u0026#43;ZgBOh6f4111vtZP3YGQv0NUIpYnvXMihQj8kDJAz\u0026#43;PenJWVxx1dhbm0jn8oxiR1RCr7FYkNjpwPpWPqMJjslLxujb3BDA/3V9ea6\u0026#43;4uprPXnfKtDe7ZNgHMZI\u0026#43;uOw/Bga57xZIrTrhSM56/hWUXzao0muV2ZuaNdeHbqNYpJ9RjnA\u0026#43;baqFSe\u0026#43;M4q0dP8M2jTS/btSjNwDGcwKAw4JGQ38q4G3/4\u0026#43;D/vD/0IVowf6qP/AK7N/IUpp23Kp2vsbepXGmxzWrafNcTv5qb3miChAPlA4zgdR26Vz3iO6juLt2Qj5W2kHtirNx/x7p9V/wDQxWXqn\u0026#43;rH/XQ06asrCrfEf//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/IMG_0680%202_hu_734d593de5aa166a.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/fisherman.jpeg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.5 1/100sec  ISO 360\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"471\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AN2Vbq6vJRBFCrMnlA4K/LwzngHrlV/CotV1jWtN0dLg3aNco\u0026#43;HjEfXBwe3SpdNa1uLZ5riPyZJ5GMaiVkOzccdO3f8AGuX8fT/YIWisZWYlcuznzGXPHDHkDFTq2rGkGknzJ2seh21/bazpX2kSLtDFWU9Q46qam8\u0026#43;1/wCerfnXl/wsvZ7fxDHaJlre7hbzAecMoyG\u0026#43;vUfjXrGyH/nmv5VVSDi9CKc1JanPadoDXtxZT6pGomgt8SiMnaTu\u0026#43;T8QBVm58FaNMzTXe\u0026#43;Y843SsMDAGDg81oCeKBWl3Pgj5uPSqY1yzu18lmeMHktJxx3qLWVy3Jt2Ryfh/RW0fXl1C28qLThJLEiSS5fYBjcDjn5q7D\u0026#43;0IPX/x4VzWoSLfalG6Pss4/k2p12g8j8av/aLD/nqf\u0026#43;\u0026#43;BTc29WS4qLsj//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/fisherman_hu_b88222501a55642.jpeg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Vietnam/0%20%282%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 85.0 mm f/1.8\u003cbr/\u003e85mm f/2.2 1/1000sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"599\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AO2s/E\u0026#43;i3Mgji1GJiTgdQPzPFXb3WLTT5BFLvZ8ZwgzivF9Mgu4nKiJiMZOOQPxrrotFvPsJup7rZlN\u0026#43;0IXwMZ\u0026#43;Y9uK1lGlHVyOONevJuMI3O4j1/TJQuJ9pP8JU5H1p7XaPNJEhj3IobmQcg59Poa4KdJbGGKYt\u0026#43;6kjD7iNuOM4IPesbUL25VXmUlDIhXbnovUD6/40uSm9pC\u0026#43;tVU\u0026#43;WcdTr7fQ9FeJR9kVccjDMP61xt/4r1K21fyjJbSQxuyFo4gA3PQkY/wAmuitblxHjzMe47Vk3PhaC4D7L1k8yQuf3a9T15xnvWSjDmvJXOpNpe7oTaLF/wk4vS940Lxyg7PLHyjnAyDnGQevoKNV8LamIiU1GOQDkBnYGpdD0hdBEm2937z2QD8M81Yv75nUjdketKUIud0ibKy5tWf/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Vietnam/0%20%282%29_hu_3d958683cb0d3cf.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-4\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"spain-\"\u003eSpain 🇪🇸\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-5-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-5\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Spain/P1005679.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.5 1/4000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"339\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABIAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOnstHlKAHFasGiPkHbXk1p468S3EywW94XdjhQqoMn8q6W81LxhZaW94NdicxJvliVBlQOuDjBNdftpy1TMXTgjvv7FbuK47xR4r0Pw3rEel3cU0spAMrRgERA9M88nviuOX4h\u0026#43;IZHUNqNw2SBtVgpOT9Kw9XvZtU8XWs94rzMoBYyvvZwuTz/hUe1n0ZrGnG2qMe1ZluFIYghhgg17Crtv27jg5yM147bf68f7wr2Ff9ZSpdTOr0OF1uCGHxQqxRJGuAcIoAztrMP/ACNCf9cT/WtfxB/yNa/7o/8AQayD/wAjQn/XE/1qXudFP4Ef/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Spain/P1005679_hu_9a1e1e46b955c8e6.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Spain/flower-in-madrid_49034676377_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"\u003cbr/\u003e \"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOWg8NgWjtdBzJ5YkXZ0ArMezlilkit43mPQAJk47/SuosdTs7uG3mlnjEgULJHuC9euPw/WrWnCzubu\u0026#43;BZCQF2sh5XHAGR9Aa5\u0026#43;aV3c9SWHpTjFRORmsNSgicSwlNy7mjbkkdc1Dbad9pt2me5jjCDnOcj2\u0026#43;tdTd30T7hLCNj7lJ2YfIPXP49K5nWoVt7keVlUmUOVBOM1pCSZz16Cpq6M8n5QO2elXtL1STS5HniKsxG3Yy5DDOfw6VQam1bVzkTcXdHYXOuWNwr3CMqHbnyXHOfY1y93PJczNLKQS/PFRP/D9KWT7qf7tTGKWxrUrTqfEf//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Spain/flower-in-madrid_49034676377_o_hu_e375e765e547bb08.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Spain/above-the-sea_49034675297_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOmk1YXEBBHOMAdvwrPaWNA3zlmIxWbaahGNrYJ9s4/lStqVlHIWuUk2HgCHGf1ruulsfHynOtJJvUbdOGzWBfsecVszzWdzbrPZvK4x8ysOVPp/kVhXsvDZ7VMpEU6coVLMihv9oAzxUhvlbqc/WstOlP8ASs7ndKjG5bN2IwQp688etVLi/kkBBcnJ9aY/9aqydKRvSpRb1P/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Spain/above-the-sea_49034675297_o_hu_6ac49d921e096110.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-5\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"laos-\"\u003eLaos 🇱🇦\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-6-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-6\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/img.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APMbBkS0l8uFGkGG3sAwA57HIP5VNCJL248z9wZZW6bAOfXAGK3ptQtdP0e0uLGxtp7KZyPIuMsVxklWPBP3xyMe1ZdrcaXNq0tzc2k1raSykxx275EOegyeuKxTvd2MVds7jUrKLwr4altoLgrql4\u0026#43;NokAZAcEsNvAHGM8duleeXtvPFeOknmmQMQ5P3vf69K7/AFLSwNGe\u0026#43;itZ9UublGVWlyQkeDgjpk4wRwDxXHSaebiAS3chg8tAWjdsyAjA\u0026#43;6eeetEJpq5MoqDu2b40U2nh5oNZSbSIVG94o9x352BXAyQTkcjIxj8qmgafHqaXOnLqqHTYZPMRmAQh8bQ2D0z0/L612XxN/wCQOP8Argv/AKEK4Lwf/wAeupf7sX/owVzYabrUlN9bMufuKSR2mp2LRaHaWNoZpxBgG4L/ACL0wVUZzksT\u0026#43;B/Dk9Shm1IyJd6gI7hj\u0026#43;5kmQxrIiJ3PbJ6fSu\u0026#43;g/wCQIv0T\u0026#43;VcB4h/1tt/1xP8AI1SXU5lL3kf/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/img_hu_29852fd086dc0077.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1343%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.0 1/2000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"412\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AL9p40OqXpsLiNYYmfyyZGMKbSOCxIyT9AK3bDR18pIoLmeSMjGLVfJQjtmQ5dvqDXnFpqkN5ND/AGaPt09uArS3T7RuxgHlsEknIJxjAArTTxPrniRzClzKI2wGSBF4AXkkgDqd3U46UfWU1ojCK5tjq77Q9O0yATXafaTuLqsKl2XHQlmPOM9T61y\u0026#43;v\u0026#43;IYY1Vo7NrOX/WKJkJkYgjqTkg9a6C4tru5sJ5Ib\u0026#43;aKNJEVSJC52KCSzE555HT096x75LW6lju1LRYYIkkrmV5SpyFGTgEkdfauZVajsoLfsc7XM/dlZfn/AF1PNtHEuqXkFuXEcUSBSqDbu75IHU9OfYV2NvFp2mRTWFsbpjLKGl3kYKgjK8HkYB9MnHpXJeEf\u0026#43;Qn\u0026#43;Arp5/wDkJy/j/Wsas5KpZPQ1nrPlOnu7uQMNMs5DEYkWJgE2ptLYPGSScA9a4vUtQayvJBHFG3l7XDOuWOUB6kn3/Ousf/kYp/rH/wChNXD67/x\u0026#43;XH/XOP8A9F01FKTRjTV5ts//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1343%202_hu_9f9c89b598730c3b.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1334%204.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/60sec  ISO 250\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"390\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APOYonvDGMYRcLkY4PvWlplpZrMBPKyFZNpdR0GeeD26VUhslgIWWQqWVXiOSu4EZB59RWhaXMFjbz74/OmI2pJklATkc459/SsJdkc8ld2NK2jgsdWmt5JNrkkxvGcK4I\u0026#43;Vh16/56V2F5Z3F7phe1jeWRkQMBEzhcDBAPTqSeOeelcbcRq66ewVjceSFcgj724nqenBFWLzxtfRwJBJPJGhGU2KAAvoCc9PpUOnHmabMqVFzbktjO8ZaSljPbalDM5jvl4t35EWOMA\u0026#43;noMfnWbbXzW\u0026#43;nTw4ZtxDE7up/Kuh8f8A/II0X/db\u0026#43;dcn/wAu8v0FbtI6Lt/cdLoTrqXiaHTApiivJQTzu2E5BI/IflWd4\u0026#43;sItH8Qy6fbs7QKqsgc5IyATz3q94O/5H3TP\u0026#43;uo/rUXxU/5HOb/AK5R/wDoNEopq7NcP7qsj//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1334%204_hu_e258c7263f5683d7.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1329%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/16.0 1/15sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOStYi0azAqXMQ2ksMkkZx19a0J9EvdcWC40/b5cvygSyhC0iqN4x1HPTPtUugaNbyWsdzLCUMhMTyDLYkYrtwMYCgAj8etbthrUMWiXVnDp1uL2C\u0026#43;AUO\u0026#43;Ffed\u0026#43;RweDtxj0pqLMOXXU4qLdEDDHu3IfnB5ZT0x0qXdcf9NP\u0026#43;\u0026#43;K2/G2gy6Yo1WERwwzlftCKxyrMPfua477TB/wA9T\u0026#43;dTJWYuWx6KJjp2lrcvC6nlo4do3EcZqXSBYa55uIpI5wqkbQCcJwp49C2OnpVxII5rZPNHmMOjljuX6Ht07VpWsywfvo4ooXLZkeOMBpf9496qMai6GcsRSv8AEQ3Vgms6bdWSSGaQyqkq3C/dxwMEDtj3/WsX/hW59I/zFdFe65LAA\u0026#43;Izn\u0026#43;Dbwapf8JRN/wA\u0026#43;0H5GtVh5yVzKWZYem\u0026#43;Vs/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1329%202_hu_b3f7907d9e5cfc0e.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1315%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/60sec  ISO 400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"397\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AONjhvpJbueC8jWDeRG/2rhecjP4dveupsBYSWYmvtSlZzjzPIlUKpA6D29fpXK2\u0026#43;kz29v8AZ3lwXf8A1fklj7k9unoa0zYWckaziKQKGBaTB2NgHIx\u0026#43;VX9Yw6ine79Bxo13fTQ1pHsbuF4bSKKWAPnztzmQc8ZI46HGOlV9YtVl\u0026#43;y3Js7WK0iIKFI2XcOwLY\u0026#43;bnBqpp8mk3UjRCMqiAtksCM49On6ZxWXrlvHbrDMq3CIW2DLZU4GDx1x7\u0026#43;xri5qUpacyf4amn72zbSt6E\u0026#43;n3Vo86PHb3ELSOCTHc49ePu5q/qcVm8cTbLpnnyGaS4zwOB0UelYmlf6yD/eH8jW1qH\u0026#43;rs/q38645K0ro7G\u0026#43;piNaQ225/nkXcVCM3APy8/8Aj3\u0026#43;c0XixzJaqQ2U3ZO772HxyPwqa9/1J/wCuv/xFQzfeh\u0026#43;r/APow1opya5myZRTXL0P/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1315%202_hu_1d77efdbccb76d26.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1277%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.0 1/1000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"550\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAB0AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOMstC8rztkoeaBA7ow5POMADO7qK6DQvDa62pFnbpHKiqChkU55AJ5OQeSeldXpl9p2l6hBBG1pJvVVJESq0agclm5yMqOOtbmmvoVvqs1xFcxtK6kyAquCrE4APTtzj2z79DpyXQ4faQlq3br8jnofhneJIgl8lkyNxR2ztz07dB/noK7Gz0Y2EMSpKVEYwEK7tvsKlOt6bbjMcofsAXzj2qlc\u0026#43;KodjbEH1DZx\u0026#43;lEaVV7IVTE4WPxSPFYtVWTWUmZwY414wvBP5VoxamZdQmcEFWUbfT8qqwaTa\u0026#43;Y0g8wYOAMjHX6VLHpQW5lSKYouwEDbnua5H7Ru6fmenKMHT5JR\u0026#43;zyr70zTH2ycZEgIXgYqrI142ceZkfhVaO8uNOlJifdtGcN0PaiLWL2eTyhKEBBUEKMgfWmptPdnmeygtGj/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1277%202_hu_c6e2cc4c4eb09937.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1275%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.6 1/500sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"395\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOj/ALUjlQJImX3AABNxY/TpVafW5Le4XylSZMZwRtK\u0026#43;uO1ZcfjrUoiWEfTkjyj249azL3xdqdzPmJLW3YjBPlKWb8wa9GnOin7y09f\u0026#43;AebXWJa92Vn/AIf\u0026#43;Cb82ryXJGbIse2Jiait1urm7wltBAR08wH8sE1h23i7WLdQGisp8nq8IVsfhj\u0026#43;VaH/CfzHIk0s9Ods/A/DbVuvRWkIL7zOFKvKzqVH93\u0026#43;RylrqTz\u0026#43;RGsEMeOCQuSc/WprpbiFRm7kIXgBfl4rN0z/Wxf7wrX1L/Vn/eFeA21Kx6ik2mP0bR4tUImuXLojZZCOX9sjGKyrwwiS5S3jeKMPtCGTdjA/wDrV03hX/j0krlrn/XXf/XZv5Gt5q0Y26mabZ//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1275%202_hu_eeee69f797071995.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1242%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/640sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"411\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AObsPEmp2rYtby4t4w/mHvuPXLY6/T616f4O8XLrto8F3Isd5HxkYXzM9CAeM141azP8oRC5HbPXP\u0026#43;cfjXU6ZpLzTQtbs0TogM/mZ3FySQF79Mc1lawKGujN3x1FcG2eeWY3KA7IpZF2FD3GOhx6ivM7y1aNXiC4CSt9QM4/pXpWt2b2mnQ29xOxjWQYJJYJlSckH39PauM1eKS3u1Ese1XUjdjhu\u0026#43;fyIFSnZmqhoX9LtorOVI4EBnZd3mOM7R7V22kr9mh\u0026#43;0SEyOwyCf8//AKq46z/5CUX/AFxH8zXZW3/Hgn\u0026#43;5/U0SepUVoYOu6gbvSZSxbdIpl6DjHzYz\u0026#43;GK5qK8N7btazorEO7oxGdozjH/j1a2o/wDILP8A17t/6AawLD/j4P8Auyf\u0026#43;hrQloO\u0026#43;p/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1242%202_hu_b231865c51fb78f6.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1197%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.0 1/800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOUSyiutDU24jVkmy80nygZB4z07H8RVGCGLzlE7PIUwUMYOSOO\u0026#43;On4elRR6m6I8KRL5TNlSFIHtx0//AF1oounHTxdLcGGZSA0ZH3mywPPYcr\u0026#43;Vc8pSe2gRgkt7l29ubq80WCFHKWzMWaPJLP6bs\u0026#43;hz0x16VlTW4EETMxOwhFXd90fj0HPeo9Vvo5reGRXdj5efkG0Eknt2x61kx3M/lbXkbcOUV93Hv\u0026#43;FK027tia7HrGnafHZmYs0a7Qqxnz0UdM/nlMcf3qivoYVvCEuJJVj/AHgaOQEEgkY4HuOaS7/1B\u0026#43;oqC2/1b/SvMp46Umro9meEik9R6QJdyCCZyqS/MxmuF\u0026#43;XIXIGQPf34pB4btkZJvPicqAFxOEC4yOOfYfnVe5/18P4Vbf8A1Aq5YhyeqIVFJXR//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1197%202_hu_b5a3e73ddb18ca10.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1185%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.8 1/4000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"501\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGwMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANL4dXk\u0026#43;l6hd6TM5FvE5wNnTrg5/AetemQmOQr5L4VB90DHWvBbK\u0026#43;nsb9byxlkleNFAMjbvMAAyH/GvQvDPjqzWwnOpKkVyrfI8ceBIMDGcd859qyp1YfC9xyu3foO\u0026#43;KF80WnxWe9THc5JDJnbtI6fXNeTpoIuUEwIAbplsV2HjfWrPVNWM5V3jETRQkEEFvlOcDpwx/KqOm6jbR6dCh84ELzgrj9TVP4tDRJctmcal01rdEI\u0026#43;VkQPiPuTXb6boUcmiD\u0026#43;0LnZfTHES7gFXOcFu5Bx2pfDvhLTYZYrmabzpojuXggA/nWZ4lt7q419riyeTZIVDNImPKx0x1yPyrnioyZSp8iuzZttEtJdOubSZEmmhRtzoScyYwcE84PH4AVhR6VLCnl/Z7s7Seckd60JdRvrZvPSznjmMQjZwokSQD\u0026#43;LgggnHpWW\u0026#43;v6puP7r/yWP/xVXByXQJpH/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1185%202_hu_fe9940c39dbaf986.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Laos/IMG_1170%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.6 1/60sec  ISO 500\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOasrQSEDbkV0mn6KJSAIx\u0026#43;VM0e40R03C9hARdzAsAQK67Rr3R7mGSa1uY5EhGXI6gfQ/SvRqY2CWhxYfL5J3kzMmstN0kW4vJEUzzCEcgbSRnJz0HT8xV9NFtbiPzLYxzJkjchBGQcHpXmuvo1zrN3Mlw7RSSM6eYmHGex4HI6decV6J8K5VTw3ObmV3c3JOZOgBVSMfqfxrzqmJkvek9D1YcsdIo8lW40me9mtWvHhswoZJ0ibOcYIx1xk\u0026#43;lWtD1e00u/ZjLM0CzhWAzh0APzEAcY9P9r2rl4vuv8A9c//AGYVbi\u0026#43;5cfVv5UpGMN7nVXPiGzTW0vdJuJUid3M7CM/ugVPbv3qo\u0026#43;r6WqhE1q\u0026#43;2dGCx4LcflWDZf8el3/u/0as5utTyofMz/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Laos/IMG_1170%202_hu_2d7ff920d77ed47f.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-6\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"greece-\"\u003eGreece 🇬🇷\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-7-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-7\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.0 1/800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AH2Nzd6XrnkyXhms5EacR4DbY8ZyPwz\u0026#43;IxXcWa219bJcWsqTQvyrocg1yq6XHNqVjeortFG\u0026#43;QXxkxH5wp9cH26Hv1HPeFdSk0SC\u0026#43;hhlnWQsPKzjaRkkEgn35\u0026#43;laUZytyx1Na8Fe8tD1RbIelPFmPSsKz8ZloVNxaqzfxGInH8qvDxfY5wYZM\u0026#43;gxXS1U7HLeHc8fj8cXiQqkYJKMSrHjAxjpWdBr0gkZ5lDM3AwuAOSe31rJj\u0026#43;5Qnb61hQioSuh4itOpFKTOmh8REjbuXA7snIqU\u0026#43;IFdTltzY5znn8hXML1NSw/fP4V287OKx/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0_hu_314f147b05ee31d4.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0%20%284%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/6.3 1/2000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"420\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMOTS9VuJC9vG4G5Qo3qAfXqfpW5a\u0026#43;E5rnAku7SBtu5ld2O0e5AwOtSXOn\u0026#43;MGWC6ElgrSINrNgGMtj5eRjPP86lttA8W3sUtvqdwkcFwf3kiNuk6E8HoATjpXZ/aFaMm49fmcSy2i0lJ7dtDDutPW1umtzPBIwPBilDhvpimLDscBwduRk4qPTNBbTrs3ckdrMsUgT7PISepH8WR8w3Dtjr6VU8S\u0026#43;JTJqT2UNnDEcjJjA5J7Yx/SuinmznF6XZhXyfkknGVl2Z7G72t7A0MsPmRSfKVcZz\u0026#43;tRw6PbxhWguLuJQflTzyyjHsfyplr9xP941pRf6ofU15O\u0026#43;56\u0026#43;xyd/4bH9oWQlvJDA8wXaoIYvjIOc4/h9K0IPCuiJqQvksle6yFV5Duxt6Y7A\u0026#43;4Gaual/x96b/wBfY/8AQHq1B/rl/wB9qcIRgrRCc5Td5H//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0%20%284%29_hu_61d3592994f74dc8.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0%20%283%29%20copie.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/6.3 1/2000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"229\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAAwAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AGWvhrUr63FxFGgiLbQzyKvP4mrkng5rd0iuLlhKy5Kxxbwp9M7q7Wbw/az3UTyzTvFCpVIN4CAH2AyfxNXZIDBMPIlaFT1VFXB/MZr0J5lWfw6HnUsrox\u0026#43;K7/ryOEHg6xigL3N5cBwNxQRKpUZA5Bb3rJ1PRI7WL7RZyTPCpCt5ygNk56AE8cV2t3YTXV2z/wBp3cfmbFYIsRBwcjqh9awr/QxNsWbUryRIjlUJjCnvyAgz\u0026#43;NZwx\u0026#43;IUrt3X9eR0PLcPOPLFWff\u0026#43;mf/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0%20%283%29%20copie_hu_ed9e70af30b1a2ee.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0%20%282%29%20copie.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/7.1 1/1600sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"202\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAAsAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AM6LwrrdwVzZPGr4w0pCA5xjqR6in/8ACGa3vwLJmBYqGDDBP516Xd4W5UqiKXRmYhACSNoBz\u0026#43;X5D0rFtLqc3qxeYdiXUu0ADggLz9eTz716qzGo9bI8x5fBaXZxK\u0026#43;FNafG3S7rnnJjIFXIvA2uFA7RxQrtDHzZlXbk4GRnIyRXa2kjpcRKjECOWeNcdlz0/QU/VVUZbAJdY1YkZ3DfwDnr1P51H9pVH0Rf9m01vJs//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0%20%282%29%20copie_hu_9a2eb3b71532aeb2.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0%20%281%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.8 1/4000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANu10kRqAFq/HY47VspaqMCpRbD0r1ZYls5Y0VHYy0tcdq8O8XrKvizUllkDsJ2AIOcL2H4DAr2bxF4x0Pw0zw3c5e7VQwto1JY56c9B\u0026#43;JrwnUrv7fqd1e7Sn2iZ5dpbONxJxnv1rnnPmQ5Kx16eI9XMBT7TMQVz975hyO/Xt\u0026#43;pqzHeareWonW7uLiNOWCytlPrg1kQfeP8Auj\u0026#43;dbvhT/kD6h/uNXY5cuyOZRct2zCv1srmZpZ4hJO4yW3Ek44rm7qJY5CU\u0026#43;4enNbU3/AB8Q/wC6ax7r7i/7xqK6ThexNO6luf/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0%20%281%29_hu_4408d64bbe09346f.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Greece/0%20%281%29%20copie.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/11.0 1/80sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMv4aWixiHVUAx9razus/wB2QJ5ZH/Axj/gVeqWb2GpQtLY3MNzGjFGaJwwDDqOO9eU\u0026#43;CpCtpqumPGvkyXCPlXwY2U7lIO0g4IHWoPAGr3\u0026#43;i6rqNlauhtzkssp6EHAIwOv8AntSc5a2WxUIpKN3uevTWCEdBWPfaXG4YYHFYl54z1GPgtChJxzFIf6Vzl74x1ktIP7Qs13cjELA/qaSnVfQ1caS3ZxVpqs1orqsULiRix3xg1BHcsksknlxt5mcqyggc54qGitzz\u0026#43;Zll75nxmGHA6YTGPyppu2KbfLT64qCimK7P/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Greece/0%20%281%29%20copie_hu_1f03dead56b2e241.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-7\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"france-\"\u003eFrance 🇫🇷\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-8-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-8\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/stair---paris_49034675782_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.0 1/60sec  ISO 2500\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOh1Tx7PcyiLTP3MZyBK2Du/z/kVz9xqWoXcm6W7lZ5H2thsAj6DjkcfhWRp4NxcC2H7vdktxnyyOc\u0026#43;/SuttIIUbZEm0sWAYFQzcYByee56e1EK3NsW6aW5yskk0cLkTSeXuwMOQN3r9f8arefdf8/V1/wB/Hrt7u1ilBt7xhLC21I5pB\u0026#43;9il9/9nkAg\u0026#43;1Vv\u0026#43;EWt/wDoJxf9\u0026#43;v8A69TN2dtfvNYRcleNvuOb0E51AIdy4RschscZ4P4e9LamG9uEM8jCaTB3BsbScbQB6Dgdf5VTtjNaTiRFxJFzllC7e3NWvOhVkeG0RJF\u0026#43;ZSCx2jrn2HH6dK8tzWzOpQOit7k39narKscskv7uTdyQVOd2COTgZz6jpzV7\u0026#43;xrf\u0026#43;\u0026#43;//AH5j/wDiK523SewsLISLOzyzMyKW8vBbaAWwDxkZ6H69q0d2qeqf\u0026#43;BJ/\u0026#43;NV69K0opyOGfNFuy/I//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/stair---paris_49034675782_o_hu_a7c5a7081df03831.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/shooting-at-bordeaux_14495490610_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e18mm f/16.0 4/5sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"283\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAA8AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANvRdFi8gCRVKnsDxXQQ6LYhQBEMivPND8RyxRBbq6MIz1EO/wD9m/pXTR67p80RR9dnTK8\u0026#43;XblT\u0026#43;eCfypTjJPU3jWjJaGpqWj20\u0026#43;Yl2rIVzjviuC17wrJCjOp478VtyW/h6Scu99PKSucsr7uvqTWJrVvohixD5rcnlyx/maqlKSehNVxlH3vzP/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/shooting-at-bordeaux_14495490610_o_hu_fce6145e87b3ed2b.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/set-2015_17613401154_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"iPhone 5s back camera 4.15mm f/2.2\u003cbr/\u003e83/20mm f/2.2 1/120sec  ISO 40\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOYk0wWdvaOW/ePAyPzx09vrS6Za2keqQPOQIsrnIPGAeR\u0026#43;VdBqls0ul6diBoTPndk9OFqnceHbl4HvDKPkQRpG6HIO0c59\u0026#43;ay51bVluEm7pEWmabFceILjyiGiljcI4TGDzWv8A8IvJ/wA/C1J4St3e0V2gZWhDAs2Mck8\u0026#43;9dFg/wB5f\u0026#43;\u0026#43;qlt3LjFW1NO2sLW7hWO6ghmCnK5TO36Z6H6VTi0h5rljdQ5s2DEDdgY6Aeua5zSviBsRVew5A5bzcdvpVmLxvsUr5B8sLwpfODn1PPehwuVGdtja1D7PaWMkUMaxqoUKBwMZ5rD85f8kVmap4xWZWVbcYPvWP/wAJK3/PH9KtJ22IbV9z/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/set-2015_17613401154_o_hu_1c24d2a78180522d.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/parisian-vibes---lumix_46528552951_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.8 1/60sec  ISO 6400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"450\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AL\u0026#43;nQSNp8ccI3SwuGO4bhjPzBTx04GenAq3qWjAWl06rCswh8uJGXbzjIAI4xkfn6Zp/hIP/AGKJFT7NbzKZFSdsmE9Cu4YBGOR061h69Dpup\u0026#43;IjPqWqiA2xC26FmyMfxA5AznPGPTmgDh7XwpLeX0zXEMzQ24/eLCmZM\u0026#43;47Y7n6etW/\u0026#43;ET0z/nz1L/vlf8AGu3jvdEGlg3epWqtLKCskWchVJG4jnbk5UnnqvTPCfbvDf8A0H1/7\u0026#43;N/hQBR1HWbBNOaCztbeSys4mWKd5irAhjhdmMH5B1I5PFUdDudN1O3mW8ihglaQyPb7TiPPAwPoM9\u0026#43;tcnq7W0mmQxopRwhaMqARxjcp/IEenPrXPrcMHZsnJ75waAOv8RX2k/22YLYvHEIzvWMBQ75BX6HgH3IFZv2q2/6e/8Avtf8K58fv5ME4Jp/2Q/89F/OgD//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/parisian-vibes---lumix_46528552951_o_hu_da7d7dfa2b0b2c70.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/montpellier---street-photo_49033955688_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9\u003cbr/\u003e20mm f/2.0 1/12800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"494\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOZ8N28N7drbz3yWrEbhI65GPcZ710EttbW9zLb3bwx\u0026#43;W2zzN3ys3oM8\u0026#43;9U/A3hYakEuXfyQhxsc8sO5x35rsPFWl6bMY7xmJm04B2AwQQFwu71xtx/wL0oAy9K0ufTdUa5gs55po422JHHkZ6fN7da3P\u0026#43;Ep07\u0026#43;N7pW7jyTwa4u0\u0026#43;J2pi8ibzAsRO7ydowVGAFz16c9eua6V7qG8ka6jtIykxMiku2SDz60AV/Coj0\u0026#43;/khSNwnlxIhLYMmEG5sHsSTSa3exNPIgGBdSGKQ9W2EZAB6A5UDn1qvd5i06JLmJU1GJ9mxW/gXqOCe2f85rrYdB0e5UbrXYiqDkMcqwAOc\u0026#43;p3fpQB49o9mmgyDWNVhyYnMdpbNgmSTkEn2XHX1/DOsPiLqsYCEISvGRGv/xNQeJrZD4zawuriRreOVvKCY2qr4bjjGeRk1ZbStGDHMYY55JY5P60Af/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/montpellier---street-photo_49033955688_o_hu_315c435f91d738de.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/LRM_EXPORT_789848056691977_20190529_224156624.jpeg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/2.5 1/6400sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"470\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABkAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOos7qwuXjkU2Q9zIr/rW1Fawz8AxsgOB5YA/WvPbDRruaCNvIso32kfPKSe2M7QM9\u0026#43;a6WCyfSreadL7y441LYUZ/mT/ACp\u0026#43;2uxeyXc3H0m3RTJKMqM5AIzWVqkGn2dm086QxwrL8zygHAGOBWXYWt7DpP2G31SaWeMM4SY8Ou7sR0IyOea5bX5pPOkguFkhZydslxOGIPQBeuOTmh1pbD9hGJ6BY6NZIgw8w9Mt/wDWo1zSLq60\u0026#43;Wz05ULToVMs0uAmfYA5qe26L9BWinUfU1yqx2SgkzmNB8PataTLNqupwT8YVYIioAPufcCreraDYahCVmeXHsQP6Vqr/wAe6fSP\u0026#43;dVJ/uv/AMD/AJ05a7go3ep//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/LRM_EXPORT_789848056691977_20190529_224156624_hu_8964c66810c5025b.jpeg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/LRM_EXPORT_27799136892154_20190601_144801192.jpeg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/5.0 1/500sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"400\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOb0W3tpVkuZzGkSYG4thgT06gj9D3q7penafNrN1eTecLOC4dlkiHBHJxn6Y7Z6Vd8W6Jb2fiIBIwlvMAzqDsRDjgKQuB0GM\u0026#43;h9al1XT7\u0026#43;4sYLuG5gtXjLLsklVFZzjLAYH8PY0AZkFhps\u0026#43;uzz4k\u0026#43;wqFaN0dVB45BOMZx2OOTzXTeHDHbarqWsSK8UVzaStG7gkZaQtgnGB9ehxXE6gj29iYrm6SeaSfzWaGUOuWHPA\u0026#43;i5J/CtDw1fzWukzhJwk6vv2s5RgmMcHHGc9vSgDrtfieSSS7EpR4SGG1RnpH37ffPIrjtN1a4uVS3vD9pjEqMRISSeTk5Pf3/Q12ut/8el1/u/0hrzzSf8AXL/vJ/M0AdF4otjaafFeSSCV7l1KDykURgY44HP6dT1rH0/VPMsL4\u0026#43;TtWKFB8jYLZcA5Prya6Dxt/wAgDTfx/pXIaZ/yDdU/65Rf\u0026#43;jFoA//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/LRM_EXPORT_27799136892154_20190601_144801192_hu_d93e9284e0183e91.jpeg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/le-miroir-deau---bordeaux_32037005992_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e18mm f/13.0 1/4sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"317\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABEAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AGvo/kIskFy5JU/cAYfzrT0eCFJE\u0026#43;1RsGI4kCHGPf0rm/wDhDvLRWSMhieQCVxWhbaPqFhbywW6yJFdBUnbzCdoyOfb0z7mq50zXmfQ7Oyt1mQQi1\u0026#43;UElpi4J9ulXLmXTtJaBrq6\u0026#43;z5OSxHyke54Fca\u0026#43;hy3trH9ou5JGgJiSPBXao6DPf61WXwdC8m50DY/iYEk1LmmJNo0Ln78f41f0/wD5Buo/9ck/9DFULn78f41f0/8A5Buo/wDXJP8A0MVgthskvv8AU2H/AF6j\u0026#43;bVFa/f/ABqW\u0026#43;/1Nh/16j\u0026#43;bVFa/f/GpkOJ//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/le-miroir-deau---bordeaux_32037005992_o_hu_a4313962b38a7995.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/hike-in-the-french-mountains_29283989228_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/14.0 1/200sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"365\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABMAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOztfFVrezi3ltLq3WQbk85O474GeKsz\u0026#43;M9Kt2ZTM5C8MVQkLXPy2WpW2f7Mgt543znfOVznqDlTn8xVQaGfLjnubAR3TbsIl02xcds7SM9\u0026#43;fSt\u0026#43;ZPdEcrNW48a2arKsazKM8SMg2kdScZyKw7v4gTPEwjTKv9zKlT/Wuc8SXEcenyPayCPClHimdXkOeD06dePzrN0GOSXTDKsBkIcKMplSAAAOO4yfzp\u0026#43;0cVdITp33Z7R5SSRlXXcD1zUxtoGi8toUZD1UqCDUcf3asDpWZoZs\u0026#43;i6XcBoprC3kjJBKNGCOParNtZWljCYrO2it0znbEgUZ9cCpf\u0026#43;WhpT92kB//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/hike-in-the-french-mountains_29283989228_o_hu_acf6b56a114ee24f.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/49034455146_7079f3501b_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/9.0 1/100sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"555\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAB4AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AM7wh4I8O6r4atby\u0026#43;tppLmQuHKSMM4Yge3TFVte8F6FZeMdE023trlLa8D\u0026#43;cpkO4keh5rU0HWbHw94S06S8vJ4vtFxLGiRIGIw5yTnsMj86veJrPZ468Ll78v5jSYk\u0026#43;X5eB/jWzcLIxSq87VtNRz/Cvwqqr/AKPqG4\u0026#43;k4A/UVzF14K0q38c2Wixx3cdtcWzSv\u0026#43;9VnyN3Q4x2FerNZwnhtaOR2EiZrkL\u0026#43;1tT8SdOH2x2hNgx87qercDipbpDpqs29Oh5n4laWLVk0/cTFa5Me4bfvnef54/CtzWNZ1y4vNM1VFQ21soa1mMA2R5wCHOMHBHeuMg\u0026#43;RmXrtOK6SFZNTsra0MpUySBQzfNiuWckmezRw3tYTqc2yvsehWI8SyxLMfFWhAYyREsWB\u0026#43;O2sfVNUvdM1hdQvfEVjLcxQ7YprZVk\u0026#43;X5srgADPX86qWfgWdtKvbhdTRVgRtw\u0026#43;zhixBYEcnj7vX39qYPh09/p8l9/axG13UoYB2dl659v1rFyg\u0026#43;tjOLlHZX\u0026#43;4//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/49034455146_7079f3501b_o_hu_cca15474fc352752.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/41344673670_ea50e94101_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/16.0 1/40sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"400\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APP9G8TXuluAkm6In5o35Vq9Y8KPofiSzFx9rWKYEiS3bGR7jnke9eGnaWO1No7c5xWzoGk6zfzh9MinJU/6xCQB\u0026#43;P4iu2niKkVypnLOjTk\u0026#43;Zo911O90TSoViSAXkqDC7zlRgHA9PwFc1f8AiO8uo5Y3UW6MCojjG3ntnA6dhnmsixv5NNs1t9VdmvFyN5k5GT0yRwf5\u0026#43;tWTrmlmILboUnAAGSA3uASOp/WvLxOJq6o6Iwiloec6Tpsd28hkYhYhkqP4vxrp7PxXdaZClpbW8KwR9FC4/Uf1rE8PdLr/AHRTJP8AWt9K9aEV7NM5ZSfPY6\u0026#43;5nTxLZRy3EKxSsCu9DyOv51xl0DbySxBiwR2QZ/LP/wBaut0T/kHwf73\u0026#43;NcpqX/H3cf8AXdv5muarFHTA/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/41344673670_ea50e94101_o_hu_64eabe4e3314ad33.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/29283989748_148d6d9c05_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/13.0 1/60sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"401\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOz1ZNASLy5ZpGwdzBXLHI\u0026#43;vGa5q4m0sgtZJKfm2jewx/KqdteLNaxm8djcBBujaPG36L3\u0026#43;vNSm50/5WicvJ3LAZH6/44q54\u0026#43;tTVotnO6NOWrRM7GOWOLH72UYES\u0026#43;pyOv5HNUZlnkuJIAzs6naxzkDHqewrOvr7VlEZ06KNlLEF0O593YHP6CsvULnWHt38/7YsZQHMSAKfqVrByrVtZy/E0SjDZG7q2mI5do5XQKpbB\u0026#43;b8q5yVpIcHzCx3DBPUc12Gofdl/65GuPu\u0026#43;i/wC9/U12VYRXQiLJkvJZZoHB2O2fmU46H2/CmapNLHcHzikvmHL4XGSePeorb79r9W/mKfrf/Hwv1H/oVTCEeS9uo2/esf/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/29283989748_148d6d9c05_o_hu_1339f2ba74c91075.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20copie.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/6.3 1/250sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"450\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABgAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANiHUIGvfsZRmkUq2RyBnJB/Suj014bksGZFAUEA8EHnNeYWdw0llcPEZHnDAo7H5uAfU9Oat23ibUbSKUz/ALpJI1\u0026#43;YAFx0BIGcevfHFRGU47Gkoxm7M7LxFZxvfwkMERYx859z29aqaXftPLNdNatEYrpvvtkyYIOfasYeJ7S8wJ72aTyyFWSSEISBzg44qxpup28trKnmqru7NtJ5Ga1ewJKLscVa3OGZ53IhRMtGBjp3zVkXzO3mSEB5DkgH7o7D8BWa/wDx6XX/AFzP9af/ABCiO5D2Ls10uPMXt1HrVOa9G0FQrxn\u0026#43;FjjH0Pb\u0026#43;VDf6k1QP\u0026#43;oP1qmK5/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20copie_hu_14a1198af7fbc38a.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20%288%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e18mm f/16.0 4/5sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"283\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAA8AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANvRdFi8gCRVKnsDxXQQ6LYhQBEMivPND8RyxRBbq6MIz1EO/wD9m/pXTR67p80RR9dnTK8\u0026#43;XblT\u0026#43;eCfypTjJPU3jWjJaGpqWj20\u0026#43;Yl2rIVzjviuC17wrJCjOp478VtyW/h6Scu99PKSucsr7uvqTWJrVvohixD5rcnlyx/maqlKSehNVxlH3vzP/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20%288%29_hu_4318755a1dfa237.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20%287%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"\u003cbr/\u003e \"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"401\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/ANjSPiHFazNFfTvcx/3gPmT6\u0026#43;orq4vFmnT2yTQF5Q/ACgZB98mvGb3VIrm3mt3tIl8wYZwuGHPbnH5ijTNVutLZBYSNGyoUBUZ3D35xWEKye6uK9/hPYdS8ZaVpNobu8lkReip5ZLO3ZVHc1x2o/FV7jMVjZS/MNy9AQPfnn8q4a\u0026#43;uZdVkWS8uZZHQHadgGzOM9PoKgisEZ8rK4J5AAOe3vUyxEegua25Z1O3RXbZlcjJ79x/jWPKjKJH8xsxthQOB/nitzU/vn/AHT/ADWsW4/1dx/10/xrmo7D6DIZpVMbtIzHI6mt\u0026#43;2fzPLkl\u0026#43;c4OMALj8hXOx/cT6it\u0026#43;0/1UX0P86qbew\u0026#43;ZrTof/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20%287%29_hu_a98001f8262d60ce.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20%2812%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/14.0 3sec  ISO 80\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"377\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AJ7bxYt7pDjdtk/ibOeP6VhXN/dySLGHZdzFQcFgMfT6VyVrqN5YTxOIlDAn/WKMYP1rpo/GOCfP0\u0026#43;GdONrAnJ6Y68Y4HbtRVq1I/Arjp0IS\u0026#43;NlYXV7brvkDMuCSM9ADgnH4ikudQRrXz4yzunXHQDr1qVvFIu7wieCOK2uMrMpJYnjr\u0026#43;HasTWTGs5/s7e0LZA4PT0x6U6deUtJqzFPDqOsXdE3kqzAktke9SeVGihRGpA9Rk0DqKc9c7O1EThSANoGPSkVjEMISB6ZpT2prdKpEtn//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20%2812%29_hu_227cc1b685cccb0d.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20%2811%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/13.0 5sec  ISO 80\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"406\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APNrLSpL\u0026#43;4MasI40XfLK3SNR3P6ADuSBWlBbwi5S10/SRMT/AMtrlS7N74\u0026#43;6B7YP1NbOn6eU0phtOZrtUkHQ4CnaPxJP5V3sca2GmKLWBfMwNox944xj9R\u0026#43;ddWLapytFGGHXtFds80uNItrmc2d3ZxWU7cR3EAIUMegdeRt9xjHXnpXKSwSQTPFIpV0YqwPYjrXYeKdWRr8CWBcMofcoBbHuCP6j8KwNWlS/1W7vYgRHPMzrnrgnPPvUUlzrzHUtF\u0026#43;R3\u0026#43;ifaGvbe1uZVmhnUJKAm1t4Jw4P0OOnc/Wu4do1CxmRhsfapEY4YsMHr0GAPpXFaP/yFrP8A6612E3\u0026#43;uH/Xyv/oS157qSk9Wd3KlseS\u0026#43;NdVFv4nuLe2TMcMrlg6jBZvvcDtzxVfw/FZavOY7xpkIxgQouPzP\u0026#43;FVfG/8AyOGpf9djUvg//j//AAre7S0ZhG0p2Z//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20%2811%29_hu_6a79df0d41d1bb15.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/France/0%20%2810%29.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D750 + 20.0 mm f/1.8\u003cbr/\u003e20mm f/11.0 1/200sec  ISO 64\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"336\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABIAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APRLjS7WcfMFwvI7FT65qpcafEykgDjPTmsPT/Fk2qSebb/2bcP08sXBXPocMuRVpNd1mNZPtWkQyFpDsMM2MD0PH60uaxryMqi3S6gdzC0e12Uq6kHgkZ57Hr\u0026#43;Nc3q2im8jPlAxKR97HJ/DtW7catqEkrn\u0026#43;xGy3AYTc46jt0rIm1bXPJwNJWVuhczAAHuMVtCs0EoXRyUwEGolIh5akjITgda3tIurgRhRcS43KMbz61g3f/IT/ABH862NJ\u0026#43;4P99f5iufoaLc7LJzjJxUTn94foKkH3vxqN/wDWH6ChFM//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/France/0%20%2810%29_hu_499f54c6b0b48965.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-8\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"malaysia-\"\u003eMalaysia 🇲🇾\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-9-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-9\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Malaysia/IMG_1768%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/3.2 1/800sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"595\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOVkuhNOwkYoDjIA6Y4/Guj0DSNQnh\u0026#43;1KjTQRblkjQD94AFGcZ9T0rBK2rsshiU9DwMDGa6LRdeXSoPI86VFcEb3cFU3EcgY64z6ZrCD1EkT6hpUFyYpUMjLFE2E2hSmHPTHQYxx71lfapDKUS1WNeQF5AAGc/Xqef1pbTVL/UdWumaU3UhDNE0mFLewHTpnj2qjKHtNTCXdxHZxy85xnAz0wP64p63uUzNjjlMbRpLlwQCpUEjI6D8auzfuIp0eUMjwoXUdm2qDx9T\u0026#43;tZllPIpk3ssZXhn7gD\u0026#43;XWtF9SI09XwHaRs5YDDYI4yef8iodxLuQ6RbC71YRqWQ\u0026#43;VICVzxgEgCtjV7JWkhurtZpUVMFcEkYHGT6d/wA6h0\u0026#43;8tdPTiFYlYkAucnoPy4796RJYtRuQsTFm6O7PhevUisnUlfyFc//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Malaysia/IMG_1768%202_hu_588cbcf83cd872c0.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Malaysia/IMG_1740%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.5 1/500sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"496\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AMG5uZpp3SBUeFYQ\u0026#43;Au7rgZP8/wru/DnjQPdpptzCW2ws6SJySFGdu31wK4HQLyFY/sJyZXG1lZxjB/D1p88dybYC2O268tmaRGGDjOen6fTtWFN8krIylBNFzxZ4qufGGrR2dmWtraJSwDtjcB3OOO3f1rOiGtrCirpcTAKAGJGT\u0026#43;tZsd5ElzBIsRV4VVWZOdwB5JHf0q2/jCYOwhtGWMH5FEnAHYVtfUpJRJINAubO7nuINqNEWTY5x83Ukf7PynnNS/2drjW8dxBaKZ0By64JfHt9cfnW2sUdrrLSRW8UcNxGsd0HYsNgVsgkn\u0026#43;6ozx/jSyeONO81/IVkQtxiVlzwAOh9AKzUZc9ktf69SqsqdNXd3vsu33HFDSdSjjF9PErgkF1VgSeOP0rZNla5\u0026#43;SFNvb6VdvfFdm80V2gbzI\u0026#43;GzKzZXvwTiqMniu5EjeXYxlMnbiLdx25zz9aJx197T0/4dF0ZqavBffp\u0026#43;jP/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Malaysia/IMG_1740%202_hu_14d112edd92856d9.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Malaysia/IMG_1736%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.5 1/1000sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"570\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAB4AIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOOaSWURSWZYb43Zlj4BPc/U9PxrS0bVpNO1uyvRMRFEoMw3cMMY/EkevesrRb2T7RMtwFLR5Rtx2gjPQ06eNjDHbTfKSWVn79cce2AOKygrSRm4qwzxB4h1PWJnuZriSdJGMcWeFVc9h05qssd9p6yQ28SXEeAzSFcjjPr0/wDrVe/4Ri/MaxLcwmMfMoO4Z9O3vVTUtQSztW05pJBMPldl\u0026#43;XI4x\u0026#43;n58Vu2mxqPKixpdvb2U0h1GfY8hMaIgZgzDGcgEHv3q9dwDVLiBrRk8mV9xVPlBHOTg5xnBpY9LvPs0XnXKuyKzEdQzEdckdsDt/8AXnhsNQjSFEli3C2KM24/e556dOT\u0026#43;dYOUb6HTGkmrst3GpfZbddlrIRtZ3YFTwoBIBP4dKwtd0aXUrWHUYUDSkYYnA3rnjA7EcVctkkugIN7CWBZUlcPtDlicducCobNLzyre285We1cmQk4DgkY5HPc0lo9DR2cfeP/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Malaysia/IMG_1736%202_hu_2d7b9b6d76aac406.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/Malaysia/IMG_1734%202.JPG\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"DC-GX9 + LUMIX G 20/F1.7 II\u003cbr/\u003e20mm f/4.5 1/500sec  ISO 200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"478\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AM218Rz6e3nRxPtX5njAyrDtz2Nb03xEt7eVoobZgIwQ5lO07uwA71ydxAtt5lyjYikyBED9wcH8Bwax9PtUv9bjsA5l3MzKVPOeufTIANRRqSVPR6HG6EZTvbU7LS/iZeJqDnUraQ2sjhAyp/qyOD\u0026#43;v1ruf\u0026#43;Ei0r/n\u0026#43;h/76rzfxNo97BfW7Q289xZPh3SQhi0i8HOPUAH8TWH9nH/PJfzetadSTV4/iKpQSdthWupLh5bJofNPRA67lyBj/ACe1VtAtp7TX1gWbyZpEYLIDgKSDzXUaXYW9lcSPJcRtcFmWVsYwe/BI9/rUGpWYur4yoo8y3hcJJEQMggjn3yRz7VzuNqTO2Cs02dLrVy8Ph6VomLvCFQEg5yWQ1yv9sX//AD6Q1q6pff2t4Zkitk8ySZgxjQhiP3ft7gVxv2HVv\u0026#43;ecn5muShFuNmXircyaP//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/Malaysia/IMG_1734%202_hu_31e7de99957345dc.JPG\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-9\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"united-kingdom-\"\u003eUnited Kingdom 🇬🇧\u003c/h2\u003e\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\t\n\n\t\n\u003c/style\u003e\n\n\n\n\n\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-10-wrapper\" class=\"gallery-wrapper\"\u003e\n\u003cdiv id=\"gallery-c24309d4987954ddf1f670933cc34d47-10\" class=\"justified-gallery\"\u003e\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/skate-shooting_15349106077_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 50.0 mm f/1.8\u003cbr/\u003e50mm f/2.2 1/4000sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"527\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABwAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOj0nRBKwZkIFdbBYQ28WcBQByT2qlproqrUHie8ENnJ59zHDEsZaKPzNpmfsD7Dg47/AIc6ymzKEEJbatb6hrslhCYXt0jHz7vmL5OVx9MU3V9IjCmRRjHpXA\u0026#43;H7mLRtf1C7nv7O7jmVts8O9mhbOQeR6gdK6jW/iLpEFuyCK4kfHIVRjP1JqIuV2XNRsmcLbeJ/EsEkc0lwgUR7MsvloDxySTj9K6mC0HjCx8\u0026#43;9nE7QZEZSQFXJCng4I4K8YHeuC1xxHpvmeXG7bgv7xQ2Afr0rO0LxHrEet29v9vmaF/kMbOSuCPT1Hao1ktC2orRncR6CDLDY3tq1jPyxKzKVuAOnXuPYj6c1U17RdPs18tLZ3lYYAZhz\u0026#43;OOK37u5kubQNNhig3rkdGx1/U1hXDEsM4OcHOO/rWTcm73K5I9j//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/skate-shooting_15349106077_o_hu_d0163087fd97d3a0.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/skate-shooting_15348951618_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 50.0 mm f/1.8\u003cbr/\u003e50mm f/2.2 1/3200sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"414\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAFgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AO8bxFbQWrPHDPOVGcbcZqq3i1bmyLx2/lOVLCKU4Y4rj77VXsNGlKriWV40zu3KAwUjHtgnr3B9qVrmXZD9ojYSiAbztwC23nj60QXM79BSlaPmehohe2ilAwXUEgdsik2N/tUlhPbrp0G5gMLjGam\u0026#43;02v98f8AfQpXBI8Jn8QRy\u0026#43;GntmBkfz8K4xkqoU\u0026#43;ufWugk1aV9MtrmWKRpnhDSDGMZHJPp3qvq3gtk02zjtbUmSCCT7Q6ZzK\u0026#43;zaMDPc10WjaYLi1is3jfelsgdfNIyNqgg8/nUxkoxVug5QbXKzNvdckGnQMojLM3KE/NjGQ30IP6Gs7\u0026#43;3rj/AJ4J/wB9V2ElmbY7Vsbdx0\u0026#43;dVambG/6Bdn/36X/GsGoN3a/EHSk\u0026#43;p//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/skate-shooting_15348951618_o_hu_98c3101369ad02fa.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/mcf_1848_13871661063_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e28mm f/14.0 2/5sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"400\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOCiswe1W47JfSm29nbriIXifKO8q5/nWjBpnmLuW4yPUEHNTJvuaRcexANPQjpVa4skUcDFbkWlzR4dJvzUH\u0026#43;lVLjRLqQlgSw\u0026#43;vP8qzUpX3N26fLs7nOHVryN9wdcng/KKsJ4i1AEYdMem2sqXqPrQv8P1rosmcJqyeINSkZCswj2noucH9arR6ndQzyzK4LTNufdkgn/JqsP6mmmjlQ7s//9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/mcf_1848_13871661063_o_hu_cf1a43634b48cde3.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/mcf_1090_12663882593_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e18mm f/16.0 1/2sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"400\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOFt7CQgfLmtCPTZccR16Ivh3Bz9ji/Opk0Nk/5YKPatboDzn\u0026#43;yp8cJUMulyD7w5\u0026#43;lenHSH5zEg\u0026#43;tMOjhh/q4vTgUXQEkWu3bnBCfgtN0u9k0uy\u0026#43;zfNPlixeV2LZP1JrPg\u0026#43;9U56Vzps0aRr/APCQSkY8hPxNMbXZG4NtDj6VmCkHWnzMLI//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/mcf_1090_12663882593_o_hu_c3fb7a28df6b600f.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/mcf_0309_12114820764_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e35mm f/2.0 1/60sec  ISO 400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"474\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAGQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOX\u0026#43;x3cmnPIwy4kXbucdOT69\u0026#43;lT6pa3Fno9pd24D5Z/M2HKqcLwc/jRAJZLFrd8JI8iNGMNyACO49TXQQ6dCvh1bK5Z0yz5bnqVXHUY6qa4alSKauzshFtHKCzfU9Ga4gTfMsbRyHOFVuW49eCK5/wCw6l/fT/vkf4V3qSW\u0026#43;k2c9lb7TIwyy4\u0026#43;QDp9ScHr/KsnyJ/wDn1f8AKnGpYlwuXI/FRuhJb7QEKlYvLUhg/Yk7ucFfSugS41nX9N8qGyVVEq/61fLbHXIyfw6etee\u0026#43;Gbqe5v8A9/BmAYLOkYXbhgfvAccA9\u0026#43;9etPqun22GEhXAwR52f61E6MItabDjNtbnn11p\u0026#43;pjVHhmhmXaCGyP0B6entUn2rxJ63P5R/wCNbWveILV54XgkOwsVnXzAxYY4OM9sVnf2hb/5I/xq3Hm3RPNbZn//2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/mcf_0309_12114820764_o_hu_26bdc886785021fe.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/d7100-5_11995795163_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e35mm f/2.2 1/100sec  ISO 400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"548\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAHQMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOBg2RaTdMrFpjGjRt8wMZycjnGa3LJbh9XtbceZ5TKm4EHkkDnP41gaUDPBPbjfJI8JxnnoDgCu3t5NLij0uC1iuZyMNLIHbOdo\u0026#43;UAHp17djQBm3KeXBt2TGTaBuLcZ/TH61iXZkEv32H\u0026#43;fpXceJbCSLUbmOCILbRMjLsLBgSMkMT9fpWnd\u0026#43;BbSZkRboBFTcHMS5fPqcewoA8r07RNWkmiMdjM6F1VmQ44yDwfpmu1tNa1ZIVRfA03ljAzbM\u0026#43;P0BqleeJY9L1d7TTdRmnCEh5XhUhiOuCByB610Gl\u0026#43;Ib2UKkeswKMcfcz9OlAGdJqMqW7SSaXqNnIWYyRNBI8YBJOWbpjn1qn/wtG2aCNLzT7uWZMhpFm2bvqK2vEnim4t9OZRrMc8pwmyFY2DZOCCduOma5OLXtKmXNwxgccYkt0kz75C0Af/Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/d7100-5_11995795163_o_hu_ee9272f8512da8e0.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/d7100-2_11995868954_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e31mm f/2.2 1/640sec  ISO 400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"340\" height=\"600\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAAEgMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOhsdZsLzy1aSSN5cBVMTHnsMjjmvJ72xMouJlwWkkJBI6gMMfyP51013HJpkPkvqcaunOShYL8vf9DWTbXltqVsRbhztATkc55wfx4oAEtwEUbe1L9nHoK0jac9aPsnvQBR1CSTUddubZ7dkt2kYDk5bCNz9Pk/WsnwlG4DvlQof5gRyRitptVjk1pridAsiSMRjoRsYD/PvXLmea3MhiwFbIwGPIIxQB0z3WmCRhui4J/ipv2rTP70X/fVcv5eeVSIr2JI6UeUf\u0026#43;ecX5igD//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/d7100-2_11995868954_o_hu_9262c94e80a39e12.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/d7100-1-2_12001828995_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D7100 + 18.0-35.0 mm f/1.8\u003cbr/\u003e32mm f/2.2 1/2000sec  ISO 400\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"400\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABUAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/AOF0Wws5nmtb25\u0026#43;yQSABpdhbb36CqV74eurHymlV41myUDDBI9cdq9Lsre000xyLDEBAvlxGX5x82BzjGTwO3rTNRtl1Vllu48ypkBFygGeevXv2rz6mOoQ2lc9KnldW789Thrbw5cLYi/Nufs5O0SMw5PsPw7CrdvpYYOzqB8wAz3rq009pLeO2uFD7f9UsYIRcHoOf1681m3OkBn/dXXUE7c5/AGo\u0026#43;v0pS5YXZp/Z9VR5paFbwrq01zfSi4RXVsE9c56da2NXv/sUMamFZvM\u0026#43;YGQ/dINcx4P8A\u0026#43;P5/ov8AOtzxL9y0/wBw/wAzXLUo05Yzla0sdFOvUWC509bme2sXjyqxkOFBCqPuj8KT7ZKiLyTjgc1SHWpX\u0026#43;4PrXqwpU4P3YpHkzrVJq0pNn//Z\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/d7100-1-2_12001828995_o_hu_94645d1571f43637.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/9087708366_a7a157d8fc_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D3100 + 18.0-55.0 mm f/3.5-5.6\u003cbr/\u003e18mm f/7.1 1/200sec  ISO 100\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"502\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABsAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APUXmW2UkvgDsegrldeuIHmNxI0UUaqBu4Ufj71lWPjmPW9Tnski2Qxhm85pMAqOM4xxyf1rH8Wa1Zy2gt7eRJtreYzA5Ax2HrTi1TXMNxdSSiJ4nup7ZI4bNxvY7ZFBAPOMcnp3qv4UmmuFurWb5hAwKt7Nn\u0026#43;orn9Ruri5k8\u0026#43;73sXcls4A/TpW/4GjY6pcKR8rw5BB44bj\u0026#43;dTCs3WTNJ0eWi11OZgijiXClskHJVf8AGrF2YlSNI16ZBIGPYVHGSeCeNp/nU2pAeevXoOp965Gdkdw1F5Ta4lt9qbjzuJx0/wDrfnUnhrV7fS7\u0026#43;G8nT5Iid2zqQQQfr1zVe4mkkjdWIIBJHAGM4/wAKzowCyAjjzR/KqWmpMtdD/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/9087708366_a7a157d8fc_o_hu_257a22ac0ac65902.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/11684103176_c6ea741a55_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D3100 + 18.0-55.0 mm f/3.5-5.6\u003cbr/\u003e18mm f/14.0 4sec  ISO 800\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"370\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABQAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APOxv3BWYDJwDt/\u0026#43;vWjHoskkYcz8HtkZ/SqNvZ3iyxrcAFXYDkYPXBrrNPisVR7iSdPMkLyFCP4cjv271hO9tDaNupinw4ygGVmVT0JP/wBeq1/pdraq5hkSfYgZiF6cgfzNd9dtp0VnGFeEOoB3K\u0026#43;CePb8K57UYLG5hnZb2IlkdQuclvlBAP/Ahn8Kzg5N\u0026#43;8VJRtocgo4UZOAOOelWYkB65quOo\u0026#43;lWoauewoltbWLAOCefWlaNI2AC8fU1IvQfWmy/6yuW7Z0H/2Q==\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/11684103176_c6ea741a55_o_hu_bd227819697ad801.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\n\t\t\t\u003cdiv\u003e\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\u003ca href=\"/photos/albums/UK/11683879426_2ed6750bc9_o.jpg\"\n\t\t\t\t\tclass=\"galleryImg\"\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdata-description=\"NIKON D3100 + 18.0-55.0 mm f/3.5-5.6\u003cbr/\u003e24mm f/5.6 1/10sec  ISO 3200\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\t\u003cimg\n\t\t\t\t\t\twidth=\"600\" height=\"410\"\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tstyle=\"filter: blur(25px);\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsrc=\"data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4\u0026#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5\u0026#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4\u0026#43;Tl5ufo6ery8/T19vf4\u0026#43;fr/2gAMAwEAAhEDEQA/APKQpI4BP4U5oJtpIAAAznrxSiXZEhY8ZyBUsMu5vuMOvAUscVk7nbThTa95jrTSZbiVkdJmITcAFwB2BJ9MkVU1S1NjfPB8uAFYbW3DBAPB79etaUKagZRItncOU6j7vQevB7iobzTdRvZRILLyyx4DSrnB6Dk\u0026#43;1EXZ3kyayha0EaGn69Zab8y2D3bFMf6U4YKcYyuBx\u0026#43;Of1qKbxDLNKZEtoomwqjb2AGP6CscUooeu5cKcTZHiW7WNlMULE5\u0026#43;YggjP0xUCa9qKIFE2VByARkDr2/E1nGjtRZMc4RWx/9k=\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclass=\"lazy\"\n\t\t\t\t\t\t\tdata-src=\"/photos/albums/UK/11683879426_2ed6750bc9_o_hu_5e1b73a5911049ab.jpg\"\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\u003e\n\t\t\t\t\u003c/a\u003e\n\t\t\t\u003c/div\u003e\n\t\t\n\t\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n\tif (!(\"HSCGjQuery\" in window)) {\n\t\tif (!window.jQuery) {\n\t\t\tthrow new Error(\"jQuery is not loaded, hugo-shortcode-gallery wont work without it!\");\n\t\t}\n\t\twindow.HSCGjQuery = window.jQuery.noConflict(true);\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t;(function($) {\n\n\t\t$( document ).ready(() =\u003e {\n\t\t\tconst gallery = $(\"#gallery-c24309d4987954ddf1f670933cc34d47-10\");\n\t\t\t\n\n\t\t\t\n\t\t\tlet swipeboxInstance = null;\n\n\t\t\t\n\t\t\t\n\t\t\tgallery.on('jg.complete', () =\u003e {\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t$(() =\u003e {\n\t\t\t\t\t\t$('.lazy').Lazy({\n\t\t\t\t\t\t\tvisibleOnly: true,\n\t\t\t\t\t\t\tafterLoad: element =\u003e element.css({filter: \"none\", transition: \"filter 1.0s ease-in-out\"})\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\n\n\t\t\t\tswipeboxInstance = $('.galleryImg').swipebox(\n\t\t\t\t\t$.extend({},\n\t\t\t\t\t\t{  }\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t\n\t\t\tgallery.justifiedGallery($.extend(\n\t\t\t\t{\n\t\t\t\t\trowHeight : \"150\",\n\t\t\t\t\tmargins : \"5\",\n\t\t\t\t\tborder : 0,\n\t\t\t\t\trandomize :  false ,\n\t\t\t\t\twaitThumbnailsLoad : false,\n\t\t\t\t\tlastRow : \"justify\",\n\t\t\t\t\tcaptions : false,\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\t{  }\n\t\t\t));\n\n\t\t\t\n\t\t\t\n\t\t});\n\n\t\n\t\n\t\n\t})(window.HSCGjQuery)\n\u003c/script\u003e\n\n\u003chr\u003e\n\u003ch5 id=\"using-my-photos\"\u003eUsing my photos\u003c/h5\u003e\n\u003cp\u003eFeel free to use my photos for non-commercial purposes. Credit isn\u0026rsquo;t required, but I always appreciate hearing where they end up.\u003c/p\u003e","title":"Around the World in Photos"},{"content":"The Django admin interface is one of the standout features that make Django such a powerful framework. It allows you to manage your data, customers, and models with ease. However, as with any tool that provides significant control over your application’s data, there’s a need to ensure that sensitive actions like deletions are handled carefully.\nIn this guide, we\u0026rsquo;ll explore how to prevent accidental deletions in the Django admin interface and ensure data is secure, even in the case of potential hacking attempts.\nProblem Overview When managing multiple environments and users, the risk of accidentally deleting critical data increases, especially when using Django’s bulk delete functionality. While restoring from backups is an option, it’s better to prevent deletions in the first place.\nBy default, Django provides a delete action for bulk deletions in the list view, as well as a delete button in the detail view of individual records. This tutorial will demonstrate how to disable these delete options to minimize risks.\nDisabling the Bulk Delete Action in Django Admin Django allows you to easily remove the bulk delete action from the admin interface by overriding the has_delete_permission method in your ModelAdmin class.\nfrom django.contrib import admin class MyModelAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): return False In this example, no user will have the ability to delete records for that particular model. You can also control other actions like adding or changing records using similar methods.\nDisabling Bulk Delete for All Models If you want to disable the bulk delete action across all models in the admin interface, Django provides a simple way to do this via the AdminSite API:\nfrom django.contrib.admin import AdminSite admin.site.disable_action(\u0026#34;delete_selected\u0026#34;) This approach removes the delete action for all models in the admin list view, but it won\u0026rsquo;t prevent deletions in the detail view of individual records.\nDisabling Deletion for Individual Records To fully prevent data deletion, including in the detail view of individual records, we can create a custom ModelAdmin class that disables the delete functionality for all views:\nfrom django.contrib import admin class NoDeleteAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): return False actions = None By setting actions = None, we completely remove the bulk delete option from the list view, and the has_delete_permission method prevents deletion in the detail view.\nApplying NoDeleteAdmin Across Multiple Models To apply this protection across multiple models, you can use the NoDeleteAdmin class as a base for each model’s admin class:\nfrom django.contrib import admin from .models import MyModel class MyModelAdmin(NoDeleteAdmin): pass admin.site.register(MyModel, MyModelAdmin) This way, all models that use NoDeleteAdmin will have deletion disabled across the admin interface.\nAllowing Deletions for Specific Models In some cases, you may want to keep the delete functionality for certain models. You can achieve this by overriding the has_delete_permission method on a per-model basis:\nfrom django.contrib import admin from .models import MyModel class MyModelAdmin(NoDeleteAdmin): def has_delete_permission(self, request, obj=None): return True admin.site.register(MyModel, MyModelAdmin) In this example, the deletion is enabled for the MyModel class, while it remains disabled for other models.\nConditional Deletion Permissions based on DEBUG Mode Another useful approach is to conditionally enable or disable deletion based on the DEBUG mode in your Django settings. This can help prevent accidental deletions in production environments while allowing them in development environments:\nfrom django.conf import settings class MyModelAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): return settings.DEBUG actions = [\u0026#34;delete_selected\u0026#34;] if settings.DEBUG else None Conclusion By leveraging Django’s built-in flexibility, you can protect your data from accidental or unauthorized deletions in the admin interface. Whether you need to disable bulk deletion or remove deletion capabilities entirely, these strategies will help you manage your data more securely.\n","permalink":"https://gaetangrond.me/posts/django/protecting-data-in-django-admin-preventing-accidental-deletions/","summary":"\u003cp\u003eThe Django admin interface is one of the standout features that make Django such a powerful framework. It allows you to manage your data, customers, and models with ease. However, as with any tool that provides significant control over your application’s data, there’s a need to ensure that sensitive actions like deletions are handled carefully.\u003c/p\u003e","title":"Protecting Data in Django Admin: Preventing Accidental Deletions"},{"content":"Lists or arrays are commonly used data types in programming. However, Django does not have a built-in field for storing lists in models. In a recent project, I needed to store a list of strings in a model, and I had to find an elegant and efficient way to store the list in the database.\nIn this article, I\u0026rsquo;ll show you how to store a list in a Django model using the ArrayField from the django.contrib.postgres.fields module, which perfectly fits this use case.\nDon\u0026rsquo;t Reinvent the Wheel Storing a list in a Django model is a common use case, and there are many ways to achieve this. You can store the list as a comma-separated string, a JSON string, or use a separate model to store the list items. However, these methods can be inefficient, inelegant, and may not fit all use cases.\nWhile Django aims to be database-agnostic, it does not include a built-in field for storing lists. Fortunately, the django.contrib.postgres.fields module provides an ArrayField that allows you to store lists in a model.\nThis field saves you from writing custom code to serialize and deserialize the list, and it also allows you to query the list items using Django\u0026rsquo;s ORM.\nUse Case In my use case, I needed to store a list of days on which a student could choose to receive Python tips and lessons. The list of days could be any of the following: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'].\nThe requirements were as follows:\nThe list of days should be stored in the database. The list should have a limit of 5 items, raising an error if exceeded. The list should be easily queryable using Django\u0026rsquo;s ORM. Implementation According to the documentation, ArrayField is:\nA field for storing lists of data. Most field types can be used, and you pass another field instance as the base_field. You may also specify a size. ArrayField can be nested to store multi-dimensional arrays.\nLet\u0026rsquo;s see how to use it in our model.\nfrom django.contrib.postgres.fields import ArrayField from django.db import models from django.utils.translation import gettext_lazy as _ # other imports.... class User(AbstractUser): \u0026#34;\u0026#34;\u0026#34; Default custom user model for DailyPy. \u0026#34;\u0026#34;\u0026#34; # other fields ... lesson_days = ArrayField( models.CharField( max_length=9, choices=[ (\u0026#34;monday\u0026#34;, _(\u0026#34;Monday\u0026#34;)), (\u0026#34;tuesday\u0026#34;, _(\u0026#34;Tuesday\u0026#34;)), (\u0026#34;wednesday\u0026#34;, _(\u0026#34;Wednesday\u0026#34;)), (\u0026#34;thursday\u0026#34;, _(\u0026#34;Thursday\u0026#34;)), (\u0026#34;friday\u0026#34;, _(\u0026#34;Friday\u0026#34;)), (\u0026#34;saturday\u0026#34;, _(\u0026#34;Saturday\u0026#34;)), (\u0026#34;sunday\u0026#34;, _(\u0026#34;Sunday\u0026#34;)), ], ), size=5, blank=True, default=list, help_text=_(\u0026#34;Select up to 5 days for lessons\u0026#34;), ) Breakdown of the Code We import the ArrayField from django.contrib.postgres.fields and CharField from django.db.models. We define a User model that inherits from Django\u0026rsquo;s AbstractUser model. We define a lesson_days field, which is an ArrayField of CharField with a max_length of 9 and choices for the days of the week. We set the size to 5, limiting the number of items in the list to 5. However, this is not enforced at the database level but at the application level. The blank=True option allows the field to be empty, and default=list initializes the field with an empty list. This approach is feature-rich and more elegant than a custom solution. However, storing a list in the database is only part of the challenge. We also need to query the list items efficiently, and Django\u0026rsquo;s ORM provides powerful tools for this.\nQuerying the List Django provides several lookups specifically for ArrayField:\n# Contains lookup returns all users who have lessons on Monday User.objects.filter(lesson_days__contains=[\u0026#34;monday\u0026#34;]) # Contained_by lookup returns all users who have lessons on Monday and Tuesday User.objects.filter(lesson_days__contained_by=[\u0026#34;monday\u0026#34;, \u0026#34;tuesday\u0026#34;]) # Overlap lookup returns all users who have lessons on Monday or Tuesday User.objects.filter(lesson_days__overlap=[\u0026#34;monday\u0026#34;, \u0026#34;tuesday\u0026#34;]) More lookups can be found in the Django documentation.\nAdvantages of ArrayField Efficient Storage:\nArrayField allows you to store multiple values in a single database column, which can be more efficient in terms of storage and retrieval compared to creating multiple related records. Simplified Schema:\nInstead of creating a separate related table to store multiple values (e.g., using a ForeignKey or ManyToManyField), you can store the list directly in the main table. This simplifies your database schema and can make it easier to manage certain types of data. Performance:\nRetrieving related data is faster since the array is stored in the same table. There\u0026rsquo;s no need to join with other tables, which can reduce query complexity and improve performance for read operations. Querying Capabilities:\nPostgreSQL offers powerful querying capabilities for arrays, such as searching for elements, checking if arrays overlap, and more. These capabilities are accessible directly from Django’s ORM. Limitations of ArrayField While ArrayField is powerful, it\u0026rsquo;s important to note that it is specific to PostgreSQL. If you plan to migrate to another database in the future, this could complicate the process. Additionally, ArrayField might not be suitable for very large datasets or for cases where you need highly normalized data.\nCustom Validation in the Model While powerful you could still add some custom validation to the model to ensure that the list is not longer than 5 items and that the items are unique.\nfrom django.core.exceptions import ValidationError class User(AbstractUser): # other fields ... lesson_days = ArrayField( models.CharField( max_length=9, choices=[ (\u0026#34;monday\u0026#34;, _(\u0026#34;Monday\u0026#34;)), (\u0026#34;tuesday\u0026#34;, _(\u0026#34;Tuesday\u0026#34;)), (\u0026#34;wednesday\u0026#34;, _(\u0026#34;Wednesday\u0026#34;)), (\u0026#34;thursday\u0026#34;, _(\u0026#34;Thursday\u0026#34;)), (\u0026#34;friday\u0026#34;, _(\u0026#34;Friday\u0026#34;)), (\u0026#34;saturday\u0026#34;, _(\u0026#34;Saturday\u0026#34;)), (\u0026#34;sunday\u0026#34;, _(\u0026#34;Sunday\u0026#34;)), ], ), size=5, blank=True, default=list, help_text=_(\u0026#34;Select up to 5 days for lessons\u0026#34;), ) def clean(self): super().clean() if len(self.lesson_days) \u0026gt; 5: raise ValidationError(\u0026#34;You can only select up to 5 days for lessons.\u0026#34;) if len(set(self.lesson_days)) != len(self.lesson_days): raise ValidationError(\u0026#34;Days must be unique.\u0026#34;) In the clean method, we check if the length of the lesson_days list is greater than 5 and raise a ValidationError if it is. We also check if the list contains unique items by converting it to a set and comparing the lengths.\nConclusion Storing a list in a Django model when using PostgreSQL is straightforward with the ArrayField from the django.contrib.postgres.fields module. This approach saves you from writing custom serialization and deserialization code and allows you to efficiently query list items using Django\u0026rsquo;s ORM.\nBy considering both the advantages and limitations of ArrayField, you can make an informed decision about whether it\u0026rsquo;s the right choice for your specific use case.\n","permalink":"https://gaetangrond.me/posts/django/storing-list-in-models-with-django/","summary":"\u003cp\u003eLists or arrays are commonly used data types in programming. However, Django does not have a built-in field for storing lists in models. In a recent project, I needed to store a list of strings in a model, and I had to find an elegant and efficient way to store the list in the database.\u003c/p\u003e","title":"Storing List in Models with Django"},{"content":"These are my personal notes from reading Fluent Python. They’re a bit scattered, but I’ve found them useful for understanding some of Python’s more advanced features, like decorators, generators, and defensive programming.\nI’m sharing them here in case they’re helpful to others working through similar topics or if you’re considering reading the book.\nUnpacking Arguments in Python Another example of unpacking is prefixing an argument with * when calling a function:\n\u0026gt;\u0026gt;\u0026gt; divmod(20, 8) (2, 4) \u0026gt;\u0026gt;\u0026gt; t = (20, 8) \u0026gt;\u0026gt;\u0026gt; divmod(*t) (2, 4) \u0026gt;\u0026gt;\u0026gt; quotient, remainder = divmod(*t) \u0026gt;\u0026gt;\u0026gt; quotient, remainder (2, 4) The preceding code shows another use of unpacking: allowing functions to return multiple values in a way that is convenient to the caller. For example, the os.path.split() function builds a tuple (path, last_part) from a filesystem path.\nVisualization Tools Online Python Tutor is an excellent online tool to visualize how Python works in detail. For example, it can show the initial and final states of a tuple after operations.\nlist.sort Versus the sorted Built-In The list.sort method sorts a list in place, meaning it does not make a copy. It returns None to remind us that it changes the receiver and does not create a new list.\nSimilar behavior: random.shuffle(s) shuffles the mutable sequence s in place and returns None. Drawback: Since it returns None, you cannot cascade calls to these methods. In contrast, the built-in function sorted creates a new list and returns it. It accepts any iterable as an argument, including immutable sequences and generators.\nOptional Arguments reverse: If True, items are returned in descending order. The default is False. key: A one-argument function applied to each item to produce its sorting key. For example: key=str.lower for case-insensitive sorting. key=len to sort strings by length. These arguments are also available for min() and max() built-ins, as well as other functions like itertools.groupby() and heapq.nlargest().\nEfficient Searching with bisect Once your sequences are sorted, they can be efficiently searched using a binary search algorithm provided by the bisect module in Python\u0026rsquo;s standard library. The module also includes bisect.insort to ensure that your sorted sequences remain sorted.\nAlternatives to Lists and Tuples While the list type is flexible and easy to use, there are better options depending on specific requirements:\narray: Saves memory when handling millions of floating-point values. deque: A more efficient FIFO data structure for adding and removing items from both ends of a list. Dict Comprehensions Since Python 2.7, the syntax of list comprehensions (listcomps) and generator expressions (genexps) has been adapted to dict comprehensions (dictcomps).\nExample of dictcomps to build two dictionaries from the same list of tuples:\n\u0026gt;\u0026gt;\u0026gt; dial_codes = [ ... (880, \u0026#39;Bangladesh\u0026#39;), ... (55, \u0026#39;Brazil\u0026#39;), ... (86, \u0026#39;China\u0026#39;), ... (91, \u0026#39;India\u0026#39;), ... (62, \u0026#39;Indonesia\u0026#39;), ... (81, \u0026#39;Japan\u0026#39;), ... (234, \u0026#39;Nigeria\u0026#39;), ... (92, \u0026#39;Pakistan\u0026#39;), ... (7, \u0026#39;Russia\u0026#39;), ... (1, \u0026#39;United States\u0026#39;), ... ] \u0026gt;\u0026gt;\u0026gt; country_dial = {country: code for code, country in dial_codes} \u0026gt;\u0026gt;\u0026gt; country_dial {\u0026#39;Bangladesh\u0026#39;: 880, \u0026#39;Brazil\u0026#39;: 55, \u0026#39;China\u0026#39;: 86, \u0026#39;India\u0026#39;: 91, \u0026#39;Indonesia\u0026#39;: 62, \u0026#39;Japan\u0026#39;: 81, \u0026#39;Nigeria\u0026#39;: 234, \u0026#39;Pakistan\u0026#39;: 92, \u0026#39;Russia\u0026#39;: 7, \u0026#39;United States\u0026#39;: 1} \u0026gt;\u0026gt;\u0026gt; {code: country.upper() ... for country, code in sorted(country_dial.items()) ... if code \u0026lt; 70} {55: \u0026#39;BRAZIL\u0026#39;, 62: \u0026#39;INDONESIA\u0026#39;, 7: \u0026#39;RUSSIA\u0026#39;, 1: \u0026#39;UNITED STATES\u0026#39;} Dictcomps allow for concise and readable dictionary creation, especially if you\u0026rsquo;re already familiar with list comprehensions.\nHashable Objects An object is hashable if it has a hash code that never changes during its lifetime (it needs a __hash__() method) and can be compared to other objects (it needs an __eq__() method). Hashable objects that compare equal must have the same hash code.\nNumeric types and flat immutable types like str and bytes are hashable. Container types are hashable if they are immutable and all contained objects are also hashable. A frozenset is always hashable because every element it contains must be hashable. Using Sets A set is a collection of unique objects. A basic use case is removing duplicates:\n\u0026gt;\u0026gt;\u0026gt; l = [\u0026#39;spam\u0026#39;, \u0026#39;spam\u0026#39;, \u0026#39;eggs\u0026#39;, \u0026#39;spam\u0026#39;, \u0026#39;bacon\u0026#39;, \u0026#39;eggs\u0026#39;] \u0026gt;\u0026gt;\u0026gt; set(l) {\u0026#39;eggs\u0026#39;, \u0026#39;spam\u0026#39;, \u0026#39;bacon\u0026#39;} \u0026gt;\u0026gt;\u0026gt; list(set(l)) [\u0026#39;eggs\u0026#39;, \u0026#39;spam\u0026#39;, \u0026#39;bacon\u0026#39;] To remove duplicates while preserving the order of the first occurrence of each item:\n\u0026gt;\u0026gt;\u0026gt; list(dict.fromkeys(l).keys()) [\u0026#39;spam\u0026#39;, \u0026#39;eggs\u0026#39;, \u0026#39;bacon\u0026#39;] Set elements must be hashable. The set type itself is not hashable, so you can\u0026rsquo;t build a set with nested set instances. However, frozenset is hashable, so you can have frozenset elements inside a set.\nThe set types also implement many set operations as infix operators. For example, given two sets a and b:\na | b returns their union, a \u0026amp; b computes the intersection, a - b the difference, a ^ b the symmetric difference. Smart use of set operations can reduce both the line count and execution time of Python programs, while making the code easier to read and reason about.\nType Annotations Type annotations are written as described in PEP 526. They make code more readable and make it easier to override or add new methods. For example:\nfrom typing import NamedTuple class Coordinate(NamedTuple): lat: float lon: float def __str__(self): ns = \u0026#39;N\u0026#39; if self.lat \u0026gt;= 0 else \u0026#39;S\u0026#39; we = \u0026#39;E\u0026#39; if self.lon \u0026gt;= 0 else \u0026#39;W\u0026#39; return f\u0026#39;{abs(self.lat):.1f}°{ns}, {abs(self.lon):.1f}°{we}\u0026#39; Note: Python does not enforce type hints at runtime.\nVariable Management in Python Python variables are more like labels attached to objects than boxes containing values, as in other languages. This is because Python uses reference variables. The term \u0026ldquo;assign\u0026rdquo; can be misleading; \u0026ldquo;bind\u0026rdquo; is more appropriate in Python, where a variable is bound to an object.\n== Versus is == compares the values of objects (the data they hold). is compares their identities (memory location). In general, == is used more often because we care more about values. However, when comparing a variable to a singleton (like None), it is recommended to use is:\nx is None x is not None Caution: Other uses of is are often incorrect. If unsure, use ==. Usually we are more interested in object equality than identity.\ndel and Garbage Collection The del keyword is a statement, not a function, that deletes a reference to an object. Python\u0026rsquo;s garbage collector may discard an object from memory if the deleted variable was the last reference to it.\nIn Python, garbage collection is primarily done by reference counting.\nFunctions as First-Class Objects\nIn Python, functions are first-class objects. Programming language researchers define a “first-class object” as a program entity that can be:\nCreated at runtime Assigned to a variable or element in a data structure Passed as an argument to a function Returned as the result of a function Anonymous Functions\nThe lambda keyword creates an anonymous function within a Python expression. However, Python’s simple syntax limits the body of lambda functions to pure expressions. The body cannot contain other Python statements such as while, try, etc. Assignment with = is also a statement, so it cannot occur in a lambda. While the new assignment expression syntax using := can be used, if you need it, your lambda is probably too complex and should be refactored into a regular function using def.\nBest Use of Anonymous Functions\nAnonymous functions are most useful in the context of an argument list for a higher-order function. For instance, consider the following example that sorts a list of words by their reversed spelling using lambda:\n\u0026gt;\u0026gt;\u0026gt; fruits = [\u0026#39;strawberry\u0026#39;, \u0026#39;fig\u0026#39;, \u0026#39;apple\u0026#39;, \u0026#39;cherry\u0026#39;, \u0026#39;raspberry\u0026#39;, \u0026#39;banana\u0026#39;] \u0026gt;\u0026gt;\u0026gt; sorted(fruits, key=lambda word: word[::-1]) [\u0026#39;banana\u0026#39;, \u0026#39;apple\u0026#39;, \u0026#39;fig\u0026#39;, \u0026#39;raspberry\u0026#39;, \u0026#39;strawberry\u0026#39;, \u0026#39;cherry\u0026#39;] Outside the context of arguments to higher-order functions, anonymous functions are rarely useful in Python. The syntactic restrictions tend to make nontrivial lambdas either unreadable or unworkable. If a lambda is hard to read, consider refactoring it using Fredrik Lundh’s advice:\nWrite a comment explaining what the lambda does. Study the comment and think of a name that captures the essence of it. Convert the lambda to a def statement, using that name. Remove the comment. These steps are quoted from the “Functional Programming HOWTO,” which is a recommended read.\nThe Nine Flavors of Callable Objects\nPython offers various callable objects, including:\nUser-defined functions: Created with def statements or lambda expressions. Built-in functions: Functions implemented in C (for CPython), like len or time.strftime. Built-in methods: Methods implemented in C, like dict.get. Methods: Functions defined in the body of a class. Classes: When invoked, a class runs its __new__ method to create an instance, followed by __init__ to initialize it, and returns the instance to the caller. Class instances: If a class defines a __call__ method, its instances may be invoked as functions. Generator functions: Functions or methods that use the yield keyword in their body. When called, they return a generator object. Native coroutine functions: Functions or methods defined with async def. When called, they return a coroutine object. Asynchronous generator functions: Functions or methods defined with async def that use yield in their body. When called, they return an asynchronous generator object. About Gradual Typing\nPEP 484 introduced a gradual type system to Python. Other languages with gradual type systems include Microsoft’s TypeScript, Dart, and Hack. The Mypy type checker began as a gradually typed dialect of Python before becoming a tool for checking annotated Python code. A gradual type system is characterized by the following:\nOptional: Type hints are optional, and the type checker assumes Any type for code without type hints. No Runtime Enforcement: Type hints do not prevent type errors at runtime; they are used by static type checkers, linters, and IDEs to raise warnings. No Performance Enhancement: Type annotations do not improve performance in current Python runtimes. Seeking 100% coverage of type hints might lead to type hinting without proper thought, merely to satisfy the metric.\nDuck Typing vs. Nominal Typing\nDuck typing: A dynamic approach where objects have types, but variables are untyped. The operations an object supports are more important than its declared type. For instance, if birdie.quack() works, then birdie is considered a duck. This flexibility comes at the cost of allowing more runtime errors.\nNominal typing: Used in languages like C++, Java, and C#, supported by annotated Python. Objects and variables have types. If Duck is a subclass of Bird, you can assign a Duck instance to a parameter annotated as birdie: Bird, but calling birdie.quack() would be illegal in a type checker, as Bird does not provide a .quack() method. Nominal typing catches errors earlier in development but is less flexible.\nThe Cognitive Effect of Typing\nType hints can benefit API users, but overly strict enforcement might discourage the creation of powerful, concise functions like Python\u0026rsquo;s max(). Type hints for such functions can be complex, possibly discouraging future developers from writing similarly powerful functions.\nDecorators 101\nA decorator is a callable that takes another function as an argument and returns a modified function. Decorators run immediately after the decorated function is defined, usually at import time.\nExample of a basic decorator:\ndef decorate(func): # Perform processing return func @decorate def target(): print(\u0026#39;running target()\u0026#39;) This is equivalent to:\ndef target(): print(\u0026#39;running target()\u0026#39;) target = decorate(target) Three key points about decorators:\nA decorator is a function or another callable. A decorator may replace the decorated function with a different one. Decorators are executed immediately when a module is loaded. Memoization with functools.cache\nThe functools.cache decorator implements memoization, optimizing functions by caching the results of previous invocations. For example, using @cache with a recursive Fibonacci function significantly improves performance:\nimport functools @functools.cache def fibonacci(n): if n \u0026lt; 2: return n return fibonacci(n - 2) + fibonacci(n - 1) This decorator ensures that each value of n is computed only once, avoiding redundant calculations.\nConformity to patterns is not a measure of goodness.\n—Ralph Johnson, coauthor of the Design Patterns classic\nObject Representations\nEvery object-oriented language has at least one standard way of getting a string representation from any object. Python has two:\nrepr(): Returns a string representing the object as the developer wants to see it. It’s what you get when the Python console or a debugger shows an object. str(): Returns a string representing the object as the user wants to see it. It’s what you get when you print() an object. The special methods __repr__ and __str__ support repr() and str().\nMonkey Patching: Implementing a Protocol at Runtime\nMonkey patching is dynamically changing a module, class, or function at runtime to add features or fix bugs. For example, the gevent networking library monkey patches parts of Python’s standard library to allow lightweight concurrency without threads or async/await.\nDefensive Programming and “Fail Fast”\nDefensive programming is like defensive driving: a set of practices to enhance safety even when faced with careless programmers—or drivers. Many bugs cannot be caught except at runtime—even in mainstream statically typed languages. In a dynamically typed language, “fail fast” is excellent advice for safer and easier-to-maintain programs. Failing fast means raising runtime errors as soon as possible.\nIteration is Fundamental to Data Processing\nIteration is fundamental to data processing: programs apply computations to data series, from pixels to nucleotides. If the data doesn’t fit in memory, we need to fetch the items lazily—one at a time and on demand. That’s what an iterator does. This chapter shows how the Iterator design pattern is built into the Python language so you never need to code it by hand.\nEvery standard collection in Python is iterable. An iterable is an object that provides an iterator, which Python uses to support operations like:\nfor loops List, dict, and set comprehensions Unpacking assignments Construction of collection instances How a Generator Works\nAny Python function that has the yield keyword in its body is a generator function: a function which, when called, returns a generator object. In other words, a generator function is a generator factory. The only syntax distinguishing a plain function from a generator function is the fact that the latter has a yield keyword somewhere in its body.\nI find it helpful to be rigorous when talking about values obtained from a generator. It’s confusing to say a generator “returns” values. Functions return values. Calling a generator function returns a generator. A generator yields values. A generator doesn’t “return” values in the usual way: the return statement in the body of a generator function causes StopIteration to be raised by the generator object. If you return x in the generator, the caller can retrieve the value of x from the StopIteration exception, but usually that is done automatically using the yield from syntax.\nLazy vs. Eager Evaluation in Iterators\nThe Iterator interface is designed to be lazy: next(my_iterator) yields one item at a time. The opposite of lazy is eager: lazy evaluation and eager evaluation are technical terms in programming language theory.\nOur Sentence implementations so far have not been lazy because the __init__ eagerly builds a list of all words in the text, binding it to the self.words attribute. This requires processing the entire text, and the list may use as much memory as the text itself (probably more; it depends on how many nonword characters are in the text). Most of this work will be in vain if the user only iterates over the first couple of words. If you wonder, “Is there a lazy way of doing this in Python?” the answer is often “Yes.”\nContrasting Iterators and Generators\nIn the official Python documentation and codebase, the terminology around iterators and generators is inconsistent and evolving. I’ve adopted the following definitions:\nIterator: General term for any object that implements a __next__ method. Iterators are designed to produce data that is consumed by the client code, i.e., the code that drives the iterator via a for loop or other iterative feature, or by explicitly calling next(it) on the iterator—although this explicit usage is much less common. In practice, most iterators we use in Python are generators.\nGenerator: An iterator built by the Python compiler. To create a generator, we don’t implement __next__. Instead, we use the yield keyword to make a generator function, which is a factory of generator objects. A generator expression is another way to build a generator object. Generator objects provide __next__, so they are iterators. Since Python 3.5, we also have asynchronous generators declared with async def.\nContext Managers\nContext manager objects exist to control a with statement, just like iterators exist to control a for statement.\n","permalink":"https://gaetangrond.me/posts/dev/fluent-python-private-notes/","summary":"\u003cp\u003eThese are my personal notes from reading Fluent Python. They’re a bit scattered, but I’ve found them useful for understanding some of Python’s more advanced features, like decorators, generators, and defensive programming.\u003c/p\u003e\n\u003cp\u003eI’m sharing them here in case they’re helpful to others working through similar topics or if you’re considering reading the book.\u003c/p\u003e","title":"Fluent Python - My Private Notes"},{"content":" Mise à jour — juillet 2026. Cet article date de 2024 et reflète ce que je pensais après six mois de HTMX. Deux ans plus tard, j\u0026rsquo;ai changé d\u0026rsquo;avis et je suis revenu en arrière. J\u0026rsquo;ai raconté pourquoi, en détail, dans HTMX et Django, l\u0026rsquo;erreur de parcours. Je laisse ce texte en ligne tel quel : le raisonnement de l\u0026rsquo;époque reste valable dans son contexte, c\u0026rsquo;est la conclusion qui a bougé.\nHTMX took the developer community by surprise, and rightfully so. It offered an alternative to using JavaScript and bloated SPAs for web apps for those who did not want to dive into the complexity of frontend frameworks and JavaScript.\nFour years ago, when I first started building my SaaS startup with Django, the recommendation was to build an API with DRF or FastAPI and use a frontend framework such as React or Vue.js. I tried them both, and while I really liked the latter, the disadvantages became more apparent as the project grew.\nIn this article, I will share what led me to revamp the front end over 6 months using HTMX, the pros and cons, and whether it was worth it.\nFighting the Framework with Vue.js/React Django is one of the best frameworks I have worked with over the past 6 years. I like the ORM, the opinionated and easy-to-follow project architecture, the admin panel, which is a gift when managing customers and large amounts of data, and best of all, the top-notch templating and security features.\nThis is if you are using Django without an API and a frontend framework\u0026hellip;\nDjango weaknesses in the frontend Django excels at leveraging its Object-Relational Mapper (ORM), forms, routing and templating system to build robust web applications. However, when it comes to the frontend, Django falls short in handling dynamic interactions and state management.\nUnlike Turbolinks for Ruby on Rails and Livewire for Laravel, Django does not offer a built-in solution for frontend interactivity.\nThis is where React, Vue.js, and other frontend frameworks come into play.\nBut such frameworks come with their own set of problems, let\u0026rsquo;s take Vue.js as an example and why I ditched it after 1 year:\nCode Duplication Significant code duplication existed between the backend and the frontend. Logic was duplicated in Django and Vue.js, leading to more inconsistencies and bugs.\nUnderutilized Django Features By managing state and the DOM with Vue.js, we missed out on Django’s strengths:\nDjango forms and built-in validation Powerful template tags and filters Streamlined class-based and function-based views URL routing and reverse URL resolution Complexity Managing state with Vue.js led to complex code, especially when handling form submissions, fetching data, and updating the DOM. It was also challenging to integrate with Django’s templating system.\nHarder to Test and Maintain With frontend logic split between Vue.js and Django, testing became more complex and often not possible since I had to test the frontend and backend separately. It’s worth mentioning that I was the only developer on the project and far from being a frontend expert.\nMany of the same issues apply to React, even more so since React with Django needs deeper integration, whereas Vue.js can be added incrementally.\nIn my case, HTMX started to make sense. Let’s explore why.\nUsing HTMX and why it made sense My web app is very content-focused. Hospitality professionals can use my web app to organize their day-to-day tasks in their hotels, revolving around:\nWriting notes for team members Creating tickets for maintenance Logging lost items by guests Creating daily checklists Creating and managing events This is a perfect case for HTMX since it excels in handling hypermedia content with light interaction.\nUsing HTMX meant I could fully leverage Django’s templating system, forms, and validation, and focus on the backend logic. HTMX would handle the dynamic interactions, such as form submissions, fetching data, and updating the DOM.\nThis led to several benefits:\nReduced Code Volume The codebase shrank significantly. Since I had all the state and logic in the Django backend, I was able to remove more than 3000 lines of JavaScript code.\nBetter Decoupling The mobile apps and the web app are now completely decoupled. The mobile apps use the same API endpoints as before, but I can now change the web app without affecting the mobile apps. The APIs are tailored for the mobile apps, making them more efficient and simpler to write and use.\nFaster Development Before using HTMX, when creating a new page, I had to write the backend logic, the frontend logic, the API endpoints, create data representation in the frontend, handle validation, error messages, loading states, success states, etc. Now I just write the backend logic and add some HTMX attributes to the frontend, and I’m done.\nBetter Testing Since everything is now pure Python with Django, I can improve and add more tests to my codebase. With JavaScript, I must confess I was not testing the frontend at all.\nBetter User Experience The user experience is now better. Faster loading times, better error handling, validation, and loading states make the app feel more responsive and less clunky.\nHTMX + Django ❤️ The benefits of using HTMX go beyond reduced code volume, while this alone is a significant win, let\u0026rsquo;s see what other benefits we get.\nOne of the biggest advantages of HTMX is its ability to seamlessly integrate with Django\u0026rsquo;s built-in features. Here\u0026rsquo;s how:\nForms and Validation: HTMX works flawlessly with Django forms. Django handles the validation on the server-side, while HTMX updates the form and error messages dynamically without a single line of Javascript. Template Tags and Filters: Django\u0026rsquo;s rich set of template tags and filters becomes readily available for use within your HTMX responses. This empowers you to format data and use Django\u0026rsquo;s templating power to its full potential. Class-Based and Function-Based Views: HTMX integrates beautifully with Django\u0026rsquo;s view system. Whether you prefer class-based or function-based views, HTMX works perfectly, you can focus on core application logic without worrying about complex frontend interactions, you just need to add some HTMX attributes to your HTML and you\u0026rsquo;re good to go. URL Routing: HTMX does not interfere with Django\u0026rsquo;s URL routing system. You can continue to define your URLs in Django\u0026rsquo;s urls.py and use them as usual. This means that powerful features like reverse URL resolution, namespaced URLs, internationalization, and more remain available, which is something that can be challenging with SPAs. Developers can leverage their existing Django knowledge and stay within the framework\u0026rsquo;s ecosystem.\nYou already know how to use HTMX One of the best things about HTMX is that you already know how to use it. If you know how to write Django views, how to return HTML responses and write basic HTML, you have 95% of the knowledge you need.\nOnce you grasp the basics of HTMX, how the flow of data works, the concept of partials and how to use the various attributes, you\u0026rsquo;ll be able to build dynamic, interactive web applications in no time.\nDeveloper Experience Another often overlooked aspect of using a simpler frontend framework is the developer experience, and it makes a huge difference.\nHTMX is not reinventing anything and is not trying to be the new shiny tech that everyone should use. On the contrary, it leverages existing technology and helps you work with existing backend code. This means any backend developer can focus on the logic, security, and performance without spending two months understanding state management, creating API endpoints, handling validation, error messages, loading states, and success states.\nConclusion HTMX is not a silver bullet. It’s not a replacement for React or Vue.js. It’s a tool that can be used in the right context, and it’s worth considering if you are building a content-focused web app with Django.\n6 months later I can confidently say HTMX not only saved me time and headaches but also made my web app more maintainable, testable, and less prone to bugs.\nAgain use the right tool for the job, but more importantly, use the tool you like and feel comfortable with. For me, Django and HTMX are my new best friends and I hope you give them a try too.\nResources The best resource is obviously the HTMX documentation, it is well written and covers everything you need to know to get started, but here are some other resources that can help you get started:\nHypermedia Systems - Written by the creator of HTMX, this free book covers the principles behind HTMX, the hypermedia concept, and how to build web applications with HTMX.\nFULL Introduction To HTMX Using Golang - A 2-hour tutorial by ThePrimeagen on how to use HTMX with Golang, while it is not Django, ThePrimeagen does a great job explaining the concepts behind HTMX with humor.\nDjango \u0026amp; HTMX Playlist (39 videos) - By the Youtuber BugBytes, this playlist covers a lot of use cases and how to use HTMX with Django.\n","permalink":"https://gaetangrond.me/posts/dev/why-i-chose-htmx-over-react-and-vuejs/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eMise à jour — juillet 2026.\u003c/strong\u003e Cet article date de 2024 et reflète ce que je pensais après six mois de HTMX. Deux ans plus tard, j\u0026rsquo;ai changé d\u0026rsquo;avis et je suis revenu en arrière. J\u0026rsquo;ai raconté pourquoi, en détail, dans \u003ca href=\"/posts/dev/htmx-et-django-l-erreur-de-parcours/\"\u003eHTMX et Django, l\u0026rsquo;erreur de parcours\u003c/a\u003e. Je laisse ce texte en ligne tel quel : le raisonnement de l\u0026rsquo;époque reste valable dans son contexte, c\u0026rsquo;est la conclusion qui a bougé.\u003c/p\u003e","title":"Why I Chose HTMX Over React and VueJS - A 6 Month Review"},{"content":"Introduction In this article, I will provide a comprehensive overview of the essential security practices and configurations that you should consider when developing a Django application.\nA good starting point to ensure that your application is secure and follows the latest security best practices and guidelines is to use the well-known cookiecutter-django template. This template provides a solid foundation for building secure Django applications by incorporating various security features and configurations out of the box.\nDebug mode enabled in production Description Running a Django application with DEBUG set to True in a production environment is a significant security risk.\nWhen debug mode is enabled, detailed error pages are shown for exceptions, potentially revealing sensitive information about your application\u0026rsquo;s internals, such as source code, configuration details, and installed middleware.\nThis information can be valuable to attackers, providing insights into possible vectors for exploitation. Therefore, it is crucial to ensure that debug mode is disabled in production to prevent unintended information disclosure.\nThis information might include:\nInternal application details: Debug logs, configuration settings, or error messages could provide insights into the inner workings of your application and potential vulnerabilities. Database queries: Exposed queries might reveal the structure of your database schema and potentially sensitive data stored within it. Stack traces: Detailed error messages with stack traces can disclose internal code structure and implementation details, aiding attackers in crafting targeted exploits. Security Risk While the severity of this issue is generally considered low, it\u0026rsquo;s crucial to address it to maintain good security practices and prevent potential information leaks.\nExposing sensitive information through debug mode in production could lead to:\nIncreased attack surface: Attackers might leverage the disclosed information to identify and exploit vulnerabilities in your application. Data breaches: Sensitive data inadvertently revealed through debug logs or queries could be compromised. Reputational damage: Public exposure of sensitive information can damage your application\u0026rsquo;s reputation and erode user trust. Solution To prevent this security risk, ensure that the DEBUG setting is set to False in your production settings file. Additionally, configure proper logging for errors and exceptions to capture issues without exposing sensitive information to users. Here is an example of safely configuring the debug mode for production:\n# settings.py (or production_settings.py) DEBUG = False # Configure logging LOGGING = { \u0026#39;version\u0026#39;: 1, \u0026#39;disable_existing_loggers\u0026#39;: False, \u0026#39;handlers\u0026#39;: { \u0026#39;file\u0026#39;: { \u0026#39;level\u0026#39;: \u0026#39;ERROR\u0026#39;, \u0026#39;class\u0026#39;: \u0026#39;logging.FileHandler\u0026#39;, \u0026#39;filename\u0026#39;: \u0026#39;/path/to/django/errors.log\u0026#39;, }, }, \u0026#39;loggers\u0026#39;: { \u0026#39;django\u0026#39;: { \u0026#39;handlers\u0026#39;: [\u0026#39;file\u0026#39;], \u0026#39;level\u0026#39;: \u0026#39;ERROR\u0026#39;, \u0026#39;propagate\u0026#39;: True, }, }, } Django Admin Path Disclosure Description The Django admin interface is a powerful tool for site administrators to manage the application\u0026rsquo;s content and users. While extremely useful, its default path (/admin/) is well-known and can be a target for attackers attempting to gain unauthorized access. Leaving the admin path at its default setting without additional protections can lead to brute force attacks, exposing sensitive data and administrative functions. It\u0026rsquo;s crucial to secure the admin interface to prevent unauthorized access.\nSecurity Risk Unrestricted access to the admin interface can lead to:\nData breaches: Sensitive data stored in your application could be compromised. Unauthorized modifications: Attackers could modify system settings or data, potentially disrupting your application\u0026rsquo;s functionality. Privilege escalation: Attackers could gain access to higher privileges within your system. Solution To mitigate the risk of unauthorized access to the Django admin interface, consider the following steps:\nChange the default path of the admin interface to a less predictable URL. Enable two-factor authentication (2FA) for an additional layer of security. Implement IP whitelisting to allow only trusted IP addresses to access the admin interface. Regularly monitor access logs for unauthorized or suspicious access attempts. # urls.py from django.contrib import admin from django.urls import path urlpatterns = [ path(settings.ADMIN_URL, admin.site.urls), ] # settings.py import os ADMIN_URL = os.environ.get(\u0026#39;ADMIN_URL\u0026#39;, \u0026#39;admin/\u0026#39;) # Keep the default admin path as a fallback, change it to a custom URL in production. Missing or Insecure SSL/TLS Configuration Description SSL (Secure Sockets Layer) and TLS (Transport Layer Security) are cryptographic protocols designed to provide secure communication over a computer network. For web applications, SSL/TLS encryption is critical to protect data in transit between the client (browser) and the server. This includes protection from eavesdropping, tampering, and message forgery. A lack of SSL/TLS or the use of outdated versions can expose sensitive data, including personal and financial information, making it vulnerable to interception and attacks.\nSecurity Risk Without SSL/TLS encryption, data transmitted between clients and the server is susceptible to interception and manipulation. This can lead to data breaches, session hijacking, and a loss of user trust.\nSolution Ensure your Django application is served over HTTPS by configuring your web server (e.g., Nginx, Apache) to use SSL/TLS encryption with a valid certificate. Consider obtaining a certificate from a reputable Certificate Authority (CA), such as Let\u0026rsquo;s Encrypt, which offers free certificates. Additionally, enforce HTTPS by setting the following in your Django project:\n# settings.py SECURE_SSL_REDIRECT = True # Redirects all non-HTTPS requests to HTTPS SECURE_HSTS_SECONDS = 31536000 # set to a lesser value during development, e.g. 60 then set to 31536000 when deploying to production SECURE_HSTS_INCLUDE_SUBDOMAINS = True # set to True if you want to include subdomains for example chat.example.com, blog.example.com SECURE_HSTS_PRELOAD = True # set to True if you want to include your domain in the HSTS preload list, it will set the HSTS header for all requests Additional notes:\nChoose a certificate that meets your specific needs and security requirements. Keep your certificates and server software up-to-date with the latest security patches. Consider using a Content Security Policy (CSP) to further restrict resources loaded over insecure connections. CSRF Token Validation Description CSRF tokens are crucial for the security of web applications. They ensure that every request made to the server is authorized and comes from the same site, preventing attackers from performing actions on behalf of unsuspecting users. A missing or improperly implemented CSRF token can lead to account takeover, data theft, and unauthorized actions. Django provides built-in support for CSRF tokens, but it requires proper implementation in forms and AJAX requests.\nSecurity Risk Without CSRF tokens, attackers can perform unauthorized actions on behalf of users, leading to account compromise and data breaches. This risk is particularly high for applications that handle sensitive data or perform critical operations.\nSolution Ensure that your Django application includes CSRF tokens in forms and AJAX requests by using Django\u0026rsquo;s built-in support:\n# settings.py MIDDLEWARE = [ # ... other middleware \u0026#39;django.middleware.csrf.CsrfViewMiddleware\u0026#39;, # ... other middleware ] You also need to make sure that your Django forms contain the CSRF token inside the form tags:\n\u0026lt;form method=\u0026#34;post\u0026#34;\u0026gt; {% csrf_token %} \u0026lt;!-- other form fields --\u0026gt; \u0026lt;/form\u0026gt; Missing or Insecure Content Security Policy Description Content Security Policy (CSP) is a security standard introduced to prevent Cross-Site Scripting (XSS), clickjacking, and other code injection attacks resulting from execution of malicious content in the trusted web page context. CSP works by specifying which dynamic resources are allowed to load, thereby reducing the risk of exploitation. Without a proper CSP, your application is more vulnerable to attacks that can compromise user data and security.\nSecurity Risk Failing to implement CSP or configuring it improperly can leave your application vulnerable to XSS and other injection attacks, potentially leading to data breaches and compromised user security.\nSolution Implement CSP in your Django application by configuring your web server to include the CSP header in HTTP responses or by using Django middleware to add the CSP header dynamically. The CSP header\u0026rsquo;s value should be a policy that specifies the sources from which the application can load resources. A strict but functional starting point for a CSP policy might include:\npip install django-csp # settings.py # Enable Content Security Policy (CSP) CSP_MIDDLEWARE = \u0026#39;django.middleware.security.SecurityMiddleware\u0026#39; # Define your Content Security Policy (CSP) headers CSP_DEFAULT_SRC = (\u0026#34;\u0026#39;self\u0026#39;\u0026#34;, \u0026#34;your-domain.com\u0026#34;) # Add other CSP directives as needed # CSP_SCRIPT_SRC = (\u0026#39;source1.com\u0026#39;, \u0026#39;source2.com\u0026#39;) # Ensure \u0026#39;django.middleware.security.SecurityMiddleware\u0026#39; is included in MIDDLEWARE MIDDLEWARE = [ \u0026#39;django.middleware.security.SecurityMiddleware\u0026#39;, # Other middleware classes ] HTTP Strict Transport Security (HSTS) Not Implemented Description HTTP Strict Transport Security (HSTS) is a web security policy mechanism that helps protect websites against man-in-the-middle attacks such as protocol downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers (or other complying user agents) should interact with it using only secure HTTPS connections, and not via the insecure HTTP protocol. For Django applications, enabling HSTS is crucial to ensure that communications between the client and server are encrypted and secure.\nSecurity Risk Without HSTS, your application is more vulnerable to man-in-the-middle attacks, which can compromise the confidentiality and integrity of data exchanged between the client and server.\nSolution To implement HSTS in your Django application, you need to set the SECURE_HSTS_SECONDS setting to a non-zero integer, specifying the amount of time in seconds that browsers should remember to only access the site using HTTPS. Additionally, consider setting SECURE_HSTS_INCLUDE_SUBDOMAINS to True to apply HSTS to all subdomains, and SECURE_HSTS_PRELOAD to True to allow preloading into browsers\u0026rsquo; HSTS lists. Here is an example configuration:\n# settings.py (for production) SECURE_HSTS_SECONDS = 31536000 # 1 year SECURE_HSTS_INCLUDE_SUBDOMAINS = True SECURE_HSTS_PRELOAD = True # Other security settings SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True X-Frame-Options Header Implementation Description Clickjacking is an attack that tricks a user into clicking on something different from what the user perceives, potentially revealing confidential information or allowing others to take control of their computer while clicking on seemingly innocuous web pages. The X-Frame-Options HTTP header is a security feature that helps mitigate this risk by indicating whether or not a browser should be allowed to render a page in a \u0026lt;frame\u0026gt;, \u0026lt;iframe\u0026gt;, \u0026lt;embed\u0026gt;, or \u0026lt;object\u0026gt;. Sites can use this to avoid clickjacking attacks by ensuring that their content is not embedded into other sites.\nSecurity Risk Without the X-Frame-Options header, your application is vulnerable to clickjacking attacks, which could lead to unauthorized actions on behalf of the users, compromising the security of user data and authentication credentials.\nSolution To protect your Django application from clickjacking, ensure that the X-Frame-Options header is included in all responses that contain sensitive user information. Django provides middleware to set this header globally across your application. Add the XFrameOptionsMiddleware to your MIDDLEWARE settings to automatically include the X-Frame-Options header with the value DENY or SAMEORIGIN:\n# settings.py MIDDLEWARE = [ ... \u0026#39;django.middleware.clickjacking.XFrameOptionsMiddleware\u0026#39;, ... ] The XFrameOptionsMiddleware will set the X-Frame-Options header to DENY by default, which prevents any domain from framing your content. If you need to allow framing of your content by the same origin, set X_FRAME_OPTIONS = \u0026lsquo;SAMEORIGIN\u0026rsquo; in your settings.py file.\nValid values for the X-Frame-Options header include:\nDENY: The page cannot be loaded within a frame or iframe. SAMEORIGIN: The page can only be loaded within a frame or iframe from the same origin (same domain and port). ALLOW-FROM origin: The page can be loaded within a frame or iframe from the specified origin.\n# settings.py X_FRAME_OPTIONS = \u0026#39;SAMEORIGIN\u0026#39; # Allow framing only from the same origin Additional Considerations:\nRemember that the X-Frame-Options header is not a foolproof security measure and should be used in conjunction with other security practices. Consider using Content Security Policy (CSP) for a more comprehensive approach to controlling resources loaded on your website. Regularly test your application to ensure the X-Frame-Options header is set correctly and prevents clickjacking attacks.\nRobots.txt Disclosure Description The robots.txt file is used to instruct web robots (typically search engine crawlers) about which pages or files the crawler can or can\u0026rsquo;t request from your site. While this is useful for SEO and to prevent overloading your site with requests, a misconfigured robots.txt file can inadvertently disclose sensitive paths by listing them as disallowed, which can pique the interest of malicious actors. It\u0026rsquo;s important to carefully configure robots.txt to avoid drawing attention to private or sensitive areas of your application.\nSecurity Risk Misconfiguration of the robots.txt file can lead to the unintentional disclosure of sensitive paths, making them more visible to potential attackers.\nSolution Review your robots.txt file to ensure it does not explicitly mention sensitive paths or directories. Instead of relying on robots.txt to secure these areas, use proper authentication and authorization mechanisms. Ensure that any sensitive areas are not accessible without proper credentials, regardless of their mention in robots.txt.\nHere\u0026rsquo;s a guideline for a basic robots.txt configuration:\nCreate a robots.txt file:\nYou can use a simple text editor to create a robots.txt file and add the desired directives. Add appropriate directives:\nUse directives like Disallow and Allow to specify which URLs or directories crawlers should or should not access. Consider using the Sitemap directive to point search engines to your sitemap file. Validate your robots.txt:\nUse online tools like Google Search Console to test and validate your robots.txt file for any errors or inconsistencies. Sources Mozilla Developer Network Google Robots.txt Specifications Secure Session Cookie Configuration Description Cookies are essential for managing user sessions in web applications. However, if session cookies are transmitted over non-encrypted connections, they can be easily intercepted by attackers, leading to session hijacking and other security breaches. Here\u0026rsquo;s how SESSION_COOKIE_SECURE works:\nWhen set to True:\nThe Secure flag is set on the session cookie, instructing the browser to only send the cookie over HTTPS connections. This helps prevent attackers from eavesdropping on or tampering with the cookie if they manage to intercept it on an insecure connection (e.g., HTTP). When set to False (default):\nThe Secure flag is not set on the session cookie. The cookie can be transmitted over both HTTP and HTTPS connections. This can be less secure, especially if your website handles sensitive user data. Security Risk Failing to secure session cookies increases the risk of session hijacking and other security threats, compromising user authentication and data privacy.\nSolution Ensure that your Django application is configured to use HTTPS for all traffic, and set the SESSION_COOKIE_SECURE setting to True. This tells Django to only send the session cookie with HTTPS requests, preventing it from being sent over an insecure HTTP connection. Add the following line to your settings.py file:\nSESSION_COOKIE_SECURE = True This setting should be enabled in conjunction with other security settings, such as CSRF_COOKIE_SECURE and SECURE_SSL_REDIRECT, to provide comprehensive security for your application.\nGoing further In this article I have covered some of the essential security practices but there are many more aspects to consider when securing a Django application, so here are some additional resources to help you further enhance the security of your Django projects:\nDjango Security Documentation\nOWASP Top Ten\n","permalink":"https://gaetangrond.me/posts/django/django-security-essentials-a-comprehensive-overview/","summary":"\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eIn this article, I will provide a comprehensive overview of the essential security practices and configurations that you should consider when developing a Django application.\u003c/p\u003e\n\u003cp\u003eA good starting point to ensure that your application is secure and follows the latest security best practices and guidelines is to use the well-known \u003ca href=\"https://cookiecutter-django.readthedocs.io/en/latest/index.html\"\u003ecookiecutter-django\u003c/a\u003e template. This template provides a solid foundation for building secure Django applications by incorporating various security features and configurations out of the box.\u003c/p\u003e","title":"Django Security Essentials a Comprehensive Overview"},{"content":"As of 0.56.0 release of django-allauth (2023-09-07) the support for Multi-Factor Authentication (MFA) has been added.\nThis is great news for the Django developer as it allows you to easily add MFA to your applications, but the documentation is still a bit sparse, and it appears that the feature is not widely known yet.\nIn this article, I will show you how to add and configure MFA to your Django apps in under 5 minutes.\nMFA Overview Multi-factor authentication (MFA) adds an extra layer of security to your Django application by requiring users to verify their identity using the password and a second factor, such as a phone or a hardware token, this significantly reduces the risk of unauthorized access, even if attackers compromise the password of a user or an admin.\nThere are three common factors used for authentication:\nSomething you know: Password, PIN, security questions. Something you have: Phone, hardware token, security key. Something you are: Fingerprint, facial recognition. While SMS messages were once popular, their vulnerability to SIM swapping attacks makes them less secure. Consider these more robust options:\nAuthenticator apps: Google Authenticator, Authy, Microsoft Authenticator (TOTP or HOTP based). Hardware tokens: YubiKey, Nitrokey (support various protocols like U2F, FIDO2). Django Allauth and MFA Django Allauth provides built-in support for MFA using the allauth.account.adapter.DefaultAccountAdapter class. However, it currently only supports the authenticator app, which uses the Time-based One-Time Password (TOTP) algorithm.\nEnabling MFA in Django Allauth also makes the admin interface MFA compatible, which is a great feature and greatly enhances the security and integrity of your application.\nBonus: Using the Yubikey with Django Allauth While hardware tokens are not supported out of the box, it is possible to use the Yubikey with the Yubico Authenticator app, which is a great alternative to the Google Authenticator app and allows you to secure your account and admin panel with a hardware token.\nHow to add MFA to Django Allauth Step 1: Install django-allauth[mfa] In order to use MFA with django-allauth, you need to install the django-allauth package with the mfa extra:\npip install django-allauth[mfa] You also need to make sure that django-allauth version is at least 0.56.0:\npip install django-allauth==0.56.0 Step 2: Add allauth and allauth.mfa to your INSTALLED_APPS This is not really specified in the documentation, but you need to add allauth (which should already be done) and allauth.mfa to your INSTALLED_APPS in your settings.py:\nINSTALLED_APPS = [ ... \u0026#39;allauth\u0026#39;, # required \u0026#39;allauth.account\u0026#39;, # required \u0026#39;allauth.socialaccount\u0026#39;, # optional \u0026#39;allauth.mfa\u0026#39;, # Add this line ... ] Step 3: Override the MFA templates to match your design (optional) If you followed the cookiecutter-django installation, or you are using your base.html as a base template for all your pages and user accounts, you might want to override the MFA templates to match your design.\nYou can do so by creating a mfa folder in your templates directory and create the following files:\nmfa/base_entrance.html with the following content: {% extends \u0026#34;base.html\u0026#34; %} \u0026lt;!-- Your custom content here --\u0026gt; mfa/base_manage.html with the following content: {% extends \u0026#34;base.html\u0026#34; %} \u0026lt;!-- Your custom content here --\u0026gt; Also you need to add a url to the MFA views in your templates, for example:\n{% url \u0026#39;mfa_activate_totp\u0026#39; %} Step 4: Update the settings (optional) Django Allauth MFA comes with a few settings that you can override in your settings.py:\n# settings.py # Specifies the adapter class to use, allowing you to alter certain default behaviour. MFA_ADAPTER = \u0026#34;allauth.mfa.adapter.DefaultMFAAdapter\u0026#34; # Used to override forms. Defaults to: MFA_FORMS = { \u0026#39;authenticate\u0026#39;: \u0026#39;allauth.mfa.forms.AuthenticateForm\u0026#39;, \u0026#39;reauthenticate\u0026#39;: \u0026#39;allauth.mfa.forms.AuthenticateForm\u0026#39;, \u0026#39;activate_totp\u0026#39;: \u0026#39;allauth.mfa.forms.ActivateTOTPForm\u0026#39;, \u0026#39;deactivate_totp\u0026#39;: \u0026#39;allauth.mfa.forms.DeactivateTOTPForm\u0026#39;, } MFA_RECOVERY_CODE_COUNT = 10 # The number of recovery codes. MFA_TOTP_PERIOD = 30 # The period that a TOTP code will be valid for, in seconds. MFA_TOTP_DIGITS = 6 # The number of digits for TOTP codes. Step 5: Run the migrations python manage.py migrate Conclusion Adding MFA to your Django application using django-allauth is a great way to enhance the security of your application, it seamlessly integrates with the existing authentication system without much effort.\nFor the end user, the process is simple and straightforward, in 2024, MFA is a feature that is expected to be present in any web application.\nFor the administrators, this means that even in the case of a compromised password, the attacker will not be able to access the admin panel without the second factor.\n","permalink":"https://gaetangrond.me/posts/django/how-to-add-mfa-to-django-allauth-in-under-5mn/","summary":"\u003cp\u003eAs of 0.56.0 release of django-allauth (2023-09-07) the support for Multi-Factor Authentication (MFA) has been added.\u003c/p\u003e\n\u003cp\u003eThis is great news for the Django developer as it allows you to easily add MFA to your applications, but the documentation is still a bit sparse, and it appears that the feature is not widely known yet.\u003c/p\u003e","title":"How to Add MFA to Django Allauth in Under 5mn"},{"content":"Two years ago, on the 15th of January 2022, I decided to launch my startup with my co-founder, a SaaS service built for hospitality professionals to help them with their day-to-day tasks that I was building for the past year.\nIn those two years, I have travelled to 7 different countries, built a website and two mobile apps from scratch and a lot more. Let\u0026rsquo;s take a look back at what I have learned.\nKnow your place\u0026hellip; From the get go, I knew that my strength was in the technical side of things, I enjoy building the product, thinking about ways to improve it, make it better and faster, but when it comes to sales and marketing, I am the opposite of a natural, nothing is more frustrating to me than trying to sell my product or building a marketing strategy.\nFortunately, my co-founder agreed to take care of all the business side of things, from the marketing to the sales and the customer support, she also took care of the finances and the creation of the company, which allowed me to focus solely on the product and the infrastructure.\nHaving two people with different skills really made the journey much smoother, each of us was the expert in his field and neither me nor my co-founder had to worry about the other\u0026rsquo;s work.\nI would from time to time help my co-founder on promoting on social network and customer requests since I was the one who knew the product the best and had 7 years of experience in the hospitality industry.\n\u0026hellip;But don\u0026rsquo;t be afraid to step out of it The Front Desk team\nWe, as developers, are often criticized for not having the social and business skills to interact and sell our product to customers, we often ship the product and pray that it will sell itself, but that is not how it works, entrepreneurs need to wear many hats.\nIt\u0026rsquo;s interesting as a technical founder to understand how the product is sold, what lies behind the marketing strategy and the sales pitch and how your customers are using your product.\nWhile I still very much prefer building the product, I do find enjoyment in handling customer requests and support, doing so allows me to catch many bugs and bad design choices that I would have never noticed otherwise.\nPremature optimization is the root of all evil The first version of my product, ugly, unoptimized, but used by hundreds of users\nThe real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming. - Donald Knuth\nWarning : Controversial opinion ahead.\nIs your product good enough to be used by your customers ? If the answer is yes, then you should not worry about optimizing it at the early stage, just ship it.\nThis was later confirmed by experience and the must-read book The Lean Startup by Eric Ries, which I was lucky enough to read before starting my company.\nYour product is going to evolve, you are going to add features, remove some of them, change the way the code works, and you might even pivot to a different market.\nSure you could spend weeks writing the perfect code, target 90%+ code coverage, have a CI/CD pipeline etc.. but since you have no user base you are not going to get any feedback and the perfect code and tests you have written for the past ? Straight to the trash.\nOf course there are some exceptions, for example the security of your product should be a top priority and not overlooked, you should also choose the right framework and stack right from the start, but do not spend weeks on little details and optimizations that are not yet relevant.\nBuild a product you would use Using Front Desk at work\nLike I said earlier, I have spent 7 years of my life working for the hospitality industry, and the product I have built is something I would have loved to use back then.\n7 years is a lot of time gathering valuable feedback from colleagues and my own use, translating this into my dream tool was easy.\nI had the chance to use my product for 5 months in real condition at my previous hotel in Paris, and it was rewarding to see that the product I had built was actually useful and my colleagues were enjoying using it.\nThis is also the difference between being passionate about a product and being passionate about a technology, fortunately for me it was both, but lacking one of them would have made the journey much harder.\nStory time : Before transitioning to a full time entrepreneur, I was working as a full stack developer for an insurtech startup, and while I was enjoying the technical challenges, I could not be passionate about the product we were building, I lasted only 3 months.\nWhat are you trying to solve ? I am always excited to help other developers and entrepreneurs launch their products and since I am quite active on Linkedin and Discord I had many people reaching out to me for advice.\nThe first question I always ask is \u0026ldquo;What are you trying to solve ?\u0026rdquo;\nIf you are trying to build another social network, or a new dating app, you are going to have a hard time, because you are not solving a problem, you are just trying to build a better version of an existing product, you are more excited about the technology than the product itself.\nFor me that was the easiest part, since my colleagues and I were already using the product and I knew from experience that such tool was not only needed but also missing from the market.\nAs I said earlier, I have no background in business, but doing a small market research and understanding the problem you are trying to solve is the difference between spending 1 year building a product that no one wants or spending 2 days realizing that your idea is not viable.\nThe only case where it is ok to build a product for the sole purpose of a new technology is when learning or doing it as a side project, at worst no one will use it and you will have learned a new technology, at best a new income stream.\nInvest in your infrastructure and save your sanity One bad day, could have been avoided with the right infrastructure\nWhen I first started my company, I was managing the infrastructure and every aspect of my product myself, the backups, the database, the servers, the CI/CD pipeline, the monitoring, the logs, the security, the list goes on and on, it was overwhelming and honestly very stressful.\nOne thing I remember telling myself was that the more revenue I would make the more I would invest in services to make my life easier and less stressful.\nManaging your own infrastructure is a full time job, and while it is a great learning experience, I would recommend doing that for your own personal projects or at a very early stage, problems will arise and you don\u0026rsquo;t want to deal with a misconfigured server when you are pushing a new feature to your customers.\nHere is a list of the services I am still using to this day:\nMonitoring tool (keep me informed of any downtime and latency, by email and sms) : Better Stack\nLogs management (keep track of issues, 5xx errors, database queries) : Sentry\nManaged database (no need to worry about backups, replication, scaling) : Digital Ocean Managed Database\nManaged servers (for Redis and Postgres) : Digital Ocean App Platform\nAutomated database Backups (daily backups, replication, easy download and restoration) : Snapshooter\nBe friends with Github copilot A.I is here to stay and while I agree that it can make us lazy, when you are the single dev of your product, it is better to let A.I do the heavy lifting for you.\nThe best example I can think of is when I was working on building the mobile app for my product, I had never worked with Flutter and mobile development before. With Flutter everything is a widget, which is basically a class, and you have to build your UI by nesting widgets inside each other, the code can be intimidating but also repetitive.\nGithub copilot helped me a lot by auto generating the code for me, and while I had to tweak it a bit, it saved me a lot of time and frustration.\nOf course I still had to learn Flutter and Dart, but I was not stuck for hours on a single problem, Github Copilot can be a valuable tool as long as you take the time to read the code it generates and try to understand it.\nCustomer is not always right Customer feedback is what made my product 100 times better, I have spent countless hours on Zoom, by email and over the phone with my customers, listening to their feedbacks, frustrations and needs, and I have always tried to implement their suggestions based solely on my own judgement and experience.\nBut customers are not programmers, they do not understand the technical challenges of building a product, nor do they understand that other customers might have different needs, this is where you should step in and make the right decision.\nThere is no shame in refusing a feature request, I would even say that it shows a strong vision and maturity from your part, trust me they have thousands of ideas but unfortunately your time is limited.\nThis is a very hard thing to do and the balance is not easy to find, don\u0026rsquo;t try to please them all, after all you are the expert, you will thank me later.\nFocus on your core product Early stage at Front Desk\nFollowing the previous point, you should always focus on your core product, the one that makes you different from your competitors but also the one that your customers are paying for and using the most.\nI often made the mistake of trying to implement every single feature my customers were asking for, and while it was sometimes a good idea, it was often a total waste of my time and resources, leading to technical debt and product bloat.\nTo this day I am still facing the consequences of wanting to please every request from my customers, and getting rid of already implemented features is a pain.\nLinkedIn is a weird place it\u0026rsquo;s becoming the only game in town. Facebook has been a wasteland for years. X, as Twitter is now known, is subject to Elon Musk\u0026rsquo;s mercurial whims. TikTok\u0026rsquo;s short-form video is a different form of content.\nIt\u0026rsquo;s not just you. LinkedIn has gotten really weird. - Business Insider\n40% of my paying customers came from LinkedIn, so I spent a lot of time building my network, posting content, and interacting with my connections, so was it worth it ? Yes ! Did I enjoy it ? No.\nOn LinkedIn almost everyone is trying to sell you something and since the network rewards engagement, the posts are often clickbaits, weirdly motivational and out of touch with reality, remember the crying CEO ?\nLinkedIn is also a social network that is tied to your professional life and because of that people usually refrain from posting their real thoughts and opinions, since it could hurt their career, so you are left with a culture of positive thinking and posts that you disagree with but can\u0026rsquo;t say anything about.\nLinkedIn slowly became the Facebook it was trying to avoid, and while a lot of businesses including mine can benefit from it, I still think that as any social network, you should spend as little time as possible on it and learn to read between the lines.\nLinkedIn is becoming a site where regular people actually want to hang out and post their thoughts. It might even be cool, says Rob Price on this article.\nEnjoy the journey Traveling in Cambodia\nIn 2 years I have travelled to 7 different countries, including Cambodia, Thailand, Vietnam, Indonesia, Malaysia, Laos and Spain, I have also built a product from scratch, learned new technologies and skills, built two mobile apps, and met a lot of interesting people.\nLet\u0026rsquo;s face it, entrepreneurship is hard, you have fewer benefits, no paid vacations, no sick days and less interactions with other people than you would otherwise have in a regular job, but I enjoyed the journey because I tried to make the most of it, still looking back I wish I had taken more time for me during my travels.\nI still lack the entrepreneur mindset that most people on social network like to brag about and I am not sure I will ever have it, but building and selling a product is a rewarding experience that I would surely do again, but much better this time.\nFinal note : You can find all photos from my travels on the photo section of my website : Photos\n","permalink":"https://gaetangrond.me/posts/dev/reflections-first-two-years-tech-founder/","summary":"\u003cp\u003eTwo years ago, on the 15th of January 2022, I decided to launch my startup with my \u003ca href=\"https://www.linkedin.com/in/caroline-juarez-069204136/\"\u003eco-founder\u003c/a\u003e, a SaaS service built for hospitality professionals to help them with their day-to-day tasks that I was building for the past year.\u003c/p\u003e\n\u003cp\u003eIn those two years, I have travelled to 7 different countries, built a website and two mobile apps from scratch and a lot more. Let\u0026rsquo;s take a look back at what I have learned.\u003c/p\u003e","title":"Reflections on the First Two Years as a Tech Founder"},{"content":"As good of a developer as you are, you are not immune to data loss, mistakes happen either by you or an outside force, so it is important to have a backup strategy in place and this needs to be done before you need it.\nOne of the most popular backup strategies is the 3-2-1 backup strategy, but what does it mean and how can you implement it for almost no cost and effort?\nWhat is the 3-2-1 backup strategy? The basic concept of the 3-2-1 backup strategy is as follows:\nMake three copies of the data to be protected. Store the copies on two different types of storage media. Send one copy of the data off-site. Don\u0026rsquo;t be too literal The 3-2-1 backup strategy is a general concept, and depending on your needs, budget and policies, you can adapt it to your needs, for example, I myself try to stick to the concept but my local copy is not necessarily off-site, and my backups are mostly on the cloud.\nTriple Copies The fundamental concept revolves around creating three copies of your essential data. This triple redundancy acts as a robust defense against data loss, providing multiple layers of protection.\nOne copy is the production data and the other two are backups. The production data is the original data that is actively used by my organization.\nAgain feel free to adapt this to your needs.\nDiverse Storage Media To ensure integrity of data, these three copies are stored on two different types of storage media. One could be a local disk, while the other could be a cloud storage service.\nI use my local computer and two different cloud storage services, one is Digital Ocean and the other is SnapShooter.\nOff-Site Storage The third element of the strategy involves keeping one copy of the data off site. This off-site storage ensures that even in the face of on-premises disasters or data center compromises, a secure and accessible backup is available for recovery, usually in the cloud.\nHow to implement it? Depending on how sensitive your data is, and how much you are willing to spend, a lot of different solutions can be used to implement the 3-2-1 backup strategy, but since I myself have a small startup and limited budget, I will show you how I implemented it.\nIt is also important to make sure that your backup strategy is automated and tested, in case of failure you want to be notified and be able to fix it as soon as possible.\nTriple Copies The first copy is the production data, this production data is stored on a cloud server hosted by Digital Ocean and is itself backed up daily by Digital Ocean for free, this is what I use daily and is the data I work on. (The daily backup by digital ocean is not part of the 3-2-1 backup strategy)\nThe second copy is a backup and stored on SnapShooter, SnapShooter is a service that allows you to backup your Digital Ocean droplets and volumes to a variety of storage providers, I use it for free to backup my production database and files to their own storage.\nThe third copy is also a backup and is stored on my local machine using a Cronjob that runs every day and downloads the database and files from my Digital Ocean server for free.\nAs you can see, except the price you pay for the Digital Ocean server and your computer, the rest is 100% free for a small startup with one backup job.\nDiverse Storage Media 2 of the 3 copies are stored on the cloud on different providers and locations, the third copy is stored on my local machine, 1 is physically in my office and the other 2 are in the cloud.\nOff-Site Storage Finally, 2 of the 3 copies are stored off-site, making sure that even in the worst case scenario I can recover my data and since I use two different cloud providers, I am protected against a single point of failure.\nMake it automated and simple What I like about SnapShooter and Digital Ocean is that I don\u0026rsquo;t have to write a single line of code to make it work, I just need to set it up once from their web interface and it will run automatically every day.\nFor my CRON job, again I use the simplest solution, Digital Ocean gives me a link to download the backup, so I just use wget to download the file and store it in a folder.\nSure you can use their API and a Python script, but can you trust yourself to update in the future ? Are you sure that it is robust enough to handle any failure ?\nPractice the worst case scenario On a final note, I would like to emphasize the importance of testing your backup strategy and the recovery process, for example, can you restore your data in case of failure? how long does it take? how much data will you lose?\nCreate a new server, restore your data and services and take note of how long it took you, what was the process and what you struggled with, this will greatly improve your efficiency in case of failure.\nBacking up your data is important and it is already a good step, but if you can\u0026rsquo;t recover your data in a minimal amount of time, then you are not fully protected.\nConclusion: The 3-2-1 backup strategy is a simple and effective way to make sure that you don\u0026rsquo;t lose your data, even if you are a small startup with limited budget, you can still implement it for almost no cost and effort.\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/dev/demystifying-the-3-2-1-backup-strategy/","summary":"\u003cp\u003eAs good of a developer as you are, you are not immune to data loss, mistakes happen either by you or an outside force, so it is important to have a backup strategy in place and this needs to be done \u003cstrong\u003ebefore\u003c/strong\u003e you need it.\u003c/p\u003e\n\u003cp\u003eOne of the most popular backup strategies is the \u003cstrong\u003e3-2-1\u003c/strong\u003e backup strategy, but what does it mean and how can you implement it for almost no cost and effort?\u003c/p\u003e","title":"The 3-2-1 Backup Rule: What It Actually Costs to Implement"},{"content":"A few days ago I started receiving concerning emails directly to my work email address, the email was from a so-called bug bounty hunter that was claiming to have found a vulnerability in one of our products, the email was very generic and it was not clear what was the vulnerability, the only thing that was clear was that the person was asking for money to disclose the vulnerability.\nIn this article, I will share with you my experience and why you should be careful when you receive such emails.\nFear Mongering and Fake Vulnerabilities Reports Fearmongering is a form of manipulation that is used by some bad actors especially in the security industry to create fear and doubt in the minds of people that are not security experts or even less technical people, the goal of this is to get money from the victim by creating a sense of urgency and fear.\nThe fake vulnerabilities reports are usually automated emails that are sent to a large number of people.\nAre the Vulnerabilities Reports Real? The short answer is no, the long answer is that it depends, most of them if not all of them use automated tools to scan for vulnerabilities, such as Nikto, Nessus, and others, although these tools are very good for a quick scan, they are not enough to find real vulnerabilities and more often than not they will give you a lot of false positives.\nIf you have never used these tools before, you can try them yourself and see how many false positives you will get, maybe you will get some real vulnerabilities but most of them will be low or medium severity vulnerabilities that are not really a big deal to your business.\nThe Email Any security expert will give proper details about the vulnerability and at least his name and the company he works for, also finding a vulnerability that leads to actual exploitation is very rare, and requires a lot of time and effort.\nWhy You Should Not Pay Unless you can verify that the vulnerability is real and it can be exploited and the person that found it is a real security expert, you should not pay.\nAccording to Chester Wisniewski from Sophos, there are reports that paying beg bounties leads to escalating demands for higher payments, one organization apparently said it started out at $500 and then, as further bugs were reported, the senders quickly demanded $5,000 and were more threatening.\nThe bottom line If you receive such emails, you should not panic, and you should not pay, at most scan your website and update all your software and plugins, ask an expert friend or security forum and subreddit to help you.\nSecurity is the most important thing in any business and with the recent increase in cyber attacks, it is important to be careful and not fall for such scams, but it should be a reminder to always keep your software up to date and adopt a security-first mindset.\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/security/beware-of-fake-vulnerabilities-reports-and-fear-mongering-tactics/","summary":"\u003cp\u003eA few days ago I started receiving \u003cstrong\u003econcerning emails\u003c/strong\u003e directly to my work email address, the email was from a so-called bug bounty hunter that was claiming to have found a vulnerability in one of our products, the email was very generic and it was not clear what was the vulnerability, the only thing that was clear was that the person was asking for money to disclose the vulnerability.\u003c/p\u003e","title":"Beware of Fake Vulnerabilities Reports and Fear Mongering Tactics"},{"content":"Django is by design very secure, most of the common vulnerabilities such as XSS, CSRF, SQL injection, clickjacking are fixed by the simple use of the framework, but there is one that is not fixed by default, and it is the Idor vulnerability.\nIn this article we will see what it is and how to fix it.\nWhat is an Idor vulnerability ? Idor is a vulnerability that occurs when a user can access a resource that he is not authorized to access. This vulnerability is common in web applications that use a sequential number such as a primary key in the URL to identify a resource and Django is no exception.\nBut as always the security flaw is usually introduced by us, the developers, and one of the most common security flaw is the Idor vulnerability.\nBroken Access Control is the first vulnerability in the OWASP Top 10, and Idor is a subcategory of this.\nExample Let\u0026rsquo;s say you are designing your user model and you want to give the user the ability to change his password, you will probably create a view that will look like this:\ndef change_password(request, user_id): user = User.objects.get(id=user_id) if request.method == \u0026#34;POST\u0026#34;: form = ChangePasswordForm(request.POST) if form.is_valid(): user.set_password(form.cleaned_data[\u0026#34;password\u0026#34;]) user.save() return redirect(\u0026#34;home\u0026#34;) else: form = ChangePasswordForm() return render(request, \u0026#34;change_password.html\u0026#34;, {\u0026#34;form\u0026#34;: form}) And you will probably create a url that will look like this:\npath(\u0026#34;change_password/\u0026lt;int:user_id\u0026gt;\u0026#34;, views.change_password, name=\u0026#34;change_password\u0026#34;) This is a very common way to do it, the primary key is used to identify the user for which to change the password, and since Django uses a sequential number to identify the user, it is very easy to guess the id of another user and change his password.\nFor example, if the user with the id 1 is the admin, then the user with the id 2.\nHow to fix it ? Fixing an IDOR vulnerability requires two things:\nHiding the id of the user Checking if the user is authorized to access the resource Hiding the id of the user The first fix and the easiest one is to use a random number to identify the user, fortunately Django has a built-in class to generate random chars, it is the UUIDField class, so we can change the id field in the User model to be a UUIDField:\nimport uuid from django.db import models class UserModel(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) # ... Make sure to set a default value for the id field since the database will not generate a value for it, also primary key must be unique, so we set the primary_key to True.\nCaveat Now this is good, but hiding the id is not enough, this is call security through obscurity and while the id is hard to guess and could help to prevent the Idor vulnerability, it is not enough, we need to check if the user is authorized to access the resource.\nChecking if the user is authorized to access the resource By default we should apply the principle of least privilege (POLP), which means that the user should only have access to the resources that he is authorized to access, so we need to check if the user is authorized to access the resource.\nIn Django, we can use the request.user to get the current user, so we can change the change_password view to look like this:\nFirst solution def change_password(request, user_id): user = User.objects.get(id=user_id) if request.user != user: raise PermissionDenied if request.method == \u0026#34;POST\u0026#34;: form = ChangePasswordForm(request.POST) if form.is_valid(): user.set_password(form.cleaned_data[\u0026#34;password\u0026#34;]) user.save() return redirect(\u0026#34;home\u0026#34;) else: form = ChangePasswordForm() return render(request, \u0026#34;change_password.html\u0026#34;, {\u0026#34;form\u0026#34;: form}) Second better solution (recommended) Using the ID is ok, but URL can be modified and since Django comes with a protection against CSRF, we could use a post request to change the password, so we can change the change_password view to look like this:\ndef change_password(request): if request.method == \u0026#34;POST\u0026#34;: form = ChangePasswordForm(request.POST) if form.is_valid(): user = request.user # get the current user from the request, no need to use the id user.set_password(form.cleaned_data[\u0026#34;password\u0026#34;]) user.save() return redirect(\u0026#34;home\u0026#34;) else: form = ChangePasswordForm() return render(request, \u0026#34;change_password.html\u0026#34;, {\u0026#34;form\u0026#34;: form}) And the url will look like this:\npath(\u0026#34;change_password\u0026#34;, views.change_password, name=\u0026#34;change_password\u0026#34;) Conclusion IDOR is a very common vulnerability, and one that can be easily underestimated, for example if a user can access private data of another user, it can be a big problem, even worse, allowing a user to change the password of another user can be a disaster especially if the user is an admin.\nResources Security through obscurity\nOWASP Top 10\nSecurity in Django¶\nPOLP\nDjango UUIDField\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/django/understanding-idor-vulnerability-in-django/","summary":"\u003cp\u003eDjango is by design very secure, most of the common vulnerabilities such as XSS, CSRF, SQL injection, clickjacking are fixed by the simple use of the framework, but there is one that is not fixed by default, and it is the \u003cstrong\u003eIdor\u003c/strong\u003e vulnerability.\u003c/p\u003e\n\u003cp\u003eIn this article we will see what it is and how to fix it.\u003c/p\u003e","title":"Understanding IDOR Vulnerability in Django and how to fix it"},{"content":"When working with Django for my startup I performed on several occasions very complex migrations and maintenance tasks that required the site not to be accessible for a few minutes and sometimes even hours.\nEven if the end user is not able to access the site, our team of superusers and admins should be able to access the site and perform the maintenance tasks.\nFinally toggling the maintenance mode should be as easy as possible and should not require any code changes.\nThe Solution First of all we need to create a new middleware that will check if the maintenance mode is enabled and if so, it will check if the user is a superuser, if not it will redirect the user to a maintenance page.\nIf the maintenance mode is disabled and the user is trying to access the maintenance page, it will redirect the user to the home page.\nWhat is a middleware? A middleware will place itself between the request and the response. It\u0026rsquo;s lightweight and it\u0026rsquo;s a good place to perform checks and operations that are common to all the views.\nCreate the middleware Create a new file called middleware.py in your app folder, for example config/middleware.py and add the following code:\nimport logging from django.conf import settings from django.shortcuts import redirect, reverse logger = logging.getLogger(__name__) class MaintenanceMiddleware: \u0026#34;\u0026#34;\u0026#34; Middleware to redirect users to the maintenance page if the site is in maintenance mode. How it works: - if superusers try to access the site, they can do so even if it\u0026#39;s in maintenance mode - if maintenance mode is disabled, people requesting the maintenance page are redirected to the home page - if maintenance mode is enabled, people requesting any page other than the maintenance page are redirected to the maintenance page \u0026#34;\u0026#34;\u0026#34; def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if request.user.is_superuser: return self.get_response(request) if not settings.MAINTENANCE_MODE and request.path == reverse(\u0026#34;maintenance\u0026#34;): return redirect(\u0026#34;base\u0026#34;) if settings.MAINTENANCE_MODE and request.path != reverse(\u0026#34;maintenance\u0026#34;): logger.info( \u0026#34;A user tried to access the site while it was in maintenance mode.\u0026#34; ) return redirect(\u0026#34;maintenance\u0026#34;) response = self.get_response(request) return response Add the middleware to the settings Now that we have created the middleware, we need to add it to the settings and create a new environment variable to enable or disable the maintenance mode.\nOpen the settings.py file and add the following code:\nMIDDLEWARE = [ # ... \u0026#34;config.middleware.MaintenanceMiddleware\u0026#34;, # ... ] MAINTENANCE_MODE = env.bool(\u0026#34;MAINTENANCE_MODE\u0026#34;, default=False) Create a new view We could create a function based view, but let\u0026rsquo;s let Django do the heavy lifting and create a template view, the template view\u0026rsquo;s sole purpose is to render a template with context data if needed, a perfect fit for our maintenance page.\nOpen the main urls.py file and add the following code:\nfrom django.urls import path urlpatterns = [ # ... path(\u0026#34;maintenance/\u0026#34;,TemplateView.as_view(template_name=\u0026#34;maintenance.html\u0026#34;), name=\u0026#34;maintenance\u0026#34;, ), # ... ] Create the maintenance template Again let\u0026rsquo;s keep it simple and reuse this codepen to create a simple maintenance page and make it Django friendly.\n{% load i18n %} \u0026lt;!doctype html\u0026gt; \u0026lt;title\u0026gt;{% trans \u0026#39;Under Maintenance\u0026#39; %}\u0026lt;/title\u0026gt; \u0026lt;link href=\u0026#34;https://fonts.googleapis.com/css?family=Open+Sans:300,400,700\u0026#34; rel=\u0026#34;stylesheet\u0026#34;\u0026gt; \u0026lt;style\u0026gt; html, body { padding: 0; margin: 0; width: 100%; height: 100%; } * {box-sizing: border-box;} body { text-align: center; padding: 0; background: #d6433b; color: #fff; font-family: Open Sans; } h1 { font-size: 50px; font-weight: 100; text-align: center;} body { font-family: Open Sans; font-weight: 100; font-size: 20px; color: #fff; text-align: center; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center;} article { display: block; width: 700px; padding: 50px; margin: 0 auto; } a { color: #fff; font-weight: bold;} a:hover { text-decoration: none; } svg { width: 75px; margin-top: 1em; } \u0026lt;/style\u0026gt; \u0026lt;article\u0026gt; \u0026lt;svg xmlns=\u0026#34;http://www.w3.org/2000/svg\u0026#34; viewBox=\u0026#34;0 0 202.24 202.24\u0026#34;\u0026gt;\u0026lt;defs\u0026gt;\u0026lt;style\u0026gt;.cls-1{fill:#fff;}\u0026lt;/style\u0026gt;\u0026lt;/defs\u0026gt;\u0026lt;title\u0026gt;Asset 3\u0026lt;/title\u0026gt;\u0026lt;g id=\u0026#34;Layer_2\u0026#34; data-name=\u0026#34;Layer 2\u0026#34;\u0026gt;\u0026lt;g id=\u0026#34;Capa_1\u0026#34; data-name=\u0026#34;Capa 1\u0026#34;\u0026gt;\u0026lt;path class=\u0026#34;cls-1\u0026#34; d=\u0026#34;M101.12,0A101.12,101.12,0,1,0,202.24,101.12,101.12,101.12,0,0,0,101.12,0ZM159,148.76H43.28a11.57,11.57,0,0,1-10-17.34L91.09,31.16a11.57,11.57,0,0,1,20.06,0L169,131.43a11.57,11.57,0,0,1-10,17.34Z\u0026#34;/\u0026gt;\u0026lt;path class=\u0026#34;cls-1\u0026#34; d=\u0026#34;M101.12,36.93h0L43.27,137.21H159L101.13,36.94Zm0,88.7a7.71,7.71,0,1,1,7.71-7.71A7.71,7.71,0,0,1,101.12,125.63Zm7.71-50.13a7.56,7.56,0,0,1-.11,1.3l-3.8,22.49a3.86,3.86,0,0,1-7.61,0l-3.8-22.49a8,8,0,0,1-.11-1.3,7.71,7.71,0,1,1,15.43,0Z\u0026#34;/\u0026gt;\u0026lt;/g\u0026gt;\u0026lt;/g\u0026gt;\u0026lt;/svg\u0026gt; \u0026lt;h1\u0026gt;{% trans \u0026#39;We will back soon\u0026#39; %}\u0026lt;/h1\u0026gt; \u0026lt;div\u0026gt; \u0026lt;p\u0026gt; {% blocktrans %} We are currently performing scheduled maintenance. We should be back shortly. Thank you for your patience. {% endblocktrans %} \u0026lt;/p\u0026gt; \u0026lt;p\u0026gt;\u0026amp;mdash; Front Desk Team\u0026lt;/p\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;/article\u0026gt; Test the maintenance mode Now that we have everything in place, we can test the maintenance mode by setting the MAINTENANCE_MODE to True and try to access the site as a superuser and as a normal user.\nIf everything works as expected, you should be able to access the site as a superuser and you should be redirected to the maintenance page if you try to access the site as a normal user.\nIf however you try to access the maintenance page and the maintenance mode is disabled, you should be redirected to the home page.\nConclusion In this article we have seen how to create a simple maintenance mode feature in Django, we have seen how to create a middleware, how to create a template view and how to create a simple template with a very simple code that can be improved and customized to fit your needs.\nReferences Django Middleware\nDjango Template View\nCodepen\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/django/create-a-simple-maintenance-feature-in-django/","summary":"\u003cp\u003eWhen working with Django for my startup I performed on several occasions very complex migrations and maintenance tasks that required the site not to be accessible for a few minutes and sometimes even hours.\u003c/p\u003e\n\u003cp\u003eEven if the end user is not able to access the site, our team of superusers and admins should be able to access the site and perform the maintenance tasks.\u003c/p\u003e","title":"Create a Simple Maintenance Feature in Django"},{"content":"One of the most loved features of Django is the built-in administration interface. It allows for an easy way to manage your data and is highly customizable. However, it is also a very common target for attackers.\nIn this article, we will look at some of the most common attacks against the Django administration interface and how to protect against them.\n1. Use a custom URL for the administration interface The default URL for the Django administration interface is /admin. This is a well-known fact and attackers will try to access this URL on your site.\nIn fact, there are bots that scan the internet for Django administration interfaces and try to log in with common usernames and passwords, so if you use the default URL, with a very weak password, you might get hacked in a matter of minutes.\nThe solution is to change the URL of the administration interface. This can be done by editing the urls.py file of your project and changing the admin/ path to something else.\nLet\u0026rsquo;s use the secret module to generate a random string that we can use as the new URL:\n\u0026gt;\u0026gt;\u0026gt; import secrets \u0026gt;\u0026gt;\u0026gt; secrets.token_urlsafe(16) \u0026#39;J7GuncjzSMsqWhSveaYRwg\u0026#39; Now, we can change the urls.py file to use this new URL:\nfrom django.contrib import admin urlpatterns = [ path(\u0026#39;J7GuncjzSMsqWhSveaYRwg/\u0026#39;, admin.site.urls), ] That\u0026rsquo;s good but we can make it even better.\nLet\u0026rsquo;s have a different URL for the administration interface on each environment (local, staging, production). This way, we can manage from the server and rotate the URL if we suspect that it has been compromised.\nReplace the urls.py file with the following:\nfrom django.contrib import admin from django.conf import settings from django.urls import path urlpatterns = [ path(settings.ADMIN_URL, admin.site.urls), ] Then, add the ADMIN_URL setting to the settings.py file:\nADMIN_URL = env(\u0026#34;DJANGO_ADMIN_URL\u0026#34;) Finally, add the DJANGO_ADMIN_URL environment variable to the .env file:\nDJANGO_ADMIN_URL=J7GuncjzSMsqWhSveaYRwg Make sure to use a different value for each environment\n2. Log login attempts to the administration interface Knowledge is power, the more you know about the attacks against your site, the better you can protect it.\nKnowing when someone is trying to log in to the administration with which credentials can help you take action before it\u0026rsquo;s too late.\nAs an example have a look at the following screenshot:\nThis is a screenshot from a site that I manage. As you can see, there are a lot of login attempts to the administration (more than 400 in a few days), and one username was used by my team.\nBut how can we log login attempts to the administration interface?\nThe solution is to use a Django middleware that logs all requests to the administration interface or even the django-admin-honeypot package.\nLet\u0026rsquo;s use the django-admin-honeypot package to log login attempts to the administration interface.\nInstall the package:\npip install django-admin-honeypot Add the admin_honeypot app to the INSTALLED_APPS setting:\nINSTALLED_APPS = [ # ... \u0026#34;admin_honeypot\u0026#34;, ] Add the url to the urls.py file:\nfrom django.contrib import admin urlpatterns = [ path(\u0026#39;J7GuncjzSMsqWhSveaYRwg/\u0026#39;, admin.site.urls), path(\u0026#39;admin/\u0026#39;, include(\u0026#39;admin_honeypot.urls\u0026#39;, namespace=\u0026#39;admin_honeypot\u0026#39;)), # Fake admin url for honeypot ] Finally, add the ADMIN_HONEYPOT_EMAIL_ADMINS setting to the settings.py file:\nADMIN_HONEYPOT_EMAIL_ADMINS = True Note that the django-admin-honeypot package will send an email to the ADMINS setting when someone tries to log in to the administration interface, you can disable this by setting the ADMIN_HONEYPOT_EMAIL_ADMINS setting to False.\nNow you can access the administration interface using the fake URL: http://localhost:8000/admin/ and you will see the login attempts with the username and password used in plain text and the IP address of the attacker.\nPlease note that IP might not show up if you are using a reverse proxy like Nginx or Apache, in this case, you need to configure the proxy to pass the IP address to Django.\nNote: django-admin-honeypot is not supported on Django 4.0 yet, you can follow the issue here.\n3. Identify your environment To avoid embarrassing situations, you need to know in a glance which environment you are working on.\nOne simple solution that does not require any extra packages or HTML/CSS modifications is to add a different administration header for each environment.\nA simple implementation would be to add the following code to the your main urls.py file:\nfrom django.contrib import admin from django.conf import settings from django.urls import path .... your code here ... if settings.DEBUG: admin.site.site_header = \u0026#34;Django - LOCAL 🚧\u0026#34; else: admin.site.site_header = \u0026#34;🚨 Django - PRODUCTION 🚨\u0026#34; 4. Block other IP addresses from accessing the administration interface If you are the only one who needs to access the administration interface, you can block all other IP addresses from accessing it, keep in mind that it is still possible to spoof* the IP address but will add an extra layer of security.\nLet\u0026rsquo;s keep the Django philosophy not reinventing the wheel and use the django-ipware package to get the IP address of the client.\nInstall the package:\npip install django-ipware Create a new middleware file middleware.py in the core app:\nimport logging from django.conf import settings from django.shortcuts import redirect, reverse from ipware import get_client_ip logger = logging.getLogger(__name__) class IPAdminRestrictMiddleware: \u0026#34;\u0026#34;\u0026#34; Middleware to restrict access to the admin panel by IP address. \u0026#34;\u0026#34;\u0026#34; def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if request.path.startswith(f\u0026#34;/{settings.ADMIN_URL}\u0026#34;): print(\u0026#34;Here we are\u0026#34;) client_ip, is_routable = get_client_ip(request) print(f\u0026#34;Client IP: {client_ip}\u0026#34;) if client_ip not in settings.WHITELISTED_IPS: logger.info( \u0026#34;A user tried to access the admin panel from an unauthorized IP address.\u0026#34; ) return redirect(\u0026#34;base\u0026#34;) response = self.get_response(request) return response Then, add the middleware to the MIDDLEWARE setting:\nMIDDLEWARE = [ # ... \u0026#34;core.middleware.IPAdminRestrictMiddleware\u0026#34;, ] Finally, add the WHITELISTED_IPS setting to the settings.py file:\nWHITELISTED_IPS = env.list(\u0026#34;WHITELISTED_IPS\u0026#34;, default=[\u0026#34;127.0.0.1\u0026#34;]) That way, you can add IP in your environment variables and they will be used as the whitelist.\nFor extra security, please read my article on setting up a Firewall.\n*Spoofing: Spoofing is when someone or something pretends to be something else in order to gain an advantage. In our context, spoofing can be used to bypass the administration IP address restriction.\n5. Run the deployment checklist before going to production Django has a built-in deployment checklist that you can run before going to production. Django includes many security features. Some are built-in and always enabled. Others are optional because they aren’t always appropriate.\nTo run the checklist, use the following command:\npython manage.py check --deploy If you run this command in your local environment, you will get a lot of warnings, but you are most likely using a different configuration for your local environment than your production environment so you can use the --settings option to specify the settings file to use:\npython manage.py check --deploy --settings=config.settings.production On my personal site, I get the following warnings:\nSystem check identified some issues: WARNINGS: ?: (security.W009) Your SECRET_KEY has less than 50 characters, less than 5 unique characters, or it\u0026#39;s prefixed with \u0026#39;django-insecure-\u0026#39; indicating that it was generated automatically by Django. Please generate a long and random value, otherwise many of Django\u0026#39;s security-critical features will be vulnerable to attack. This warning can be safely ignored because I am using the local settings file and the SECRET_KEY is not used in production.\n6. Use a two-factor authentication The final step to secure your administration interface is to use a two-factor authentication. This way, even if someone gets your username and password, bypasses the IP address restriction, and guesses the URL of the administration interface, they will not be able to log in without the second factor.\nThere are many packages that you can use to add two-factor authentication to your Django site, but I recommend using the django-two-factor-auth package, it is well maintained and has a lot of features.\nInstall the package:\npip install django-two-factor-auth Add the two_factor app to the INSTALLED_APPS setting:\nINSTALLED_APPS = [ # ... \u0026#39;django_otp\u0026#39;, \u0026#39;django_otp.plugins.otp_static\u0026#39;, \u0026#39;django_otp.plugins.otp_totp\u0026#39;, \u0026#39;django_otp.plugins.otp_email\u0026#39;, # \u0026lt;- if you want email capability. \u0026#39;two_factor\u0026#39;, \u0026#39;two_factor.plugins.email\u0026#39;, # \u0026lt;- if you want email capability. \u0026#39;two_factor.plugins.yubikey\u0026#39;, # \u0026lt;- for yubikey capability. ] Add the django-otp middleware to your MIDDLEWARE. Make sure it comes after AuthenticationMiddleware:\nMIDDLEWARE = [ # ... \u0026#39;django.contrib.auth.middleware.AuthenticationMiddleware\u0026#39;, \u0026#39;two_factor.middleware.threadlocals.ThreadLocals\u0026#39;, # ... ] Point to the new login pages in your settings.py:\nLOGIN_URL = \u0026#39;two_factor:login\u0026#39; LOGIN_REDIRECT_URL = \u0026#39;two_factor:profile\u0026#39; Add the routes to your project url configuration:\nurlpatterns = [ # ... path(\u0026#39;account/\u0026#39;, include(\u0026#39;two_factor.urls\u0026#39;, \u0026#39;two_factor\u0026#39;)), # ... ] By default the admin login is patched to use the login views provided by this application. Patching the admin is required as users would otherwise be able to circumvent OTP verification.\nIf you want to enforce two factor authentication in the admin and use the default admin site, you can add the following to your admin.py file:\nfrom django.contrib import admin from two_factor.admin import AdminSiteOTPRequired admin.site.__class__ = AdminSiteOTPRequired urlpatterns = [ path(\u0026#39;admin/\u0026#39;, admin.site.urls), ... ] Finally, run the migrations:\npython manage.py migrate Now, you can access the administration interface using the fake URL: http://localhost:8000/admin/ and you will be asked to enable two-factor authentication.\nConclusion I hope that this article helped you secure your Django administration interface, I use all the techniques mentioned in this article on my personal site and professional projects, and while they are not perfect, they will help you secure your site and sleep better at night.\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/django/secure-your-django-administration/","summary":"\u003cp\u003eOne of the most loved features of Django is the built-in administration interface. It allows for an easy way to manage your data and is highly customizable. However, it is also a very common target for attackers.\u003c/p\u003e\n\u003cp\u003eIn this article, we will look at some of the most common attacks against the Django administration interface and how to protect against them.\u003c/p\u003e","title":"Secure Your Django Administration with 6 simple steps"},{"content":"When working with Django and third party libraries, you may encounter a CSRF error on login or any other form submission. This is because Django requires a CSRF token to be sent with every form submission except GET requests or if the form has the csrf_exempt decorator.\nDuring my work with Django, I have encountered this error many times, sometimes due to my own mistakes and sometimes due to third party libraries or user behavior.\nThe default behavior of Django is to raise a CSRF error and return a 403 page with a message that the CSRF token is missing or incorrect. This is not a very user friendly message and can be confusing to users.\nBut if you look closely at the error message, you will see that it is possible to customize the CSRF_FAILURE_VIEW in Django.\nHow to Customize CSRF Failure View Django First off you need to edit your settings.py file and add the following line:\nCSRF_FAILURE_VIEW = \u0026#39;myapp.views.csrf_failure\u0026#39; The CSRF_FAILURE_VIEW setting is a string that points to a view function that will be called when a CSRF error occurs. The view function should return an HttpResponse object.\nIn your views.py file, you can add the following code:\nfrom django.shortcuts import render def csrf_failure(request, reason=\u0026#34;\u0026#34;): \u0026#34;\u0026#34;\u0026#34;Default view for CSRF failures.\u0026#34;\u0026#34;\u0026#34; return render( request, \u0026#34;403_csrf.html\u0026#34;, {\u0026#34;reason\u0026#34;: reason}, status=403, ) The 403_csrf.html is a template file that you can create in your templates folder. You can use the following code in your template file:\n{% extends \u0026#34;base.html\u0026#34; %} {% block title %}403 Forbidden{% endblock %} {% block content %} \u0026lt;h1\u0026gt;403 Forbidden\u0026lt;/h1\u0026gt; \u0026lt;p\u0026gt;{{ reason }}\u0026lt;/p\u0026gt; {% endblock %} You can customize the template file as you like.\nFinal tip More often than not, the CSRF error is caused by a login issue in the user side, the most common cause is that the user is refreshing the page after logging in or the user is using the back button to go back to the login page.\nTo avoid this issue, in my 403_csrf.html template file, I have added a link to the login page so that the user can go back to the login page and login again.\n{% extends \u0026#34;base.html\u0026#34; %} {% block title %}403 Forbidden{% endblock %} {% block content %} \u0026lt;h1\u0026gt;403 Forbidden\u0026lt;/h1\u0026gt; \u0026lt;p\u0026gt;{{ reason }}\u0026lt;/p\u0026gt; \u0026lt;p\u0026gt;\u0026lt;a href=\u0026#34;{% url \u0026#39;login\u0026#39; %}\u0026#34;\u0026gt;Login\u0026lt;/a\u0026gt;\u0026lt;/p\u0026gt; {% endblock %} Conclusion This is how you can customize the CSRF failure view in Django. I have found that this greatly improves the user experience and reduces the number of support tickets that I have to deal with.\nI hope you have found this article useful.\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/django/how-to-customize-csrf-failure-view-django/","summary":"\u003cp\u003eWhen working with Django and third party libraries, you may encounter a CSRF error on login or any other form submission. This is because Django requires a CSRF token to be sent with every form submission except GET requests or if the form has the \u003ccode\u003ecsrf_exempt\u003c/code\u003e decorator.\u003c/p\u003e\n\u003cp\u003eDuring my work with Django, I have encountered this error many times, sometimes due to my own mistakes and sometimes due to third party libraries or user behavior.\u003c/p\u003e","title":"How to Customize The CSRF Failure View in Django"},{"content":"I am a long time user of DigitalOcean and I have been using many of their services for more than 6 years, including their Cloud Firewall. I have been using it for a long time and I have been very happy with it.\nMost of the time when people create a new droplet they just leave their server open to the world, which is not a good idea, especially if you are running a production server.\nIf you follow DigitalOcean\u0026rsquo;s tutorials you will see that they always recommend creating a new firewall and add it to your droplet, but they usually use UFW (Uncomplicated Firewall) which is very simple but does not take full advantage of DigitalOcean\u0026rsquo;s own firewall service.\nIn this tutorial I will show you how to create a new firewall and add it to your droplet using DigitalOcean\u0026rsquo;s own firewall service and how to configure it to allow only the ports you need.\nWhat is a firewall? A firewall is a network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. A firewall typically establishes a barrier between a trusted internal network and untrusted external network.\nIn a nutshell, a firewall can be used to block someone from connecting to your server via SSH or block someone from accessing your website.\nDigitalOcean\u0026rsquo;s Cloud Firewall DigitalOcean\u0026rsquo;s Cloud Firewall is a free service that allows you to create a firewall and add it to your droplet.\nCompared to UFW, DigitalOcean\u0026rsquo;s Cloud Firewall is more powerful and allows you to create rules based on tags, but it is much simpler to use and has a very simple interface instead of a command line interface.\nCreating a new firewall To create a new firewall, go to the Firewalls page and click on the \u0026ldquo;Create Firewall\u0026rdquo; button.\nLet\u0026rsquo;s take a look at the screenshot above:\nCategory: You can choose between \u0026ldquo;Inbound\u0026rdquo; and \u0026ldquo;Outbound\u0026rdquo;. Inbound means that the firewall will block incoming traffic and outbound means that the firewall will block outgoing traffic. In this tutorial we will only use \u0026ldquo;Inbound\u0026rdquo;.\nType: You can choose a predefined rule set or create your own, for the sake of simplicity we will use the most common one, ssh, http and https.\nProtocol: You can choose between TCP, UDP and ICMP. TCP stands for Transmission Control Protocol, UDP stands for User Datagram Protocol and ICMP stands for Internet Control Message Protocol. In this tutorial we will only use TCP since most internet traffic uses TCP.\nPort Range: You can choose between a single port or a range of ports.\nSources: You can choose between \u0026ldquo;Any IPv4\u0026rdquo; and \u0026ldquo;Any IPv6\u0026rdquo; or you can specify a specific IP address or a range of IP addresses. In this tutorial we will use \u0026ldquo;Any IPv4\u0026rdquo; and \u0026ldquo;Any IPv6\u0026rdquo;.\nDroplets: You can choose between a specific droplet or a tag. In this tutorial we will use a single droplet.\nLet\u0026rsquo;s create a new firewall For a very simple firewall we will use the following settings:\nCategory: Inbound\nType: ssh, http, https\nProtocol: TCP\nPort Range: 22, 80, 443\nSources: Any IPv4, Any IPv6\nDroplets: droplet-1\nSelect your droplet and click on the \u0026ldquo;Create Firewall\u0026rdquo; button.\nThat\u0026rsquo;s it, you have created a new firewall and added it to your droplet, you do not need to do anything else, the firewall will be applied automatically without any downtime or need to reboot your droplet.\nTesting the firewall To test the firewall we will use nmap to scan for open and closed ports.\nFirst we need to install nmap:\n$ sudo apt install nmap Now let\u0026rsquo;s scan our droplet to see if port 22, 80 and 443 are open:\n$ nmap -p 22,80,443 \u0026lt;your-droplet-ip\u0026gt; This command will scan your droplet and show you the open ports, if you have configured your firewall correctly you should see something like this:\nStarting Nmap 7.94 ( https://nmap.org ) at 2023-07-31 23:59 CEST Nmap scan report for ------ (---.---.---.---) Host is up (0.083s latency). PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https As you can see, all the ports are open, which means that our firewall is working correctly.\nNow let\u0026rsquo;s try to scan our droplet again but this time we will use a different port, for example port 21, which is used for FTP and is often used by hackers to gain access to your server.\n$ nmap -p 21 \u0026lt;your-droplet-ip\u0026gt; If you have configured your firewall correctly you should see something like this:\nStarting Nmap 7.94 ( https://nmap.org ) at 2023-07-31 23:59 CEST Nmap scan report for ------ (---.---.---.---) Host is up (0.083s latency). PORT STATE SERVICE 21/tcp filtered ftp As you can see, port 21 is filtered, which means that our firewall is working correctly and is blocking port 21.\nConclusion In this tutorial we have learned how to create a new firewall and add it to our droplet using DigitalOcean\u0026rsquo;s own firewall service and how to configure it to allow only the ports we need.\nTo go further, you can read the official documentation or read the official tutorial on how to set up a firewall with DigitalOcean\u0026rsquo;s Cloud Firewall.\nI hope this article was helpful, if you have any questions or suggestions, feel free to reach out to me on :\nLinkedIn If you want to know more about me, you can check out my about page. You can use my articles with no cost or attribution, feel free to edit them and make them your own.\n","permalink":"https://gaetangrond.me/posts/security/secure-your-droplet-with-cloud-firewall/","summary":"\u003cp\u003eI am a long time user of DigitalOcean and I have been using many of their services for more than 6 years, including their \u003ca href=\"https://www.digitalocean.com/docs/networking/firewalls/\"\u003eCloud Firewall\u003c/a\u003e. I have been using it for a long time and I have been very happy with it.\u003c/p\u003e\n\u003cp\u003eMost of the time when people create a new droplet they just leave their server open to the world, which is not a good idea, especially if you are running a production server.\u003c/p\u003e","title":"Locking Down a Production Server in 5 Minutes with a Cloud Firewall"}]