Picture this: after weeks of planning, your dream hardwood floor is finally on its way. You’re excited, maybe even a little nervous. Then, halfway through the installation, you notice something’s off—buckling planks, uneven patches, or worse, squeaky boards. It’s every homeowner’s nightmare, and it all could have been avoided.
My lightbulb moment came when I learned that hidden moisture in the subfloor can silently sabotage hardwood floors, causing warping, cupping, or buckling long after the job’s done. The truth is, ignoring moisture tests can turn your beautiful project into a costly headache. And trust me, I learned this the hard way early in my DIY days.
Today, I want to guide you through the essential steps to assess your subfloor’s moisture levels with four simple tests. Doing this right can save you thousands in the long run—and ensure your floors stay stunning for years to come.
Why Moisture Testing Matters: Protecting Your Investment
Hardwood floors are a significant investment—both financially and aesthetically. But when moisture issues lurk beneath the surface, no amount of beautiful design can save the day. In fact, according to the National Wood Flooring Association, moisture-related problems are responsible for over 60% of flooring failures in residential settings. That’s a staggering number, emphasizing the importance of proper subfloor preparation.
If moisture isn’t thoroughly checked and managed, it can lead to extensive repairs or full replacement down the line. The good news? Performing the right tests before installation dramatically reduces the risk. It’s like giving your home a health check-up, ensuring the foundation is solid before laying down the new floors.
Is Moisture Testing Really Necessary If I’ve Done My Homework?
I admit, at first, I was skeptical. I thought, “Isn’t a quick visual inspection enough?” Trust me, it’s not. Early on, I skipped some tests, thinking I could tell if the floor was ready just by looking or feeling it. That was a rookie mistake. Moisture can hide in the subfloor, undetectable to the naked eye. Skipping proper testing can lead to problems that surface months after the installation—costing much more to fix than if I had just taken the time to do it right from the start.
If you’re curious whether your subfloor is dry enough, or if you’ve faced issues like unexpected floor gaps or squeaks, these tests are your secret weapon. Ready to learn the foolproof methods? Let’s dive into the four essential moisture tests that will help you nail your project and avoid costly mistakes.
Start with a Concrete Test for Moisture Content
My first experience with moisture testing was a mess—literally. I borrowed a pin-type moisture meter from a friend and pressed it into the subfloor. The device showed readings way above the acceptable range, but I ignored it, thinking my eyes and experience could tell. Weeks later, I faced cupped floors and squeaks. Now, I know better: use a reliable digital moisture meter and follow the manufacturer’s instructions precisely. This device measures the moisture content in the wood or concrete, helping you determine if the substrate is dry enough for installation.
Perform a Visual Check for Clues
Next, I learned to look for signs beyond numbers. Using a flashlight at a low angle, check the subfloor surface for discoloration, damp patches, or mold. These visual cues point toward hidden moisture. Think of it like a doctor inspecting skin for rashes—visual signs often say more than the readings alone. When I spotted dark spots on my concrete slab, I knew I had to address moisture problems before proceeding.
Calcium Chloride Test – The Quick Spot Check
For a more direct approach, I used a calcium chloride test kit—a simple tray placed on the concrete floor for 72 hours, which measures moisture emission. The result, displayed on a gauge, tells you if the subfloor is emitting too much moisture. I like this test because it’s quick and portable, especially when you can’t perform more invasive checks. Remember, it’s mainly suited for concrete slabs, and results should match your hardwood flooring specifications.
The Calcium Chloride Test Versus Relative Humidity Tests
During my project, I also discovered that relative humidity (RH) tests embedded in the subfloor provide a more detailed picture. These involve inserting probes into the concrete or wood to measure internal moisture levels directly. I opted for this when installing engineered hardwood, as the data helped me fine-tune acclimation periods. Think of it like checking a person’s temperature: the more precise, the better your decision-making.
Document and Track Your Results
Finally, I kept a detailed log of all my moisture readings, notes, and testing conditions. This habit helped me identify patterns—like higher moisture in the mornings—and informed my scheduling. It’s akin to a chef tasting ingredients before cooking; the data guides you to make necessary adjustments and avoid costly mistakes. For your project, maintaining thorough records ensures peace of mind and a smoother installation.
By integrating these concrete steps—accurate moisture meters, visual inspections, calcium chloride tests, and RH measurements—you’ll set a solid foundation for your hardwood floors. Taking the time to assess moisture properly can save you from future headaches, like buckling or cupping, and ensure that your flooring looks pristine for years to come. For more expert tips on floor leveling and installation, visit the ultimate guide to floor leveling or explore precise floor leveling techniques.When it comes to tile and flooring installation, many homeowners operate under assumptions that can hinder their project’s success. One widespread misconception is that a perfectly level subfloor isn’t crucial, but in truth, even minor imperfections can lead to cracking, lippage, or uneven surfaces over time. Advanced professionals understand that this nuance makes all the difference, as highlighted in recent studies on floor longevity. Rushing the leveling process or ignoring subtle irregularities might seem harmless initially, but it sets the stage for costly repairs down the line. A common trap is believing that thicker setting compounds or larger tiles can mask underlying irregularities; however, these workarounds often only exacerbate issues if the substrate isn’t properly prepared. Additionally, many assume that the initial rough-in step is straightforward, but overlooking precise measurements and thorough inspections can result in a domino effect—causing lippage, grout cracking, or tile delamination. It’s essential to recognize that these seemingly small oversights compound over time, emphasizing the importance of meticulous preparation and expert techniques. To ensure your installation withstands daily wear, focus on detailed subfloor assessments, like those found in our comprehensive guide on floor leveling, and avoid shortcuts that compromise durability. Remember, quality results stem from understanding the intricate nuances that most overlook. Have you ever fallen into this trap? Let me know in the comments. For further insights, explore our expert strategies on [floor leveling](https://tiletrendshop.com/ultimate-guide-to-floor-leveling-for-a-perfect-finish) or discover common [installation mistakes to avoid for lasting results](https://tiletrendshop.com/flooring-installation-mistakes-to-avoid-for-lasting-results). Making sure every detail is addressed now saves you from regrets and expenses later on.
Keeping Your Floors in Top Shape with the Right Tools
Investing in quality tools is crucial for maintaining hardwood, tile, and flooring installations over time. I personally swear by a calibrated moisture meter like the Protimeter Surveymaster, which provides accurate readings in both wood and concrete, helping me detect moisture issues before they escalate. Proper moisture control is the backbone of long-term flooring durability, and having the right equipment makes all the difference. Regular calibration and maintenance of these tools ensure consistent readings, preventing costly repairs down the line.
When it comes to cleaning and upkeep, a microfiber broom paired with a controlled-dampening mop and pH-neutral cleaner keeps floors shiny without risking damage. I avoid harsh chemicals since they can degrade sealants and finishes, especially on hardwood surfaces. For more specialized cleaning, I opt for tools like a flooring-specific vacuum with soft bristles, which removes debris without scratching delicate surfaces.
Preparing Your Space for Long-Term Success
Creating a routine maintenance schedule is essential. This includes checking for signs of moisture or structural shifts quarterly. For example, I perform visual inspections for warping, squeaks, or gaps, and use my moisture meter to verify the subfloor remains dry—key for hardwood floors, as discussed in Hardwood Floor Care Secrets. Additionally, employing a HEPA-filter vacuum helps reduce airborne dust, which can settle into seams and undermine finishes over time.
Tools I Recommend for Every DIYer and Professional
Beyond moisture meters, I recommend investing in an expansion gap spacer and a rubber mallet to prevent damage while checking floor expansion. For tile installations, a laser level is indispensable for ensuring perfect surface alignment, especially when scaling up projects. I personally use the Bosch GLL 3-80, praised for its accuracy and ease of use in tight spaces. Combining precise leveling with proper maintenance keeps grout lines straight and surfaces flat, boosting overall longevity.
How do I maintain floors over the long haul?
The key lies in consistent, targeted care. Regularly cleaning with appropriate tools, monitoring humidity levels, and promptly addressing minor issues can extend the life of your floors. Consider scheduling an annual professional inspection to catch potential problems early. As trends evolve, so do the tools—newer moisture detection tech with Bluetooth connectivity allows real-time monitoring of subfloor conditions, which is a big step forward in preventive maintenance.
Looking ahead, automation and smart sensors will likely become standard, providing homeowners with instant alerts to humidity spikes or structural shifts. Until then, sticking with proven tools like reliable moisture meters, levelers, and cleaning equipment remains your best bet. To give your floors that extra edge, try calibrating your moisture meter bi-annually and keep a log of the readings. This simple step can preempt many issues—saving you money and preserving your investment. Remember, proper maintenance isn’t just about tools; it’s about establishing a routine that keeps every component of your flooring system in harmony.
For more detailed tips on professional techniques, visit expert strategies. Staying proactive with the right equipment guarantees your floors will remain beautiful and durable for years to come.
Lesson Learned: Avoiding Hidden Pitfalls in Flooring Projects
- One of my toughest lessons was realizing that even small undetected moisture issues could lead to major deformations in hardwood flooring, like cupping or buckling—no matter how perfect your top finish looks. This taught me to never skip comprehensive moisture assessments early in the project.
- I discovered that relying solely on visual checks or surface readings can be deceptive; integrating multiple testing methods—like using a digital moisture meter and performing calcium chloride tests—provides a more reliable picture and saves costly troubleshooting later.
- The importance of detailed documentation of moisture levels throughout different stages can’t be overstated. It not only guides your installation timing but also becomes invaluable if future warranties or repairs are necessary.
- Sometimes, homeowners overlook the subtle signs of moisture rising from beneath, such as faint odors or slight discoloration, which often precede major problems. Paying close attention to early visual cues can prevent disasters before they happen.
- Investing in quality tools, like calibrated moisture meters, and honing your understanding of their readings elevates your craftsmanship. This extra step ensures your hardwood floors stay beautiful and durable, long after installation.
Tools and Tips That Elevated My Work
- A reliable digital moisture meter like the Protimeter Surveymaster has become my go-to. Its accuracy in reading both wood and concrete helps me make confident decisions about moisture levels before proceeding.
- Calcium chloride test kits are simple yet effective for quick spot checks on concrete slabs, offering immediate insight into vapor emission rates that can jeopardize hardwood adhesion.
- Embracing relative humidity sensors embedded in subfloors gives me real-time data, making acclimation and installation timing precise and reliable—especially crucial for engineered hardwoods.
- Maintaining comprehensive logs of all moisture readings and environmental conditions has made troubleshooting much more straightforward and informed my future projects.
Your Next Step to Flawless Floors
Don’t let unseen moisture undermine your flooring dreams. Embrace these tested approaches, keep learning, and never compromise on thoroughness. Your future self will thank you for the investment in preparation now. Ready to elevate your flooring game? For deeper insights, explore our ultimate guide to floor leveling or learn advanced techniques in precise floor leveling. How have moisture challenges affected your projects? Share your experience below!”}}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}#END#}
