Erlang Mini Project #3 Distributed: 12/7/2015 Due: 12/14/2015 Implement the following in Erlang. The new functions should be given name(s) different from fridge2. (1) Modify kitchen fridge2 (Chapter 11) so the terminate message follows the same form as store and take: The message received is {From, terminate}. The receiver than responds to sender with message {self(), terminated}. Obviously, the fridge process should not be restarted. (2) Modify kitchen fridge2 to respond to sender of an unrecognized message {From, Msg} with the message {self(), {not_recognized, Msg}}. (3) Modify kitchen fridge2 to add a peek message to fridge2: - {From, {peek, a} } will look in the items stored in the process. If a is present, send the message back to sender (From): {present, a}. If a is not present, send the message back to sender (From): {not_present, a}. Do not modify the FoodList. (4) Modify kitchen to add an inventory message to fridge2: - {From, {inventory} } will return to sender (From) the current FoodList in the fridge2 process. Do not modify the FoodList (5) PLEASE NOTE CHANGE (A RELAXING OF STANDARD) OF SPEC NEW SPECIFICATION: (1) From the shell, create a fridge process (2) From the shell, create a cook process, passing it the fridge process pid (3) The fridge process does take and store as before. It can do more if you wish. (4) The cook process will: (A)store item z into the fridge output the message received from the fridge process output the status string "item z is stored", (B) Sleep for 3 seconds (C)take item z from fridge output the message received from the fridge process output the status string "item z is taken". THE OLD SPEC REQUIRES THE COOK TO SPAWN THE FRIDGE Create a process Cook. The process Cook will do the following: - Spawn a fridge process. - Store the item z into the fridge, then output (1) the message received back from the fridge process, (2) the string "item z is stored", - Then sleep for 3 seconds, - Take the item z from a fridge, then output (1) the message received back from the fridge process, (2) the string "item z is taken". So, for (5), the shell creates Cook. Cook creates F, Cook stores z into F, sleeps, then Cook takes z from F. F always returns a message back to the sender, the sender needs to output that message. After that, the sender outputs the string as specified above. NOTE: I have decided it may be significantly easier for your code to spawn both cook and fridge at the shell. Therefore, I have relaxed the spec to allow for that. You can implement to either spec. Turn in: --- Give hardcopy of code. You can use any BIFs. If you desire, (1) - (5) can all be in same file. If you desire, you can hide the details by using equivalents of kitchen:store(F, a) and kitchen:take(F, b), kitchen:start([a, b, c]) as given in chapter 11 for fridge2. --- You must show the code functioning via screen shot. IMPORTANT! you must do a flush() after each message sent from the shell! This is to make sure your code is working correctly.