a:6:{i:0;s:9371:"				<div class="h1"><h1>Self - Drive Tour of Melbourne</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.stardestinationtours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.stardestinationtours.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Self - Drive Tour of Melbourne</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Melbourne, Warrnambool</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 60000 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Self - Drive Tour of Melbourne - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="73010"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/439456/130944.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/439456/130944.jpg"  width="150" height="150"    alt="Self - Drive Tour of Melbourne" title="Self - Drive Tour of Melbourne" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Melbourne airport
								</p>
								<p class="aj">After arriving at the Melbourne international airport, continue to the car rental company desk to pick your car hired for self drive. Proceed to the hotel. Later, leave for sightseeing including the Eureka Skydeck 88 entry- to have a bird’s view of the city, Melbourne cricket ground (tour between 10 a.m. - 3 p.m.) and the Melbourne aquarium – home to thousands of aquatic animals. The evening is scheduled for an unforgettable and unique dining experience on-board the Colonial Tramcar Restaurant, a restaurant on wheels. Relish your dinner and taste the best Australian wines while cruising along the streets of Melbourne. Admire the colonial-style interiors and the friendly service. Stay overnight in Melbourne.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Melbourne - Mornington Peninsula
								</p>
								<p class="aj">On day 2, post breakfast begin driving to Yarra Valley, a beautiful and lush valley, popular for its wines. Indulge in wine tasting at the well-known De Bortoli Wine Estate. Afterwards, continue your drive to Mornington Peninsula where you can indulge in a number of activities. Take a walk in the lush fields and relish juicy sunny ridge strawberries at the peninsula fields- Australia’s largest producer of strawberries. Growing strawberries is the third generation business in the peninsular region. Next you explore the beautiful Ashcombe Maze & Lavender Gardens (25 acres of area) - the oldest and the most famous hedge maze and circular rose maze in Australia. Night stay in Mornington Peninsula.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Mornington Peninsula - Warrnambool
								</p>
								<p class="aj">Post breakfast on the 3rd day of the tour, you can opt for a tour of the Queenscliff Sorrento Ferry Service. This trip of 40-minutes is a link between the spectacular Bellarine Peninsula and Mornington Peninsula. Enjoy a view of this beautiful coastal region and spot the dolphins. The next attraction is Port Campbell National Park, popular for the twelve apostles and collection of wave-sculpted rock formations. Another major highlight is Loch Ard Gorge, a shipwreck ‘loch ard’ of the 19th century and the London Bridge. Take a walk along the shipwreck coast. Afterwards, drive along the picturesque Great Ocean road. After this, if you want then you can take a flight towards the bay of islands over the 12 apostles through the London Bridge or can simply take a walk on the shipwreck coast up till the Cape Otway Lighthouse. Night stay in Warrnambool.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Warrnambool – Melbourne
								</p>
								<p class="aj">Post breakfast on day 4, begin driving towards Melbourne. On the way take a halt to visit Ballarat, the sovereign hill a Gold Museum. Get back in time, into the 1850s when affluent men and women, all dressed-up in the fineries and gold, walked down the street, showing-off their wealth. View the jaw-dropping collected of gold coins, artifacts and nuggets. Continue towards Melbourne. The evening is free for the activities of your interest. Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Departure from Melbourne
								</p>
								<p class="aj">Today is the last day of the tour when post a healthy breakfast, you receive an on-time transfer to the airport where your first return the car and later board a flight for your onward journey or can opt for an extension of your vacation.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Self - Drive Tour of Melbourne - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="73010"/>
						</form>
						</div>
						
						";i:1;s:69:"Book Self - Drive Tour of Melbourne - 4 Nights / 5 Days Tour Packages";i:2;s:140:"book self - drive tour of melbourne - 4 nights / 5 days tour packages, forts and palaces tour packages, melbourne, warrnambool tour packages";i:3;s:179:"Star Destination Tours offers Self - Drive Tour of Melbourne - 4 Nights / 5 Days tour package, budget Forts and Palaces tour packages for Melbourne, Warrnambool at exciting price.";i:4;s:424:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Melbourne, Warrnambool"        
		                 },
		      "description": "",
		      "name": "Self - Drive Tour of Melbourne",
		      "telephone": "+91-9888421743"
		    }
		    </script>
			";i:5;N;}